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的具体行数(高)和列数(宽),其余均与等比例缩放时的调用相同,这里不再赘述。