高博14讲--第七讲 视觉里程计-7.3 2D-2D:对极几何

13 篇文章 3 订阅

基本问题

    当相机为单目时,只知道2D的像素坐标,根据两组2D点估计相机的运动,用对极几何来解决。

对极约束

在这里插入图片描述

  两个相机之间的变换为   T 12 \ T_{12}  T12   p 1 = T 12 ⋅ p 2 \ p_1=T_{12}·p_2  p1=T12p2,即:通过   P 2 \ P_2  P2的坐标乘以   T 12 \ T_{12}  T12,即可求得   P 1 \ P_1  P1的坐标 。
 
  在实践中:

  • 已知:匹配点对   p 1 \ p_1  p1   p 2 ​ \ p_2​  p2的像素坐标。
  • 给定:两张二维图像,二维图像上特征点的匹配关系。
  • 未知:P的三维空间坐标,   I 1 \ I_1  I1   I 2 \ I_2  I2​的变换矩阵(   T 12 \ T_{12}  T12, 即   R , T \ {R,T}  R,T)。

  • 一般是用于单目SLAM的初始化,用对极几何可求出位姿,在用三角测量估计三维空间点的位置后,就能用其他更准确的方法继续求解了。

对极约束推导过程

  设P在图1的相机坐标系下,坐标为: P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T
    p 1 ​ \ p_1​  p1   p 2 ​ \ p_2​  p2的像素坐标(单位像素): s 1 p 1 = K P , s 2 p 2 = K ( R P + t ) s_1p_1=KP,s_2p_2=K(RP+t) s1p1=KP,s2p2=K(RP+t)
      K ​ \ K​  K为相机的内参矩阵,   R , t ​ \ R,t​  R,t为两个坐标系的相机运动。
  使用齐次坐标,上式乘以非零常数都成立: p 1 = K P , p 2 = K ( R P + t ) p_1=KP,p_2=K(RP+t) p1=KP,p2=K(RP+t)
  其归一化平面坐标(单位米): x 1 = K − 1 p 1 , x 2 = K − 1 p 2 x_1=K^{-1}p_1,x_2=K^{-1}p_2 x1=K1p1,x2=K1p2
  得到: x 2 = R x 1 + t x_2=Rx_1+t x2=Rx1+t
  这里的   x 1 , x 2 \ x_1,x_2  x1,x2是齐次坐标,等式表达了一个齐次关系。

  两边同时左乘   t \ t  t^,即:两侧同时与   t \ t  t做外积,即,与   t \ t  t作叉乘: t × x 2 = t × R x 1 + t × t t×x_2=t×Rx_1+t×t t×x2=t×Rx1+t×t
    t \ t  t   t \ t  t作叉乘,夹角为0,则结果为0,即:   t × t = 0 \ t×t=0  t×t=0,上式化简为: t × x 2 = t × R x 1 t×x_2=t×Rx_1 t×x2=t×Rx1
  两侧同时左乘   x 2 T \ x_2^T  x2T x 2 T t × x 2 = x 2 T t × R x 1 x_2^Tt×x_2=x_2^Tt×Rx_1 x2Tt×x2=x2Tt×Rx1
  左式中,   t × x 2 \ t×x_2  t×x2是一个与   t \ t  t   x 2 \ x_2  x2都垂直的向量,把它再和   x 2 \ x_2  x2做内积时,将得到0。

  所以得到对极约束   x 1 , x 2 为 归 一 化 坐 标 \ x_1,x_2为归一化坐标  x1,x2 x 2 T t × R x 1 = 0 x_2^Tt×Rx_1=0 x2Tt×Rx1=0
  重新带入   p 1 , p 2 \ p_1,p_2  p1,p2   p 1 , p 2 为 像 素 坐 标 \ p_1,p_2为像素坐标  p1,p2 p 2 T K − T t × R K − 1 p 1 = 0 p_2^TK^{-T}t×RK^{-1}p_1=0 p2TKTt×RK1p1=0
  上面两式子为对极约束,几何意义是:   O 1 , P , O 2 \ O_1,P,O_2  O1P,O2三者共面。

  定义本质矩阵   E \ E  E(Essential Matrix)和基础矩阵   F \ F  F(Fundamental Matrix): E = t × R , F = K − T E K − 1 E=t×R,F=K^{-T}EK{-1} E=t×RF=KTEK1
  所以对极约束简写为: x 2 T E x 1 = p 2 T F p 1 = 0 x_2^TEx_1=p_2^TFp_1=0 x2TEx1=p2TFp1=0
  根据对极约束,相机位姿估计问题变为以下两步,即估计   R , t \ R,t  R,t的方法为:

    1.根据匹配点的位置,求出   E \ E  E或者   F \ F  F

    2.根据   E \ E  E或者   F \ F  F,求出   R , t \ R,t  R,t

本质矩阵

  本质矩阵长什么样子:
    ·   E = t × R \ E=t×R  E=t×R,   E \ E  E是一个3×3的矩阵,内有9个未知数。

    ·   E \ E  E在不同尺度下是等价的(   E \ E  E具有尺度等价性):由于对极约束是等式为零的约束,所以对   E \ E  E乘以任意非零常数后,对极约束依然满足。

    · 平移和旋转各有3个自由度,所以   t × R \ t×R  t×R共6个自由度。由于   E \ E  E具有尺度等价性,这是由于对极约束 的性质,其乘任意非零向量依然满足,即增加一个约束条件,所以6个自由度中可以去掉一个, 所以   E \ E  E实际有5个自由度。

八点法

  ·   E \ E  E具有5个自由度,最少使用5对点来求解   E \ E  E。但是,   E \ E  E具有一种非线性性质,在求解线性方程时会很麻烦。
  ·   E \ E  E当成一个3×3的普通矩阵,共9个自由度,由于   E \ E  E的尺度等价性,   E \ E  E具有8个自由度,使用8对点来估计   E \ E  E,这就是“八点法”。

八点法推导过程

  一对匹配点,它们的归一化坐标为   x 1 = [ u 1 , v 1 , 1 ] T , x 2 = [ u 2 , v 2 , 1 ] T \ x_1=[u_1,v_1,1] ^ T,x_2=[u_2,v_2,1]^T  x1=[u1,v1,1]T,x2=[u2,v2,1]T,根据对极约束,有:
[ 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 ] = 0 [u_1,v_1,1] \left[ \begin{matrix} e_1 & e_2 & e_3 \\ e_4 & e_5 & e_6 \\ e_7 & e_8 & e_9 \end{matrix} \right] \left[ \begin{matrix} u_2 \\ v_2 \\ 1 \end{matrix} \right]=0 [u1,v1,1]e1e4e7e2e5e8e3e6e9u2v21=0
  E \ E  E展开,写成向量的形式:
e = [ e 1 , e 2 , e 3 , e 4 , e 5 , e 6 , e 7 , e 8 , e 9 ] T e=[e_1,e_2,e_3,e_4,e_5,e_6,e_7,e_8,e_9]^T e=[e1,e2,e3,e4,e5,e6,e7,e8,e9]T
把对极约束写成与   e \ e  e有关的线性形式:
[ 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 [u_1u_2,u_1v_2,u_1,v_1u_2,v_1v_2,v_1,u_2,v_2,1]e=0 [u1u2,u1v2,u1,v1u2,v1v2,v1,u2,v2,1]e=0
同理,对于其他店对也有相同的表示。把所有点都放在一个方程中,变成线性方程组(   u i , v i \ u^i,v^i  ui,vi表示第   i \ i  i个特征点):
[ 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 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 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] = 0 \left[ \begin{matrix} {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}^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 \end{matrix} \right]\left[ \begin{matrix} e_1 \\ e_2 \\ e_3 \\ e_4 \\ e_5 \\ e_6 \\ e_7 \\ e_8 \\ e_9 \end{matrix} \right]=0 u11u21u12u22...u18u28u11v21u12v22...u18v28u11u12...u18v11u21v12u22...v18u28v11v21v12v22...v18v28v11v12...v18u21u22...u28v21v22...v2811...1e1e2e3e4e5e6e7e8e9=0
由上式可以求得   E \ E  E,根据   E \ E  E求取相机的运动   R , t \ R,t  Rt

本质矩阵   E \ E  E的SVD分解

  根据   E \ E  E求取相机的运动   R , t \ R,t  Rt,对   E \ E  E进行奇异值分解(   S V D \ SVD  SVD):
  设   E \ E  E的SVD分解为:
E = U Σ V T E=U\Sigma{V^T} E=UΣVT
  其中   U , V \ U,V  U,V为正交阵,   Σ \ \Sigma  Σ为奇异值矩阵。根据本质矩阵   E \ E  E的内在性质,   E \ E  E的奇异值必定为   [ σ , σ , 0 ] T \ [\sigma,\sigma,0]^T  [σ,σ,0]T, 所以   Σ = d i a g [ σ , σ , 0 ] \ \Sigma=diag[\sigma,\sigma,0]  Σ=diag[σ,σ,0]

  在   S V D \ SVD  SVD分解中,对于任意一个   E \ E  E,存在两个可能的   t , R \ t,R  t,R与它对应:
t 1 Λ = U R Z ( π 2 ) Σ U T , R 1 = U R Z T ( π 2 ) V T t_1^{\Lambda}=UR_Z(\frac{π}{2}){\Sigma}U^T,R_1=UR_Z^T(\frac{π}{2})V^T t1Λ=URZ(2π)ΣUT,R1=URZT(2π)VT
t 2 Λ = U R Z ( − π 2 ) Σ U T , R 2 = U R Z T ( − π 2 ) V T t_2^{\Lambda}=UR_Z(-\frac{π}{2}){\Sigma}U^T,R_2=UR_Z^T(-\frac{π}{2})V^T t2Λ=URZ(2π)ΣUT,R2=URZT(2π)VT
 其中   R Z T ( π 2 ) \ R_Z^T(\frac{π}{2})  RZT(2π)表示沿   Z \ Z  Z轴旋转   9 0 ∘ \ 90^\circ  90得到的旋转矩阵。


  由于   − E \ -E  E   E \ E  E等价,所以任意一个   t \ t  t取负号,也会得到相同的结果。因此,从   E \ E  E分解到   t , R \ t,R  t,R时,一共存在4个可能的解。
在这里插入图片描述(1)   P \ P  P   O 1 , O 2 \ O_1,O_2  O1O2两个相机的前面,深度都为正。
(2)   P \ P  P   O 1 , O 2 \ O_1,O_2  O1O2两个相机的后面,深度都为负。
(3)   P \ P  P   O 1 \ O_1  O1相机的后面,深度为负;在   O 2 \ O_2  O2相机的前面,深度为正。
(4)   P \ P  P   O 1 \ O_1  O1相机的前面,深度为正;在   O 2 \ O_2  O2相机的后面,深度为负。

单目SLAM的一些问题

尺度不确定性

  t的尺度不确定性。t是平移向量,对t乘任意倍数,对极约束依然成立。
  这说明把地图和轨迹同时缩放任意倍,得到的观测值仍然是一样的。图7-7中,   P , O 1 , O 2 \ P,O_1,O_2  P,O1,O2点同时缩放任意倍,   p 1 , p 2 \ p_1,p_2  p1,p2点不变。

纯旋转问题

  若是纯旋转,t为0,而   E = t × R \ E=t×R  E=t×R,则E为0,无法求解R。
  单目初始化不能只有旋转,必须要有平移。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值