对于学习数字图像处理的新手来说,一般图像处理相关的书籍都没有具体说明数字图像本来是用二维坐标 (x,y) 表示的,为什么进行图像变换时就要用齐次坐标 (x,y,1) 表示了呢?
答案很简单,就是为了简便运算,统一操作。对于计算机来说,降低复杂度提高效率是非常重要的。此处也是如此。
【注】以下为解释过程,若想直接看答案,可下滑查看最后一段。
图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置之间的映射关系。
那么,对于平移变换呢?平移变换表示的是位置变化的概念。如下图所示,一个图像矩形从中心点[x1,y1]平移到了中心点[x2,y2]处,整体大小和角度都没有变化。在x方向和y方向上分别平移了tx和ty大小。
显然,
这对于图像中的每一个点都是成立的。写成矩阵的形式如下:
我们再把前面的缩放变换和旋转变换的矩阵形式写出来:
缩放变换:
旋转变换:
我们注意到,缩放变换和旋转变换都可以表示成矩阵乘法的形式。实际上,图像的几何变换通常不是单一的,也就是说经常性的缩放、旋转、平移一起变换。例如先放大2倍,然后旋转45度,然后再缩小0.5倍。那么就可以表示成矩阵乘法串接的形式:
这样,不管有多少次变换,都可以用矩阵乘法来实现。但是平移变换呢?从前面看到,平移变换并不是矩阵乘法的形式,而是矩阵加法的形式。
那能不能把缩放变换、旋转变换、平移变换统一成矩阵乘法的形式呢,这样不管进行多少次变换,都可以表示成矩阵连乘的形式,将极大的方便计算和降低运算量。
解决办法就是“升维”,引入“齐次坐标”,将图像从平面2D坐标变成3D坐标。将坐标升维,变成3维,平移变换矩阵就可以表示成如下:
利用矩阵乘法知识可以计算出右边式子的结果与前面矩阵相加结果是一样的。
这样一来,平移变换通过升维后的齐次坐标,也变成了矩阵乘法的形式。当然缩放变换和旋转变换的矩阵形式也得改一改,统一变成3维的形式。
缩放变换:
旋转变换:
这样图像几何变换的矩阵形式就统一了。以后所有的变换,不管怎样变换,变换多少次,都可以表示成一连串的矩阵相乘了。这就是用齐次坐标表示图像矩阵的原因,使各种变换形式统一,简化操作,极大的方便计算和降低运算量。