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

对极约束

对极约束

问题描述:求取两帧图像 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 为两个摄像机在远处的交点。O1O2P称为极平面(Epipolar plane), O1O2 O 1 O 2 连线与相机平面交点称为极点(Epipoles), O1O2 O 1 O 2 称为基线, l1,l2 l 1 , l 2 为极线(Epipolar line).

以第一帧的坐标系作为基准,设 P P 坐标为P=[X,Y,Z], p1,p2 p 1 , p 2 位置为:

s1p1=KP, s2p2=K(RP+t⃗ ) s 1 p 1 = K P ,   s 2 p 2 = K ( R P + t → )

其中 K K 为相机内参, R,t⃗  R , t → 为坐标系的相机运动。转化为齐次等式:
p1=KP, p2=K(RP+t⃗ ) p 1 = K P ,   p 2 = K ( R P + t → )

x⃗ 1=K1p⃗ 1 x → 1 = K − 1 p → 1 , x⃗ 2=K1p⃗ 2 x → 2 = K − 1 p → 2 ,则有:
x⃗ 2=Rx⃗ 1+t⃗  x → 2 = R x → 1 + t →

两边左乘 t⃗  t → ∧ ,有:
t⃗ x⃗ 2=t⃗ Rx⃗ 1  (x⃗ 2t⃗ =0) t → ∧ x → 2 = t → ∧ R x → 1     ( x → 2 t → = 0 )

两边再左乘 x⃗ 2 x → 2 ⊤
x⃗ 2t⃗ x⃗ 2=x⃗ 2t⃗ Rx⃗ 1 x → 2 ⊤ t → ∧ x → 2 = x → 2 ⊤ t → ∧ R x → 1

因为 t⃗ x⃗ 2 t → ∧ x → 2 t⃗  t → ∧ x⃗ 2 x → 2 皆为垂直,所以左侧为0:
x⃗ 2t⃗ Rx⃗ 1=0 x → 2 ⊤ t → ∧ R x → 1 = 0

再代入 x1,x2 x 1 , x 2 得到:
(K1p⃗ 2)t⃗ RK1p⃗ 1=0 ( K − 1 p → 2 ) ⊤ t → ∧ R K − 1 p → 1 = 0

即:
p⃗ 2Kt⃗ RK1p⃗ 1=0 p → 2 ⊤ K − ⊤ t → ∧ R K − 1 p → 1 = 0

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

E=t⃗ R,R=KTEK1,x⃗ 2Ex⃗ 1=p⃗ 2Fp⃗ 1=0 E = t → ∧ R , R = K − T E K − 1 , x → 2 ⊤ E x → 1 = p → 2 ⊤ F p → 1 = 0

上式中, 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 ] ⊤ ,根据对极约束有:

[u1,v1,1]e1e4e7e2e5e8e3e6e9[u2,v2,1] [ u 1 , v 1 , 1 ] ⊤ [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] [ u 2 , v 2 , 1 ] ⊤

E E 展开成向量表示, e⃗ =[e1,,e9] e → = [ e 1 , ⋯ , e 9 ] ⊤ ,则线性方程为:
[u1u2,u1v2,u1,v1u2,v1v2,v1,u2,v2,1]e⃗ =0⃗  [ u 1 u 2 , u 1 v 2 , u 1 , v 1 u 2 , v 1 v 2 , v 1 , u 2 , v 2 , 1 ] ⋅ e → = 0 →

对其他点对,也有类似表示。把这8个点对的方程放在一起可组成一个线性方程:
u11u12u21u22u31u32u81u82u11v12u21v22u31v32u81v82u11u21u31u81v11u12v21u22v31u32v81u82v11v12v21v22v31v32v81v82v11v21v31v81u12u22u32u82v12v22v32v821111e⃗ =0⃗  [ u 1 1 u 2 1 u 1 1 v 2 1 u 1 1 v 1 1 u 2 1 v 1 1 v 2 1 v 1 1 u 2 1 v 2 1 1 u 1 2 u 2 2 u 1 2 v 2 2 u 1 2 v 1 2 u 2 2 v 1 2 v 2 2 v 1 2 u 2 2 v 2 2 1 u 1 3 u 2 3 u 1 3 v 2 3 u 1 3 v 1 3 u 2 3 v 1 3 v 2 3 v 1 3 u 2 3 v 2 3 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ u 1 8 u 2 8 u 1 8 v 2 8 u 1 8 v 1 8 u 2 8 v 1 8 v 2 8 v 1 8 u 2 8 v 2 8 1 ] e → = 0 →

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

不妨设 E E 的SVD分解为:

E=UΣV E = U Σ V ⊤

其中 U U V V 为正交阵, Σ Σ 为奇异值矩阵,根据之前的推断 Σ=diag(ρ,ρ,0) Σ = d i a g ( ρ , ρ , 0 ) ,可知对任一 E E 存在两个可能的 R R t⃗  t → 与之对应:
t⃗ 1=URZ(π2)ΣU,  R1=URZ(π2)Vt⃗ 2=URZ(π2)ΣU,  R2=URZ(π2)V t → 1 ∧ = U R Z ( π 2 ) Σ U ⊤ ,     R 1 = U R Z ⊤ ( π 2 ) V ⊤ t → 2 ∧ = U R Z ( − π 2 ) Σ U ⊤ ,     R 2 = U R Z ⊤ ( − π 2 ) V ⊤

式中 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=Udiag(ρ1+ρ22,ρ2+ρ32,0)V E = U d i a g ( ρ 1 + ρ 2 2 , ρ 2 + ρ 3 2 , 0 ) V ⊤

即把求出的矩阵投影到 E E 的流形上,即可保证其满足内在性质。更简单的做法是直接将奇异值矩阵取为diag(1, 1, 0)使得 E E 具有尺度等价性。

单应矩阵

单应矩阵(Homography) H H :描述了两个平面之间的映射关系。它描述了处于共同平面上的一些点在两张图像之间的变换关系。
假设图像 I1 I 1 I2 I 2 有匹配好的点 p1 p 1 p2 p 2 ,这些特征点落在平面上,平面满足方程:

n⃗ P+d=0 n → ⊤ P + d = 0

整理有:
n⃗ Pd=1 − n → ⊤ P d = 1

则:
p⃗ 2=K(RP+t⃗ )=K(RP+t⃗ (n⃗ Pd))=K(Rt⃗ n⃗ d)P=K(Rt⃗ n⃗ d)K1p1 p → 2 = K ( R P + t → ) = K ( R P + t → ⋅ ( − n → ⊤ P d ) ) = K ( R − t → n → ⊤ d ) P = K ( R − t → n → ⊤ d ) K − 1 p 1

这是一个关于图像坐标 p1 p 1 p2 p 2 的变换,为方便把中间这部记为 H H , 于是:
p⃗ 2=Hp⃗ 1 p → 2 = H p → 1

为求解 H H ,类似于 E E 的做法,将上式展开:
u2v21=h1h4h7h2h5h8h3h6h9u1v11 [ u 2 v 2 1 ] = [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] [ u 1 v 1 1 ]

为简化问题,实际上常常乘以一个非0因子使得 h9=1 h 9 = 1 ,即乘上 1/(h7u1+h8v1+h9) 1 / ( h 7 u 1 + h 8 v 1 + h 9 ) ,再次展开得到式子:
u2=h1u1+h2v1+h3h7u1+h8v1+h9v2=h4u1+h5v1+h6h7u1+h8v1+h9 u 2 = h 1 u 1 + h 2 v 1 + h 3 h 7 u 1 + h 8 v 1 + h 9 v 2 = h 4 u 1 + h 5 v 1 + h 6 h 7 u 1 + h 8 v 1 + h 9

注意到 h9=1 h 9 = 1 , 整理后可得到:
u2=(h1u1+h2v1+h3)(h7u1+h8v1)u2v2=(h4u1+h5v1+h6)(h7u1+h8v1)v2 u 2 = ( h 1 u 1 + h 2 v 1 + h 3 ) − ( h 7 u 1 + h 8 v 1 ) u 2 v 2 = ( h 4 u 1 + h 5 v 1 + h 6 ) − ( h 7 u 1 + h 8 v 1 ) v 2

由此可见一对匹配点可构造两项约束,于是自由度为8的单应矩阵可通过4对匹配点来算出。构造方程如下:
u110u210u310u410v110v210v310v410101010100u110u210u310u410v110v210v310v4101010101u11u12u11v12u21u22u21v22u31u32u31v32u41u42u41v42v11u12v11v12v21u22v21v22v31u32v31v32v41u42v41v42h1h2h3h4h5h6h7h8=u12v12u22v22u32v32u42v42 [ u 1 1 v 1 1 1 0 0 0 − u 1 1 u 2 1 v 1 1 u 2 1 0 0 0 u 1 1 v 1 1 1 − u 1 1 v 2 1 − v 1 1 v 2 1 u 1 2 v 1 2 1 0 0 0 − u 1 2 u 2 2 v 1 2 u 2 2 0 0 0 u 1 2 v 1 2 1 − u 1 2 v 2 2 − v 1 2 v 2 2 u 1 3 v 1 3 1 0 0 0 − u 1 3 u 2 3 v 1 3 u 2 3 0 0 0 u 1 3 v 1 3 1 − u 1 3 v 2 3 − v 1 3 v 2 3 u 1 4 v 1 4 1 0 0 0 − u 1 4 u 2 4 v 1 4 u 2 4 0 0 0 u 1 4 v 1 4 1 − u 1 4 v 2 4 − v 1 4 v 2 4 ] [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 ] = [ u 2 1 v 2 1 u 2 2 v 2 2 u 2 3 v 2 3 u 2 4 v 2 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⃗ AAe⃗  min e → ‖ A e → ‖ 2 2 = min e → e → ⊤ A ⊤ A e →

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值