调整图像大小
此示例说明如何使用 imresize
函数调整图像的大小。
首先读取并显示图像。
I = imread("circuit.tif");
imshow(I)
指定放大倍率值
使用 imresize
函数调整该图像的大小。在此示例中,请指定放大倍率系数。要放大图像,请指定大于 1 的放大倍率系数。
magnificationFactor = 1.25; J = imresize(I,magnificationFactor);
以蒙太奇方式显示原始图像和放大的图像。
imshowpair(I,J,method="montage")
指定输出图像的大小
再次调整图像大小,这次指定输出图像的所需大小,而不是放大倍率值。向 imresize
传递一个包含输出图像中行数和列数的向量。如果指定的大小不能产生与输入图像相同的纵横比,输出图像将会失真。如果将向量中的元素之一指定为 NaN
,imresize
会计算该维度的值以保持图像的纵横比。要执行多分辨率处理所需的大小调整,请使用 impyramid
。
K = imresize(I,[100 150]);
imshowpair(I,K,method="montage")
指定插值方法
再次调整图像大小,这次指定插值方法。放大图像时,输出图像包含的像素比原始图像多。imresize
使用插值来确定这些像素的值,计算像素位置附近的一些像素的加权平均值。imresize
根据每个像素离该点的距离来确定权重。默认情况下,imresize
使用双三次插值,但您可以指定其他插值方法或插值核。您也可以指定自己的自定义插值核。此示例使用最近邻点插值。
L = imresize(I,magnificationFactor,"nearest");
以蒙太奇方式显示使用双三次插值调整大小的图像 J
,以及使用最近邻点插值调整大小的图像 L
。
imshowpair(J,L,method="montage")
缩小图像时防止锯齿
再次调整图像大小,这次缩小图像。缩小图像时,会丢失一些原始像素,因为输出图像中的像素要少一些。这可能会引入伪影,例如锯齿。由于大小减小而导致的锯齿在输出图像中通常显示为阶梯图案(尤其是在高对比度图像中)或波纹(波纹效应)图案。默认情况下,对于除最近邻点法以外的所有插值方法,imresize
都会使用抗锯齿功能来限制输出图像的锯齿影响。要关闭抗锯齿功能,请指定 "Antialiasing"
名称-值参量并将值设置为 false
。即使打开了抗锯齿功能,调整大小也会引入伪影,因为缩小图像大小时始终会丢失信息。
magnificationFactor = 0.66; M = imresize(I,magnificationFactor); N = imresize(I,magnificationFactor,Antialiasing=false);
以蒙太奇方式显示具有和不具有抗锯齿功能的调整后的图像。
imshowpair(M,N,method="montage")