仿射变换是二维平面中一种重要的变换,在图像图形领域有广泛的应用。许多人对“仿射”没有一个感官的认识,我觉得很有必要先来说一下“仿射”。所谓的“仿射变换”就是一种简单的变换,它的变化包括旋转、平移、伸缩,原来的直线仿射变换后还是直线,原来的平行线经过仿射变换之后还是平行线,这就是仿射。
仿射变换的矩阵是其次坐标形式的变换矩阵
这个矩阵包含的变换有旋转和平移,其实是两个矩阵的混合体,许多文章都对这个做了很详细的描述。仿射变换的数学公式里,是如何做到坐标点位置的平移呢?清楚这个才是弄明白仿射变换的关键。
这里有一个非常重要的图,这张图百度百科中就有。利用此图可以完成仿射变换公式的推导,推导如下:
一个点P在原始坐标系下的坐标是(Xsp,Ysp)。然后要完成旋转操作,旋转操作是基于原点的,如何得到旋转之后的点的坐标,这里用到一个技巧,坐标系中某个点的旋转可以等价地去旋转坐标轴,所以有了上图中以(Xs0,Ys0)为中心的虚线与屏幕水平垂直的坐标系。在这个坐标系中确定P的坐标,和在蓝色坐标系中确定旋转之后P的坐标是等价的。基于这个结论,我们可以通过简单的立体几何知识确定P在新坐标系中的坐标。P在新坐标系中的X坐标和Y坐标分别是
经典的仿射变换的模型呼之欲出了。整理上面两个式子得:
这就是仿射变换模型中旋转部分的原理,还有一步,就是平移。
旋转变换之后,我们确定了P点在新坐标系中的位置,然后在这个位置的基础上加上其在X轴和Y轴的偏移即可
仿射变换的矩阵横空出世。当然上图中对这个变换的处理更巧妙,它还是利用了不移动点移动坐标系的策略,将坐标系向相反方向移动了相应的距离。于是有了上图这个经典仿射变换模型的图示展现。上图中我们可以看到,整个在对P点进行仿射变换的过程中,P点的位置并没有移动,我们是通过不断的坐标系的调整来间接达到P点移动的效果,这充分说明了一件事:运动都是相对的。矩阵理论是运动是相对的这一哲学思想的深刻体现,有兴趣大家可以阅读一下这篇文章:点击打开链接