Have a Question?
单应变换 | Homography
1 定义
单应 (Homography) 是射影几何中的概念,又称为射影变换。它把一个射影平面上的点 (三维齐次矢量) 映射到另一个射影平面上,并且把直线映射为直线,具有保线性质。总的来说,单应是关于三维齐次矢量的一种线性变换,可以用一个 3 \times 3 的非奇异矩阵 H 表示。
设两幅图像上有一对平面上的齐次坐标 \boldsymbol{p}_{1}=\begin{bmatrix} u_1 \\ v_1 \\ 1 \end{bmatrix} 和 \boldsymbol{p}_{2}=\begin{bmatrix} u_2 \\ v_2 \\ 1 \end{bmatrix}。二者之间满足如下关系:
\boldsymbol{p}_{2} = \begin{bmatrix} u_2 \\ v_2 \\ 1 \end{bmatrix} = H \begin{bmatrix} u_1 \\ v_1 \\ 1 \end{bmatrix} = \begin{bmatrix} h_{00} & h_{01} & h_{02} \\ h_{10} & h_{11} & h_{12} \\ h_{20} & h_{21} & h_{22} \\ \end{bmatrix} \begin{bmatrix} u_1 \\ v_1 \\ 1 \end{bmatrix}=H \boldsymbol{p}_{1}\tag{1}其中 H = \begin{bmatrix} h_{00} & h_{01} & h_{02} \\ h_{10} & h_{11} & h_{12} \\ h_{20} & h_{21} & h_{22} \\ \end{bmatrix} 就是单应性矩阵。
2 推导
考虑在图像 I_1 和 I_2,以及空间中的特征点 \boldsymbol{X}=\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} 在两幅图像对应的归一化图像平面上的点分别为 \boldsymbol{x}_{1}=\begin{bmatrix} x_1 \\ y_1 \\ 1 \end{bmatrix} 和 \boldsymbol{x}_{2}=\begin{bmatrix} x_2 \\ y_2 \\ 1 \end{bmatrix}。这些特征点 \boldsymbol{X} 都落在某平面上。设这个平面满足方程:
\boldsymbol{n}^{T} \boldsymbol{X}+d=0\tag{2}
整理得:
-\frac{\boldsymbol{n}^{T} \boldsymbol{X}}{d}=1\tag{3}
再由相机模型投影公式:
s_{1} \boldsymbol{x}_{1}=\boldsymbol{K} \boldsymbol{X}, \quad s_{2} \boldsymbol{x}_{2}=\boldsymbol{K}(\boldsymbol{R} \boldsymbol{X}+\boldsymbol{t})\tag{4}
可得:
\begin{aligned}s_{2}\boldsymbol{x}_{2} &=\boldsymbol{K}(\boldsymbol{R} \boldsymbol{X}+\boldsymbol{t}) \\&=\boldsymbol{K}\left(\boldsymbol{R} \boldsymbol{X}+\boldsymbol{t} \cdot\left(-\frac{\boldsymbol{n}^{T} \boldsymbol{X}}{d}\right)\right) \\&=\boldsymbol{K}\left(\boldsymbol{R}-\frac{\boldsymbol{t} \boldsymbol{n}^{T}}{d}\right) \boldsymbol{X} \\&=\boldsymbol{K}\left(\boldsymbol{R}-\frac{\boldsymbol{t} \boldsymbol{n}^{T}}{d}\right) s_{1}\boldsymbol{K}^{-1} \boldsymbol{x}_{1}\end{aligned}\tag{5}
则可得单应矩阵为:
s\boldsymbol{x}_{2}=\boldsymbol{H} \boldsymbol{x}_{1}=\boldsymbol{K}\left(\boldsymbol{R}-\frac{\boldsymbol{t n}^{T}}{d}\right) \boldsymbol{K}^{-1} \boldsymbol{x}_{1}\tag{6}
其中 s=\frac{s_2}{s_1}。
从归一化图像平面坐标 \boldsymbol{x}_{2} 到 \boldsymbol{H}\boldsymbol{x}_{1} 存在一个尺度因子,因此可以认为近似相等:
\boldsymbol{x}_{2} \simeq\boldsymbol{H} \boldsymbol{x}_{1}\tag{7}
所以我们推导出单应矩阵的表达式:
\boldsymbol{H} = \boldsymbol{K}\left(\boldsymbol{R}-\frac{\boldsymbol{t n}^{T}}{d}\right) \boldsymbol{K}^{-1}\tag{8}
参考文献
[1] https://zh.wikipedia.org/wiki/%E5%8D%95%E5%BA%94%E6%80%A7
[2] https://www.cnblogs.com/wangguchangqing/p/8287585.html
[3] https://scm_mos.gitlab.io/vision/homography-matrix/
[4] 《视觉 SLAM 十四讲》
[5] https://blog.csdn.net/heyijia0327/article/details/53782094
[6] https://www.cnblogs.com/wangguchangqing/p/8287585.html
[7] https://blog.csdn.net/heyijia0327/article/details/53782094