極幾何是機器人視覺分支——雙目視覺中,最為重要的概念。與結構光視覺不同,雙目視覺是主!動!測!量!方法。
1、極幾何的研究前提
極幾何的研究對象是兩幅有重疊區域圖像。研究目標是提取相機拍攝位姿之間的關系。一旦得到兩次拍攝位姿之間的關系,我們就可以對場景點進行三維重建。
極幾何定義的物理量包括4個:1、極點,2、極線,3、基本矩陣,4、本征矩陣;定義如左圖。
極幾何研究的物理量包括4個:C1坐標,C2坐標,R,T,定義如右圖。
極點的本質是另一台相機光心在本圖像上的映射點。極線的本質是另一台相機光線在本圖像上的映射線。(極點和極線都是在圖像上的)
1.1、本征矩陣
本征矩陣攜帶了相機相對位置信息。其推導如下:
在相機2的坐標系中,場景點坐標:X2 = RX1+ t
相機1光心坐標:t
極線在空間中的映射 :X2 - t = RX1
此時,三個向量在同一個平面上,則有: X2 T tx RX1 = 0
其中,tx 代表 t 的叉乘矩陣。tx R 稱為本征矩陣E. 兩幅圖片一旦拍攝完成R與T都是確定的。空間中任何一組對應點都必須滿足本征矩陣!
1.2、基本矩陣
空間中的點滿足E矩陣,則該點坐標Zoom后,仍然必須滿足E矩陣。坐標的Zoom顯然和相機內部矩陣有關。
在相機坐標系下:
x1 = KX1; x2 = KX2
其中,x1 ,x2 是齊次像素坐標。那么,X1 = K-1x1 ;X2 = K-1x2
帶入本征矩陣可得:
x2 T K-Ttx RK-1 x1 = 0 ======> K-TEK-1 = 0 =========> x2 T F x1 = 0
F = K-TEK-1 稱為基本矩陣。基本矩陣所接受的是齊次像素坐標。
基本矩陣的秩是2,因為它有0空間。同時,其自由度是8,因為它接受的是齊次坐標。每組圖像點可以提供1個方程,所以由8組點就可以線性解出F矩陣。當然,解法是化成Ax = 0,然后使用奇異值分解取v的最后一列。然后2次奇異值分解去掉最小奇異值正則化。
1.3、極點與極線
從基本矩陣可知:x2 T F x1 = 0
顯然這里有熟悉的身影,由點線對偶可知,x2 在直線 F x1 上。 該直線是極線在圖像2上的方程。x1 在直線 x2 T F 。 該直線是極線在圖像1上的方程。
極點是多條極線的交點(最少兩條)
2、由本征矩陣恢復R,T
E = tx R = [ tx r1 tx r2 tx r3 ]
E的秩為2,因為其有0空間。同時,由於r1 r2 r3 是正交的,所以其叉乘之后必然也是正交的。所以不妨假設其叉乘完之后依然滿足旋轉矩陣的某些性質。比如:每一列,模相等。
由 tT E = 0 可知,對E奇異值分解之后,t 為最小奇異值所對應的 u(:,end). 如下:
這里假設了 R = UYVT .因為U,V和R是同族的。所以必然由矩陣Y使得上式成立。V是相互垂直的,R的作用是旋轉,U則必然是相互垂直的。所以這里R一定有解,不妨設一個中間變量Y。並很容易解得:
綜合來看,由4組可能的解,對應以下四種情況,其中只有第一種是可能的。故det(R) = 1 則猜z中了正確的解,如果det(R) = -1 則解為:t = -t 。R = -R
3、由空間位置關系恢復三維坐標
在已知標定信息,兩相機位置關系的情況下,就已知了兩個相機的投影矩陣P,對於空間中一點X1,有以下關系:
x1 = P*X1
[x1]x P X1 = 0;
顯然,我們又有了Ax = 0的神奇形式。奇異值分解搞定之。
4、由RANSAC求 F 矩陣
有了8個對應點,我們就可以求得F矩陣,再加上K,我們就可以對兩幅圖片進行三維重建。然而想要自動的求取8個對應點還是有一定難度。
SIFT算法提供了一種自動匹配的可能性,然而,匹配結果還有很多誤匹配的點。本節的目標是利用RANSAC作為算法基礎,基礎矩陣作為方法,來對匹配結果進行判斷。
首先,由於檢測誤差等因素,像素點不可能恰好滿足基本方程。所以點到極線會有一定的距離。我們采用垂直距離來建模,有以下表達式:
F1表示F的第一列。只要誤差小於閾值,都認為該點符合 F 方程。
算法流程如下:
1、隨機取8個點
2、估計F
3、計算所有點的e,並求#inlier
4、回到1,2,3,如果#inlier變多則更新F_candidate
5、迭代很多次結束,F_candidate 為F的估計值
RANSAC算法又一次證明了其對噪聲超級好的控制能力。