Title: 多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG
文章目录
多视图几何读书笔记
[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