Python计算机视觉 第3章-图像到图像的映射
3.1 单应性变换
单应性变换(Homography)是计算机视觉中非常重要的一种几何变换,它用于将一个平面内的点映射到另一个平面内。具体来说,单应性变换可以描述一个图像在摄像机视角变化、平面移动或旋转时,如何从一个视角变换到另一个视角。
这种变换在多个应用场景中非常有用,比如:
- 图像配准:将不同视角或不同时间拍摄的图像对齐,找到它们之间的对应关系。
- 图像校正:修正由于摄像机角度或透视导致的图像扭曲,使图像看起来更平整。
- 纹理扭曲:将一个平面的纹理准确地映射到另一个平面上。
- 全景图像创建:将多个图像拼接成一个大的全景图像。
单应性变换的频繁使用,尤其是在涉及多个视角或需要精确对齐图像的情况下,能够显著提升算法的鲁棒性和精度。在项目中,理解和正确应用单应性变换是处理图像和三维几何信息的关键技能。
单应性变换(Homography)将二维平面上的点映射到另一个平面上的点,在齐次坐标(homogeneous coordinates)下,这种映射可以通过以下方程来表示:
( x ′ y ′ w ′ ) H ⋅ ( x y w ) \begin{pmatrix} x' \\ y' \\ w' \ \end{pmatrix} \mathbf{H} \cdot \begin{pmatrix} x \\ y \\ w \end{pmatrix} x′y′w′ H⋅ xyw
其中,单应性矩阵 H \mathbf{H} H 为:
H = ( h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ) \mathbf{H} = \begin{pmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{pmatrix} H= h11h21h31h12h22h32h13h23h33
经过单应性变换后的目标点的常规二维坐标 ( x ′ , y ′ ) (x', y') (x′,y′) 为:
x ′ = h 11 x + h 12 y + h 13 h 31 x + h 32 y + h 33 x' = \frac{h_{11}x + h_{12}y + h_{13}}{h_{31}x + h_{32}y + h_{33}} x′=h31x+h32y+h33h11x+h12y+h13
y ′ = h 21 x + h 22 y + h 23 h 31 x + h 32 y + h 33 y' = \frac{h_{21}x + h_{22}y + h_{23}}{h_{31}x + h_{32}y + h_{33}} y′