1. 概述
在计算机视觉与图像处理中,仿射变换(Affine Transformation) 和 单应性变换(Homography) 是两种用于图像对齐和几何畸变校正的重要技术。
本文将回顾这两种变换的数学定义,并通过图示和示例说明它们之间的关键区别。
2. 仿射变换
仿射变换由线性变换和一个平移组合构成。对一个向量 的仿射变换定义如下:
$$ \mathbf{x}' = \mathbf{A} \mathbf{x} + \mathbf{b} $$
其中:
- $\mathbf{x}'$ 是变换后的向量
- $\mathbf{A}$ 是一个 $n \times n$ 的可逆矩阵
- $\mathbf{b}$ 是一个平移向量
仿射变换具有以下几何特性:
✅ 保持直线不变
✅ 保持平行线不变
✅ 保持线段长度比例不变(例如中点仍是中点)
❌ 不一定保持角度和绝对长度
2D 仿射变换的矩阵形式
在二维空间中,仿射变换可以表示为:
$$ \begin{cases} x' = a_{11}x + a_{12}y + b_1 \ y' = a_{21}x + a_{22}y + b_2 \end{cases} $$
使用齐次坐标(Homogeneous Coordinates)表示为矩阵形式:
$$ \begin{bmatrix} x' \ y' \ 1 \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & b_1 \ a_{21} & a_{22} & b_2 \ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \ y \ 1 \end{bmatrix} $$
该矩阵中各元素的含义如下:
- $a_{11}$: x方向缩放
- $a_{12}$: x方向剪切
- $b_1$: x方向平移
- $a_{21}$: y方向剪切
- $a_{22}$: y方向缩放
- $b_2}$: y方向平移
常见仿射变换示例矩阵
- 平移变换:
$$ T = \begin{bmatrix} 1 & 0 & t_x \ 0 & 1 & t_y \ 0 & 0 & 1 \end{bmatrix} $$
- 缩放变换:
$$ C = \begin{bmatrix} C_x & 0 & 0 \ 0 & C_y & 0 \ 0 & 0 & 1 \end{bmatrix} $$
- 剪切变换:
$$ S = \begin{bmatrix} 1 & s_x & 0 \ s_y & 1 & 0 \ 0 & 0 & 1 \end{bmatrix} $$
示例图像
下图展示了一个棋盘格图像经过仿射变换后的效果:
3. 单应性变换(Homography)
单应性变换,也称为透视变换(Perspective Transform),用于将一个平面上的点映射到另一个平面。
如下图所示,点 $\mathbf{x} = (x, y)$ 在平面 $\pi$ 上,对应点 $\mathbf{x'} = (x', y')$ 在平面 $\pi'$ 上:
单应性变换的齐次坐标表示如下:
$$ \begin{bmatrix} s x' \ s y' \ s \end{bmatrix} = \mathbf{H} \begin{bmatrix} x \ y \ 1 \end{bmatrix} $$
其中:
- $\mathbf{H}$ 是一个 $3 \times 3$ 的矩阵(称为单应性矩阵)
- $s$ 是一个缩放因子
单应性矩阵的一般形式为:
$$ \mathbf{H} = \begin{bmatrix} h_{11} & h_{12} & h_{13} \ h_{21} & h_{22} & h_{23} \ h_{31} & h_{32} & h_{33} \end{bmatrix} $$
通常将矩阵归一化为 $h_{33} = 1$。
变换后的点 $\mathbf{x'}$ 的非齐次坐标为:
$$ x' = \frac{h_{11}x + h_{12}y + h_{13}}{h_{31}x + h_{32}y + h_{33}}, \quad y' = \frac{h_{21}x + h_{22}y + h_{23}}{h_{31}x + h_{32}y + h_{33}} $$
单应性变换的特性
✅ 保持直线不变
❌ 不保证平行线保持平行
✅ 可以校正透视畸变
示例图像
下图展示了一个棋盘格图像经过单应性变换后的效果:
4. 主要区别
特性 | 仿射变换 | 单应性变换 |
---|---|---|
是否保持平行线 | ✅ 是 | ❌ 否 |
是否保持直线 | ✅ 是 | ✅ 是 |
是否支持透视畸变 | ❌ 否 | ✅ 是 |
自由度 | 6 | 8 |
矩阵形式 | $2 \times 3$ 或 $3 \times 3$(最后一行为 [0, 0, 1]) | $3 \times 3$ |
适用场景 | 平移、旋转、缩放、剪切 | 所有仿射变换 + 透视变换 |
5. 应用场景
以下是一些常见的应用场景:
图像对齐与配准
- 使用对应点集计算变换矩阵
- 适用于图像拼接、全景图合成、目标识别等
透视校正
- 单应性变换可用于校正图像中的透视畸变
- 例如:航拍图像、街景地图、增强现实(AR)
目标跟踪
- 通过连续帧之间的变换矩阵预测目标位置
- 支持仿射或透视变换
医学成像
- 对CT、MRI图像进行对齐与配准
- 提高诊断与治疗规划的准确性
遥感图像处理
- 对卫星图像进行对齐与配准
- 使用对应点集计算变换矩阵
机器人视觉
- 对不同传感器(如摄像头、激光雷达)图像进行对齐与配准
- 提高定位与地图构建的精度
6. 总结
仿射变换和单应性变换是图像处理与计算机视觉中非常基础且重要的几何变换方法:
- 仿射变换 保留直线和平行性,适用于平移、旋转、缩放、剪切等操作。
- 单应性变换 更强大,可以处理透视畸变,但不保证平行线保持平行。
- 两者自由度不同,仿射变换为6自由度,单应性为8自由度。
- 根据应用场景选择合适的变换方式,是图像处理中一个常见的“踩坑点”。
理解它们之间的区别,有助于我们在图像处理任务中做出更合理的技术选型。