1. 几何变换
图像的几何变换是指将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。
以下是常用的几种几何变换:
旋转:将图像旋转指定角度。
缩放:按缩放因子调整图像大小,使其变大或变小。
平移:将图像从当前位置移动到新位置。
错切:沿特定轴倾斜图像。
仿射变换:一个更广泛的类别,包括单个变换中的缩放、旋转、错切和平移。
透视变换:此变换模拟 3D 空间中的透视效果,允许进行更复杂的操作,例如校正由摄像机角度引起的扭曲。
几何变换通常使用数学函数和变换矩阵来实现。这些矩阵定义了原始图像中的每个像素如何映射到转换图像中的新位置。
2. 仿射变换
2.1 仿射变换
图像处理中的仿射变换是指对图像进行一次线性变换和平移,将其映射到另一个图像空间的过程。仿射变换可以保持图像的“平直性”,即直线经过仿射变换后依然为直线,平行线经过仿射变换后依然为平行线。
通常,使用 2x3 大小数组 M 来进行仿射变换。数组由两个矩阵 A、B 组成,其中矩阵 A(大小为2x2)用于矩阵乘法,矩阵 B(大小为2x1)用于向量加法。
原像素点坐标(x,y),经过仿射变换后的点的坐标是(u,v),则矩阵仿射变换基本算法原理:
其数学表达式如下:
其中:
和 代表缩放系数,控制图像在水平和垂直方向上的缩放。
和 代表错切系数,控制图像的水平和垂直错切。
和 代表平移系数,控制图像在水平和垂直方向上的平移。
由于缩放和旋转是通过矩阵乘法来实现,平移是通过矩阵加法来实现的,将这几个操作都用一个矩阵实现所以构造出上面的 2x3 矩阵 M。
仿射变换是从二维坐标到二维坐标之间的线性变换,且为了保持二维图像的“平直性”和“平行性”。我们需要引入齐次坐标的概念,最终得到的齐次坐标矩阵表示形式为:
2.2 齐次坐标
在数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统,如同用于欧氏几何里的笛卡儿坐标一般。齐次坐标可让包括无穷远点的点坐标以有限坐标表示。使用齐次坐标的公式通常会比用笛卡儿坐标表示更为简单,且更为对称。
引入齐次坐标的目的是为了更好的表示无限远(infinity)的坐标的概念,在欧式空间中,无限大或者无限小的坐标的并不存在,不能用数值表示。数学家 August Ferdinand Möbius(1) 提出了齐次坐标系,采用 N+1 个量来表示 N 维坐标。
例如,在二维齐次坐标系中,我们引入一个量 w,将一个二维点 (x,y) 表示为 (X,Y,w) 的形式,其转换关系为
其中,w 可以为任意值。
在笛卡尔坐标系中以(1,2)为例,在齐次坐标系中可以用(1,2,1)表示,也可以用(2,4,2)表示,还可以用 (4,8,4),(8,16,8)...表示,即 (k,2k,k),k∈ R 这些点都映射到欧式空间中的一点,即这些点具有 尺度不变性(Scale Invariant),是“齐性的”(同族的),所以称之为齐次坐标。
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——出自《计算机图形学(OpenGL版)》的作者 F.S. Hill Jr.
通过齐次坐标还可以证明两条平行线可以相交