Epipolar geometry 要描述的是在三維空間中兩個相機之間特徵點的關係。下圖是維基百科解釋 epipolar geometry 的圖片,\(X\) 是特徵點,\(O_L\) 跟 \(O_R\) 分別是兩個相機的中心點。\(X, O_L, O_R\) 三個點形成一個平面,稱為 epipolar plane;\(X_L, X_R\) 分別是 \(X\) 在兩個圖片中的像素位置;\(O_L, O_R\) 的連線與兩個平面的交點 \(e_L, e_R\) 稱為 epipole;而 \(X, O_L, O_R\) 三個點形成的平面與兩個圖片平面的交線則稱為 epipolar line。
從左邊圖片的角度看,像素 \(X_L\) 在三維空間中的真實位置是在 \(XO_L\) 這條直線上的某個點,而這些點從右邊圖片看來會形成一條直線,也就是說在左圖中的一個像素對應到右圖會是一條直線,也就是 epipolar line。
Epipolar Constraint
假設 \(X\) 在左相機的坐標系中的位置為 \(X_1\),兩個相機的旋轉矩陣及平移向量為 \(R\) 與 \(t\),則在右相機的坐標系中 \(X\) 的位置為 \(X_2 = RX_1 + t\)。我們將等號兩邊乘上 \(t^\wedge \)(此為 hat operator,請參考前文),得到以下式子: \[t^\wedge X_2 = t^\wedge RX_1 + t^\wedge t = t^\wedge RX_1\]兩邊都乘上 \(X_2^T\):\[X_2^T t^\wedge X_2 = X_2^T t^\wedge RX_1 = 0\]等號左邊等於零是因為 \(t^\wedge X_2\) 代表 \(t\) 與 \(X_2\) 兩個向量所張平面的法向量,而此法向量會與 \(X_2\) 垂直。
此關係式就是 epipolar constraint。我們一般把 \(t^\wedge R\) 用 \(E\) 來表示,代表 essential matrix。而若我們有此相機矩陣 \(K\),則可寫出以下兩個關係式:\[X_1=K^{-1}X_L\\X_2=K^{-1}X_R\]把這兩個式子帶進去:\[X_R^T K^{-T}t^\wedge RK^{-1}X_L = 0\]而我們通常用 \(F\) 來表示 \(K^{-T}t^\wedge RK^{-1}\),也就是 fundamental matrix。
把剛剛的兩個概念整理一下:
- 兩個配對的特徵點若是為相機坐標系中的三維點的話,可用 essential matrix 的關係式。
- 兩個配對的特徵點若是為圖片中的二維點的話,可用 fundamental matrix 的關係式。
一些矩陣的性質
- Essential matrix 與 fundamental matrix 的 rank 為 2,因為 \(t^\wedge\) 的 rank 為 2,乘上 \(R\) 或 \(K\) 不會增加矩陣的 rank。
- 由於 epipolar constraint 用的性質為等式為零,在對 \(E\) 乘上任何常數此 constraint 依然滿足,因此 \(E\) 在不同的尺度下都是等價的。
- 也因此在計算矩陣自由度時會少一個自由度。
- Essential matrix 是從 \(t\) 與 \(R\) 而來,分別有三個自由度,但由於不同的尺度下等價會扣掉一個自由度,此矩陣的自由度為五(儘管此矩陣有九個變數)。
- Fundamental matrix 的自由度為七,因為其有九個變數,再扣掉不同的尺度下等價及行列式為零兩個限制。
- Homography matrix 的自由度為八,因為只需扣掉不同的尺度下等價的限制。
如何計算 fundamental matrix
從上面的 epipolar constraint 開始,一個對應點能夠寫成一條式子。最常見的演算法 eight-point algorithm,也就是需要八個特徵對應點。但 essential matrix 中有九個未知數,為什麼只需要八個式子呢?因為八個式子可以組成一個 \(8 \times 9\) 的矩陣,而 essential matrix 的參數可以寫成 \(9 \times 1\) 的向量 \(e\),等號右邊為零。而 \(e\) 就位於此 \(8 \times 9\) 矩陣的 null-space 中構成一條線。
而在求出 fundamental matrix 或 essential matrix 後要將他們分解來求得我們想要的 \(R\) 與 \(t\)。要注意的是會有四種可能的解,不過只有一個解會讓 \(X\) 在兩個相機坐標系中都有正的深度,因此可以用這種方式來找出唯一解。另一個要注意的是 \(t\) 不能為零,否則分解出來的 \(R\) 也會為零。
跟 homography matrix 的比較
前文有介紹過 homography matrix。最大的差別是計算 homography matrix 時只需要四組對應點,但是這四個點必須被限制在同一個平面上。
沒有留言:
張貼留言