本质矩阵分解
定义
本质矩阵是归一化图像坐标下的基本矩阵的特殊形式
E=t^R
性质
一个 3X3 矩阵是本质矩阵的充要条件是它的奇异值中有两个相等而第三个是 0
证明: 正交矩阵$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}$
其中t^R转换成矩阵形式为t^R, S是反对称矩阵,E=SR.
根据定义:
S=kUZUT ,U是正交矩阵。
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 }
参考 《计算机视觉中的多视图几何》