
对极约束
问题描述:求取两帧图像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分解后可得到四组旋转矩阵与向量,考虑以下事实:
- 成像的地图点的深度是否全为正值?若是可排除两组解。
- 场景中的平面的法向量。若场景平面与相机平面平行,又可排除一组解,其法向量n⃗ 的理论值应为1⃗ .
可以看到最后的解是通过场景事实筛选而获得的。
问题讨论: