对极约束及其性质 —— 公式详细推导

Title: 对极约束及其性质 —— 公式详细推导

文章目录

  • 前言
  • 1. 对极约束 (Epipolar Constraint)
  • 2. 坐标转换 (Coordinate Transformations)
  • 3. 像素坐标 (Pixel Coordinates)
  • 4. 像素坐标转换 (Transformations of Pixel Coordinates)
  • 5. 本质矩阵 (Essential Matrix)
  • 6. 线坐标 (Coordinates of a Line)
  • 7. 对极线 (Epipolar Lines)
  • 8. 对极线的线坐标 (Coordinates of Epipolar Lines)
  • 9. 本质矩阵的零空间 (Null Space of a Essential Matrix)
  • 10. 本质矩阵的奇异值 (Singular Values of a Essential Matrix)
  • 总结
  • 参考文献


前言

参考学习资料 [1] (Carlo Tomasi, Epipolar Geometry and the Essential Matrix) 过程中, 对其坐标系描述存在疑问, 尝试自己推导了一下, 也补充了一些其他性质的推导.

形成了这篇博文, 以备忘.


1. 对极约束 (Epipolar Constraint)

对极几何就是描述两个相机之间的对极约束的几何[1], 如 Fig. 1 所示.


epipolar_geometry_drawing

Fig. 1 对极约束示意图

相机 a 其小孔成像 (中心投影) 的光心是 O a O_a Oa, 焦距是 f f f. 相机获得图像 I a I_a Ia, 图像中有像素点 P a {\rm{P}}_a Pa. 沿着射线 O a P ‾ \overline{O_aP} OaP 进行反向投影, 可知像素点 P a {\rm P}_a Pa 对应的物理世界中的场景点 P \rm P P 在投影线上.

另一相机 b 与相机 a 具有相同的相机内参 (可能就是同一相机的不同位姿), 两者之间的相互位姿关系是 { t , R } \{t, R\} {t,R}. 同一场景点 P \rm P P 也会在相机 b 的图像 I b I_b Ib 上成像为像素点 P b {\rm P}_b Pb.

因为从相机 a 视角还原的像素点 P a {\rm P}_a Pa 对应的物理世界场景点可能是 P \rm P P P ′ {\rm P'} P P ′ ′ {\rm P''} P′′ 等, 只要在射线 O a P a ‾ \overline{O_a P_a} OaPa 上都可能是. 而这些可能的场景点 P \rm P P P ′ {\rm P'} P P ′ ′ {\rm P''} P′′ 在相机 b 上作投影成像可能获得的像素点却是 P b {\rm P}_b Pb P b ′ {\rm P}_b' Pb P b ′ ′ {\rm P}_b'' Pb′′ 这些不同位置的像素点.

因为像素点 P a {\rm P}_a Pa 和这些可能的像素点 P b {\rm P}_b Pb P b ′ {\rm P}_b' Pb P b ′ ′ {\rm P}_b'' Pb′′ 都是对同一物理世界场景点 P \rm P P 的投影成像, 那么他们之间成在什么样的关系? 如何预测第二个相机上对应像素点位置? 这些就是对极约束要关注的.

2. 坐标转换 (Coordinate Transformations)

基于小孔成像模型的相机遵循中心射影原理, 射影中心在相机光心. 以相机光心作为坐标原点建立坐标系, Z 轴指向场景, X 轴向右, Y 轴向下.

有了相机坐标系后, 首先要面对同一场景点在两个相机坐标系中的坐标转换问题[2], 如 Fig. 2 所示.


coordinates_transformation_drawing
Fig. 2 坐标转换示意图

相机坐标系 {a} 和 {b} 原点不重合并且姿态也不同.

a t b ^at_b atb 表示坐标系 {b} 的原点在坐标系 {a} 中的位置, a R b {^aR}_b aRb 表示坐标系 {b} 相对于坐标系 {a} 的姿态.

相反地, b t a ^bt_a bta 表示坐标系 {a} 的原点在坐标系 {b} 中的位置, b R a {^bR}_a bRa 表示坐标系 {a} 相对于坐标系 {b} 的姿态.

为方便理解可以构造过渡坐标系 {b’}, 在坐标系 {a} 中平移 a t b ^at_b atb 得到坐标系 {b’}, 在坐标系 {b’} 中旋转 b ′ R b ^{b'}R_b bRb 得到坐标系 {b}.

坐标系 {b’} 和 {b} 的原点重合, 故平移矩阵 a t b = a t b ′ ^at_b = {^at_{b'}} atb=atb.

坐标系 {a} 和 {b’} 的姿态相同, 故旋转矩阵 b ′ R b = a R b ^{b'}R_b = {^aR}_b bRb=aRb.

空间中一点 P, 相对于坐标系 {a} 的坐标为 a p ^ap ap, 而同一点 P 相对于坐标系 {b} 的坐标为 b p ^bp bp.

根据刚体坐标变换关系可以得到
a p = b ′ R b b p + a t b ′ ⇒ a p = a R b b p + a t b ⇒ b p = a R b T ( a p − a t b ) ⇒ b p = b R a a p − b R a a t b (2-1) \begin{aligned} {^{a}p} &= {^{b'}R}_b {{^b}p}+{{^a}t_{b'}}\\ \Rightarrow \quad {^{a}p} &= {^{a}R}_b {{^b}p}+{{^a}t_b}\\ \Rightarrow \quad {^{b}p} &= {^{a}R}_b^{\rm{T}}\left({{^a}p}-{{^a}t_b}\right)\\ \Rightarrow \quad {^{b}p} &= {^{b}R}_a{{^a}p}- {^{b}R}_a {{^a}t_b} \end{aligned} \tag{2-1} apapbpbp=bRbbp+atb=aRbbp+atb=aRbT(apatb)=bRaapbRaatb(2-1)

另外, 因为坐标系 {a} 和坐标系 {b’} 姿态相同, 故有
b ′ t a = − a t b ′ (2-2) {^{b'}}t_a = - {^at_{b'}} \tag{2-2} bta=atb(2-2)
已知坐标系 {b’} 中向量 b ′ t a {^{b'}}t_a bta, 下面需要将其转换为坐标系 {b} 中描述 b t a {^bt_a} bta. 也就是同一向量, 只是描述该向量的参考坐标系改变.

类比刚体坐标变换关系式 (2-1) 中第二行得到
b ′ t a = b ′ R b b t a + b ′ t b ⏟ = 0 ⇒ − a t b ′ = b ′ R b b t a ⇒ − a t b = a R b b t a ⇒ b t a = − a R b T a t b ⇒ b t a = − b R a a t b (2-3) {^{b'}}t_a ={^{b'}}R_b {^bt_a} + \underset{=0}{\underbrace{{^{b'}}t_b}}\\ \Rightarrow \qquad - {^at_{b'}} = {^{b'}}R_b {^bt_a}\\ \Rightarrow \qquad - {^at_{b}} = {^{a}}R_b {^bt_a}\\ \Rightarrow \qquad {^bt_a} = - {^{a}}R_b^{\rm T} {^at_{b}}\\ \Rightarrow \qquad {^bt_a} = - {^{b}}R_a {^at_{b}} \tag{2-3} bta=bRbbta+=0 btbatb=bRbbtaatb=aRbbtabta=aRbTatbbta=bRaatb(2-3)
结合式 (2-1) 和式 (2-3) 可得
b p = b R a a p + b t a (2-4) ^{b}p = {^{b}R}_a{{^a}p} + {^bt_a} \tag{2-4} bp=bRaap+bta(2-4)
为了简化书写, 定义
R ≜ b R a = a R b T t ≜ b t a = − b R a a t b (2-5) \begin{aligned} R & \triangleq {^{b}R}_a = {^{a}R}_b^{\rm{T}}\\ t & \triangleq {^bt_a} = - {^{b}R}_a {{^a}t_b} \end{aligned}\tag{2-5} RtbRa=aRbTbta=bRaatb(2-5)
则式 (2-4) 简写为
b p = R a p + t (2-6) ^{b}p = R \,{{^a}p}+{t} \tag{2-6} bp=Rap+t(2-6)
因为习惯上都是由 a p ^ap ap 而计算得到 b p ^bp bp, 故而写成式 (2-6) 形式.


3. 像素坐标 (Pixel Coordinates)

场景空间中一点 P 向相机 a 投影得到的像素点 P a \rm{P_a} Pa, 在二维成像平面 I a I_a Ia 上的坐标为
P a = [ x a y a ] (3-1) P_a = \begin{bmatrix}x_a \\ y_a \end{bmatrix} \tag{3-1} Pa=[xaya](3-1)
因为对极几何需要在三维空间中推导, 把该像素点 P a {\rm P}_a Pa 看作是一个实体点, 其在相机坐标系 {a} 中的三维坐标为
a p a = [ x a y a f ] (3-2) ^ap_a = \begin{bmatrix}x_a\\ y_a \\ f\end{bmatrix} \tag{3-2} apa= xayaf (3-2)
其中 f f f 为焦距 ( f ≠ 0 f \neq 0 f=0).

同理, 场景空间中一点 P 向相机 b 投影得到的像素点 P b {\rm P}_b Pb, 在二维成像平面 I b I_b Ib 上的坐标为
P b = [ x b y b ] (3-3) P_b = \begin{bmatrix}x_b \\ y_b \end{bmatrix} \tag{3-3} Pb=[xbyb](3-3)
把该像素点 P b {\rm P}_b Pb 看作是一个实体点, 其在相机坐标系 {b} 中的三维坐标为
b p b = [ x b y b f ] (3-4) ^bp_b = \begin{bmatrix}x_b\\ y_b \\ f\end{bmatrix} \tag{3-4} bpb= xbybf (3-4)
由射影关系可以知道, 坐标值 x a , y a , x b , y b x_{a},y_{a}, x_{b}, y_{b} xa,ya,xb,yb 受到 f f f 的正比例影响, 故而像素点在各自相机坐标系内的三维坐标其实也是齐次坐标.


4. 像素坐标转换 (Transformations of Pixel Coordinates)

在对极约束中投影线 O a P ‾ \overline{O_a P} OaP、投影线 O b P ‾ \overline{O_bP} ObP 和基线 O a O b ‾ \overline{O_a O_b} OaOb 共面. 则可知

向量 O a P a → \overrightarrow{O_a P_a} OaPa 、向量 O a P b → \overrightarrow{O_a P_b} OaPb 、向量 O a O b → \overrightarrow{O_a O_b} OaOb 共面;

向量 O b P b → \overrightarrow{O_b P_b} ObPb 、向量 O b P a → \overrightarrow{O_b P_a} ObPa 、向量 O b O a → \overrightarrow{O_b O_a} ObOa 共面.

进一步, 可知

( O a O b → × O a P a → ) ⊥ O a P b → (\overrightarrow{O_a O_b} \times \overrightarrow{O_a P_a}) \, \bot \, \overrightarrow{O_a P_b} (OaOb ×OaPa )OaPb 以及 ( O b O a → × O b P a → ) ⊥ O b P b → (\overrightarrow{O_b O_a} \times \overrightarrow{O_b P_a}) \, \bot \, \overrightarrow{O_b P_b} (ObOa ×ObPa )ObPb .

以上向量需要借助于相机光心和像素点构建, 并且向量运算需要在相同的参考坐标系下进行.

因为这些向量都以相机坐标系原点为起始点, 只需转换向量末端点到相应相机坐标系中.

在第一个相机坐标系 {a} 中描述在第二个相机坐标系 {b} 中描述
像素点 P a {\rm P}_a Pa a p a {^ap_a} apa b p a = R a p a + t {^bp_a} = {R}\, {^ap_a} + t bpa=Rapa+t
像素点 P b {\rm P}_b Pb a p b = a R b b p b + a t b = R T b p b + a t b {^ap_b} = {^aR_b}\, {^bp_b}+{^a t_b} = R^{\rm T} \, {^b p_b} +{^a t_b} apb=aRbbpb+atb=RTbpb+atb b p b {^b p_b} bpb
{a} 与 {b} 相对位置 a t b = − a R b t = − R T t {^at_b} = -{^aR_b} \, t = -R^{\rm T}\, t atb=aRbt=RTt b t a = t {^bt_a} = t bta=t

下面我们参考之前博文提前推导 [ R T t ] × [R^{\rm T}t]_{\times} [RTt]×.

假设任意三维向量 v v v, 则
[ c ] [ R T t ] × v = ( R T t ) × v = ( R T t ) × ( R T R v ) = R T ( t × R v ) = R T ( [ t ] × R v ) = R T [ t ] × R v (4-1) \begin{aligned}[c] [R^{\rm T}t]_{\times} v & = (R^{\rm T}t) {\times} v\\ & = (R^{\rm T}t) {\times} (R^{\rm T} R v)\\ & = R^{\rm T} (t \times R v)\\ & = R^{\rm T} ([t]_\times R v)\\ & = R^{\rm T} [t]_\times R v\\ \end{aligned} \tag{4-1} [c][RTt]×v=(RTt)×v=(RTt)×(RTRv)=RT(t×Rv)=RT([t]×Rv)=RT[t]×Rv(4-1)
因为对任意 v v v 成立, 故有
[ R T t ] × = R T [ t ] × R (4-2) [R^{\rm T}t]_{\times} = R^{\rm T} [t]_{\times} R \tag{4-2} [RTt]×=RT[t]×R(4-2)


5. 本质矩阵 (Essential Matrix)

在第一个相机坐标系 {a} 中, 因为对极约束的共面关系 ( O a O b → × O a P a → ) ⊥ O a P b → (\overrightarrow{O_a O_b} \times \overrightarrow{O_a P_a}) \, \bot \, \overrightarrow{O_a P_b} (OaOb ×OaPa )OaPb , 可知
a p b ⋅ ( a t b × a p a ) = 0 ⇒ ( R T b p b + a t b ) ⋅ ( a t b × a p a ) = 0 ⇒ ( R T b p b ) ⋅ ( a t b × a p a ) + a t b ⋅ ( a t b × a p a ) ⏟ = 0 = 0 ⇒ b p b T R ( [ R T t ] × a p a ) = 0 ⇒ b p b T R ( R T [ t ] × R a p a ) = 0 ⇒ b p b T [ t ] × R a p a = 0 (5-1) \begin{aligned} & ^ap_b \cdot (^at_b\times {^ap_a}) = 0 \\ \Rightarrow\qquad & (R^{\rm T} \, {^b p_b} +{^a t_b}) \cdot (^at_b\times {^ap_a}) = 0 \\ \Rightarrow\qquad & (R^{\rm T} \, {^b p_b}) \cdot (^at_b\times {^ap_a}) + \underset{=0}{\underbrace{{^a t_b} \cdot (^at_b\times {^ap_a})}} = 0 \\ \Rightarrow\qquad& {^bp_b^{\rm T}} R\, ([R^{\rm T} t]_\times {^ap_a}) = 0\\ \Rightarrow\qquad& {^bp_b^{\rm T}}\, R\, (R^{\rm T} [t]_{\times} R\, {^ap_a}) = 0\\ \Rightarrow\qquad& {^bp_b^{\rm T}}\, [t]_{\times} R\, {^ap_a} = 0 \end{aligned} \tag{5-1} apb(atb×apa)=0(RTbpb+atb)(atb×apa)=0(RTbpb)(atb×apa)+=0 atb(atb×apa)=0bpbTR([RTt]×apa)=0bpbTR(RT[t]×Rapa)=0bpbT[t]×Rapa=0(5-1)
同样地, 在第二个相机坐标系 {b} 中, 因为对极约束的共面关系 ( O b O a → × O b P a → ) ⊥ O b P b → (\overrightarrow{O_b O_a} \times \overrightarrow{O_b P_a}) \, \bot \, \overrightarrow{O_b P_b} (ObOa ×ObPa )ObPb , 可知
b p b ⋅ ( t × b p a ) = 0 ⇒ b p b ⋅ ( t × ( R a p a + t ) ) = 0 ⇒ b p b ⋅ ( t × ( R a p a ) ) = 0 ⇒ b p b T ( [ t ] × R a p a ) = 0 ⇒ b p b T [ t ] × R a p a = 0 (5-2) \begin{aligned} & ^bp_b \cdot (t\times {^bp_a}) = 0\\ \Rightarrow \qquad & ^bp_b \cdot \left(t\times ({R}\, {^ap_a} + t)\right) = 0\\ \Rightarrow \qquad & ^bp_b \cdot \left(t\times ({R}\, {^ap_a})\right) = 0\\ \Rightarrow \qquad & ^bp_b^{\rm T} \, ([t]_\times R \,{^ap_a}) = 0\\ \Rightarrow \qquad & ^bp_b^{\rm T} \, [t]_\times R \,{^ap_a} = 0\\ \end{aligned} \tag{5-2} bpb(t×bpa)=0bpb(t×(Rapa+t))=0bpb(t×(Rapa))=0bpbT([t]×Rapa)=0bpbT[t]×Rapa=0(5-2)
相同的共面约束, 在不同坐标系下推导, 得到了相同的方程式 (I-5-1) 和式 (I-5-2).

定义本质矩阵
E = [ t ] × R (5-3) E =[t]_{\times} R \tag{5-3} E=[t]×R(5-3)
则对极约束方程为
b p b T E a p a = 0 (5-4) ^bp_b^{\rm T} \,E\, {^ap_a} = 0 \tag{5-4} bpbTEapa=0(5-4)
该方程描述了同一场景点在不同相机坐标系下得到两个对应像素点的投影约束关系 —— 共平面关系 (Coplanarity).

默认像素点三维坐标在各自相机坐标系内描述, 对极约束方程进一步简写为
p b T E p a = 0 (5-5) p_b^{\rm T} \,E\, {p_a} = 0 \tag{5-5} pbTEpa=0(5-5)


6. 线坐标 (Coordinates of a Line)

图像平面 I a I_a Ia 上像素点 P a {\rm P}_a Pa 在相机坐标系 {a} 中的三维坐标
a p a = [ x a y a f ] (6-1) ^ap_a = \begin{bmatrix}x_a\\ y_a \\ f\end{bmatrix} \tag{6-1} apa= xayaf (6-1)
可以看做是二维的射影平面 I a I_a Ia 上的齐次坐标.

二维的射影平面上, 经过点 a p a ^ap_a apa 的直线方程可以表示为
l 1 x a + l 2 y a + l 3 f = 0 (6-2) l_1 x_a +l_2 y_a +l_3 f =0 \tag{6-2} l1xa+l2ya+l3f=0(6-2)
矢量
l = [ l 1 l 2 l 3 ] ∈ ( R 3 ∖ 0 ) (6-3) l = \begin{bmatrix} l_1\\ l_2\\ l_3\end{bmatrix} \in (\mathbb{R}^3 \setminus \mathbf{0}) \tag{6-3} l= l1l2l3 (R30)(6-3)
被称为直线的线坐标 (满足 l 1 , l 2 , l 3 l_1, l_2, l_3 l1,l2,l3 不同时为零). 比例因子 k ≠ 0 k \neq 0 k=0 时, 矢量 l l l 和矢量 k l k l kl 代表同一条直线.

进一步, 经过点 a p a ^ap_a apa 的二维直线方程简写为
l ⋅ a p a = 0 (6-4) l \cdot {^ap_a} = 0 \tag{6-4} lapa=0(6-4)

此处 a p a ^ap_a apa 看作二维图像平面 I a I_a Ia 上的齐次坐标, 不是相机坐标系中的三维空间坐标.


7. 对极线 (Epipolar Lines)

如对极线示意图 Fig. 3 所示, 相机 a 与相机 b 光心的连线 O a O b ‾ \overline{O_a O_b} OaOb 称为基线, 基线 O a O b ‾ \overline{O_a O_b} OaOb 与场景中一点 P {\rm P} P 构成了对极平面 π \pi π. 如果相机 a 和 b 在空间中的位姿固定, 而场景点改变为 Q Q Q, 此时基线不变仍为 O a O b ‾ \overline{O_a O_b} OaOb, 而新的对极平面为 π Q \pi_Q πQ. 直观效果像是场景点牵着对极平面在绕基线转动.

基线与两个相机的成像平面的交点形成两个对极点. 基线 O a O b ‾ \overline{O_a O_b} OaOb 与相机 a 的成像平面 I a I_a Ia 相交的对极点为 a e b ^ae_b aeb, 看作是相机 b 的光心 O b O_b Ob 在相机 a 成像平面上的投影成像. 基线 O a O b ‾ \overline{O_a O_b} OaOb 与相机 b 的成像平面 I b I_b Ib 相交的对极点为 b e a ^be_a bea, 看作是相机 a 的光心 O a O_a Oa 在相机 b 成像平面上的投影成像. 如果相机 a 和 b 在空间中的位姿固定, 则形成的两个对极点也固定不变.

对极平面与两个相机的成像平面的相交形成两条对极线. 对极平面 π \pi π 与相机 a 的成像平面 I a I_a Ia 相交的对极线为 P a a e b ‾ \overline{P_a {^ae_b}} Paaeb, 极线经过对极点 a e b ^ae_b aeb 及场景点 P P P 在相机 a 成像平面上的投影点 P a {\rm P}_a Pa. 对极平面 π \pi π 与相机 b 的成像平面 I b I_b Ib 相交的对极线为 P b b e a ‾ \overline{P_b {^be_a}} Pbbea, 极线经过对极点 b e a ^be_a bea 及场景点 P P P 在相机 b 成像平面上的投影点 P b {\rm P}_b Pb. 对极线都经过成像平面上的对极点.

已知相机 a 中像素点/投影点 P a {\rm P}_a Pa, 在未知场景点 P \rm P P 确切位置的情况下, 根据射影关系, 只能猜测可能的场景点在反向投影线上, 可能为 P ′ ′ {\rm P}'' P′′ P ′ {\rm P}' P P \rm P P 等无穷多种情况之一. 那么像素点 P a {\rm P}_a Pa 对应的在相机 b 中的可能投影点/像素点为 P b {\rm P}_b Pb P b ′ {\rm P}_b' Pb P b ′ ′ {\rm P}_b'' Pb′′ 等. 虽然成像平面 I b I_b Ib 上对应像素点是不确定的且有无穷多种可能性, 但这些候选点都在同一条直线上, 这条直线就是对极线. 利用对极线可以大大减小双目图像匹配的搜索空间, 不然需要在相机 b 成像平面 I b I_b Ib 全域搜索以匹配相机 a 上的一个像素点 P a {\rm P}_a Pa.

不同的场景点会改变成像平面内的像素点. 如场景点 P \rm P P 在两个相机内成像点为 P a {\rm P}_a Pa P b {\rm P}_b Pb, 而场景点 Q \rm Q Q 在两个相机内成像点为 Q a {\rm Q}_a Qa Q b {\rm Q}_b Qb. 那么对应的对极线也将改变. 但是两个相机位姿确定的情况下 (在世界坐标系中位姿固定), 两个对极点 a e b ^ae_b aeb b e a ^be_a bea 的位置确定, 同时成像平面内的对极线必然经过该平面内的对极点. 所以不同的场景点在同一相机成像平面内形成了经过对极点的对极线束.


epipolar_lines_drawing
Fig. 3 对极线示意图

8. 对极线的线坐标 (Coordinates of Epipolar Lines)

由对极约束方程 (5-5), 我们定义
l ′ = E a p a (8-1) l' = E\, {^ap_a} \tag{8-1} l=Eapa(8-1)
l ′ l' l 视为线坐标. 由式 (5-5) 可知
( E a p a ) ⋅ b p b = 0 (8-2) (E\, {^ap_a})\cdot {^bp_b} = 0 \tag{8-2} (Eapa)bpb=0(8-2)
得到 l ′ l' l 经过 b p b ^bp_b bpb.

虽然对极点 b e a ^be_a bea 的坐标未知, 但是可以知道与 t t t 成正比, 即
b e a = κ t (8-3) ^be_a = \kappa\, t \tag{8-3} bea=κt(8-3)
代入
( E a p a ) ⋅ b e a = κ t ⋅ ( E a p a ) = κ t ⋅ ( [ t ] × R a p a ) = κ t ⋅ ( t × ( R a p a ) ⏟ ⊥ t ) = 0 (8-4) \begin{aligned} (E\, {^ap_a})\cdot {^be_a} &= \kappa \, t \cdot (E\, {^ap_a}) \\ &=\kappa \, t \cdot ([t]_{\times} R\, {^ap_a} ) \\ &=\kappa \, t \cdot (\underset{\bot t}{\underbrace{t\times (R \, {^ap_a})}} )\\ &= 0 \end{aligned} \tag{8-4} (Eapa)bea=κt(Eapa)=κt([t]×Rapa)=κt(t t×(Rapa))=0(8-4)
得到 l ′ l' l 经过 b e a ^be_a bea.

既经过像素点 b p b ^bp_b bpb 又经过对极点 b e a ^be_a bea, 所以 l ′ = E a p a l' = E\, {^ap_a} l=Eapa 是相机 b 成像平面 I b I_b Ib 内的对极线的线坐标.

默认像素点在各自相机坐标系内描述, 可简写为
l ′ = E p a (8-5) l' = E\, {p_a} \tag{8-5} l=Epa(8-5)
类似地, 由对极约束方程 (5-5) 定义
l = E T b p b (8-6) l = E^{\rm T}\, {^bp_b} \tag{8-6} l=ETbpb(8-6)
由式 (5-5) 推导
l ⋅ a p a = ( E T b p b ) T a p a = b p b T E a p a = 0 (8-7) l \cdot {^ap_a} = \left(E^{\rm T}\, {^bp_b}\right)^{\rm T} {^ap_a} = {^bp_b^{\rm T}}\, E \, {^ap_a} = 0 \tag{8-7} lapa=(ETbpb)Tapa=bpbTEapa=0(8-7)
得到 l l l 经过 a p a ^ap_a apa.

对极点 a e b ^ae_b aeb 在相机 a 内的坐标向量与 a t b ^at_b atb 成正比,
a e b = κ ′ a t b = − κ ′ R T t (8-8) {^ae_b} = \kappa' \, {^at_b} =- \kappa' \, R^{\rm T}\, t \tag{8-8} aeb=κatb=κRTt(8-8)
代入计算
l ⋅ a e b = − κ ′ ( E T b p b ) T R T t = − κ ′ b p b T E R T t = − κ ′ b p b T [ t ] × R ⏟ = E R T t = − κ ′ b p b T [ t ] × t ⏟ = 0 = 0 (8-9) \begin{aligned} l\cdot {^ae_b} &= - \kappa' \left( E^{\rm T}\, {^bp_b} \right)^{\rm T} R^{\rm T}\, t \\ &= - \kappa' {^bp_b^{\rm T}} E R^{\rm T}\, t \\ &= - \kappa' {^bp_b^{\rm T}} \underset{=E}{\underbrace{[t]_{\times} R}} R^{\rm T}\, t \\ &= - \kappa' {^bp_b^{\rm T}} \underset{=0}{\underbrace{[t]_{\times} \, t}} \\ & = 0 \end{aligned} \tag{8-9} laeb=κ(ETbpb)TRTt=κbpbTERTt=κbpbT=E [t]×RRTt=κbpbT=0 [t]×t=0(8-9)
得到 l l l 经过 a e b ^ae_b aeb.

既经过像素点 a p a ^ap_a apa 又经过对极点 a e b ^ae_b aeb, 所以 l = E T b p b l = E^{\rm T}\, {^bp_b} l=ETbpb 是相机 a 成像平面 I a I_a Ia 内的对极线的线坐标.

默认像素点在各自相机坐标系内描述, 可简写为
l = E T p b (8-10) l = E^{\rm T}\, {p_b} \tag{8-10} l=ETpb(8-10)


9. 本质矩阵的零空间 (Null Space of a Essential Matrix)

[性质 1] 当 t ≠ [ 0 , 0 , 0 ] T t\neq [0,0,0]^{\rm T} t=[0,0,0]T 时, 本质矩阵 E E E秩为 2, 即
r a n k ( E ) = 2 (9-1) {\rm rank}(E)=2 \tag{9-1} rank(E)=2(9-1)

[性质 2] 对极点向量 a e b ^ae_b aeb 张成的一维空间是本质矩阵 E E E零空间.

[性质 3] 对极点向量 b e a ^be_a bea 张成的一维空间是本质矩阵 E E E左零空间.

[性质 1] 的说明:
det ⁡ ( E ) = det ⁡ ( [ t ] × R ) = det ⁡ ( [ t ] × ) ⏟ = 0 det ⁡ ( R ) ⏟ = 1 = 0 (9-2) \det(E) =\det([t]_{\times} R)= \underset{=0}{\underbrace{\det([t]_\times)}} \,\underset{=1}{\underbrace{\det(R)}} = 0 \tag{9-2} det(E)=det([t]×R)==0 det([t]×)=1 det(R)=0(9-2)
可知本质矩阵 E E E 是退化的.

又因为 r a n k ( [ t ] × ) = 2 {\rm rank}([t]_{\times})=2 rank([t]×)=2 R R R 为旋转矩阵可逆, 故 r a n k ( E ) = r a n k ( [ t ] × R ) = 2 {\rm rank}(E)={\rm rank}([t]_{\times}R) = 2 rank(E)=rank([t]×R)=2.

[性质 2] 的说明:

由式 (8-9) 可知, 相机 a 成像平面 I a I_a Ia 内的对极线 l l l 满足
l ⋅ a e b = ( E T b p b ) ⋅ a e b = 0 ⇒ b p b T ( E a e b ) = 0 (9-3) l \cdot {^ae_b} = \left(E^{\rm T}\, {^bp_b}\right) \cdot {^ae_b} = 0 \\ \Rightarrow \qquad {^bp_b^{\rm T}}\, (E \,{^ae_b}) = 0 \tag{9-3} laeb=(ETbpb)aeb=0bpbT(Eaeb)=0(9-3)
我们已知只要两个相机的在世界坐标系中的位姿固定, 不管场景点 P \rm P P 及其投影点 a p a ^ap_a apa b p b ^bp_b bpb 如何变化, 相机 a 成像平面内的对极线 l l l 都经过对极点 a e b ^ae_b aeb. 所以 b p b ^bp_b bpb 可以任意变换, 上式总成立. 故有

E a e b = 0 (9-4) E \,{^ae_b} = 0 \tag{9-4} Eaeb=0(9-4)
说明了 “对极点向量 a e b ^ae_b aeb 张成的一维空间是本质矩阵 E E E 的零空间”.

[性质 3] 的说明:

同理, 由式 (8-4) 可知, 相机 b 成像平面 I b I_b Ib 内的对极线 l ′ l' l 满足
( E a p a ) ⋅ b e a = 0 ⇒ a p a T ( E T b e a ) = 0 (9-5) (E\, {^ap_a})\cdot {^be_a} = 0 \\ \Rightarrow\qquad {^ap_a^{\rm T}}\, (E^{\rm T}\, {^be_a}) = 0 \tag{9-5} (Eapa)bea=0apaT(ETbea)=0(9-5)
只要两个相机的在世界坐标系中的位姿固定, a p a ^ap_a apa 任意变化, 对极线总经过对极点, 上式总成立. 故有
E T b e a = 0 (9-6) E^{\rm T}\, {^be_a} = 0 \tag{9-6} ETbea=0(9-6)
说明了 “对极点向量 b e a ^be_a bea 张成的一维空间是本质矩阵 E E E 的左零空间”.


10. 本质矩阵的奇异值 (Singular Values of a Essential Matrix)

[性质 4] 本质矩阵 E E E 具有两个相等的非零奇异值, 以及一个零奇异值.

[性质 5] 对极点向量 b e a ^be_a bea 正比于本质矩阵 E E E 的零奇异值对应的左奇异向量 u 3 u_3 u3.

[性质 6] 对极点向量 a e b ^ae_b aeb 正比于本质矩阵 E E E 的零奇异值对应的右奇异向量 v 3 v_3 v3.

[性质 4] 的说明:

奇异值基本性质参考之前博文——奇异值分解之常用结论. 本质矩阵 E E E 的奇异值通过对称矩阵 E E T E\,E^{\rm T} EET 非零特征值的开平方来获得. 先计算 E E T E\,E^{\rm T} EET 的特征值.
det ⁡ ( λ I − E E T ) = det ⁡ ( λ I − [ t ] × R R T [ t ] × T ) = det ⁡ ( λ I − [ t ] × [ t ] × T ) = − λ ( λ − t z 2 − t y 2 − t x 2 ) 2 (10-1) \begin{aligned} &\det(\lambda I- E\, E^{\rm T}) \\ =\; & \det(\lambda I- [t]_{\times} R\, R^{\rm T}\,[t]_{\times}^{\rm T}) \\ = \; &\det(\lambda I- [t]_{\times} \,[t]_{\times}^{\rm T}) \\ = \; & -\lambda\,(\lambda -t_z^2 - t_y^2 - t_x^2)^2 \end{aligned} \tag{10-1} ===det(λIEET)det(λI[t]×RRT[t]×T)det(λI[t]×[t]×T)λ(λtz2ty2tx2)2(10-1)
E E T E\,E^{\rm T} EET 的特征值为
{ λ 1 , 2 = t z 2 + t y 2 + t x 2 λ 3 = 0 (10-2) \left\{\begin{aligned} \lambda_{1,2} &= t_z^2 + t_y^2 + t_x^2 \\ \lambda_3 &= 0 \end{aligned} \right. \tag{10-2} {λ1,2λ3=tz2+ty2+tx2=0(10-2)
本质矩阵 E E E 的奇异值为
{ σ 1 , 2 = t z 2 + t y 2 + t x 2 σ 3 = 0 (10-3) \left\{\begin{aligned} \sigma_{1,2} &= \sqrt{t_z^2 + t_y^2 + t_x^2} \\ \sigma_3 &= 0 \end{aligned}\right. \tag{10-3} σ1,2σ3=tz2+ty2+tx2 =0(10-3)
[性质 5] 的说明:

对称矩阵 E E T E\,E^{\rm T} EET 的特征向量 u 1 , u 2 , u 3 u_1, u_2, u_3 u1,u2,u3 构成了本质矩阵 E E E 的左奇异向量.

已知对称矩阵 E E T E\,E^{\rm T} EET 的特征值中只有一个零特征值, 所以 E E T E\,E^{\rm T} EET 的零空间是 1 维的.

由式 (9-6) 可知
E E T b e a = E ( E T b e a ) = 0 (10-4) E\,E^{\rm T}\, {^be_a} = E\,(E^{\rm T}\, {^be_a}) = 0 \tag{10-4} EETbea=E(ETbea)=0(10-4)
又由特征值和特征向量关系
E E T u 3 = λ 3 u 3 = 0 (10-5) E\,E^{\rm T} u_3 = \lambda_3 \,u_3 = 0 \tag{10-5} EETu3=λ3u3=0(10-5)
可知 b e a ^be_a bea u 3 u_3 u3 都在 E E T E\,E^{\rm T} EET 的 1 维零空间上, 所以 “对极点向量 b e a ^be_a bea 正比于本质矩阵 E E E 的零奇异值对应的左奇异向量 u 3 u_3 u3”.

[性质 6] 的说明:

首先说明 E E T E\,E^{\rm T} EET E T E E^{\rm T}E ETE 之间是相似.

已知 [ t ] × T = − [ t ] × [t]_{\times}^{\rm T} = -[t]_{\times} [t]×T=[t]×, 及 E E T = [ t ] × R R T [ t ] × T = [ t ] × [ t ] × T E\, E^{\rm T} = [t]_{\times} R\, R^{\rm T}\,[t]_{\times}^{\rm T} = [t]_{\times} \,[t]_{\times}^{\rm T} EET=[t]×RRT[t]×T=[t]×[t]×T, 则
E T E = ( [ t ] × R ) T [ t ] × R = R T [ t ] × T [ t ] × R = R T [ t ] × [ t ] × T R = R T E E T R (10-6) \begin{aligned} E^{\rm T} E &= \left([t]_{\times} R\right)^{\rm T}\, [t]_{\times} R\\ &= R^{\rm T} [t]_{\times}^{\rm T}\, [t]_{\times} R \\ &= R^{\rm T} [t]_{\times} [t]_{\times}^{\rm T} R \\ &= R^{\rm T} E \, E^{\rm T} R \end{aligned} \tag{10-6} ETE=([t]×R)T[t]×R=RT[t]×T[t]×R=RT[t]×[t]×TR=RTEETR(10-6)
旋转矩阵 R R R 是可逆的, 故有矩阵相似关系 E E T ∼ E T E E\,{E^{\rm T}} \sim {E^{\rm T}} E EETETE. 相似矩阵的特征值相同.

对称矩阵 E T E E^{\rm T}E ETE 的特征向量 v 1 , v 2 , v 3 v_1, v_2, v_3 v1,v2,v3 构成了本质矩阵 E E E 的右奇异向量.

由式 (9-4) 可知
E T E a e b = E T ( E a e b ) = 0 (10-7) E^{\rm T}\, E \,{^ae_b} = E^{\rm T}\,(E \,{^ae_b}) = 0 \tag{10-7} ETEaeb=ET(Eaeb)=0(10-7)
又由于
E T E v 3 = λ 3 v 3 = 0 (10-8) E^{\rm T}E\, v_3 = \lambda_3 \, v_3 = 0 \tag{10-8} ETEv3=λ3v3=0(10-8)
同时由于 E T E E^{\rm T}\, E ETE 只有一个零特征值, E T E E^{\rm T}\, E ETE 零空间是 1 维的.

可知 a e b ^ae_b aeb v 3 v_3 v3 都在 E T E E^{\rm T}E ETE 的 1 维零空间上, 所以 “对极点向量 a e b ^ae_b aeb 正比于本质矩阵 E E E 的零奇异值对应的右奇异向量 v 3 v_3 v3”.


总结

如有问题或者错误, 请不吝指教, 谢谢!


参考文献

[1] Carlo Tomasi, Epipolar Geometry and the Essential Matrix, https://courses.cs.duke.edu/spring20/compsci527/notes/epipolar-geometry.pdf

[2] 熊有伦等, 机器人学: 建模、控制与视觉, 华中科技大学出版社, 2020


版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/woyaomaishu2/article/details/141973232
本文作者:wzf@robotics_notes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/418126.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单调栈的实现

这是C算法基础-数据结构专栏的第二十四篇文章,专栏详情请见此处。 引入 单调栈就是满足单调性的栈结构,它最经典的应用就是给定一个序列,找出每个数左边离它最近的比它大/小的数。 下面我们就来讲单调栈的实现。 定义 单调栈就是满足单调性…

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

精准设计与高效开发:用六西格玛设计DFSS实现新能源汽车开发突破

快速变化的市场需求和激烈的竞争迫使制造企业不得不持续创新和优化产品开发流程。如何在保证产品质量的前提下,加快产品开发周期,成为许多企业亟待解决的问题。六西格玛中的DFSS(Design for Six Sigma)模型提供了一种系统的方法&a…

【银河麒麟高级服务器操作系统实例】虚拟化平台系统服务中断现象分析及处理建议

服务器环境以及配置 【机型】虚机 处理器: Kunpeng-920 内存: 40G 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟操作系统 Kylin-Server-10-SP1-Release-Build20-20210518-arm64 【第三方软件】 智能运维系统、mysq…

5G移动网络运维实验(训)室解决方案

随着第五代移动通信技术(5G)的快速普及和工业互联网的迅猛发展,全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力,为工业自动化、智能制造等领域带来了革命性的技术支持。为了…

Vatee万腾平台:赋能企业,共筑智慧经济新高地

在智慧经济时代的大潮中,企业如何把握机遇,实现转型升级,成为行业内的佼佼者?Vatee万腾平台以其卓越的技术实力、前瞻性的战略眼光和全方位的服务体系,正逐步成为企业数字化转型的坚实后盾,赋能企业&#x…

软考真题之软件设计师的程序语言设计题型(上午题)

目录 编程程序和解释程序 相关习题 函数 编译,解释和翻译阶段 符号表 ​编辑 相关习题 ​编辑 词法分析 语法分析 语义分析 目标代码生成 相关习题 中间代码生成 正规式 相关习题 有限自动机 相关习题 上下文无关文法 相关习题 比较偏的真题 编程程序和解…

Python OpenCV 影像处理:傅立叶转换

►前言 上篇介绍基于计算影像的梯度,通过在影像中找到梯度值的变化来识别边缘。 本篇将介绍傅立叶变换的基本原理,了解傅立叶变换是如何将影像从空间域转换到频率域的,以及为什么这种转换在影像处理过程中是有用的。以及傅立叶变换的实际应…

微服务日常总结

1.当我们在开发中,需要连接多个库时,可以在yml中进行配置。 当在查询的时候,跨库时,需要通过DS 注解来指定,需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中,需要再字段 的占位符后面加上j…

微服务--Nacos

一、Nacos简介 Nacos(Naming and Configuration Service)是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它致力于帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos支持几乎所有主流类型的服…

AFSim 仿真系统----性能工具

什么是 WPR/WPA? Windows 性能记录器 (WPR) 和 Windows 性能分析器 (WPA) 是 Windows 性能工具包中提供的性能监控工具。它们是免费的工具,可以通过下载和安装 Windows 评估和部署工具包 (ADK) 来获得。 WPR 是一个工具,允许用户动态部署事…

【LeetCode】09.回文数

题目要求 解题思路 主要是提防越界问题 代码实现 class Solution { public:bool isPalindrome(int x) {//处理边界if(x<0) return false;long tempx,ret0;while(temp){retret*10temp%10;temp/10;}return xret;} };

线性代数|机器学习-P34神经网络和学习函数

文章目录 1. 神经网络2. 损失函数3. 距离矩阵 1. 神经网络 构建一个神经网络步骤如下&#xff1a; 构建一个神经网络 构造一个学习函数 F ( x , v ) F(x,v) F(x,v),x代表权重 A k , b k A_k,b_k Ak​,bk​&#xff0c;v代表样本特征向量,ReLu激活函数 v 1 R e L u [ F ( A …

Windows安装anaconda注意事项及jupyter notebook更换目录

anaconda的介绍就不罗嗦了&#xff0c;既然准备安装了&#xff0c;说明你已经有所了解了。直入主题&#xff0c;Anaconda官网下载&#xff0c;实在太慢&#xff0c;可到https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载&#xff0c;注意&#xff0c;这是清华镜像站…

深度评测热门翻译工具,携手你的翻译得力助手

随着互联网技术的飞速发展&#xff0c;全球化交流日益频繁&#xff0c;跨语言沟通的需求也随之激增。对于外语水平有限的朋友来说&#xff0c;翻译器是一个必不可少的工具。今天我就分享几款我用的翻译器吧。 1.福晰在线翻译 链接直达>>https://fanyi.pdf365.cn/doc …

在嵌入式板子上搭建和自定义live555服务器---编译问题和方法整理

live555 官方网站 点我直达&#xff0c;live555是一个简单的专注于实现RTSP服务器的开源库。它自带解析H264 H265 mp3等源的API&#xff0c;有一个简单的推流文件参考RTSP服务器例程testH264VideoStreamer也有官方实现的LIVE555 Media Server。无论是命令行使用还是用API实现定…

大语言模型LLM权重4bit向量量化(Vector Quantization)/查找表量化基本原理

参考 https://apple.github.io/coremltools/docs-guides/source/opt-palettization-overview.html https://apple.github.io/coremltools/docs-guides/source/opt-palettization-algos.html Apple Intelligence Foundation Language Models 苹果向量量化&#xff1a; DKM:…

c/c++ 指针数组

顾名思义就是元素为指针的数组&#xff0c;如定义一个 char *类型的指针数组&#xff1a; char *strName[] {"123","456","789","abc","def" }; 如果是这样初始化的指针数组&#xff0c;c编译是会抛出警告信息的&#xff…

vue2+ueditor集成秀米编辑器

一、百度富文本编辑器 1.首先下载 百度富文本编辑器 下载地址&#xff1a;GitHub - fex-team/ueditor: rich text 富文本编辑器 2.把下载好的文件整理好 放在图片目录下 3. 安装插件vue-ueditor-wrap npm install vue-ueditor-wrap 4.在你所需要展示的页面 引入vue-uedito…

设计模式-单例模式工厂模式

3.1 单例模式 1.概念 用类来实现单例。由于某种需要&#xff0c;要保证一个类在程序的生命周期中只有一个实例&#xff0c;并且提供该实例的全局访问方法。 2.结构三要素 1)私有的静态对象属性private static instance&#xff0c;它的类型就是当前类的对象&#xff0c;静态…