变换矩阵在二维图形中的应用

黑字部分转自 :维基百科


最为常用的几何变换都是线性变换,这包括旋转、缩放、切变、反射以及正投影。在二维空间中,线性变换可以用 2×2 的变换矩阵表示。

旋转[编辑]

绕原点逆时针旋转 θ 度角的变换公式是  与 ,用矩阵表示为:

缩放[编辑]

缩放公式为  与 ,用矩阵表示为:

切变[编辑]

切变有两种可能的形式,平行于 x 轴的切变为  与 ,矩阵表示为:

平行于 y 轴的切变为  与 ,矩阵表示为:

反射[编辑]

为了沿经过原点的直线反射向量,假设 (uxuy) 为直线方向的单位向量。变换矩阵为:

不经过原点的直线的反射是仿射变换,而不是线性变换。

正投影[编辑]

为了将向量正投影到一条经过原点的直线,假设 (uxuy) 是直线方向的单位向量,变换矩阵为:

同反射一样,正投影到一条不经过原点的直线的变换是仿射变换,而不是线性变换。

平行投影也是线性变换,也可以用矩阵表示。但是透视投影不是线性变换,必须用齐次坐标表示。

组合变换与逆变换[编辑]

用矩阵表示线性变换的一个主要动力就是可以很容易地进行组合变换以及逆变换。

组合可以通过矩阵乘法来完成。如果 A 与 B 是两个线性变换,那么对向量 x 先进行 A 变换,然后进行 B 变换的过程为:

换句话说,先 A'  B 变换的组合等同于两个矩阵乘积的变换。需要注意的是先 A 后 B 表示为 BA 而不是 AB

能够通过两个矩阵相乘将两个变换组合在一起这样的能力就使得可以通过逆矩阵进行变换的逆变换。A -1 表示 A 的逆变换。

变换矩阵并不都是可逆的,但通常都可以进行直观的解释。在上一节中,几乎所有的变换都是可逆的。只要  与  都不为零,那么缩放变换也是可逆的。另外,正投影永远是不可逆的。

其它类型的变换[编辑]

仿射变换[编辑]

为了表示仿射变换,需要使用齐次坐标,即用三维向量 (xy, 1) 表示二维向量,对于高维来说也是如此。按照这种方法,就可以用矩阵乘法表示变换。 ;  变为

在矩阵中增加一列与一行,除右下角的元素为 1 外其它部分填充为 0,通过这种方法,所有的线性变换都可以转换为仿射变换。例如,上面的旋转矩阵变为

通过这种方法,使用与前面一样的矩阵乘积可以将各种变换无缝地集成到一起。

当使用仿射变换时,齐次坐标向量 w 从来不变,这样可以把它当作为 1。但是,透视投影中并不是这样。

透视投影[编辑]

三维计算机图形学中另外一种重要的变换是透视投影。与平行投影沿着平行线将物体投影到图像平面上不同,透视投影按照从投影中心这一点发出的直线将物体投影到图像平面。这就意味着距离投影中心越远投影越小,距离越近投影越大。

最简单的透视投影将投影中心作为坐标原点,z = 1 作为图像平面,这样投影变换为 ; ,用齐次坐标表示为:

(这个乘法的计算结果是  = 。)

在进行乘法计算之后,通常齐次元素 wc 并不为 1,所以为了映射回真实平面需要进行齐次除法,即每个元素都除以 wc

更加复杂的透视投影可以是与旋转、缩放、平移、切变等组合在一起对图像进行变换。


本人添加的平移矩阵

变换矩阵在二维图形中的应用_第1张图片

由于变换矩阵表达的是坐标之间的转换关系,所以不能直接用到编程中,需要把对应关系转换出来,再写到程序中


你可能感兴趣的:(图像处理,信息处理)