單應矩陣、基本矩陣和本質矩陣

單應矩陣、基本矩陣和本質矩陣

1 概述

2 矩陣計算

單應矩陣

1)結構

2)求解

3)求解中的問題

4)恢復運動

基本矩陣和本質矩陣

1)結構和求解

2)恢復運動

3 參考資料


這一篇主要是介紹和總結在視覺slam中經常用到的一些變換矩陣。

1 概述

        對於單應矩陣H來說,它對應一個2D的攝影變換,即滿足兩幅圖像之間對應點x和x^'的變換\mathbf{Hx}=\mathbf{x}^'

        對於基本矩陣F來說,它也對應一個2D攝影變換,只不過它是將一幅圖像中的一個點映射爲另一幅圖像中的一條直線,即滿足\textup{x}^'^T\textup{Fx}=0,其中Fx是將圖像上一點x映射爲另一幅圖像中的一條線I^',而\textup{x}^'^T{I^'}=0表示點在直線上。

        對於本質矩陣E來說,它可以說是對應一個3D變換,將空間中一個點映射爲空間中的一條直線,即滿足\textup{x}^'^T\textup{Ex}=0,只不過這裏的點和線都是三維的。

2 矩陣計算

單應矩陣

1)結構

        對於單應矩陣,它使用的是齊次座標,因此單應矩陣的維度是3*3。在\mathbf{Hx}=\mathbf{x}^'兩邊同時左叉乘x^'可以得到{\mathbf{x}^'}\times \mathbf{Hx}=\mathbf{0},經過整理可得

                                                 \left[ \begin{array}{ccc}{\mathbf{0}^{\top}} & {-w_{\mathbf{i}}^{\prime} \mathbf{x}_{i}^{\top}} & {y_{i}^{\prime} \mathbf{x}_{i}^{\top}} \\ {w_{i}^{\prime} \mathbf{x}_{i}^{\top}} & {\mathbf{0}^{\top}} & {-x_{i}^{\prime} \mathbf{x}_{i}^{\top}} \\ {-y_{i}^{\prime} \mathbf{x}_{i}^{\top}} & {x_{i}^{\prime} \mathbf{x}_{i}^{\top}} & {\mathbf{0}^{\top}}\end{array}\right] \left( \begin{array}{l}{\mathbf{h}^{1}} \\ {\mathbf{h}^{2}} \\ {\mathbf{h}^{3}}\end{array}\right)=\mathbf{0}                           (1)

                                                                      \mathrm{A}_{i} \mathrm{h}=0

        其中\mathbf{h}^i是矩陣H第i行的轉置,由於這個關係是在齊次座標下成立的,H最多隻能確定到相差一個尺度因子,因此H有8個獨立的比率,自由度爲8。由式1可以看出來A的秩爲2,即每對點提供兩個約束,所以要求解單應矩陣H至少需要4對匹配點。

2)求解

         前面說過求解H至少需要4對匹配點,當有精確的4對匹配點時我們可以直接解線性方程組得到唯一精確解;當這4對點不精確的時候也能得到一個解,但不準確;當對應點超過4對時,由於誤差的存在,往往除了零解之外是無解的,這時候就需要求一個使整體誤差最小的近似解。

        對於求這個近似解,我們按照誤差有沒有物理意義分成根據代數距離求解和根據幾何距離求解。

        根據代數距離求解就是最小化代數誤差矢量,即min\left \|{A h} \right \|,可以參看資料[1]和資料[2]的P408。一般使用SVD分解的方法分解係數矩陣A,即A=UDV^T,最小特徵值對應的特徵向量(V的最後一列)即爲H的近似解

        根據幾何距離求解誤差函數包括單圖像誤差、對稱轉移誤差、重投影誤差等,具體可以參看資料[2]P57。求解幾何距離時誤差函數不是線性的,所以可以使用上一篇文章中的圖優化方法

        對於求近似解的大多數問題我們都可以使用RANSAC算法來過濾大多數的外點。代數誤差的方法直接求閉式解,很快;而幾何距離的方法往往是迭代求解的,比較慢。但是使用代數誤差存在一些問題。

3)求解中的問題

       在slam中我們往往在圖像金字塔中求解對應的特徵點來保證特徵的尺度不變性,但是由於圖像金字塔中的尺度變化不是連續的,往往在匹配時會造成一些尺度上的變化(純屬個人猜測);其次在其他一些基於圖像的應用中圖像的座標原點會變化。這些變化在基於幾何距離計算單應矩陣的方法中不會引起任何不適,但是在基於代數距離的求解中,由於這些變化的存在,計算變得不再精確,也就是說幾何誤差對這些變化是非不變的(具體推導過程參見資料[2]P66)。

       資料[2]中說歸一化可以顯著降低上面那些變化帶來的影響。

       歸一化的過程包括(平移和縮放):

                                 將所有點對計算得到的形心移動到原點(t1、t2)

                                 對u方向和v方向的平均距離進行歸一化  (s1、s2)

       這樣就得到了每幅圖像上的歸一化變換矩陣

                           T_1=\begin{bmatrix} s_1.x & 0 & -t_1.x*s_1.x\\ 0& s_1.y & -t_1.y*s1.y\\ 0& 0& 1 \end{bmatrix}T_2=\begin{bmatrix} s_2.x & 0 & -t_2.x*s_2.x\\ 0& s_2.y & -t_2.y*s2.y\\ 0& 0& 1 \end{bmatrix}

      將歸一化後計算出的單應矩陣H^'使用T1、T2進行反歸一化就得到原始的單應變換

                                                          H=T_2^{-1}H^{'}T_1

4)恢復運動

        最後一步是分解恢復旋轉和平移,這一步可以參看資料[3]。

基本矩陣和本質矩陣

1)結構和求解

        基本矩陣和本質矩陣差不多是一回事,F=K^{-T}EK^{-1},其中K是相機內參。E是將相機座標系下一個深度爲1的三維點映射爲另一個相機座標系下空間中的一條直線;F是將一幅圖像上的一個二維點映射爲另一幅圖像的一條直線。這兩個體現的是一種規律,將點映射爲直線,只不過一個是空間,一個是平面,它們可以通過內參矩陣聯繫起來。

        基本矩陣和單應矩陣類似,它使用的是齊次座標,因此維度是9,差一個尺度自由度爲8,行列式爲零,所以最後自由度爲7。本質矩陣可以分解爲R和t([4]P142),因此它的自由度爲6,又最多隻能確定到相差一個尺度因子,所以最終的自由度爲5。對於求解這兩個矩陣的最小集合來說,F需要7對點,E需要5對點。當擁有的點對超過最小值時,求解F和H一樣有代數誤差和幾何誤差這兩種方法,當使用代數誤差求解的時候也需要進行歸一化。並且使用幾何誤差的時候要注意對最後的結果進行奇異值約束。

2)恢復運動

        由於基本矩陣和本質矩陣的關係,我們只需要對本質矩陣分解即可。                          

        由E=t^{\Lambda }R可以看出我們只需要將E的分解與反對稱矩陣和正交矩陣的乘積對應起來即可,即

                                                        E=SR=Udiag(1,1,0)V^T

       其中S=t^\Lambda。具體的變換過程可以看資料[2]P174.最終有

                                            S=UZU^T,  R=UWV^T或者R=UW^{T}V^T

        其中W=\begin{bmatrix} 0& -1& 0\\ 1& 0& 0\\ 0& 0& 1 \end{bmatrix},Z=\begin{bmatrix} 0& 1& 0\\ -1& 0& 0\\ 0& 0& 0 \end{bmatrix}.

        又St=t^{\Lambda }t=UZU^{T}t=0,所以湊出來t=U(0,0,1)^T=u_3,其中u_3爲U的最後一列。

        最後的分解有四種結果:

                                          \left\{\begin{array}{l}{t=u_{3}} \\ {R=U W V^{T}}\end{array}\right.                              \left\{\begin{array}{l}{t=-u_{3}} \\ {R=U W V^{T}}\end{array}\right.

                                          \left\{\begin{array}{l}{t=u_{3}} \\ {R=U W^{T} V^{T}}\end{array}\right.                            \left\{\begin{array}{l}{t=-u_{3}} \\ {R=U W^{T} V^{T}}\end{array}\right.

        對應下面四種情況

                        

        下面只需要找一個歸一化的點帶入計算,保證深度都爲正的解就是正確解。

3 參考資料

[1] https://blog.csdn.net/kokerf/article/details/72437294

[2] 《計算機視覺中的多視圖幾何》

[3] Olivier Faugeras, F. Lustman. Motion and structure from motion in a piecewise planar environment.
RR-0856, INRIA. 1988. inria-00075698

[4] 《視覺SLAM十四講 從理論到事件》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章