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

2024-09-07 08:28

本文主要是介绍对极约束及其性质 —— 公式详细推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1144566

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到