其他分享
首页 > 其他分享> > 图像的几何变换

图像的几何变换

作者:互联网

(1)缩放变换(Scale)

可以用矩阵乘法的形式表示:

不规则缩放的表示:

(2)镜像变换(Reflection)

(3)切割变换(Shear)

变换的只是横坐标,垂直方向没有变。固定一边,拉动另一边。

推导过程可以拿其中具体的某些点,比如左上方那个点的前后变化。

(3)旋转变换(Rotate)

推导过程可以拿右下角的点和左上角的点的前后变化,列方程求解。下面是拿右下角的点推导出矩阵第一列的值。

旋转 -θ 角度如下。可以看到,旋转 -θ 角和旋转 θ 角的转置是相等的。从定义上来看,旋转 -θ 角其实就是旋转 θ 角的矩阵得到的逆。

于是在旋转中,旋转矩阵的逆就等于旋转矩阵的转置。那么我们如果想知道往相反方向旋转角度的矩阵,就只需要得到正向旋转的矩阵,然后转置。

(在这里插一句,在数学上,如果一个矩阵的逆等于它的转置,那么我们称这个矩阵为正交矩阵)

(4)平移变化(Linear Transforms)

以上的变换都是线性变换,即都可用下面的 2 * 2 的变换矩阵来表示:

但是现在来看平移变换:

用矩阵的方式来表示平移变换如下。平移不能够直接写成一个矩阵乘以一个向量的形式,可见平移变换不是线性变换。

也就是说我们现在没办法用 2 * 2 的变换矩阵来表示平移变换了,但我们又不想单独为平移变换开一个特例。

于是引入齐次坐标的概念,即将一个原本是 n 维的向量用一个 n+1 维向量来表示。

需要注意的是,当我们引入了齐次坐标的概念后,就有如下对以前概念的新的解释:

比如二维的点加上一个维度,是 1;二维的向量加上一个维度,是 0。

我们从新的概念上看,向量相加仍然是向量,坐标点相减得到向量,坐标点与向量相加得到坐标点,这都符合我们原先对于向量的概念。而在这里,点与点相加,意味着第三个维度不再是 1,我们假设为 w,则三个维度都除以 w,得到新的坐标点,这个坐标点其实是两个坐标点的中点。

我们将需要进行平移变换的变换称为仿射变换(Affine Transformations)

并且引入齐次坐标后的变换如下:

那么此时缩放、旋转、平移的 3 * 3 变换矩阵如下:

可以看到第三行的数据都是 0 0 1,因此存储变换矩阵时其实只需要存储前面两行的数据。

(5)逆变换

逆变换是变换矩阵的逆矩阵。所以通过对变换矩阵求逆就能实现从变换后的图形变换回原图像。

(6)组合变换

上图的变换不是简单通过一个变换就能实现的,我们有两种思路,先平移再旋转,或先旋转再平移。

先平移后旋转的思路是行不通的,平移后再围绕原点坐标怎么也转不到预期的位置。

所以采用先旋转后平移。

考虑到变换矩阵都是 3 * 3 的,根据结合律,无论前面进行了多少次变换,最终得到的都是一个 3 * 3 的矩阵。

如何将一个远离原点的图形在给定点上进行旋转变换呢?

先平移向量 c 到原点位置,再进行旋转操作,最后再平移向量 c 回去。矩阵形式在上面。

(7)类推到三维

(8)三维空间中的变换

缩放和平移没有问题,但在三维空间中最复杂的操作可能就是旋转了。

任意的旋转较复杂,我们先看最简单的绕固定的 x、y、z 轴的旋转

绕 x 轴的旋转,x 是不变的,反映在矩阵中就是左上角 3 * 3 的矩阵中第一行是 1 0 0,第一列是 1 0 0。而那个 2 * 2 的矩阵就是对 y、z 平面进行的 α 角度的旋转。

同样道理,绕 z 轴旋转也是类似的。但是绕 y 轴的旋转就有点不一样。

是 z 叉乘 x 得到 y,而不是 x 叉乘 z,右手坐标系,因此是反的。

能够用简单的旋转组合成复杂的旋转,分别绕三个轴旋转 α角、β角、γ角,这三个角又被称为欧拉角。可以形象的看作飞机滚转(Roll);飞机俯仰(Pitch);飞机偏航(Yaw)。

 

图形学里也有人用以上公式将绕任意轴的旋转分解成绕 x、y、z 轴的旋转的组合。

绕轴 n 旋转 α 角度,但 n 只是一个向量,因此如果说绕某个轴旋转,则是默认过原点的,即轴的起点在原点上。

那如果我真的要让它沿着任意轴旋转怎么办?用之前的办法,先平移到原点,再旋转,然后平移回来。

I 是单位矩阵,矩阵 N 的理解如下:

这里的 * 并不是乘的意思,而是矩阵 A*。矩阵 N 实际上就是向量 ( x, y, z ) 的 dual matrix,可取代其做叉乘。

 

标签:平移,变换,矩阵,旋转,几何变换,坐标,图像,向量
来源: https://www.cnblogs.com/hanselhuang/p/15748092.html