Main Content

使用 imresize 函数调整图像大小

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

指定放大倍率值

将图像读入工作区。

I = imread('circuit.tif');

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

J = imresize(I,1.25);

在放大版本的图像旁边显示原始图像。

figure
imshowpair(I,J,'montage')
axis off

Figure contains an axes. The axes contains an object of type image.

指定输出图像的大小

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

K = imresize(I,[100 150]);
figure, imshow(K)

Figure contains an axes. The axes contains an object of type image.

指定插值方法

再次调整图像大小,这次指定插值方法。放大图像时,输出图像包含的像素比原始图像多。imresize 使用插值来确定这些像素的值,计算像素位置附近的一些像素的加权平均值。imresize 根据每个像素离该点的距离来确定权重。默认情况下,imresize 使用双三次插值,但您可以指定其他插值方法或插值核。有关完整列表,请参阅 imresize 参考页。您也可以指定自己的自定义插值核。此示例使用双线性插值。

L = imresize(I,1.5,'bilinear');
figure, imshow(L)

Figure contains an axes. The axes contains an object of type image.

缩小图像时防止锯齿

再次调整图像大小,这次缩小图像。缩小图像时,会丢失一些原始像素,因为输出图像中的像素要少一些。这可能会引入伪影,例如锯齿。由于大小减小而导致的锯齿在输出图像中通常显示为阶梯图案(尤其是在高对比度图像中)或波纹(波纹效应)图案。默认情况下,对于除最近邻点法以外的所有插值方法,imresize 都会使用抗锯齿功能来限制输出图像的锯齿影响。要关闭抗锯齿功能,请指定 'Antialiasing' 参数并将值设置为 false。即使打开了抗锯齿功能,调整大小也会引入伪影,因为缩小图像大小时始终会丢失信息。

M = imresize(I,.75,'Antialiasing',false);
figure, imshow(M)

Figure contains an axes. The axes contains an object of type image.