vSLAM学习笔记——本质矩阵

记录一下本质矩阵的一些知识点。

对极几何

x 2 T t ∧ R x 1 = 0. x_2^Tt^\wedge Rx_1=0. x2TtRx1=0. p 2 T K − T t ∧ R K − 1 p 1 = 0. p_2^TK^{-T}t^\wedge RK^{-1}p_1=0. p2TKTtRK1p1=0.
对极几何的几何意义是 O 1 , P , O 2 O_1,P,O_2 O1,P,O2三者共面。对极约束中同时包含了平移和旋转。记:
E = t ∧ R E=t^\wedge R E=tR F = K − T t ∧ R K − 1 F=K^{-T}t^\wedge RK^{-1} F=KTtRK1 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.
E E E被称为本质矩阵, F F F被称为基础矩阵。

本质矩阵

本质矩阵定义:
E = t ∧ R E=t^\wedge R E=tR是一个 3 × 3 3\times 3 3×3的矩阵,有 9 9 9个未知数。
E E E的构造方式上来看,有以下值得注意的地方:

  • 本质矩阵是由对极约束定义的。由于对极约束是等式为零的约束,所以对 E E E乘以任意非零常数后,对极约束依然满足。这被称为 E E E在不同尺度下是等价的。
  • 根据 E = t ∧ R E=t^\wedge R E=tR,可以证明本质矩阵 E E E的奇异值必定是 [ σ , σ , 0 ] T [\sigma,\sigma,0]^T [σ,σ,0]T的形式。这被称为本质矩阵的内在性质。
  • 另外,由于平移和旋转各有 3 3 3个自由度,故 E = t ∧ R E=t^\wedge R E=tR共有 6 6 6个自由度。但由于尺度等价性,故 E E E实际上有 5 5 5个自由度。

八点法

E E E具有5个自由度的事实,表明我们最少可以用5对点来求解 E E E。但 E E E的内在性质是一种非线性性质,在估计时会带来麻烦。因此也可以只考虑它的尺度等价性,使用 8 8 8对点来估计 E E E——八点法
八点法只利用了 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]Tx2=[u2,v2,1]T。根据对极约束,有
( u 2 , v 2 , 1 ) ( e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ) ( u 1 v 1 1 ) = 0 \begin{pmatrix}u_2,v_2,1\end{pmatrix}\begin{pmatrix} e_1 & e_2 & e_3 \\ e_4 & e_5 & e_6 \\ e_7 & e_8 & e_9 \\ \end{pmatrix}\begin{pmatrix}u1\\v1\\1\end{pmatrix}=0 (u2,v2,1)e1e4e7e2e5e8e3e6e9u1v11=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 2 u 1 , u 2 v 1 , u 2 , v 2 u 1 , v 2 , v 1 , v 2 , u 1 , v 1 , 1 ] ⋅ e = 0 [u_2u_1,u_2v_1,u_2,v_2u_1,v_2,v_1,v_2,u_1,v_1,1]\cdot e=0 [u2u1,u2v1,u2,v2u1,v2,v1,v2,u1,v1,1]e=0同理表示其他点对,并把所有点都放到一个方程中,变成线性方程组:
( u 2 1 u 1 1 u 2 1 v 1 1 u 2 1 v 2 1 u 1 1 v 2 1 v 1 1 v 2 1 u 1 1 v 1 1 1 u 2 2 u 1 2 u 2 2 v 1 2 u 2 2 v 2 2 u 1 2 v 2 2 v 1 2 v 2 2 u 1 2 v 1 2 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ u 2 8 u 1 8 u 2 8 v 1 8 u 2 8 v 2 8 u 1 8 v 2 8 v 1 8 v 2 8 u 1 8 v 1 8 1 ) ( e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ) = 0 \begin{pmatrix}u_2^1u_1^1&u_2^1v_1^1&u_2^1&v_2^1u_1^1&v_2^1v_1^1&v_2^1&u_1^1&v_1^1&1\\ u_2^2u_1^2&u_2^2v_1^2&u_2^2&v_2^2u_1^2&v_2^2v_1^2&v_2^2&u_1^2&v_1^2&1\\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ u_2^8u_1^8&u_2^8v_1^8&u_2^8&v_2^8u_1^8&v_2^8v_1^8&v_2^8&u_1^8&v_1^8&1 \end{pmatrix}\begin{pmatrix}e_1\\e_2\\e_3\\e_4\\e_5\\e_6\\e_7\\e_8\\e_9\end{pmatrix}=0 u21u11u22u12u28u18u21v11u22v12u28v18u21u22u28v21u11v22u12v28u18v21v11v22v12v28v18v21v22v28u11u12u18v11v12v18111e1e2e3e4e5e6e7e8e9=0
该线性方程组的系数矩阵是由特征点位置构成的,大小为 8 × 9 8\times9 8×9 e e e位于该矩阵的零空间中。如果系数矩阵满秩,则零空间维数为 1 1 1,也就是 e e e构成一条线。这与 e e e的尺度等价性是一致的,而 E E E的各元素就可由上述方程解得。

求解R,t

R 和 t R和t Rt分别由 E E E的奇异值分解( S V D SVD SVD)得到。
E E E S V D SVD SVD为:
E = U Σ V T E=U\Sigma V^T E=UΣVT
其中 U , V U,V UV为正交矩阵, Σ \Sigma Σ为奇异值矩阵。根据 E E E的内在性质可知 Σ = d i a g ( σ , σ , 0 ) \Sigma=diag(\sigma,\sigma,0) Σ=diag(σ,σ,0)。在 S V D SVD SVD分解中,对于任意一个 E E E,存在两个可能的 t , R t,R tR与之对应:
t 1 ∧ = U R Z ( π 2 ) Σ U T , R 1 = U R Z T ( π 2 ) V T t^\wedge_1=UR_Z(\frac{\pi}{2})\Sigma U^T,R_1=UR^T_Z(\frac{\pi}{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^\wedge_2=UR_Z(-\frac{\pi}{2})\Sigma U^T,R_2=UR^T_Z(-\frac{\pi}{2})V^T t2=URZ(2π)ΣUT,R2=URZT(2π)VT
其中 R Z ( π 2 ) 表 示 沿 Z 轴 旋 转 90 ° R_Z(\frac{\pi}{2})表示沿Z轴旋转90° RZ(2π)沿Z90°得到旋转矩阵。同时,由于 − E 和 E -E和E EE等价,所以对任意一个 t t t取负号,也会得到同样的结果。因此,从 E E E分解到 t , R t,R tR时,一共存在 4 4 4个可能的解。将任意一点代入这 4 4 4个解中,检测该点在两个相机下的深度,就可以确定哪个解是正确的了。

讨论

根据线性方程解出的 E E E可能不满足 E E E的内在性质——它的奇异值不一定为 σ , σ , 0 \sigma,\sigma,0 σ,σ,0的形式。这时需要把 Σ \Sigma Σ调整成上面的样子。通常的做法是,对八点法求得的 E E E进行 S V D SVD SVD,会得到奇异值矩阵 Σ = d i a g ( σ 1 , σ 2 , σ 3 ) \Sigma=diag(\sigma_1,\sigma_2,\sigma_3) Σ=diag(σ1,σ2,σ3),不妨设 σ 1 ≥ σ 2 ≥ σ 3 \sigma_1\geq\sigma_2\geq\sigma_3 σ1σ2σ3。取:
E = U d i a g ( σ 1 + σ 2 2 , σ 1 + σ 2 2 , 0 ) V T E=Udiag(\frac{\sigma_1+\sigma_2}{2},\frac{\sigma_1+\sigma_2}{2},0)V^T E=Udiag(2σ1+σ2,2σ1+σ2,0)VT这相当于是把求出来的矩阵投影到了 E E E所在的流形上
更简单的做法是将奇异值矩阵取成 d i a g ( 1 , 1 , 0 ) diag(1,1,0) diag(1,1,0),因为 E E E具有尺度等价性 ,所以这样做也是合理的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小岳在线debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值