本文主要介紹對極幾何和基礎矩陣。
----------------------------------------------------
對極幾何的出現時為了解決什么問題?
-----------------------------------------------------
從一張2D的圖像估計3D模型有時十分困難(現在有基於深度學習的深度圖估計,不清楚是否可以對這種場景3D還原)
這個時候,雙/多 攝像頭就可以幫助解決3D恢復的問題
立體視覺幾何中有以下問題:
1.已知一幅圖像中一點,如何尋找另一幅圖像中這個點的對應點(根據是否知道相機的相對位置,此問題求解方式不同)
2.已知兩幅圖像中兩點是對應關系,如何求解兩相機的相對位置和姿態
3.已知多幅圖像中同一3D點的對應點,如何求解該3D點的3D坐標
對極幾何/基礎矩陣 的出現可以解決問題2。
----------------------------------------------------
對極幾何是什么?
-----------------------------------------------------
1.基本概念
立體成像的基本幾何就是對極幾何。下圖是最經典的對極幾何示意圖。
O1和O2為兩個相機(也有可能是一個相機在不同時刻的位置)的主點,P為空間中一個物點,兩個相對的白色平面是像面(嚴格按照光路應該是在O1 O2點的后方,與P點相反方向,CV中默認采用這種往前畫的方式節省空間)。p1和p2是P點在像面上的對應點,e1 e2為像面和O1 O2的交點。O1O2為基線,也被稱作相機的移動方向。
在對極幾何中,e1和e2被稱作極點,PO1O2平面為極面,p1e1為極線,同理p2e2也為極線。這是對極幾何中重要的三個概念。
2. 極點性質
下面介紹極點的性質:
=像平面和的基線O1O2交點
=O2在相機1上的像點為e1
=基線的平行線在各自像面上的消失點
重點闡述一下第3個性質,
A. 如圖,兩個相機相對放置(會聚視角), 相機1面向右邊,相機2面向左邊,可知極點位於1的右邊,2的左邊。圖中花瓶上標示的橫線即為平行於基線的線條。
為什么平行於基線的線條消失點為極點?可以看上圖,平行於基線的線條所在極面與像面必交於極點(基線必與像面交於極點),故而這些線條在像面上一定會交於極點。
B. 當兩個像面平行時,根據極點的定義,則極點位於無窮遠處,極線與基線平行, 如下圖所示
這個時候,與基線平行的線條的在像面是一系列平行線,消失點在無窮遠,和極點重合
C. 當兩個相機是前后放置且主點連線和像面垂直時(forward translation)
極點在各自像平面上的位置相同,且平行基線的線條在像面上的位置如上圖右邊所示。同樣消失點為極點。
3.對極約束
p點在像面2上的對應點一定在極線l'上
--------------------------------------
基礎矩陣是什么
--------------------------------------
如果已知基礎矩陣F,以及一個3D點在一個像面上的像素坐標p,則可以求得在另一個像面上的像素坐標p'。這個是基礎矩陣的作用,可以表征兩個相機的相對位置及相機內參數。
下面具體介紹基礎矩陣與像素坐標p和p'的關系。重點來了~
以O1為原點,光軸方向為z軸,另外兩個方向為x, y軸可以得到一個坐標系,在這個坐標系下,可以對P, p1(即圖中所標p), p2(即圖中所標p')得到三維坐標,同理,對O2也可以得到一個三維坐標,這兩個坐標之間的轉換矩陣為[R T],即通過旋轉R和平移T可以將O1坐標系下的點P1(x1, y1, z1), 轉換成O2坐標系下的P2(x2, y2, z2)。
則可知,P2 = R(P1-T) (1)
采用簡單的立體幾何知識,可以知道
(2)
其中,p, p'分別為P點的像點在兩個坐標系下分別得到的坐標(非二維像素坐標)。Rp'為極面上一矢量,T為極面上一矢量,則兩矢量一叉乘為極面的法向量, 這個法向量與極面上一矢量p一定是垂直的,所以上式一定成立。(這里采用轉置是因為p會表示為列向量的形式,此處需要為行向量)
采用一個常用的叉乘轉矩陣的方法,
(3)
將我們的叉乘采用上面的轉換,會變成
(4)
紅框中所標即為本征矩陣E, 他描述了三維像點p和p'之間的關系
(5)
有了本征矩陣,我們的基礎矩陣也就容易推導了
注意到將p和p'換成P1和P2式(4)也是成立的,且有
q1 = K1P1 (6)
q2 = K2P2 (7)
上式中, K1K2為相機的校准矩陣, 描述相機的內參數 q1q2為相機的像素坐標
代入式(4)中,得
(8)
上式中p->q1, p'->q2
這樣我們就得到了兩個相機上的像素坐標和基礎矩陣F之間的關系了
(9)
-------------------------------------
基礎矩陣的性質
-------------------------------------
F有什么樣的性質呢?簡單說來, 3x3的矩陣,理論上9個自由度,但是需要符合以下兩個約束
a)如果F為基礎矩陣,那么kF也為基礎矩陣
b)秩為2
所以減去兩個自由度,F有7個自由度
第二條約束是怎么來的?
我們知道,矩陣的秩有這么一個性質,矩陣相乘的秩不大於各矩陣的秩
那么,可以知道F其實是以下這些矩陣相乘的結果
其中,Tx的具體形式在式(3)中有表述
可以知道,第三列A2可以用第一列A0和第二列A1線性表示
A2 = -Ty*A1/Tz-Tx*A0/Tz
所以Tx秩為2
那么F秩為2也得證了
一般采用七點算法或八點算法對F進行求解,得知F后就可以對任意像面1上點找像面2上對應點了。
Reference:
1. Computer vision algo and application
2. learning openCV
3. multiple view geometry in computer vision
4. CV slides of Li Feifei