前面我们提到了图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系。
那么,对于平移变换呢?平移变换表示的是位置变化的概念。如下图所示,一个图像矩形从中心点[x1,y1]平移到了中心点[x2,y2]
处,整体大小和角度都没有变化。在x方向和y方向上分别平移了tx和ty大小。
显然:

这对于图像中的每一个点都是成立的。写成矩阵的形式就是:


旋转变换:

我们注意到,缩放变换和旋转变换都可以表示成矩阵乘法的形式。实际上,图像的几何变换通常不是单一的,也就是说经常性的缩放、旋转、平移一起变换。例如先放大2倍,然后旋转45度,然后再缩小0.5倍。那么就可以表示成矩阵乘法串接的形式:

这样,不管有多少次变换,都可以用矩阵乘法来实现。但是平移变换呢?从前面看到,平移变换并不是矩阵乘法的形式,而是矩阵加法的形式!
那能不能把缩放变换、旋转变换、平移变换统一成矩阵乘法的形式呢,这样不管进行多少次变换,都可以表示成矩阵连乘的形式,将极大的方便计算和降低运算量。
这种方法就是“升维”,引入“齐次坐标”,将图像从平面2D坐标变成3D坐标。我们看看平移变换的矩阵形式:

将其升维,变成3维,上式就可以表示成:

这是个非常优美的地方,学习过矩阵乘法的同学可以算一下右边的式子,是否最终结果与前面是一样的。


终于统一了。以后所有的变换,不管怎样变换,变换多少次,都可以表示成一连串的矩阵相乘了,这是多么的方便。
这就是引入齐次坐标的作用,把各种变换都统一了起来,即 把缩放,旋转,平移等变换都统一起来,都表示成一连串的矩阵相乘的形式。保证了形式上的线性一致性。
简短的解释:
齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。
引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为x=P∗X的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。
附:为什么要引入齐次坐标,齐次坐标的意义(一)https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/
参考:https://blog.csdn.net/saltriver/article/details/
https://blog.csdn.net/liubing8609/article/details/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202142.html原文链接:https://javaforall.net
