4.5 图像缩放

图像缩放是指图像按照指定的比率放大或者缩小,如图4.8所示。

▲图4.8 缩放变换效果图

4.5.1 图像缩放的变换公式

假设图像x轴方向的缩放比率Sx,y轴方向的缩放比率Sy,相应的变换表达式为

其逆运算如下。

直接根据缩放公式计算得到的目标图像中,某些映射源坐标可能不是整数,从而找不到对应的像素位置。例如,当Sx=Sy=2时,图像放大2倍,放大图像中的像素(0, 1)对应于原图中的像素(0, 0.5),这不是整数坐标位置,自然也就无法提取其灰度值。因此我们必须进行某种近似处理,一种简单的策略是直接将它最邻近的整数坐标位置(0,0)或者(0,1)处的像素灰度值赋给它,这就是所谓的最近邻插值。当然还可以通过4.7节将介绍的其他插值算法来近似。

4.5.2 图像缩放的Matlab实现

缩放变换仍然可借助前面几节中使用的imtransform函数来实现。此外,Matlab还提供了专门的图像缩放函数imresize,具体调用形式为

B=imresize(A, Scale, method);

● 参数A为要进行缩放的原始图像。

● Scale为统一的缩放比例。

● 可选参数method用于为imresize指定插值方法,其合法取值同imtransform函数,但默认为最近邻插值。

输出B为缩放后的图像。

例4.4给出了图像等比例缩放的Matlab实现。

[例4.4]图像等比例缩放

% 图像缩放

A = imread('pout.tif');

B = imresize(A,1.2,'nearest');

%图像扩大1.2倍

figure,imshow(A);title('原图像');

figure,imshow(B);title('图像缩放');

程序运行结果如图4.9所示。

▲图4.9 缩放变换效果图

如果希望在x和y方向上以不同比例进行缩放,可使用如下方式调用imresize函数。

B = imresize(A,[mrows ncols],method);

向量参数[mrows ncols]指明了变换后目标图像B的具体行数(高)和列数(宽),其余均与等比例缩放时的调用相同,这里不再赘述。