本质矩阵的分解

本质矩阵的分解

这一节记录如何从本质矩阵$E=t^{\wedge}R$中恢复旋转$R$与平移$t$的,本质矩阵通常通过5点法或者8点法获取,如何求解不在本节的范畴。根据对极几何的约束,大家知道$p_{2}^{T}t^{\wedge}R_{1}^{2}p_{1}=p_{2}Ep_{1}=0$,本节推导如何从这个$E$中恢复出正确的$R$、$t$。

建议阅读下文之前先阅读反对称矩阵的性质中第(2)、(5)、(9)条性质。
矩阵$E \in R^{3 \times3}$是本质矩阵的的充分必要条件是$E$的奇异值分解具有如下的形式:
$$
E=U
\left[\begin{array}{c}
a & & \\
& a & \\
& & 0
\end{array}\right]
V^T; \quad a>0 \tag{1.1}
$$

其中$U,V$都是右手坐标系的基矩阵。$E$的奇异值那实际上就是$E^TE$或者$EE^T$的特征值开平方:
$$
EE^T=(t^{\wedge}R)(t^{\wedge}R)^T=t^{\wedge}RR^Tt^{\wedge T}=t^{\wedge}t^{\wedge T}=-(t^{\wedge})^2 \tag{1.2}
$$

我们知道$t^{\wedge}$的三个特征值是$\lambda_1=0$,$\lambda_{2,3}=i||t||_2$,所以$EE^T$的特征值是就是$-\lambda ^2$,则为:$\lambda_1=0$,$\lambda_{2,3}=||t||^2_2$。自然我们就能知晓$E$的奇异值了,实际上$a$就等于平移向量的二范数或者模长$ a=||t||_2 $。

本质矩阵的奇异值满足上述要求就能从中唯一地分解出$R,t$了吗?答案是否定的。观察公式(1.1)我们做如下的等价变换:
$$
E=t^{\wedge}R=U
\left[\begin{array}{c}
&0 &-a &0 \\
&a &0 &0 \\
&0 &0 &0
\end{array}\right]
\left[\begin{array}{c}
&0 &1 &0 \\
&-1 &0 &0 \\
&0 &0 &1
\end{array}\right]
V^T
\tag{1.3}
$$
可以看出紧跟$U$后面的矩阵是一个反对称矩阵,那么怎么让前面那部分构成某个向量的反对称矩阵呢?对比反对称矩阵的第(9)条性质我们可以做如下的等价构造:
$$
E=t^{\wedge}R=U
\left[\begin{array}{c}
&0 &-a &0 \\
&a &0 &0 \\
&0 &0 &0
\end{array}\right]U^TU
\left[\begin{array}{c}
&0 &1 &0 \\
&-1 &0 &0 \\
&0 &0 &1
\end{array}\right]
V^T
\tag{1.4}
$$
那么可见
$$
\left(U
\left[\begin{array}{c}
0 \\
0 \\
a
\end{array}\right]\right)^{\wedge}=
U
\left[\begin{array}{c}
0 &-a &0 \\
a &0 &0 \\
0 &0 &0
\end{array}\right]U^T \tag{1.5}
$$
所以这种分解下我们有:
$$
t_1=U\left[\begin{array}{c}
0 \\
0 \\
a
\end{array}\right], \quad
R_1=U
\left[\begin{array}{c}
&0 &1 &0 \\
&-1 &0 &0 \\
&0 &0 &1
\end{array}\right]
V^T \tag{1.6}
$$
当然了我们还有第二种构造公式(1.3)的方式,因为反对称矩阵加入一个负号也满足条件:
$$
E=t^{\wedge}R=U
\left[\begin{array}{c}
&0 &a &0 \\
&-a &0 &0 \\
&0 &0 &0
\end{array}\right]
\left[\begin{array}{c}
&0 &-1 &0 \\
&1 &0 &0 \\
&0 &0 &1
\end{array}\right]
V^T
\tag{1.7}
$$
这种情况下我们的分解结果为:
$$
t_2=U\left[\begin{array}{c}
0 \\
0 \\
-a
\end{array}\right], \quad
R_2=U
\left[\begin{array}{c}
&0 &-1 &0 \\
&1 &0 &0 \\
&0 &0 &1
\end{array}\right]
V^T \tag{1.8}
$$
除此之外我们再无其他分解了。这个看出这两种解有这样的关系:

  1. $t_2 = -t_1$;
  2. $R_2$是$R_1$绕$t$(平移向量)轴旋转$\pi$弧度;

这两种分解通常这样表示:
$$
\begin{array}{ll}
R_{1}=U R_{z}\left(+\frac{\pi}{2}\right) V^{T} & R_{2}=U R_{z}\left(-\frac{\pi}{2}\right) V^{T} \\
t_{1}^{\wedge}=U R_{z}\left(+\frac{\pi}{2}\right) \sum U^{T} & t_{2}^{\wedge}=U R_{z}\left(-\frac{\pi}{2}\right) \sum U^{T}
\end{array} \tag{1.9}
$$
其中$R_z(+\frac{\pi}{2})$表示绕$z$轴旋转90度得到的旋转矩阵。

由对极约束得到的方程$p_{2}Ep_{1}=0$可知,不但$E$满足约束,$-E$同样满足约束,所以我们对$-E$做分解也会得到两种结果。实际上我们无需重新计算,因为$-E$分解出来的$R,t$与$E$分解出来的$R,t$只是在平移向量上相差一个负号。故$-E$分解出来的两种解是$(R_1,t_2)、(R_2,t_1)$。

在保证空间点在像素平面投影点位置不变的情况下,这一结果具有如下的物理意义:

以上几种投影关系满足了空间点$P$的像素点落在$A$相机右半平面、落在$B$相机的左半平面,注意相机的旋转是绕平移矢量(红色的轴)造成的。

这四种投影关系,只有第一种满足像点在两个相机中都为正深度,所以当我们求解出这四种解后,利用这些解重新投影路标点,只有在两个相机中的深度都为正的那个解才是我们需要的。

听说打赏我的人,最后都找到了真爱。