Bootstrap

多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG

Title: 多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG



多视图几何读书笔记

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

[2] [笔记] 仿射变换性质的代数证明

[3] 多视图几何中向量叉乘的矩阵转换恒等式 Matrix Transformation for Cross Product in MVG ← \leftarrow 本篇


I. 向量叉乘的矩阵转换恒等式

“Multiple View Geometry in Computer Vision” 中一个关于向量叉乘的矩阵转换的恒等式经常在基本矩阵、单应矩阵、对极几何等相关内容的推导中出现[1].

Lemma A4.2[1]

If M M M is any 3 × 3 3\times3 3×3 matrix (invertible or not), and x \mathbf{x} x and y \mathbf{y} y are column vectors, then
( M x ) × ( M y ) = M ∗ ( x × y ) (A4.8) (M\mathbf{x})\times (M \mathbf{y}) = M^{\ast}(\mathbf{x} \times \mathbf{y})\tag{A4.8} (Mx)×(My)=M(x×y)(A4.8)
where M ∗ M^{\ast} M is the matrix of cofactors of M M M.

StackExchange (Cross product: matrix transformation identity) 上有关于该式数学推导的讨论.

这里尝试利用 Maxima 符号计算进行暴力计算直接证明. 然后再简单讨论一下该恒等式在基本矩阵、单应矩阵推导中的应用, 以及说明其特例——刚体旋转矩阵作用下的向量叉乘积.


II. 符号计算 Maxima 程序推导

简短的 Maxima 程序对上述 Lemma A4.2 进行符号计算推导.

M: matrix([m_11, m_12, m_13], [m_21, m_22, m_23], [m_31, m_32, m_33]);
x: transpose(matrix([x_1, x_2, x_3]));
y: transpose(matrix([y_1, y_2, y_3]));
adjM: adjoint(M);
CoM: transpose(adjM);
Mx: M.x;
My: M.y;
LHS: matrix([i, j, k], [Mx[1][1], Mx[2][1], Mx[3][1]], [My[1][1], My[2][1], My[3][1]]);
LHS_i: determinant(submatrix(1,LHS,1));
LHS_j: -determinant(submatrix(1,LHS,2));
LHS_k: determinant(submatrix(1,LHS,3));
xXy: matrix([i, j, k], [x[1][1], x[2][1], x[3][1]], [y[1][1], y[2][1], y[3][1]]);
xXy_i: determinant(submatrix(1,xXy,1));
xXy_j: -determinant(submatrix(1,xXy,2));
xXy_k: determinant(submatrix(1,xXy,3));
MxXy: transpose(matrix([xXy_i, xXy_j, xXy_k])); 
RHS: CoM.MxXy;
RHS_i: RHS[1][1];
RHS_j: RHS[2][1];
RHS_k: RHS[3][1];
expand(LHS_i - RHS_i);
expand(LHS_j - RHS_j);
expand(LHS_k - RHS_k);

输出结果说明 (A4.8) 式的左右两边相等, 即结果成立.

在这里插入图片描述


III. 推论和关联公式的说明

1. 推论

由式 (A4.8),
( M x ) × ( M y ) = M ∗ ( x × y ) ⇒ [ M x ] × M y = M ∗ [ x ] × y (III-1-1) (M\mathbf{x})\times (M \mathbf{y}) = M^{\ast}(\mathbf{x} \times \mathbf{y})\\ \Rightarrow \quad [M\mathbf{x}]_\times M \mathbf{y} = M^{\ast}[\mathbf{x}]_\times \mathbf{y} \tag{III-1-1} (Mx)×(My)=M(x×y)[Mx]×My=M[x]×y(III-1-1)
因为任意的 y \mathbf{y} y 都成立, 则有
[ M x ] × M = M ∗ [ x ] × (III-1-2) \quad [M\mathbf{x}]_\times M = M^{\ast}[\mathbf{x}]_\times \tag{III-1-2} [Mx]×M=M[x]×(III-1-2)
t ≜ M x \mathbf{t} \triangleq M \mathbf{x} tMx. 当 M M M 可逆时, x = M − 1 t \mathbf{x} = M^{-1}\mathbf{t} x=M1t, 并有 M ∗ = ∣ M ∣   M − T M^{\ast}=|M|\ M^{\rm -T} M=M MT. 则上式
[ t ] × M = M ∗ [ M − 1 t ] × = M − T [ M − 1 t ] × (Result A4.3) [\mathbf{t}]_{\times}M=M^{\ast}[M^{-1}\mathbf{t}]_{\times}= M^{\rm -T}[M^{-1}\mathbf{t}]_{\times} \tag{Result A4.3} [t]×M=M[M1t]×=MT[M1t]×(Result A4.3)
上式中的 “等号” 是射影空间 R P 3 \mathbb{RP}^{3} RP3 下的等价关系, 两个向量相差一个非零比例常数即为等价或者相等. 此即为参考文献 [1] 中 Result A4.3 的结果.

进一步, 可得
[ M − 1 t ] × = M T [ t ] × M (III-1-3) [M^{-1}\mathbf{t}]_{\times} = M^{\rm T} [\mathbf{t}]_{\times}M \tag{III-1-3} [M1t]×=MT[t]×M(III-1-3)

[ M t ] × = M − T [ t ] × M − 1 (III-1-4) [M\mathbf{t}]_{\times} = M^{\rm -T} [\mathbf{t}]_{\times}M^{-1} \tag{III-1-4} [Mt]×=MT[t]×M1(III-1-4)

[ M T t ] × = M − 1 [ t ] × M − T (III-1-5) [M^{\rm T}\mathbf{t}]_{\times} = M^{-1} [\mathbf{t}]_{\times}M^{\rm -T} \tag{III-1-5} [MTt]×=M1[t]×MT(III-1-5)


2. 应用于对极几何中基本矩阵推导

参考文献 [1] 中 Example 9.2 对对极几何中的基本矩阵 (Fundamental Matrix) 进行了变形推导.

以第一个相机坐标系作为世界参考坐标系, 已知第一个相机的摄像机矩阵 P P P、第二个相机的摄像机矩阵 P ′ P' P、摄像机矩阵 P P P 的广义逆矩阵 P + P^{+} P+、第一个相机的光心坐标 C C C 如下
P = K [ I ∣ 0 ] , P ′ = K ′ [ R ∣ t ] P + = [ K − 1 0 T ] , C = [ 0 1 ] (III-2-1) P=K[I|\mathbf{0}],\quad P'=K'[R|\mathbf{t}]\\ P^{+}=\begin{bmatrix}K^{-1}\\\mathbf{0}^{\rm T}\end{bmatrix},\quad C=\begin{bmatrix}\mathbf{0}\\1\end{bmatrix} \tag{III-2-1} P=K[I0],P=K[Rt]P+=[K10T],C=[01](III-2-1)
其中 K K K K ′ K' K 分别为第一个相机和第二个相机的内参矩阵. 而 [ R ∣ t ] [R|\mathbf{t}] [Rt] 是第一个相机坐标系 (此处设定为世界坐标系) 相对于第二个相机坐标系的位姿称为相机外参矩阵 (相机坐标姿态变换可参考博文 “对极约束及其性质 —— 公式详细推导” 中的描述).


P ′ C = K ′ t , P ′ P + = K ′ R K − 1 (III-2-2) P'C=K'\mathbf{t},\quad P'P^{+}=K'RK^{-1} \tag{III-2-2} PC=Kt,PP+=KRK1(III-2-2)
另外, 旋转矩阵
R − T = ( R − 1 ) T = ( R T ) T = R (III-2-3) R^{\rm -T}= ({R^{-1}})^{\rm T}=(R^{\rm T})^{\rm T}=R \tag{III-2-3} RT=(R1)T=(RT)T=R(III-2-3)

然后就可以推导参考文献 [1] 中关于基本矩阵 F F F 的关系式 (Page 244-eq (9.4))
F = [ P ′ C ] × P ′ P + = [ K ′ t ] × ‾ I I I − 1 − 4 K ′ R K − 1 = K ′ − T [ t ] × K ′ − 1 ‾ K ′ R K − 1 = K ′ − T [ t ] × R ‾ K − 1 = K ′ − T R R − 1 [ t ] × R − T ‾ ‾ I I I − 1 − 5 K − 1 = K ′ − T R [ R T t ] × K − 1 = K ′ − T R K T K − T [ R T t ] × K − 1 ‾ I I I − 3 − 4 = K ′ − T R K T [ K R T t ] × (III-2-4) \begin{aligned} F&=[P'{C}]_{\times}P'P^{+}\\ &=\underset{\rm III-1-4}{\underline{[K'\mathbf{t}]_{\times}}} K'RK^{-1}\\ &=\underline{K'^{\rm -T}[\mathbf{t}]_{\times}K'^{-1}} K'RK^{-1}\\ &= K'^{\rm -T}[\mathbf{t}]_{\times}\underline{R}K^{-1}\\ &= K'^{\rm -T}R \underset{\rm III-1-5}{\underline{R^{-1}[\mathbf{t}]_{\times}\underline{R^{\rm -T}}}} K^{-1}\\ &= K'^{\rm -T}R [R^{\rm T}\mathbf{t}]_{\times} K^{-1}\\ &= K'^{\rm -T}R K^{\rm T} \underset{\rm III-3-4}{\underline{K^{\rm -T} [R^{\rm T}\mathbf{t}]_{\times} K^{-1}}}\\ &= K'^{\rm -T}R K^{\rm T}[KR^{\rm T} \mathbf{t}]_{\times} \end{aligned} \tag{III-2-4} F=[PC]×PP+=III14[Kt]×KRK1=KT[t]×K1KRK1=KT[t]×RK1=KTRIII15R1[t]×RTK1=KTR[RTt]×K1=KTRKTIII34KT[RTt]×K1=KTRKT[KRTt]×(III-2-4)


3. 应用于基本矩阵与单应矩阵关系

基本矩阵与平面单应矩阵的关系可以表示为 (参考文献 [3] 第四章 eq(4.26) 和 eq(4.27))
F = [ e ′ ] × H (III-3-1-a) F=[\mathbf{e}']_{\times}H \tag{III-3-1-a} F=[e]×H(III-3-1-a)

F = H − T [ e ] × (III-3-1-b) F=H^{\rm -T}[\mathbf{e}]_{\times} \tag{III-3-1-b} F=HT[e]×(III-3-1-b)

其中 H H H 为平面单应矩阵, e \mathbf{e} e e ′ \mathbf{e}' e 为两幅图像上的极点坐标. 两极点是对应点, 故有
e ′ = H e , e = H − 1 e ′ (III-3-2) \mathbf{e}'=H \mathbf{e}, \quad \mathbf{e}=H^{-1}\mathbf{e}' \tag{III-3-2} e=He,e=H1e(III-3-2)
根据一般式 (III-1-3),
[ H − 1 e ′ ] × = H T [ e ′ ] × H ⇒ [ e ′ ] × H = H − T [ H − 1 e ′ ] × ⇒ [ e ′ ] × H = H − T [ e ] × [H^{-1}\mathbf{e}']_{\times} = H^{\rm T}[\mathbf{e}']_{\times}H \\ \Rightarrow\quad [\mathbf{e}']_{\times}H =H^{\rm -T} [H^{-1}\mathbf{e}']_{\times}\\ \Rightarrow\quad [\mathbf{e}']_{\times}H =H^{\rm -T} [\mathbf{e}]_{\times}\\ [H1e]×=HT[e]×H[e]×H=HT[H1e]×[e]×H=HT[e]×
故有基本矩阵与单应矩阵之间的两个关系式 (III-3-1-a) 与 (III-3-1-b) 等价.


4. 与刚体运动旋转矩阵作用的关系

之前的博文中经常用到关于刚体运动旋转矩阵 R R R 的如下两个恒等式
R a × R b = R ( a × b ) (III-4-1) R\mathbf{a}\times R\mathbf{b} = R(\mathbf{a}\times \mathbf{b}) \tag{III-4-1} Ra×Rb=R(a×b)(III-4-1)

[ R θ ] × = R [ θ ] × R − 1 = R [ θ ] × R T (III-4-2) [R \boldsymbol{\theta}]_{\times} = R[\boldsymbol{θ}]_{\times} R^{−1}=R[\boldsymbol{θ}]_{\times}R^{\rm T} \tag{III-4-2} [Rθ]×=R[θ]×R1=R[θ]×RT(III-4-2)

以上两式中 a , b , θ ∈ R 3 \mathbf{a}, \mathbf{b}, \boldsymbol{\theta} \in \mathbb{R}^3 a,b,θR3 R ∈ S O ( 3 ) R\in \mathbb{SO}(3) RSO(3).

因为旋转矩阵 ∣ R ∣ = 1 |R|=1 R=1 R − T = R R^{\rm -T}=R RT=R
∣ R ∣ = 1 R − T = R } ⇒ R ∗ = ∣ R ∣   R − T = R (III-4-3) \left. \begin{aligned} |R|=1\\ R^{\rm -T}=R \end{aligned} \right\}\quad \Rightarrow\quad R^{\ast}=|R|\ R^{\rm -T}=R \tag{III-4-3} R=1RT=R}R=R RT=R(III-4-3)
所以式 (III-4-1) 是式 (A4.8) 的特例. 同样地可以看出式 (III-4-2) 是式 (III-1-4) 的特例.


附 - 关于摄像机矩阵广义逆的说明

下面对上文中式 (III-2-1) 中的第一个相机的摄像机矩阵 P P P 的广义逆矩阵 P + P^+ P+ 进行简单说明.

参考博文 “四足机器人中不同优先级任务的执行——Null-Space Projection方法” 中对长方形矩阵的广义逆的讨论.

J ∈ R m × n J\in \mathbf{R}^{m\times n} JRm×n,

if J J J is fat ( n > m n > m n>m),
J + = J T ( J J T ) − 1 (IV-1-1) J^+=J^{\rm T}(JJ^{\rm T})^{−1} \tag{IV-1-1} J+=JT(JJT)1(IV-1-1)
called a right inverse since J J + = I J J^+ = I JJ+=I.

Else if J J J is tall ( n < m n<m n<m),
J + = ( J T J ) − 1 J T (IV-1-2) J^+= (J^{\rm T} J)^{−1} J^{\rm T} \tag{IV-1-2} J+=(JTJ)1JT(IV-1-2)
called a left inverse since J + J = I J^+ J = I J+J=I.

第一个相机的摄像机矩阵 P P P 的矩阵维度 P 3 × 4 = K 3 × 3 [ I ∣ 0 ] 3 × 4 P_{3 \times 4}=K_{3\times 3}[I|\mathbf{0}]_{3 \times 4} P3×4=K3×3[I0]3×4, 列数大于行数, 是一个 “胖矩阵”. 故利用右逆的定义构造广义逆
P + = P T ( P P T ) − 1 = [ I 0 T ] K T ( K [ I ∣ 0 ] [ I 0 T ] K T ) − 1 = [ I 0 T ] K T ( K K T ) − 1 = [ I 0 T ] K − 1 = [ K − 1 0 T ] (IV-1-3) \begin{aligned} P^+ &= P^{\rm T}(P P^{\rm T})^{-1}\\ &=\begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T} \left( K [I|\mathbf{0}] \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T}\right)^{-1}\\ &= \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{\rm T} \left( K K^{\rm T}\right)^{-1}\\ &= \begin{bmatrix}I\\ \mathbf{0}^{\rm T}\end{bmatrix} K^{-1}\\ &=\begin{bmatrix}K^{-1} \\ \mathbf{0}^{\rm T} \end{bmatrix} \end{aligned} \tag{IV-1-3} P+=PT(PPT)1=[I0T]KT(K[I0][I0T]KT)1=[I0T]KT(KKT)1=[I0T]K1=[K10T](IV-1-3)


IV. 小节

本篇博客笔记主要对叉乘积的矩阵变换恒等式进行了讨论, 对多视图几何中用到该恒等式的公式进行简单推导说明.

仅为学习记录.


参考文献

[1] Richard Hartley, Andrew Zisserman, Multiple View Geometryin Computer Vision, 2nd edition, Cambridge University Press, 2004

[2] cross product: matrix transformation identity, https://math.stackexchange.com/questions/859836/cross-product-matrix-transformation-identity

[3] 吴福朝, 计算机视觉中的数学方法, 教育科学出版社, 2008


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

;