Title: 多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG
文章目录
- I. 向量叉乘的矩阵转换恒等式
- II. 符号计算 Maxima 程序推导
- III. 推论和关联公式的说明
- 1. 推论
- 2. 应用于对极几何中基本矩阵推导
- 3. 应用于基本矩阵与单应矩阵关系
- 4. 与刚体运动旋转矩阵作用的关系
- 附 - 关于摄像机矩阵广义逆的说明
- IV. 小节
- 参考文献
多视图几何读书笔记
[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} t≜Mx. 当 M M M 可逆时, x = M − 1 t \mathbf{x} = M^{-1}\mathbf{t} x=M−1t, 并有 M ∗ = ∣ M ∣ M − T M^{\ast}=|M|\ M^{\rm -T} M∗=∣M∣ M−T. 则上式
[ 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∗[M−1t]×=M−T[M−1t]×(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} [M−1t]×=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]×=M−T[t]×M−1(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]×=M−1[t]×M−T(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[I∣0],P′=K′[R∣t]P+=[K−10T],C=[01](III-2-1)
其中 K K K 和 K ′ K' K′ 分别为第一个相机和第二个相机的内参矩阵. 而 [ R ∣ t ] [R|\mathbf{t}] [R∣t] 是第一个相机坐标系 (此处设定为世界坐标系) 相对于第二个相机坐标系的位姿称为相机外参矩阵 (相机坐标姿态变换可参考博文 “对极约束及其性质 —— 公式详细推导” 中的描述).
则
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} P′C=K′t,P′P+=K′RK−1(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} R−T=(R−1)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=[P′C]×P′P+=III−1−4[K′t]×K′RK−1=K′−T[t]×K′−1K′RK−1=K′−T[t]×RK−1=K′−TRIII−1−5R−1[t]×R−TK−1=K′−TR[RTt]×K−1=K′−TRKTIII−3−4K−T[RTt]×K−1=K′−TRKT[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=H−T[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=H−1e′(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}\\ [H−1e′]×=HT[e′]×H⇒[e′]×H=H−T[H−1e′]×⇒[e′]×H=H−T[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[θ]×R−1=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) R∈SO(3).
因为旋转矩阵 ∣ R ∣ = 1 |R|=1 ∣R∣=1 及 R − T = R R^{\rm -T}=R R−T=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∣=1R−T=R}⇒R∗=∣R∣ R−T=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} J∈Rm×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[I∣0]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[I∣0][I0T]KT)−1=[I0T]KT(KKT)−1=[I0T]K−1=[K−10T](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