定義spa
本質矩陣是歸一化圖像座標下的基本矩陣的特殊形式code
E=t^Rorm
性質blog
一個 3X3 矩陣是本質矩陣的充要條件是它的奇異值中有兩個相等而第三個是 0ip
證實: 正交矩陣$W=\begin{bmatrix}1&-1&0\\1&0&0\\0&0&1\end{bmatrix}$ 反對稱矩陣$Z=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&0\end{bmatrix}$ it
其中t^R轉換成矩陣形式爲t^R, S是反對稱矩陣,E=SR.io
根據定義:class
S=kUZUT ,U是正交矩陣。float
Z=diag(1,1,0)W方法
得S=kUdiag(1,1,0)WUT, 忽略尺度時視k=1
由SVD分解E可得
E=Udiag(1,1,0)VT=SR
在相差一個常數k的意義下,
E=SR=Udiag(1,1,0)WUTR=Udiag(1,1,0)VT
故WUTR=VT
這正是E的奇異值分解並如所須要證實的具備兩個相等的奇異值,反之,一個具備兩個相同奇異值的矩陣能夠用一樣方法分解爲 SR.
分解
(1)若E可由SVD分解爲E=Udiag(1,0,0)VTR和 t有四種分解的狀況
其中R 有兩種狀況;
因爲
E=SR=Udiag(1,1,0)VT=Udiag(1,1,0)WUTR
即 WUTR=VT , 其中 R , W, U ,V 爲正交矩陣
得 R=UWVT or UWTVT 其中U V 是E經過SVD分解出的 W 是前面說起的反對稱矩陣 ;
當R=UWTVT 時爲負號
證實
E=SR=(UZUT)(UXVT) ,x是正交矩陣,旋轉矩陣,
=U(ZX)VT=Udiag(1,0,0)VT
故ZX=diag(1,1,0)
由於X是旋轉矩陣,因此x= W
當 x=WT 得 ZX=diag(-1,-1,0) 忽略符號 --> ZX=diag(1,1,0)
(2)己知本質矩陣 E=Udiag(1,1,0)VT和前一個相機位置矩陣P[R |t ], 那麼第二個像機矩陣 P'[R |t ] 有下列幾種可能的選擇:
P'2=[UWVT|u3] or [UWVT|−u3 ] or [UWTVT|u3] or [UWTVT|−u3]
即 t取U的最後一列
R部分上面已證實 t部分證實以下
S的F範數的平方爲2,意味着若是S=t^(包含尺度因子) ,則 ιι t ιι=1,這是對兩個攝像機矩陣基線的一種經常使用的歸一化
由叉乘性質得
St=0
不嚴謹推導
利用最小二乘思想(SVD分解求方程組相似)
min ιι St ιι , st ιι t ιι=1
ιι St ιι = tTSTSt
=σ ιι t ιι
取STS的最小特徵值對應的特徵向量爲最優解
STS=UZTUTUZUT
=UTZTZUT
=UTdiag(1,1,0)UT
其中U爲S的特徵向量 ,取最後一行爲最小解
即 Su=oS ,u爲S最小特徵值對應的特徵向量,此時Su 最小
代碼
from orbslam2
1 /** 2 * @brief 分解Essential矩陣 3 * 4 * F矩陣經過結合內參能夠獲得Essential矩陣,分解E矩陣將獲得4組解 \n 5 * 這4組解分別爲[R1,t],[R1,-t],[R2,t],[R2,-t] 6 * @param E Essential Matrix 7 * @param R1 Rotation Matrix 1 8 * @param R2 Rotation Matrix 2 9 * @param t Translation 10 * @see Multiple View Geometry in Computer Vision - Result 9.19 p259 chinese 174 11 */ 12 void Initializer::DecomposeE(const cv::Mat &E, cv::Mat &R1, cv::Mat &R2, cv::Mat &t) { 13 Mat u, w, vt; 14 SVDecomp(E, w, u, vt); 15 //t爲 u的最後一行 16 u.col(2).copyTo(t); 17 t /= norm(t); 18 19 Mat W(3, 3, CV_32F, cv::Scalar(0)); 20 W.at<float>(0, 1) = -1; 21 W.at<float>(1, 0) = 1; 22 W.at<float>(2, 2) = 1; 23 24 R1 = u * W * vt; 25 if (cv::determinant(R1) < 0)// 旋轉矩陣有行列式爲1的約束 26 R1 = -R1; 27 28 R2 = u * W.t() * vt; 29 if (cv::determinant(R2) < 0) 30 R2 = -R2; 31 32 }
參考 《計算機視覺中的多視圖幾何》