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