您现在的位置:e-works > 智造书屋 > 书籍列表 > MATLAB数字图像处理实战 > 图像的空间变换

第二章 数字图像变换

第一节 图像的空间变换

    (2)图像比例变换

     图像比例变换

    若比例缩放所产生的图像中的像素在原始图像中没有相对应的像素点时,就需要进行灰度值的插值运算,一般有以下两种插值处理方法。

    1)直接赋值为和它最相近的像素灰度值,这种方法称为最邻近插值法(Nearest Neighbor Interpolation),该方法的主要特点是简单、计算量很小,但可能会产生马赛克现象。

    2)通过其他数学插值算法来计算相应的像素点的灰度值,这类方法处理效果好,但运算量会有所增加。

    有关灰度插值的内容,将在本节的2.1.2小节进行详细介绍。

    在式(2-1)所表示的比例缩放中,若 ,则图像被放大;若 ,则图像被缩小。以 为例,即图像缩小为原始图像的1/2。图像被缩小1/2以后根据目标图像和原始图像像素之间的关系,有如下两种缩小方法。

    第1种方法是取原始图像的偶数行和偶数列组成新的图像,缩放前后图像间像素点的对应关系如下。

    图像比例变换

    以此类推,可以逐点计算缩小后图像各像素点的值,图像缩小之后所承载的信息量为原始图像的 ,即在原始图像上,按行优先的原则,对所处理的行,每隔一个像素取一点,每隔一行进行一次操作。另一种方法是取原始图像的奇数行和奇数列组成新的图像。

    如果图像按任意比例缩小,则以类似的方式按比例选择行和列上的像素点。若x方向与y方向缩放的比例不同,则这种变换将会使缩放以后的图像产生几何畸变。图像x方向与y方向的不同比例缩放的变换公式如下。

     图像比例变换

    图像缩小变换是在已知图像信息中以某种方式选择需要保留的信息。反之,图像的放大变换则需要对图像尺寸经放大后所多出来的像素点填入适当的像素值,这些像素点在原始图像中没有直接对应点,需要以某种方式进行估计。以a=b=2为例,即原始图像按全局比例放大2倍,实际上,这是将原始图像每行中各像素点重复取一遍值,然后每行重复一次。根据理论计算,放大以后图像中的像素点(0,0)对应于原始图像中的像素点(0,0),(0,2)对应于原始图像中的像素点(0,1),但放大后图像的像素点(0,1)对应于原始图像中的像素点(0,0.5),(1,0)对应于原始图像中的(0.5,0),原始图像中不存在这些像素点,那么放大后的图像如何处理这些问题呢?以像素点(0,0.5)为例,这时可以采用以下两种方法和原始图像对应,其余点依此类推。

    1)将原始图像中的像素点(0,0.5)近似为原始图像的像素点(0,0)。

    2)将原始图像中的像素点(0,0.5)近似为原始图像的像素点(0,1)。

    若采用第1种方法,则原始图像和放大图像的像素点对应关系如下。

     图像比例变换

    若采用第2种方法,则原始图像和放大图像的像素点对应关系如下。

     图像比例变换

    一般情况下,按比例将原始图像放大a倍时,如果按照最近邻域法,则需要将一个像素值添到新图像的a×a的方块中。因此,如果放大倍数过大,则按照这种方法填充灰度值会出现马赛克效应。为了避免马赛克效应,提高几何变换后的图像质量,可以采用不同复杂程度的线性插值法填充放大后所多出来的相关像素点的灰度值。

    例程2-2

    例程2-2实现的功能是将图像进行图像缩小或放大的MATLAB源程序,其运行过程如图2-3a所示,原始图像如图2-3b所示,缩小后的图像及其运行结果如图2-3c所示。

     图像比例变换

     图像比例变换

图2-3  缩小或放大的MATLAB源程序

图2-3  缩小或放大的MATLAB源程序

    a) 例程2-2的运行情况  b) 输入的原始图像  c) 缩小后的图像和运行结果

    在MATLAB中,图像的缩放也可以调用imresize函数来实现。imresize函数的调用格式如下。

     图像比例变换

    例程2-3是调用imresize函数进行图像缩放的MATLAB程序,其运行结果如图2-4所示。

 图2-4  例程2-3的运行结果

图2-4  例程2-3的运行结果