《视觉SLAM十四讲》学习笔记-对极约束问题

《视觉SLAM十四讲》学习笔记-对极约束问题

对极约束

问题描述:求取两帧图像I1,I2之间的运动。设第一帧到第二帧的运动为R,t,其中心分别为O1,O2I1中有一个点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)

x1=K1p1, x2=K1p2,则有:
x2=Rx1+t

两边左乘t,有:
tx2=tRx1  (x2t=0)

两边再左乘x2
x2tx2=x2tRx1

因为tx2tx2皆为垂直,所以左侧为0:
x2tRx1=0

再代入x1,x2得到:
(K1p2)tRK1p1=0

即:
p2KtRK1p1=0

此式即为对极约束,几何意义为O1,O2,P共面。
将中间拆为基础矩阵和本质矩阵,可简化约束为:

E=tR,R=KTEK1,x2Ex1=p2Fp1=0

上式中, E本质矩阵(Essential Matrix), F基础矩阵(Fundamental Matrix).所以相机位势估计问题变为:

  • 根据配对点的像素位置, 求出EF;
  • 根据EF, 求出R,t.

本质矩阵E性质:

  • 尺度等价性:E在不同尺度下等价
  • 内在性质:E的奇异值必定是[ρ,ρ,0]的形式
  • tR有6个*度,而E有5个*度

如何求解本质矩阵E:

  • 方法一:因为E有五个*度,说明可以用五对点来求解E。但E的内在性质是非线性的,用线性的方程求解会带来问题。
  • 方法二:从尺度等价性出发,用八对点来解方程。

八对点求解本质矩阵E

考虑一对匹配点,它们的归一化坐标为x1=[u1,v1,1], x2=[u2,v2,1],根据对极约束有:

[u1,v1,1][e1e2e3e4e5e6e7e8e9][u2,v2,1]

E展开成向量表示,e=[e1,,e9],则线性方程为:
[u1u2,u1v2,u1,v1u2,v1v2,v1,u2,v2,1]e=0

对其他点对,也有类似表示。把这8个点对的方程放在一起可组成一个线性方程:
[u11u21u11v21u11v11u21v11v21v11u21v211u12u22u12v22u12v12u22v12v22v12u22v221u13u23u13v23u13v13u23v13v23v13u23v231u18u28u18v28u18v18u28v18v28v18u28v281]e=0

则问题变为:如何根据已估得的本质矩阵E,恢复得到Rt.

不妨设E的SVD分解为:

E=UΣV

其中UV为正交阵,Σ为奇异值矩阵,根据之前的推断Σ=diag(ρ,ρ,0),可知对任一E存在两个可能的Rt与之对应:
t1=URZ(π2)ΣU,  R1=URZ(π2)Vt2=URZ(π2)ΣU,  R2=URZ(π2)V

式中RZ(π2)表示为沿Z轴旋转90度得到的旋转矩阵。此外,由于-EE等价,对任意的t取负号也会得到同样结果。所以从E分解到Rt时一共存在四个可能的解。

后续为了检查哪个解是正确的时候,可以把任意一点代入四个解中,当该点在两个相机下的深度皆为正的深度时(即解为正数),即可确认该解是所述问题的正确的解。

剩下的问题如何确认解出的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:描述了两个平面之间的映射关系。它描述了处于共同平面上的一些点在两张图像之间的变换关系。
假设图像I1I2有匹配好的点p1p2,这些特征点落在平面上,平面满足方程:

nP+d=0

整理有:
nPd=1

则:
p2=K(RP+t)=K(RP+t(nPd))=K(Rtnd)P=K(Rtnd)K1p1

这是一个关于图像坐标p1p2的变换,为方便把中间这部记为H, 于是:
p2=Hp1

为求解H,类似于E的做法,将上式展开:
[u2v21]=[h1h2h3h4h5h6h7h8h9][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对匹配点来算出。构造方程如下:
[u11v111000u11u21v11u21000u11v111u11v21v11v21u12v121000u12u22v12u22000u12v121u12v22v12v22u13v131000u13u23v13u23000u13v131u13v23v13v23u14v141000u14u24v14u24000u14v141u14v24v14v24][h1h2h3h4h5h6h7h8]=[u21v21u22v22u23v23u24v24]

解线性方程可得到H.此法称为直接线性变换法(Direct Linear Transform).

同本质矩阵相似,为验证H,对H做SVD分解后可得到四组旋转矩阵与向量,考虑以下事实:

  • 成像的地图点的深度是否全为正值?若是可排除两组解。
  • 场景中的平面的法向量。若场景平面与相机平面平行,又可排除一组解,其法向量n的理论值应为1.
    可以看到最后的解是通过场景事实筛选而获得的。

问题讨论:

  • 尺度不确定性问题:对t归一化时,会导致单目视觉的尺度不确定性(Scale Ambiguity). 当对两张图的t归一化时,相当于固定了尺度,即t的单位为1,称之为单目SLAM的初始化。要求初始化的两张图像须有一定程度的平移。
  • 初始化的纯旋转问题:若相机发生的是纯旋转,导致t为零,会导致无法求解R. 因而要求:单目初始化不能只有纯旋转,必须要有一定程度的平移。
  • 多于八对点的情况:不妨设线性化后的对极约束等式中,左侧的系数矩阵为A:
    Ae=0

    只用八点法的话,A的大小为8*9; 当多于八对点时,可以通过最小化二次型来求解:
    mineAe22=mineeAAe

    这样就求出了在最小二乘意义下的矩阵。也可以通过Random Sample Concensus(随机采样一致性)来求解。