图像几何变换的基本步骤?

我们使用几何变换来修改图像像素的空间排布。其主要包含两种基础操作:

  • 坐标空间变换:这对应着变换前后像素坐标的映射关系,即对坐标的调整。二维仿射变换关键的性质是保留点、直线和平面。
  • 赋予新像素值:对新位置进行赋值,需要借助于像素插值的方法来完成。

    仿射变换包括哪些?

    主要包括缩放(scale)、旋转(rotate)、平移(translate)和剪切(也称为错切或者错位,sheer)。
    image.png

    仿射变换的统一形式?

    考虑二维运算,其运算过程可以表示为:
    1. x_new=a_00 * a_old + t01 * y_old + b_0
    2. y_new=a_10 * a_old + t11 * y_old + b_1
    使用齐次坐标的形式来进一步简化表示形式。

    齐次坐标(homogeneous coordinate)在计算机图形学中是非常有用的基本概念,通过增加一个额外的维度W后,可以用来对几何体进行缩放,旋转,平移,透视投影的矩阵变换. 什么是齐次坐标? - 马海东的文章 - 知乎 https://zhuanlan.zhihu.com/p/258437902

因此仿射变换可以可以写成3x3方阵的形式:
image.png
前面提到四种变换都可以通过这一方式进行表示。其中除了平移变换只涉及到与偏置项的加法运算外,其余均只涉及到变换矩阵A的元素。因此仿射变换也可以简单理解为线性变换与平移的组合(https://www.zhihu.com/question/20666664/answer/157400568)。

仿射变换统一形式的优势

使用这种统一形式来表示的一个显著优势在于这提供了把一系列变换连接在一起的框架。实际处理中,可以通过将所有的变换按照执行顺序依次级联相乘后,再直接作用在原图上。

图像几何变换的不同构建方式(正向映射和反向映射)的具体方式

变换的映射过程实际上有两种构建方式:

  • 正向映射(forward mapping)(x’, y’) = A(x, y):直接对每个输入图像上的像素位置(x,y)使用坐标关系(例如仿射变换中的变换矩阵A)计算出输出图像上相应像素的空间位置(x’,y’)。
  • 反向映射(inverse mapping)(x, y) = A-1(x’, y’):输出图像上像素位置(x’,y’)使用反向的坐标关系(仿射变换中,可以理解为变换矩阵A的逆)计算输入图像中的对应位置(x,y)。然后在最近的输入像素之间进行内插,计算的结果就是输出像素值。

虽然一般而言,对于仿射变换这样的特殊变换,其是一对一的映射关系。
但是实际中,由于图像的离散特性,在对输出结果的插值赋值的过程中,可能会有多个像素坐标映射到输出图像的同一位置,这就会产生如何将多个输出值合并为单个像素值的问题,另外也可能出现输出图像的某些位置完全没有相应的输入图像像素与它匹配,也就是没有被映射到。因此通常用反向映射来实现图像变换,从而将可能的“多对一”转变为“一对多”,进而避免了这一问题。就实现而言,反向映射更有效,因此也被众多软件所采用。