对极约束
问题描述:求取两帧图像 I1,I2 I 1 , I 2 之间的运动。设第一帧到第二帧的运动为 R,t⃗ R , t → ,其中心分别为 O1,O2 O 1 , O 2 , I1 I 1 中有一个点 p1 p 1 对应到 I2 I 2 的点为 p2 p 2 . P P 为两个摄像机在远处的交点。称为极平面(Epipolar plane), O1O2 O 1 O 2 连线与相机平面交点称为极点(Epipoles), O1O2 O 1 O 2 称为基线, l1,l2 l 1 , l 2 为极线(Epipolar line).
以第一帧的坐标系作为基准,设
P
P
坐标为,
p1,p2
p
1
,
p
2
位置为:
其中 K K 为相机内参, R,t⃗ R , t → 为坐标系的相机运动。转化为齐次等式:
取 x⃗ 1=K−1p⃗ 1 x → 1 = K − 1 p → 1 , x⃗ 2=K−1p⃗ 2 x → 2 = K − 1 p → 2 ,则有:
两边左乘 t⃗ ∧ t → ∧ ,有:
两边再左乘 x⃗ ⊤2 x → 2 ⊤ :
因为 t⃗ ∧x⃗ 2 t → ∧ x → 2 与 t⃗ ∧ t → ∧ 和 x⃗ 2 x → 2 皆为垂直,所以左侧为0:
再代入 x1,x2 x 1 , x 2 得到:
即:
此式即为对极约束
,几何意义为
O1,O2,P
O
1
,
O
2
,
P
共面。
将中间拆为基础矩阵和本质矩阵,可简化约束为:
上式中, E E 为
本质矩阵
(Essential Matrix),
F
F
为
基础矩阵
(Fundamental Matrix).所以相机位势估计问题变为:
- 根据配对点的像素位置, 求出 E E 或 F F ;
- 根据 E E 或 F F , 求出 R,t⃗ R , t → .
本质矩阵 E E 性质:
- 尺度等价性: E E 在不同尺度下等价
- 内在性质: E E 的奇异值必定是 [ρ,ρ,0] [ ρ , ρ , 0 ] 的形式
- t⃗ ∧R t → ∧ R 有6个自由度,而 E E 有5个自由度
如何求解本质矩阵 E E :
- 方法一:因为 E E 有五个自由度,说明可以用五对点来求解 E E 。但 E E 的内在性质是非线性的,用线性的方程求解会带来问题。
- 方法二:从尺度等价性出发,用
八对点
来解方程。
八对点求解本质矩阵 E E
考虑一对匹配点,它们的归一化坐标为
x⃗ 1=[u1,v1,1]⊤
x
→
1
=
[
u
1
,
v
1
,
1
]
⊤
,
x⃗ 2=[u2,v2,1]⊤
x
→
2
=
[
u
2
,
v
2
,
1
]
⊤
,根据对极约束有:
把 E E 展开成向量表示, e⃗ =[e1,⋯,e9]⊤ e → = [ e 1 , ⋯ , e 9 ] ⊤ ,则线性方程为:
对其他点对,也有类似表示。把这8个点对的方程放在一起可组成一个线性方程:
则问题变为: 如何根据已估得的本质矩阵 E E ,恢复得到 R R 和 t⃗ t → .
不妨设
E
E
的SVD分解为:
其中 U U 和 V V 为正交阵, Σ Σ 为奇异值矩阵,根据之前的推断 Σ=diag(ρ,ρ,0) Σ = d i a g ( ρ , ρ , 0 ) ,可知对任一 E E 存在两个可能的 R R 和 t⃗ t → 与之对应:
式中 RZ(π2) R Z ( π 2 ) 表示为沿Z轴旋转90度得到的旋转矩阵。此外,由于- E E 和 E E 等价,对任意的 t⃗ t → 取负号也会得到同样结果。所以从 E E 分解到 R R 和 t⃗ t → 时一共存在四个可能的解。
后续为了检查哪个解是正确的时候,可以把任意一点代入四个解中,当该点在两个相机下的深度皆为正的深度时(即解为正数),即可确认该解是所述问题的正确的解。
剩下的问题:如何确认解出的 E E 满足内在性质?
假设对
E
E
做SVD分解后,奇异值矩阵
Σ=diag(ρ1,ρ2,ρ3)
Σ
=
d
i
a
g
(
ρ
1
,
ρ
2
,
ρ
3
)
, 不妨设
ρ1≥ρ2≥ρ3
ρ
1
≥
ρ
2
≥
ρ
3
,构造:
即把求出的矩阵投影到 E E 的流形上,即可保证其满足内在性质。更简单的做法是直接将奇异值矩阵取为diag(1, 1, 0)使得 E E 具有尺度等价性。
单应矩阵
单应矩阵(Homography)
H
H
:描述了两个平面之间的映射关系。它描述了处于共同平面上的一些点在两张图像之间的变换关系。
假设图像
I1
I
1
和
I2
I
2
有匹配好的点
p1
p
1
和
p2
p
2
,这些特征点落在平面上,平面满足方程:
整理有:
则:
这是一个关于图像坐标 p1 p 1 和 p2 p 2 的变换,为方便把中间这部记为 H H , 于是:
为求解 H H ,类似于 E E 的做法,将上式展开:
为简化问题,实际上常常乘以一个非0因子使得 h9=1 h 9 = 1 ,即乘上 1/(h7u1+h8v1+h9) 1 / ( h 7 u 1 + h 8 v 1 + h 9 ) ,再次展开得到式子:
注意到 h9=1 h 9 = 1 , 整理后可得到:
由此可见一对匹配点可构造两项约束,于是自由度为8的单应矩阵可通过4对匹配点来算出。构造方程如下:
解线性方程可得到 H H .此法称为直接线性变换法(Direct Linear Transform).
同本质矩阵相似,为验证 H H ,对 H H 做SVD分解后可得到四组旋转矩阵与向量,考虑以下事实:
- 成像的地图点的深度是否全为正值?若是可排除两组解。
- 场景中的平面的法向量。若场景平面与相机平面平行,又可排除一组解,其法向量
n⃗
n
→
的理论值应为
1⃗
1
→
.
可以看到最后的解是通过场景事实筛选而获得的。
问题讨论:
- 尺度不确定性问题:对 t⃗ t → 归一化时,会导致单目视觉的尺度不确定性(Scale Ambiguity). 当对两张图的 t⃗ t → 归一化时,相当于固定了尺度,即 t⃗ t → 的单位为1,称之为单目SLAM的初始化。要求初始化的两张图像须有一定程度的平移。
- 初始化的纯旋转问题:若相机发生的是纯旋转,导致 t⃗ t → 为零,会导致无法求解 R R . 因而要求:单目初始化不能只有纯旋转,必须要有一定程度的平移。
- 多于八对点的情况:不妨设线性化后的对极约束等式中,左侧的系数矩阵为
A
A
:
Ae⃗ =0⃗ A e → = 0 →
只用八点法的话, A A 的大小为8*9; 当多于八对点时,可以通过最小化二次型来求解:
mine⃗ ∥Ae⃗ ∥22=mine⃗ e⃗ ⊤A⊤Ae⃗ min e → ‖ A e → ‖ 2 2 = min e → e → ⊤ A ⊤ A e →
这样就求出了在最小二乘意义下的矩阵。也可以通过Random Sample Concensus(随机采样一致性)来求解。