在上篇相機模型中介紹了圖像的成像過程,場景中的三維點通過“小孔”映射到二維的圖像平面,可以使用下面公式描述:
基礎矩陣\(F\)表示的就是這種從點到直線的映射。
F的幾何推導
該推導來自《計算機視覺中的多視圖幾何》。
要將一幅圖像上的像點\(x\)映射到另一幅圖像對應的對極線\(l'\)可以分為兩步:第一步,將像點\(x\)映射到另一幅圖像上與之對應的對極線\(l'\)上的某點\(x'\)上,\(x'\)是\(x\)的匹配點;第二步,連接對極點\(e'\)與點\(x'\)得到的直線就是對極線\(l'\)。
- 點通過平面轉移 如下圖,平面\(\pi\)不通過兩相機中心,過第一個相機的中心\(C\)和像點\(x\)的射線與\(\pi\)相交於點\(X\)。該點\(X\)再投影到第二幅圖像上得到像點\(x'\),這個過程稱為點通過平面的轉移。
點\(X\)位於像點\(x\)和相機中心確定的射線上,其在另一幅圖像上的像點\(x'\)必然位於該射線在另一幅圖像的投影也就是對極線\(l'\)上。點\(x\)和點\(x'\)都是三維點\(X\)的像點,這樣第一副圖像上的像點集合\(x_i\)和第二幅圖像上的像點集合\(x'_i\)是射影等價的,它們都射影等價於共面的三維點集合\(X_i\)。因此,存在一個2D單應\(H_{\pi}\),把每一個點\(x\)映射到對應的點\(x'\)上。
2D單應\(H_{\pi}\)指的是將射影平面上的點集\(x_i\)映射到另一個射影平面的點集\(x'_i\)上的射影變換,在實際情況中\(x_i\)和\(x'_i\)通常是兩幅圖像上的像點,每幅圖像都被視為一個射影平面。
-
構造對極線 給點點\(x'\),通過\(x'\)和對極點\(e'\)的對極線\(l'\)可以表示為:$$l'=e'\times x'=[e']{\times}\cdot x'$$.
又由於\(x'=H_{\pi}x\)(\(H_{\pi}\)是將\(x\)變換為\(x'\)的單應),帶入上式可得: $$l'=[e']{\times}H_{\pi} x$$
定義$$F=[e']{\times}H{\pi}$$
這樣就得到了從點\(x\)到對極線\(l'\)的變換$$l'=Fx$$
以上就是基礎矩陣\(F\)的推導過程。 -
基礎矩陣\(F\)可以記為:\(F=[e']_{\times}H_{\pi}\),其中\(H_{\pi}\)是一幅圖像上像點到另一幅圖像上的2D單應,\([e']_{\times}\)是對極點\(e'\)的反對稱矩陣。由於\([e']_{\times}\)秩為2,\(H_{\pi}\)的秩為3,基礎矩陣\(F\)的秩為2.
-
對極約束
由於\(l'=Fx\),而像點\(x'\)在對極線\(l'\)上,故可得到
上式被稱為對極約束,僅通過匹配的點對就可以求出兩視圖的基礎矩陣\(F\)。
向量的叉積,反對稱矩陣\([e']_{\times}\) 在射影幾何中,一條直線有兩點確定,如上面對極線有像點\(x'\)和對極點\(e'\)確定,並且可以表示為這兩個點的叉積形式,有\(l'=e'\times x'\)。
設有兩個向量\(\overrightarrow{a},\overrightarrow{b}\),則這兩個向量的叉積仍然是一個向量,並且垂直於\(\overrightarrow{a},\overrightarrow{b}\)所在的平面。其坐標表示如下:
其中\(\overrightarrow{a}_{\times}\)稱為向量\(\overrightarrow{a}\)的反對稱矩陣
通過引入反對稱矩陣,向量的叉積可以使用矩陣乘法的表示,形式非常簡潔。
F的代數推導
該推導來自《視覺SLAM十四講》
設以第一個相機作為坐標系三維空間的點\(P=[X,Y,Z]\),其在兩個相機的像點分別為\(p_1,p_2\)。由於第一個相機的中心作為世界坐標系的原點,也就是說第一個相機沒有旋轉和平移,通過小孔相機模型可得:
其中,\(K\)是相機的內參,\(R,t\)是第二個相機相對於第一個相機的旋轉和平移。
從\(p_1 = KP\)可以得到\(P=K^{-1}p_1\),帶入第二個式子可得到:
兩邊同時左乘\(K^{-1}\),得到
設\(x_1=K^{-1}p_1,x_2=K^{-1}p_2\),代入
兩邊同時左乘向量\(t\)的反對稱矩陣\(t_{\times}\),由於\(t_{\times}t=0\),消除\(t\)
兩邊再同時左乘\(x_2^T\)
由於\(t_{\times}x_2\)是向量\(t\)和向量\(x_2\)的叉積,同時垂直於向量\(t\)和向量\(x_2\),所以左邊\(x_2^Tt_{\times}x_2=0\),得到
再將\(x_1,x_2\)換掉
上式是對極約束的另一種表示,該式子中僅包含像點,相機的旋轉和平移,中間的矩陣就是基礎矩陣\(F\)。
式子\(F=K^{-T}t_{\times}RK^{-1}\),可知假如相機的內參數\(K\)是已知的,提取中間的矩陣可到
E被稱為本質矩陣,其和基礎矩陣相差相機的內參\(K\)。
通過匹配的點對計算相機的位姿
通過上面的知道,對於匹配的像點\(p_1,p_2\)以及基礎矩陣\(F\)有如下關系:
也就是說,僅通過匹配的點對(最少7對)可以計算出兩視圖的基礎矩陣\(F\),然后再從\(F\)中分解得到相機的位姿勢。
相機的相對位姿可以通過特征點匹配估計出來:
- 提取兩幅圖像的特征點,並進行匹配
- 利用匹配得像點計算兩視圖的基礎矩陣\(F\)
- 從基礎矩陣\(F\)中分解得到相機的選擇矩陣\(R\)和平移向量\(t\)