ORB-SLAM點雲地圖中相機的位姿初始化,無論算法工作在平面場景,還是非平面場景下,都能夠完成初始化的工作。其中主要是使用了适用于平面場景的單應性矩陣H和适用于非平面場景的基礎矩陣F,程序中通過一個評分規則來選擇适合的模型,恢複相機的旋轉矩陣R和平移矩陣t
那麼下面主要講解關于對極幾何中的基礎矩陣,本質矩陣,和單應矩陣之間的區别與聯系。
對極幾何(Epipolar Geometry)描述的是兩幅視圖之間的内在射影關系,與外部場景無關,隻依賴于攝像機内參數和這兩幅視圖之間的相對位姿。
兩視圖的對極幾何可以理解為圖像平面與以基線為軸的平面束相交的幾何關系,其中主要有幾種概念:
(1)基線(base line):兩個相機中心的連線CC'稱為基線。
(2)對極點(epipolar):ee'是對極點,是基線與兩個成像平面的交點,也就是兩個相機在另一個成像平面上的像點。
(3)對極平面(epipolar plane):過基線的平面都稱之為對極平面,其中兩個相機的中心C和C',三維點X,以及三維點在兩個相機成像點xx'這五點必定在同一對極平面上,當三維點X變化時,對極平面繞着基線旋轉,形成對極平面束。
(4)對極線(epipolar line):是對極平面和成像平面的交線,所有的對極線都相交于極點。
那麼由對極幾何的基本性質引出了對極約束的概念,對極約束是指在平面2上的p點在平面1上的對應點一定在基線I'上,這句話說明了對極約束是一個點到直線的射影映射關系。如圖所示:
根據對極約束可以引出本質矩陣和基礎矩陣。在已知相機标定的情況下,假設有一個三維坐标點P(X,Y,Z)在兩個視圖上的點分别為p1,p2,由于第一個相機的中心作為世界坐标系的原點,也就是說第一個相機沒有旋轉R和平移t,通過小孔相機模型有:
p1=KP, p2=K(RP t)
其中,K是相機的内參,R,t是第二個相機相對于第一個相機的旋轉和平移。
從p1=KP可以得到
帶入到第二個式子得到
兩邊同時乘以K_1得到
設x1,和x2表示為
帶入到x2=Rx1 t中,兩邊同時左乘向量t的反對稱矩陣t×,由于t×t=0,消除t,
兩邊再同時左乘xT2
由于t×x2是向量t和向量x2的叉積,同時垂直于向量t和向量x2,所以左邊的式子為0得到:
将x1,x2替掉
上式是對極約束的一種表示,該式子中僅包含像點,相機的旋轉和平移,中間的矩陣就是基礎矩陣F:
當K已知時提取中間的矩陣得到本質矩陣E,E矩陣同樣表示的是對極約束的關系,隻不過它不再涉及相機内參,隻由兩視圖之間的姿态關系決定:
F矩陣的性質有三:
1, 3*3且自由度為7的矩陣
2,kF 為基礎矩陣,相差一個尺度自由度
3,F矩陣的秩為2
基礎矩陣的求解方法:
1,直接線性變換法(8點法 最小二乘法)
2,RANSAC-估計基礎矩陣
求解基礎矩陣後,我們實際上是想求R和t.所以還是要繼續求解本質矩陣直到分解出R,t
E矩陣的性質:
(1)3*3且自由度為5的矩陣
(2)因為隻包含R,t共有6個自由度,又因為尺度等價去掉一個自由度
(3)本質矩陣E的奇異值 必定為[ delta delta,0]T 的形式
ORB-SLAM中通過E、F矩陣就可以利用兩視圖中的匹配點求解出相對姿态了,不過這個方法存在一個問題——當兩個視圖的相機中心相同時,也就是R,t中的t為0,這時對極幾何的基礎也就不成立了,可知E、F均為0無法求解。這時就需要使用平面間的單應性H矩陣恢複R,t。
單應性矩陣Homogeneous是射影幾何中的一個術語,又稱之為射影變換。本質上是一個數學概念,一般所說的單應矩陣是平面上的單應性矩陣,主要用來解決兩個問題:
(1)表述真實世界中一個平面與他對應圖像的透視變換
(2)通過透視變換實現圖像從一個視圖變換到另一個視圖的轉換。
把一個射影平面上的點(三維齊次矢量)映射到另一個射影平面上,并且把直接射影為直線,具有保線性,總的來說單應是關于三維齊次矢量的一種線性變換,如圖所示,兩個平面之間的關系可以用一個3*3的非奇異矩陣H表示x1=Hx2,H表示單應矩陣,定義了八個自由度。這種關系定義為平面單應性。
假設已經取得了兩圖像之間的單應,則可單應矩陣HH可以将兩幅圖像關聯起來:
其中,(u1,v1,1)T(u1,v1,1)T表示圖像1中的像點,(u2,v2,1)T(u2,v2,1)T是圖像2中的像點,也就是可以通過單應矩陣H将圖像2變換到圖像1,該功能有很多實際的應用,例如圖像的校正、對齊以及在SLAM中估計兩個相機間的運動。并保持某些性質的不變性,顯然具有保線性。
而在視覺slam中一般為同一相機在不同的位姿得到同一平面的圖像有以下公式
以上公式如何推導而來呢?假設使用同一相機在不同的位姿下拍攝了同一平面,如圖:
上圖表示場景中的平面π在兩相機的成像,設平面π在第一個相機坐标系下的單位法向量為N,其到第一個相機中心(坐标原點)的距離為d,則平面π可表示為:
變換為
其中,X1是三維點P在第一相機坐标系下的坐标,其在第二個相機坐标系下的坐标為X2,則
将上面式子結合起來有
得到了同一平面兩個不同相機坐标系的單應矩陣
單應矩陣求解方法:
(1)直接線性變換法。
(2)RANSAC-估計單應矩陣
平面的單應矩陣和對極約束的F矩陣的區别
兩圖像間的對極約束和場景的結構無關,可以理解對極約束對于任意場景結構的兩幅圖像都是成立的,約束是不能給出兩幅圖像上的像點的一一對應關系,但是可以給出點對應的必要條件,另一幅圖像上對應的像點位于對應的對極線上。基礎矩陣F描述的實際是一種點和直線的映射關系,而不是一種點對點的約束關系,并不能給出另一個點的确切位置。
平面間的單應矩陣,并不像對極約束完全不需要場景的結構信息,它對場景的結構有了要求,場景的點必須在同一個平面上,因此單應矩陣H也就能夠對兩圖像上對應點的提供更多的約束,知道了某點在一幅圖像的像點位置後,可以通過單應矩陣,求得其在另一幅圖像中像點的确切位置。
單應矩陣的應用場景是相機隻有旋轉而無平移的時候,兩視圖的對極約束不成立,基礎矩陣F為零矩陣,這時候需要使用單應矩陣H,場景中的點都在同一個平面上,可以使用單應矩陣計算像點的匹配點。 相機的平移距離相對于場景的深度較小的時候,也可以使用單應矩陣H。
本文内容推導大部分來自《視覺SLAM14講》
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!