【CG】仿射变换(Affine Transformation)

定义

  • 简单来说,“仿射变换”= “线性变换”+“平移”
  • 线性变换
    • 变换前是直线的,变换后依然是直线
    • 变换前是平行线的,变换后依然是平行线
    • 变换前是原点的,变换后依然是原点
  • 仿射变换
    • 变换前是直线的,变换后依然是直线
    • 变换前是平行线的,变换后依然是平行线
  • 所以,线性变换一定是仿射变换,仿射变换不一定是线性变换

图示

【CG】仿射变换(Affine Transformation)

【CG】仿射变换(Affine Transformation)

如上图线性变换就是通过 翻转旋转缩放错切 这四种原子变换复合而成的变换;仿射变换就是通过 平移翻转旋转缩放错切 这五种原子变换复合而成的变换。

齐次坐标表达

以二维图像的仿射变换为例,

在二维平面上

  • 线性变换 y=Ax
  • 仿射变换 y=Ax+b

引入齐次坐标表示

  • 仿射变换

    [y1]=[Ab0,..,01][x1]

    展开来看,就是
    [xy1]=[a11a12t1a21a22t2001][x0y01]

  • 从代数角度看,仿射变换矩阵具有 6 个*度,一组对应点(x0,y0)⇐⇒(x,y)可以提供两个等式,因此基于不共线的三组对应点,可以唯一确定仿射变换。

  • 从几何角度看,齐次坐标把二维上的仿射变换升维成了三维上的线性变换。可以去 Wikipedia上看这个的动图
    【CG】仿射变换(Affine Transformation)

Ref