图像平移、旋转与仿射变换:从数学原理到 OpenCV 实战指南
前言在计算机视觉与数字图像处理领域,几何变换是最基础且至关重要的核心算法之一。无论是进行图像配准、目标对齐、文档矫正,还是增强现实(AR)中的平面姿态估计,都离不开对图像像素空间位置的系统性重排。本文将深入解析图像平移、旋转及仿射变换的数学本质,并结合 OpenCV 提供完整的实战代码。一、 核心概念:什么是仿射变换?图像的几何变换实质上是在不改变像素值的前提下,改变像素的空间位置。在众多几何变换中,仿射变换(Affine Transformation)是最常用的一类。它的核心几何特性是保持图像的“平直性”与“平行性”——即变换前共线的点变换后仍共线,平行线变换后依然平行。从数学建模的角度看,仿射变换是线性变换(旋转、缩放、剪切)与平移的复合。为了在数学上统一表达这些操作,我们引入了齐次坐标(Homogeneous Coordinates)。通过引入第三个维度,原本非线性的平移操作也被纳入了矩阵乘法体系。二、 数学原理与矩阵推导在二维平面中,任意一点(x,y)(x, y)(x,y)经过仿射变换后得到新坐标(x′,y′)(x', y')(x′,y′),其映射关系可以通过一个2×32 \times 32×3的变换矩阵MMM来完整描述:[x′y′]=[a00a01a10a11][xy]+[b00b10] \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a_{00} a_{01} \\ a_{10} a_{11} \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} + \begin{bmatrix} b_{00} \\ b_{10} \end{bmatrix}[x′y′]=[a00a10a