仿射变换
一种结合平移、旋转、缩放和剪切的线性几何变换,在保持平行线的同时改变图像几何形状,是图像处理的基础操作。
仿射变换 (Affine Transformation) 是一种通过矩阵乘法和向量加法实现的线性几何变换。它将输入坐标 (x, y) 映射到输出坐标 (x', y'),保持直线的直线性和平行线的平行性,但不保持角度和长度。
仿射变换可以用 2×3 矩阵表示,包含 6 个参数,能够统一描述平移、旋转、缩放、剪切及其任意组合。在图像处理中,这意味着只需一次矩阵运算即可同时完成多种几何操作。
- 平移:图像沿 x 轴和 y 轴方向移动指定像素数
- 旋转:围绕指定中心点旋转任意角度
- 缩放: x 轴和 y 轴可独立缩放,实现等比或非等比变换
- 剪切:沿一个轴方向按比例偏移,产生倾斜效果
在深度学习的数据增强中,随机仿射变换被广泛用于扩充训练数据集。通过对训练图像施加随机旋转、缩放和剪切,模型能够学习对几何变形的不变性,从而提升泛化能力。OpenCV 的 warpAffine 函数是最常用的实现接口。
数据增强 (Data Augmentation) 是仿射变换最常见的用途之一。在齐次坐标系中矩阵按 3×3 处理,最下一行固定为 [0, 0, 1];旋转对应 a=cosθ, b=-sinθ, c=sinθ, d=cosθ,缩放对应 a=sx, d=sy (其余为 0)。OpenCV 中用 cv2.getAffineTransform() 从 3 组对应点求出矩阵,再用 cv2.warpAffine() 施加变换。