對極幾何基礎矩陣求解 - 七點法

前言

一個三維點 x x x在兩個相機中的投影分別為 x 1 x_1 x1 x 2 x_2 x2,這兩個投影點座標需滿足"對極約束",即 x 2 T F x 1 = 0 x_2^TFx_1 = 0 x2TFx1=0。其中的 F F F即為基礎矩陣,本篇著重於推導基礎矩陣求解方式之一的七點法。

基礎矩陣

基礎矩陣的性質如下:

  • 3*3矩陣
  • rank為2
  • 自由度為7
  • 奇異值為 [ σ 1 , σ 2 , 0 ] T [\sigma_1, \sigma_2, 0]^T [σ1,σ2,0]T
  • 極線約束
    • l 1 = x 2 T F l_1 = x_2^TF l1=x2TF
    • l 2 = F x 1 l_2 = Fx_1 l2=Fx1
    • x 2 T F x 1 = 0 x_2^TFx_1 = 0 x2TFx1=0

基礎矩陣求解方法

基礎矩陣的求解方法包括直接線性變換法以及基於RANSAC的方法。

其中直接線性變換法包含八點法及最小二乘法。

八點法的思想如下:利用極線約束列出每一對點與基礎矩陣的關係式,這個關係式可以被改寫成兩個向量內積的形式。我們有八對點,因此可以得到八條向量內積為0的關係式。我們可以將這些關係式改寫成矩陣 A A A乘以向量等於0的形式,其中矩陣 A A A是由這八對點的座標所構成的。對 A T A A^TA ATA做SVD矩陣分解,其中最小特徵值所對應的特徵向量即為基礎矩陣的最優解。但是這一步求出來的基礎矩陣有八個自由度( F 33 F_{33} F33固定為1),還需要對它進行SVD分解再重構以滿足"奇異值約束"。

最小二乘法與八點法做法相同,差別只在於最小二乘法使用多於八對點。

七點法不同於八點法,利用七對點即可求解基礎矩陣,以下是七點法的推導。

七點法推導

參考Seven-point algorithm

F F F自由度為7(scale固定,singularity),因此理論上可以用七對點求解基礎矩陣 F F F

仿照八點法構造如下方程:

A = [ x 11 x 12 x 12 y 11 x 12 x 11 y 12 y 11 y 12 y 12 x 11 y 11 1 x 21 x 22 x 22 y 21 x 22 x 21 y 22 y 21 y 22 y 22 x 21 y 21 1 x 31 x 32 x 32 y 31 x 32 x 31 y 32 y 31 y 32 y 32 x 31 y 31 1 x 41 x 42 x 42 y 41 x 42 x 41 y 42 y 41 y 42 y 42 x 41 y 41 1 x 51 x 52 x 52 y 51 x 52 x 51 y 52 y 51 y 52 y 52 x 51 y 51 1 x 61 x 62 x 62 y 61 x 62 x 61 y 62 y 61 y 62 y 62 x 61 y 61 1 x 71 x 72 x 72 y 71 x 72 x 71 y 72 y 71 y 72 y 72 x 71 y 71 1 ] , A f = 0 A = \begin{bmatrix} x_{11}x_{12} & x_{12}y_{11} & x_{12} &x_{11}y_{12} & y_{11}y_{12} & y_{12} & x_{11} & y_{11} & 1\\ x_{21}x_{22} & x_{22}y_{21} & x_{22} &x_{21}y_{22} & y_{21}y_{22} & y_{22} & x_{21} & y_{21} & 1\\ x_{31}x_{32} & x_{32}y_{31} & x_{32} &x_{31}y_{32} & y_{31}y_{32} & y_{32} & x_{31} & y_{31} & 1\\ x_{41}x_{42} & x_{42}y_{41} & x_{42} &x_{41}y_{42} & y_{41}y_{42} & y_{42} & x_{41} & y_{41} & 1\\ x_{51}x_{52} & x_{52}y_{51} & x_{52} &x_{51}y_{52} & y_{51}y_{52} & y_{52} & x_{51} & y_{51} & 1\\ x_{61}x_{62} & x_{62}y_{61} & x_{62} &x_{61}y_{62} & y_{61}y_{62} & y_{62} & x_{61} & y_{61} & 1 \\ x_{71}x_{72} & x_{72}y_{71} & x_{72} &x_{71}y_{72} & y_{71}y_{72} & y_{72} & x_{71} & y_{71} & 1 \end{bmatrix}, Af = 0 A=x11x12x21x22x31x32x41x42x51x52x61x62x71x72x12y11x22y21x32y31x42y41x52y51x62y61x72y71x12x22x32x42x52x62x72x11y12x21y22x31y32x41y42x51y52x61y62x71y72y11y12y21y22y31y32y41y42y51y52y61y62y71y72y12y22y32y42y52y62y72x11x21x31x41x51x61x71y11y21y31y41y51y61y711111111,Af=0

對矩陣 A A A做SVD分解: A = U S V T A = USV^T A=USVT

Claim:

V V V矩陣的最後兩個column是 A A A矩陣右零空間的basis,即 A A A矩陣乘以 V ∗ , 8 V_{\ast,8} V,8 V V V的倒數第二個column)與 V ∗ , 9 V_{\ast,9} V,9 V V V的最後一個column)的線性組合會得到0,數學運算式為 A ( V ∗ , 8 + λ V ∗ , 9 ) = 0 A(V_{\ast,8}+\lambda V_{\ast,9}) = 0 A(V,8+λV,9)=0

Proof:

A ( V ∗ , 8 + λ V ∗ , 9 ) = U S V T ( V ∗ , 8 + λ V ∗ , 9 ) A(V_{\ast,8}+\lambda V_{\ast,9}) = USV^T(V_{\ast,8}+\lambda V_{\ast,9}) A(V,8+λV,9)=USVT(V,8+λV,9)

因為 V V V是正交矩陣(旋轉矩陣乘上自身的轉置矩陣可以得到I,所以旋轉矩陣為正交矩陣),所以 V i ⋅ V j = 0 V_i \cdot V_j = 0 ViVj=0 if i ≠ j i \neq j i=j V i ⋅ V j = 1 V_i \cdot V_j = 1 ViVj=1 if i = j i = j i=j

因此 V T V ∗ , 8 = ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ) T V^TV_{\ast,8} = (0,0,0,0,0,0,0,1,0)^T VTV,8=(0,0,0,0,0,0,0,1,0)T V T V ∗ , 9 = ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) T V^TV_{\ast,9} = (0,0,0,0,0,0,0,0,1)^T VTV,9=(0,0,0,0,0,0,0,0,1)T

又因為 S S S對角矩陣的最後兩個column全為0,所以 S V T V ∗ , 8 = S 8 , ∗ ⋅ ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 ) T = 0 SV^TV_{\ast,8} = S_{8,\ast} \cdot (0,0,0,0,0,0,0,1,0)^T = 0 SVTV,8=S8,(0,0,0,0,0,0,0,1,0)T=0。同理, S V T V ∗ , 9 = 0 SV^TV_{\ast,9} = 0 SVTV,9=0

因此 A ( V ∗ , 8 + λ V ∗ , 9 ) = U S V T ( V ∗ , 8 + λ V ∗ , 9 ) = U S V T V ∗ , 8 + λ U S V T V ∗ , 9 = U ∗ 0 + λ U ∗ 0 = 0 A(V_{\ast,8}+\lambda V_{\ast,9}) = USV^T(V_{\ast,8}+\lambda V_{\ast,9}) = USV^TV_{\ast,8}+\lambda USV^TV_{\ast,9} = U * 0 + \lambda U * 0 = 0 A(V,8+λV,9)=USVT(V,8+λV,9)=USVTV,8+λUSVTV,9=U0+λU0=0。Q.E.D.

V ∗ , 8 + λ V ∗ , 9 V_{\ast,8}+\lambda V_{\ast,9} V,8+λV,9 reshape 成3*3,即為基礎矩陣 F F F

又因為 F F F的rank為2,所以需限制其判別式為0,這可以透過調整 λ \lambda λ來達成。

F的判別式為 λ \lambda λ的三次多項式,可表示為: a 3 λ 3 + a 2 λ 2 + a 1 λ + a 0 = 0 a_3 \lambda^3 + a_2 \lambda^2 + a_1 \lambda + a_0 = 0 a3λ3+a2λ2+a1λ+a0=0,求解可得一個或三個 λ \lambda λ

如果得到三個 λ \lambda λ,需要第八對點來確定最終的 λ \lambda λ,以得到最終的 F F F

參考連結

Seven-point algorithm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值