保定网络推广公司,优化大师百科,济南网站seo,郑州企业培训文章目录 1. 前置知识1.1. 向量叉乘1.2. 混合积1.3. 引理证明 2. 本质矩阵3. 基础矩阵4. 应用例子 1. 前置知识
1.1. 向量叉乘
假设 a ( a x a y a z ) \mathbf{a} \begin{pmatrix} a_x \\ a_y \\ a_z \end{pmatrix} a axayaz 以及 b ( b x b y b z ) \mat… 文章目录 1. 前置知识1.1. 向量叉乘1.2. 混合积1.3. 引理证明 2. 本质矩阵3. 基础矩阵4. 应用例子 1. 前置知识
1.1. 向量叉乘
假设 a ( a x a y a z ) \mathbf{a} \begin{pmatrix} a_x \\ a_y \\ a_z \end{pmatrix} a axayaz 以及 b ( b x b y b z ) \mathbf{b} \begin{pmatrix} b_x \\ b_y \\ b_z \end{pmatrix} b bxbybz 叉乘 a × b \mathbf{a} \times \mathbf{b} a×b 的矩阵表示为 a × b ( 0 − a z a y a z 0 − a x − a y a x 0 ) ( b x b y b z ) [ a ] × b (1) \mathbf{a} \times \mathbf{b} \begin{pmatrix} 0 -a_z a_y \\ a_z 0 -a_x \\ -a_y a_x 0 \end{pmatrix} \begin{pmatrix} b_x \\ b_y \\ b_z \end{pmatrix} [\mathbf{a}]_{\times} \mathbf{b} \tag{1} a×b 0az−ay−az0axay−ax0 bxbybz [a]×b(1)其中 [ a ] × ( 0 − a z a y a z 0 − a x − a y a x 0 ) [\mathbf{a}]_{\times} \begin{pmatrix} 0 -a_z a_y \\ a_z 0 -a_x \\ -a_y a_x 0 \end{pmatrix} [a]× 0az−ay−az0axay−ax0 为反对称矩阵且有 [ a ] × T − [ a ] × [\mathbf{a}]_{\times}^T -[\mathbf{a}]_{\times} [a]×T−[a]×。
1.2. 混合积
设 a \mathbf{a} a、 b \mathbf{b} b、 c \mathbf{c} c 是三个向量则混合积的定义为 a ⋅ ( b × c ) \mathbf{a} \cdot (\mathbf{b} \times \mathbf{c}) a⋅(b×c)。更进一步地设 a a 1 i a 2 j a 3 k \mathbf{a} a_1 \mathbf{i} a_2 \mathbf{j} a_3 \mathbf{k} aa1ia2ja3k、 b b 1 i b 2 j b 3 k \mathbf{b} b_1 \mathbf{i} b_2 \mathbf{j} b_3 \mathbf{k} bb1ib2jb3k、 c c 1 i c 2 j c 3 k \mathbf{c} c_1 \mathbf{i} c_2 \mathbf{j} c_3 \mathbf{k} cc1ic2jc3k则有 a ⋅ ( b × c ) ∣ a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 ∣ (2) \mathbf{a} \cdot (\mathbf{b} \times \mathbf{c}) \begin{vmatrix} a_{1} a_{2} a_{3} \\ b_{1} b_{2} b_{3} \\ c_{1} c_{2} c_{3} \end{vmatrix} \tag{2} a⋅(b×c) a1b1c1a2b2c2a3b3c3 (2)证明 a ⋅ ( b × c ) ( a 1 i a 2 j a 3 k ) ⋅ ∣ i j k b 1 b 2 b 3 c 1 c 2 c 3 ∣ ( a 1 i a 2 j a 3 k ) ⋅ ( i ∣ b 2 b 3 c 2 c 3 ∣ − j ∣ b 1 b 3 c 1 c 3 ∣ k ∣ b 1 b 2 c 1 c 2 ∣ ) a 1 ∣ b 2 b 3 c 2 c 3 ∣ − a 2 ∣ b 1 b 3 c 1 c 3 ∣ a 3 ∣ b 1 b 2 c 1 c 2 ∣ ∣ a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 ∣ \begin{align*} \mathbf{a}\cdot(\mathbf{b}\times\mathbf{c}) \left(a_{1}\mathbf{i}a_{2}\mathbf{j}a_{3}\mathbf{k}\right)\cdot \begin{vmatrix} \mathbf{i} \mathbf{j} \mathbf{k} \\ b_{1} b_{2} b_{3} \\ c_{1} c_{2} c_{3} \end{vmatrix} \\ \left(a_{1}\mathbf{i}a_{2}\mathbf{j}a_{3}\mathbf{k}\right)\cdot \left( \mathbf{i} \begin{vmatrix} b_{2} b_{3} \\ c_{2} c_{3} \end{vmatrix} - \mathbf{j} \begin{vmatrix} b_{1} b_{3} \\ c_{1} c_{3} \end{vmatrix} \mathbf{k} \begin{vmatrix} b_{1} b_{2} \\ c_{1} c_{2} \end{vmatrix} \right) \\ a_{1}\begin{vmatrix} b_{2} b_{3} \\ c_{2} c_{3} \end{vmatrix} - a_{2}\begin{vmatrix} b_{1} b_{3} \\ c_{1} c_{3} \end{vmatrix} a_{3}\begin{vmatrix} b_{1} b_{2} \\ c_{1} c_{2} \end{vmatrix} \\ \begin{vmatrix} a_{1} a_{2} a_{3} \\ b_{1} b_{2} b_{3} \\ c_{1} c_{2} c_{3} \end{vmatrix} \end{align*} a⋅(b×c)(a1ia2ja3k)⋅ ib1c1jb2c2kb3c3 (a1ia2ja3k)⋅(i b2c2b3c3 −j b1c1b3c3 k b1c1b2c2 )a1 b2c2b3c3 −a2 b1c1b3c3 a3 b1c1b2c2 a1b1c1a2b2c2a3b3c3 证毕。
行列式具有性质互换行列式的两行或两列行列式的值变号。因此有 a ⋅ ( b × c ) ∣ a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 ∣ ∣ b 1 b 2 b 3 c 1 c 2 c 3 a 1 a 2 a 3 ∣ b ⋅ ( c × a ) ∣ c 1 c 2 c 3 a 1 a 2 a 3 b 1 b 2 b 3 ∣ c ⋅ ( a × b ) \begin{align*} \mathbf{a}\cdot(\mathbf{b}\times\mathbf{c}) \begin{vmatrix} a_{1} a_{2} a_{3} \\ b_{1} b_{2} b_{3} \\ c_{1} c_{2} c_{3} \end{vmatrix} \\ \begin{vmatrix} b_{1} b_{2} b_{3} \\ c_{1} c_{2} c_{3} \\ a_{1} a_{2} a_{3} \\ \end{vmatrix} \mathbf{b}\cdot(\mathbf{c}\times\mathbf{a}) \\ \begin{vmatrix} c_{1} c_{2} c_{3} \\ a_{1} a_{2} a_{3} \\ b_{1} b_{2} b_{3} \\ \end{vmatrix} \mathbf{c} \cdot (\mathbf{a} \times \mathbf{b}) \end{align*} a⋅(b×c) a1b1c1a2b2c2a3b3c3 b1c1a1b2c2a2b3c3a3 b⋅(c×a) c1a1b1c2a2b2c3a3b3 c⋅(a×b)所以 a ⋅ ( b × c ) b ⋅ ( c × a ) c ⋅ ( a × b ) (3) \mathbf{a}\cdot(\mathbf{b}\times\mathbf{c}) \mathbf{b}\cdot(\mathbf{c}\times\mathbf{a}) \mathbf{c} \cdot (\mathbf{a} \times \mathbf{b}) \tag{3} a⋅(b×c)b⋅(c×a)c⋅(a×b)(3)此外如果 a \mathbf{a} a、 b \mathbf{b} b、 c \mathbf{c} c 中任意两个向量相等则混合积等于零。不失一般性假设 a b \mathbf{a} \mathbf{b} ab则有 a ⋅ ( a × c ) a ⋅ ( c × a ) c ⋅ ( a × a ) 0 \mathbf{a}\cdot(\mathbf{a}\times\mathbf{c}) \mathbf{a}\cdot(\mathbf{c}\times\mathbf{a}) \mathbf{c} \cdot (\mathbf{a} \times \mathbf{a}) 0 a⋅(a×c)a⋅(c×a)c⋅(a×a)0
1.3. 引理证明
引理一 R ( a × b ) ( R a ) × ( R b ) \mathbf{R}(\mathbf{a} \times \mathbf{b}) (\mathbf{R} \mathbf{a}) \times (\mathbf{R} \mathbf{b}) R(a×b)(Ra)×(Rb)。 证明 对于任意向量 v \mathbf{v} v R ( a × b ) ⋅ v [ R ( a × b ) ] T v ( a × b ) T R T v ( a × b ) ⋅ ( R T v ) \mathbf{R}(\mathbf{a} \times \mathbf{b}) \cdot \mathbf{v} [\mathbf{R}(\mathbf{a} \times \mathbf{b})]^T \mathbf{v} (\mathbf{a} \times \mathbf{b})^T \mathbf{R}^T \mathbf{v} (\mathbf{a} \times \mathbf{b}) \cdot (\mathbf{R}^T\mathbf{v}) R(a×b)⋅v[R(a×b)]Tv(a×b)TRTv(a×b)⋅(RTv)。根据混合积、向量点积和旋转矩阵 ( R R T I , det ( R ) 1 ) (\mathbf{R} \mathbf{R}^T \mathbf{I}, \det(\mathbf{R}) 1) (RRTI,det(R)1) 的性质有 [ ( R a ) × ( R b ) ] ⋅ v v ⋅ [ ( R a ) × ( R b ) ] det ( [ v R a R b ] ) det ( R [ R T v a b ] ) det ( R ) det ( [ R T v a b ] ) det ( [ R T v a b ] ) ( R T v ) ⋅ ( a × b ) ( a × b ) ⋅ ( R T v ) \begin{align*} [(\mathbf{R} \mathbf{a}) \times (\mathbf{R} \mathbf{b})] \cdot \mathbf{v} \mathbf{v} \cdot [(\mathbf{R} \mathbf{a}) \times (\mathbf{R} \mathbf{b})] \det([\mathbf{v} \quad \mathbf{R} \mathbf{a} \quad \mathbf{R} \mathbf{b}]) \det(\mathbf{R}[\mathbf{R}^T\mathbf{v} \quad \mathbf{a} \quad \mathbf{b}]) \\ \det(\mathbf{R}) \det([\mathbf{R}^T\mathbf{v} \quad \mathbf{a} \quad \mathbf{b}]) \det([\mathbf{R}^T\mathbf{v} \quad \mathbf{a} \quad \mathbf{b}]) \\ (\mathbf{R}^T\mathbf{v}) \cdot (\mathbf{a} \times \mathbf{b}) (\mathbf{a} \times \mathbf{b}) \cdot (\mathbf{R}^T\mathbf{v}) \end{align*} [(Ra)×(Rb)]⋅vv⋅[(Ra)×(Rb)]det([vRaRb])det(R[RTvab])det(R)det([RTvab])det([RTvab])(RTv)⋅(a×b)(a×b)⋅(RTv)
综上有对于任意向量 v \mathbf{v} v 有 R ( a × b ) ⋅ v ( R a × R b ) ⋅ v ⇒ R ( a × b ) ( R a ) × ( R b ) \mathbf{R}(\mathbf{a} \times \mathbf{b}) \cdot \mathbf{v} (\mathbf{R} \mathbf{a} \times \mathbf{R} \mathbf{b}) \cdot \mathbf{v} \Rightarrow \mathbf{R}(\mathbf{a} \times \mathbf{b}) (\mathbf{R} \mathbf{a}) \times (\mathbf{R} \mathbf{b}) R(a×b)⋅v(Ra×Rb)⋅v⇒R(a×b)(Ra)×(Rb)证毕。
2. 本质矩阵 由上图可知本质矩阵 E \mathbf{E} E 在极线的计算中起着重要的作用。本质矩阵的计算方式如下 E [ T ] × R R [ R T T ] × (4) \mathbf{E} [\mathbf{T}]_{\times} \mathbf{R} \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} \tag{4} E[T]×RR[RTT]×(4)其中 R \mathbf{R} R 和 T \mathbf{T} T 表示从图像 I 1 I_1 I1 到图像 I 2 I_2 I2 的旋转矩阵和平移向量。
现在我们来证明 [ T ] × R R [ R T T ] × [\mathbf{T}]_{\times} \mathbf{R} \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} [T]×RR[RTT]×。证明如下 对于任意向量 v \mathbf{v} v 有 [ T ] × R v T × ( R v ) [\mathbf{T}]_{\times} \mathbf{R} \mathbf{v} \mathbf{T} \times (\mathbf{R} \mathbf{v}) [T]×RvT×(Rv) R [ R T T ] × v R ( R T T × v ) \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} \mathbf{v} \mathbf{R} (\mathbf{R}^T\mathbf{T} \times \mathbf{v}) R[RTT]×vR(RTT×v)
令 T ′ R T T \mathbf{T}^{\prime} \mathbf{R}^T\mathbf{T} T′RTT则 T R T ′ \mathbf{T} \mathbf{R} \mathbf{T}^{\prime} TRT′根据引理一有 T × ( R v ) ( R T ′ ) × ( R v ) R ( T ′ × v ) R ( R T T × v ) R [ R T T ] × v \mathbf{T} \times (\mathbf{R} \mathbf{v}) (\mathbf{R} \mathbf{T}^{\prime}) \times (\mathbf{R} \mathbf{v}) \mathbf{R}(\mathbf{T}^{\prime} \times \mathbf{v}) \mathbf{R}(\mathbf{R}^T\mathbf{T} \times \mathbf{v}) \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} \mathbf{v} T×(Rv)(RT′)×(Rv)R(T′×v)R(RTT×v)R[RTT]×v所以对于任意向量 v \mathbf{v} v 有 [ T ] × R v R [ R T T ] × v ⇒ [ T ] × R R [ R T T ] × [\mathbf{T}]_{\times} \mathbf{R} \mathbf{v} \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} \mathbf{v} \Rightarrow [\mathbf{T}]_{\times} \mathbf{R} \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} [T]×RvR[RTT]×v⇒[T]×RR[RTT]×证毕。
3. 基础矩阵
基础矩阵与本质矩阵的关系如下 F K ′ − T E K − 1 K ′ − T [ T ] × R K − 1 (5) \mathbf{F} \mathbf{K}^{\prime-T} \mathbf{E} \mathbf{K}^{-1} \mathbf{K}^{\prime-T} [\mathbf{T}]_{\times} \mathbf{R} \mathbf{K}^{-1} \tag{5} FK′−TEK−1K′−T[T]×RK−1(5)其中 K \mathbf{K} K 和 K ′ \mathbf{K}^{\prime} K′ 分别为图像 I 1 I_1 I1 和 I 2 I_2 I2 对应的内参矩阵。 l 1 l_1 l1 和 l 2 l_2 l2 极线的方程为 { l 2 F x 1 l 1 F T x 2 (6) \begin{cases} l_2 \mathbf{F} \mathbf{x}_1 \\ l_1 \mathbf{F}^T \mathbf{x}_2 \end{cases} \tag{6} {l2Fx1l1FTx2(6)
4. 应用例子
假设图像 I 1 I_1 I1 和 I 2 I_2 I2 到世界坐标系的变换分别为 R s \mathbf{R}_s Rs、 T s \mathbf{T}_s Ts 和 R t \mathbf{R}_t Rt、 T t \mathbf{T}_t Tt。已知图像 I 1 I_1 I1 存在点 x \mathbf{x} x求对应的极线方程。
代码如下
R R_t R_s.inverse()
T R_s R_t.inverse() T_t - T_s
T T.squeeze()S torch.zeros((3, 3))
S[0, 1] -T[2]
S[1, 0] T[2]
S[0, 2] T[1]
S[2, 0] -T[1]
S[1, 2] -T[0]
S[2, 1] T[0]E R S
F K_t.inverse().transpose(0, 1) E K_s.inverse()epipolar_line F x
a epipolar_line[0]
b epipolar_line[1]
c epipolar_line[2]上述代码修改自https://github.com/USMizuki/NexusGS/blob/main/utils/flow_utils.py。
设点 x \mathbf{x} x 对应的空间点为 X \mathbf{X} X在图像 I 2 I_2 I2 的对应点为 x ′ x^{\prime} x′现在我们来进行理论推导 { x R s X T s x ′ R t X T t \begin{cases} \mathbf{x} \mathbf{R}_s \mathbf{X} \mathbf{T}_s \\ \mathbf{x}^{\prime} \mathbf{R}_t \mathbf{X} \mathbf{T}_t \end{cases} {xRsXTsx′RtXTt将 X R s − 1 ( x − T s ) \mathbf{X} \mathbf{R}_s^{-1} (\mathbf{x} - \mathbf{T}_s) XRs−1(x−Ts) 带入 x ′ R t X T t \mathbf{x}^{\prime} \mathbf{R}_t \mathbf{X} \mathbf{T}_t x′RtXTt 有 x ′ R t R s − 1 ( x − T s ) T t R t R s − 1 x − R t R s − 1 T s T t \mathbf{x}^{\prime} \mathbf{R}_t \mathbf{R}_s^{-1} (\mathbf{x} - \mathbf{T}_s) \mathbf{T}_t \mathbf{R}_t \mathbf{R}_s^{-1} \mathbf{x} - \mathbf{R}_t \mathbf{R}_s^{-1} \mathbf{T}_s \mathbf{T}_t x′RtRs−1(x−Ts)TtRtRs−1x−RtRs−1TsTt所以从图像 I 1 I_1 I1 到 I 2 I_2 I2 的旋转矩阵 R \mathbf{R} R 和平移向量 T \mathbf{T} T 的计算公式如下 { R R t R s − 1 T − R t R s − 1 T s T t (7) \begin{cases} \mathbf{R} \mathbf{R}_t \mathbf{R}_s^{-1} \\ \mathbf{T} - \mathbf{R}_t \mathbf{R}_s^{-1} \mathbf{T}_s \mathbf{T}_t \end{cases} \tag{7} {RRtRs−1T−RtRs−1TsTt(7) T \mathbf{T} T 的计算公式与代码不符不妨设代码中对应 T ′ \mathbf{T}^{\prime} T′则有 T ′ R s R t − 1 T t − T s \mathbf{T}^{\prime} \mathbf{R}_s \mathbf{R}_t^{-1} \mathbf{T}_t - \mathbf{T}_s T′RsRt−1Tt−Ts不难发现 T \mathbf{T} T 和 T ′ \mathbf{T}^{\prime} T′ 存在如下关系 R t R s − 1 T ′ R t R s − 1 ( R s R t − 1 T t − T s ) T t − R t R s − 1 T s T \mathbf{R}_t \mathbf{R}_s^{-1} \mathbf{T}^{\prime} \mathbf{R}_t \mathbf{R}_s^{-1} (\mathbf{R}_s \mathbf{R}_t^{-1} \mathbf{T}_t - \mathbf{T}_s) \mathbf{T}_t - \mathbf{R}_t \mathbf{R}_s^{-1} \mathbf{T}_s \mathbf{T} RtRs−1T′RtRs−1(RsRt−1Tt−Ts)Tt−RtRs−1TsT即有 R T ′ T ⇒ T ′ R − 1 T R T T \mathbf{R} \mathbf{T}^{\prime} \mathbf{T} \Rightarrow \mathbf{T}^{\prime} \mathbf{R}^{-1} \mathbf{T} \mathbf{R}^T \mathbf{T} RT′T⇒T′R−1TRTT 则本质矩阵的计算方式为 E [ T ] × R R [ R T T ] × R [ T ′ ] × \mathbf{E} [\mathbf{T}]_{\times} \mathbf{R} \mathbf{R} [\mathbf{R}^T \mathbf{T}]_{\times} \mathbf{R} [\mathbf{T}^{\prime}]_{\times} E[T]×RR[RTT]×R[T′]×可以看出代码中的 E \mathbf{E} E 采取的计算方式是 R [ T ′ ] × \mathbf{R} [\mathbf{T}^{\prime}]_{\times} R[T′]×。