![精通Matlab数字图像处理与识别](https://wfqqreader-1252317822.image.myqcloud.com/cover/584/730584/b_730584.jpg)
4.5 图像缩放
图像缩放是指图像按照指定的比率放大或者缩小,如图4.8所示。
![](https://epubservercos.yuewen.com/28355A/3728991904099001/epubprivate/OEBPS/Images/figure_0083_0114.jpg?sign=1738799359-yWKAwsaM5ckVZahEPYGXmGViYAjehOOb-0-07f1ce98420285ab6a0babb3bc857312)
▲图4.8 缩放变换效果图
4.5.1 图像缩放的变换公式
假设图像x轴方向的缩放比率Sx,y轴方向的缩放比率Sy,相应的变换表达式为
![](https://epubservercos.yuewen.com/28355A/3728991904099001/epubprivate/OEBPS/Images/figure_0083_0115.jpg?sign=1738799359-OsOH9l3XGs5ackGGciviCbD2MECo3CLr-0-f96fb79df0ff842959cc613fdd87f144)
其逆运算如下。
![](https://epubservercos.yuewen.com/28355A/3728991904099001/epubprivate/OEBPS/Images/figure_0083_0116.jpg?sign=1738799359-SBFynFKL25FnDEBcsCLhhZ20eQ6HMLq6-0-33638a52991513df1a6c96110706da84)
直接根据缩放公式计算得到的目标图像中,某些映射源坐标可能不是整数,从而找不到对应的像素位置。例如,当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所示。
![](https://epubservercos.yuewen.com/28355A/3728991904099001/epubprivate/OEBPS/Images/figure_0084_0117.jpg?sign=1738799359-X2vlXILUkPU1dfh1J4fTO2YNYz4crrh1-0-2be1ab3b4dbee9d6b8f7cd9373c59b60)
▲图4.9 缩放变换效果图
如果希望在x和y方向上以不同比例进行缩放,可使用如下方式调用imresize函数。
B = imresize(A,[mrows ncols],method);
向量参数[mrows ncols]指明了变换后目标图像B的具体行数(高)和列数(宽),其余均与等比例缩放时的调用相同,这里不再赘述。