一、本質矩陣或者基礎矩陣算法來自於對極約束:
$$x_{2}^{T}t^{\wedge}Rx_{1}=0$$
也可以寫成
$$p_{2}^{T}K^{-T}t^{\wedge}RK^{-1}p_{1}=0$$
其中間部分記爲本質矩陣E和基礎矩陣F:
$$E=t^{\wedge}R$$或者:$$F=K^{-T}t^{\wedge}RK^{-1}$$
本質矩陣E具有平移和旋轉六個自由度,但是由於對極約束是等式爲0的約束,所以具有尺度等價性。故具有5個自由度,理論上可以通過5組匹配點進行計算,但是過於複雜,實際上往往通過8點法進行求解。SVD分解往往會得到四個解,通過深度檢驗可以確定正確的解。
注意:對於約束由於t的存在,如果發生純旋轉,會導致無解。但是單應矩陣(homography)可以解決這個問題。純旋轉也會導致初始化問題。
二、單應矩陣來自於平面約束:
$$n^{T}P+d = 0$$
可得:
$$ -\frac{n^{T}P}{d}=1$$
又因爲$$p_{2}=K(RP+t )=K(RP+t\cdot(-\frac{n^{T}P}{d}))=K(R-\frac{tn^{T}}{d})K^{-1}p_{1}$$
中間部分記爲單應矩陣(homography)H:$$H=K(R-\frac{tn^{T}}{d})K^{-1}$$
H矩陣也是一個3X3的矩陣,但是每一組特徵點都可以提供2個約束,所以只需要4對點就可以求解H。
對H進行分解有數值法和解析法,都可以得到4個解,通過深度驗證和假設場景法向量可以排除解。
總結:
一般2D-2D都是同時估計基礎矩陣和本質矩陣,選擇重投影誤差比較小的那個作爲最終的估計。