本质矩阵(E)的奇异值分解(SVD)得到(R,T)

学习视觉里程计的时候,有一个对极几何中的本质矩阵分解(R,T)不是很理解,让我们从头到尾进行一个完整的计算,包括 SVD 分解以及从本质矩阵恢复旋转矩阵 ( R ) 和平移向量 ( T ) 的过程。
先来个例子,在给出原理

一、例子

1. 给定本质矩阵 ( E )

假设我们有如下的本质矩阵 ( E ):

E = [ 0 − 1 0 1 0 − 2 0 2 0 ] E = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & -2 \\ 0 & 2 & 0 \end{bmatrix} E= 010102020

2. 进行 SVD 分解

对本质矩阵 ( E ) 进行 SVD 分解,我们需要将其分解为三个矩阵 U U U Σ \Sigma Σ,和 V T V^T VT,使得:

E = U Σ V T E = U \Sigma V^T E=UΣVT

计算协方差矩阵 E T E E^T E ETE E E T E E^T EET

首先,计算协方差矩阵:

E T E = [ 0 1 0 − 1 0 2 0 − 2 0 ] [ 0 − 1 0 1 0 − 2 0 2 0 ] = [ 1 0 − 2 0 5 0 − 2 0 4 ] E^T E = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 2 \\ 0 & -2 & 0 \end{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & -2 \\ 0 & 2 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 0 & -2 \\ 0 & 5 & 0 \\ -2 & 0 & 4 \end{bmatrix} ETE= 010102020 010102020 = 102050204

接下来,计算 ( E E^T ):

E E T = [ 0 − 1 0 1 0 − 2 0 2 0 ] [ 0 1 0 − 1 0 2 0 − 2 0 ] = [ 1 0 0 0 5 0 0 0 4 ] E E^T = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & -2 \\ 0 & 2 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 2 \\ 0 & -2 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 5 & 0 \\ 0 & 0 & 4 \end{bmatrix} EET= 010102020 010102020 = 100050004

计算特征值和特征向量

接下来,我们要计算KaTeX parse error: Can't use function '\)' in math mode at position 7: E^T E \̲)̲ 和 \( E E^T的特征值和特征向量。

对于 E T E E^T E ETE

特征方程为:

det ( E T E − λ I ) = 0 \text{det}(E^T E - \lambda I) = 0 det(ETEλI)=0

det ( [ 1 − λ 0 − 2 0 5 − λ 0 − 2 0 4 − λ ] ) = 0 \text{det}\left(\begin{bmatrix} 1 - \lambda & 0 & -2 \\ 0 & 5 - \lambda & 0 \\ -2 & 0 & 4 - \lambda \end{bmatrix}\right) = 0 det 1λ0205λ0204λ =0

通过解特征方程,我们可以得到特征值 λ 1 = 5 \lambda_1 = 5 λ1=5 λ 2 = 4 \lambda_2 = 4 λ2=4 λ 3 = 1 \lambda_3 = 1 λ3=1

相应的特征向量为:

v 1 = [ 0 1 0 ] , v 2 = [ − 1 0 1 ] , v 3 = [ 1 0 2 ] v_1 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}, \quad v_2 = \begin{bmatrix} -1 \\ 0 \\ 1 \end{bmatrix}, \quad v_3 = \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} v1= 010 ,v2= 101 ,v3= 102

对于 E E T E E^T EET,我们可以类似地计算特征值和特征向量。

得到 SVD 结果

通过上述计算,我们可以得到:

U = [ 0 1 0 − 1 0 0 0 0 − 1 ] , Σ = [ 5 0 0 0 2 0 0 0 1 ] , V T = [ 0 − 1 0 1 0 − 2 0 − 2 0 ] U = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix}, \quad \Sigma = \begin{bmatrix} \sqrt{5} & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \quad V^T = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & -2 \\ 0 & -2 & 0 \end{bmatrix} U= 010100001 ,Σ= 5 00020001 ,VT= 010102020

3. 定义旋转矩阵模板 W W W W T W^T WT

旋转矩阵模板 W W W W T W^T WT定义如下:

W = [ 0 − 1 0 1 0 0 0 0 1 ] , W T = [ 0 1 0 − 1 0 0 0 0 1 ] W = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \quad W^T = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} W= 010100001 ,WT= 010100001

4. 恢复旋转矩阵 R 1 R_1 R1 R 2 R_2 R2

通过公式 R 1 = U W V T R_1 = U W V^T R1=UWVT R 2 = U W T V T R_2 = U W^T V^T R2=UWTVT,我们可以计算出两个候选的旋转矩阵。

计算 R 1 R_1 R1):

R 1 = U W V T = [ 0 1 0 − 1 0 0 0 0 − 1 ] [ 0 − 1 0 1 0 0 0 0 1 ] [ 0 − 1 0 1 0 2 0 2 0 ] R_1 = U W V^T = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 2 \\ 0 & 2 & 0 \end{bmatrix} R1=UWVT= 010100001 010100001 010102020

通过矩阵乘法计算出:

R 1 = [ 0 − 1 0 1 0 0 0 0 1 ] R_1 = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} R1= 010100001

计算 R 2 R_2 R2

R 2 = U W T V T = [ 0 1 0 − 1 0 0 0 0 − 1 ] [ 0 1 0 − 1 0 0 0 0 1 ] [ 0 − 1 0 1 0 2 0 2 0 ] R_2 = U W^T V^T = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 2 \\ 0 & 2 & 0 \end{bmatrix} R2=UWTVT= 010100001 010100001 010102020

通过矩阵乘法计算出:

R 2 = [ 0 1 0 − 1 0 0 0 0 − 1 ] R_2 = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} R2= 010100001

5. 恢复平移向量 T T T

平移向量 ( T ) 的反对称矩阵可以从 ( U ) 的第三列提取,并且有两种可能性:

T 1 = [ 0 1 0 ] 或 T 2 = − T 1 T_1 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} \quad \text{或} \quad T_2 = -T_1 T1= 010 T2=T1

6. 选择正确的 R R R T T T

最终结果需要通过验证恢复三维点的几何正确性来确定。

这个例子展示了如何从给定的本质矩阵开始,通过 SVD 分解恢复旋转矩阵 ( R ) 和平移向量 ( T )。

二、 从本质矩阵到旋转和平移恢复的原理

1. 本质矩阵的定义

本质矩阵(Essential Matrix)是描述两台相机之间的相对运动的 3x3 矩阵,包含了相机之间的旋转和平移信息。它是对极几何中的核心概念,连接了两幅图像中对应点的几何关系。

本质矩阵 ( E ) 满足如下关系:

x 2 T E x 1 = 0 \mathbf{x_2}^T E \mathbf{x_1} = 0 x2TEx1=0

其中:

  • x 1 \mathbf{x_1} x1 x 2 \mathbf{x_2} x2分别是归一化后的图像坐标点。

2. 奇异值分解 (SVD)

本质矩阵 ( E ) 可以通过奇异值分解 (SVD) 分解为三个矩阵的乘积:

E = U Σ V T E = U \Sigma V^T E=UΣVT

其中:

  • U U U V V V 是正交矩阵。
    - Σ \Sigma Σ 是对角矩阵,包含两个相等的非零奇异值和一个为零的奇异值。

3. 恢复旋转矩阵和平移向量

通过 SVD 分解后的矩阵 U U U Σ \Sigma Σ V V V,我们可以恢复出相机的旋转矩阵 ( R ) 和平移向量 ( T ):

恢复旋转矩阵

旋转矩阵 R R R可以通过以下两个候选矩阵得到:

R 1 = U W V T , R 2 = U W T V T R_1 = U W V^T, \quad R_2 = U W^T V^T R1=UWVT,R2=UWTVT

其中 W W W 是一个固定的旋转矩阵模板:

W = [ 0 − 1 0 1 0 0 0 0 1 ] W = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} W= 010100001

恢复平移向量

平移向量 T T T可以通过矩阵 U U U的第三列 u 3 u_3 u3 提取出来:

T = ± u 3 T = \pm u_3 T=±u3

其中 u 3 u_3 u3是矩阵 U U U的第三列。

4. 选择正确的 R R R T T T

由于存在四种组合可能性 R 1 R_1 R1 R 2 R_2 R2分别与 T T T − T -T T组合),最终结果需要通过验证恢复三维点的几何正确性来确定。

拓展:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值