Main Content

调整图像大小

此示例说明如何使用 imresize 函数调整图像的大小。

首先读取并显示图像。

I = imread("circuit.tif");
imshow(I)

指定放大倍率值

使用 imresize 函数调整该图像的大小。在此示例中,请指定放大倍率系数。要放大图像,请指定大于 1 的放大倍率系数。

magnificationFactor = 1.25;
J = imresize(I,magnificationFactor);

以蒙太奇方式显示原始图像和放大的图像。

imshowpair(I,J,method="montage")

指定输出图像的大小

再次调整图像大小,这次指定输出图像的所需大小,而不是放大倍率值。向 imresize 传递一个包含输出图像中行数和列数的向量。如果指定的大小不能产生与输入图像相同的纵横比,输出图像将会失真。如果将向量中的元素之一指定为 NaNimresize 会计算该维度的值以保持图像的纵横比。要执行多分辨率处理所需的大小调整,请使用 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")

另请参阅

相关主题