Main Content

imresize

调整图像大小

说明

示例

B = imresize(A,scale) 返回图像 B,它是将 A 的长宽大小缩放图像 scale 倍之后的图像。输入图像 A 可以是灰度图像、RGB 图像、二值图像或分类图像。

如果 A 有两个以上维度,则 imresize 只调整前两个维度的大小。如果 scale 介于 0 和 1 之间,则 B 小于 A。如果 scale 大于 1,则 B 大于 A。默认情况下,imresize 使用双三次插值。

示例

B = imresize(A,[numrows numcols]) 返回图像 B,其行数和列数由二元素向量 [numrows numcols] 指定。

示例

[Y,newmap] = imresize(X,map,___) 调整索引图像 X 的大小,其中 map 是与该图像关联的颜色图。

示例

___ = imresize(___,method) 指定使用的插值方法。

___ = imresize(___,Name,Value) 返回调整大小后的图像,其中名称-值参数控制大小调整操作的各个方面。在所有其他输入参数之后指定名称-值参数。

示例

全部折叠

将图像加载到工作区。

I = imread('ngc6543a.jpg');

将图像的长宽缩小二分之一。

J = imresize(I, 0.5);

显示原始图像和调整大小后的图像。

figure, imshow(I), figure, imshow(J)

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

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

将图像加载到工作区。

I = imread('ngc6543a.jpg');

使用最近邻点插值将图像缩小到原始大小的 40%。这是最快的方法,但质量最差。

J = imresize(I,0.4,'nearest');

显示原始图像和调整大小后的图像。

imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

imshow(J)
title('Resized Image Using Nearest Neighbor Interpolation')

Figure contains an axes object. The axes object with title Resized Image Using Nearest Neighbor Interpolation contains an object of type image.

将 RGB 图像读取到工作区。

RGB = imread('peppers.png');

将 RGB 图像的大小调整为 64 行。imresize 会自动计算列数。

RGB2 = imresize(RGB,[64 NaN]);

获取调整大小后的图像的大小。

sz = size(RGB2)
sz = 1×3

    64    86     3

显示原始图像和调整大小后的图像。

imshow(RGB)
title("Original Image")

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

imshow(RGB2)
title("Resized Image with 64 Rows")

Figure contains an axes object. The axes object with title Resized Image with 64 Rows contains an object of type image.

将索引图像读取到工作区。

[X,map] = imread("corn.tif");

将索引图像的大小增大 50%。

[Y,newmap] = imresize(X,map,1.5);

显示原始图像和调整大小后的图像。

imshow(X,map)
title("Original Indexed Image and Colormap")

Figure contains an axes object. The axes object with title Original Indexed Image and Colormap contains an object of type image.

imshow(Y,newmap)
title("Resized Image and Optimized Colormap")

Figure contains an axes object. The axes object with title Resized Image and Optimized Colormap contains an object of type image.

输入参数

全部折叠

要调整大小的图像,指定为任意维度的数值数组、逻辑数组或分类数组。输入必须为非稀疏的,数值输入必须为实数。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | categorical

大小调整因子,指定为正数。imresize 对行和列维度应用相同的缩放因子。要对每个维度应用不同的大小调整因子,请使用 Scale 名称-值参数。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出图像的行和列维度,指定为由正数组成的二元素向量。您可以为 numrowsnumcols 指定 NaN 值。在这种情况下,imresize 会自动计算该维度的行数或列数,同时保持图像的纵横比。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

要调整大小的索引图像,指定为由正整数组成的实数非稀疏数值数组。

数据类型: double | uint8 | uint16

与索引图像 X 相关联的颜色图,指定为由范围 [0, 1] 内的值组成的 c×3 数值矩阵。每行是一个三元素 RGB 三元组,指定颜色图的单个颜色的红、绿和蓝分量。

数据类型: double

插值方法,指定为字符向量、字符串标量或二元素元胞数组。数值图像和逻辑图像的默认值为 "bicubic"。分类图像的默认值为 "nearest"。分类图像仅支持值 "nearest""box"

method 是字符向量或字符串标量时,它标识下表中列出的特定方法或指定的插值核。

方法描述

"nearest"

最近邻插值;赋给输出像素的值就是其输入点所在像素的值。不考虑其他像素。

"bilinear"

双线性插值;输出像素值是最近 2×2 邻点中的像素的加权平均值

"bicubic"

双三次插值;输出像素值是最近 4×4 邻域中的像素的加权平均值。

注意

双三次插值可能生成在原始范围之外的像素值。

插值核描述
"box"

盒形核

"triangle"三角形核(等效于 "bilinear"
"cubic"三次方核(等效于 "bicubic"
"lanczos2"Lanczos-2 核
"lanczos3"Lanczos-3 核

method 是二元素元胞数组时,用来定义自定义插值核。元胞数组的形式为 {f,w},其中 f 是自定义插值核的函数句柄,w 是自定义核的宽度。f(x) 在区间 -w/2 <= x < w/2 外的值必须为零。函数句柄 f 可通过标量或向量输入进行调用。对于用户指定的插值核,输出图像可以有一些值稍微超出输入图像中的像素值范围。

有关内置和自定义插值核的详细信息,请参阅Create and Compare Resizing Interpolation Kernels

数据类型: char | string | cell

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

示例: B = imresize(A,0.5,Antialiasing=false) 在缩小图像时不执行消除锯齿。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: B = imresize(A,0.5,"Antialiasing",false) 在缩小图像时不执行消除锯齿。

缩小图像时执行消除锯齿,指定为 truefalse

  • 如果插值 method"nearest",则 Antialiasing 的默认值为 false

  • 如果插值 method"box",并且输入图像是分类图像,则 Antialiasing 的默认值为 false

  • 对于其他所有插值方法,默认值为 true

数据类型: logical

返回索引图像的优化或原始颜色图,指定为以下值之一。

描述
"original"输出颜色图 newmap 与输入颜色图 map 相同。
"optimized"imresize 返回新的优化颜色图。

Colormap 参数仅在调整索引图像大小时有效。

数据类型: char | string

执行颜色抖动,指定为 truefalse。执行抖动时,会对图像应用一种噪声,以使量化误差随机化并防止出现大范围色块。

Dither 参数仅在调整索引图像大小时有效。

数据类型: logical

插值方法,指定为字符向量、字符串标量或二元素元胞数组。有关详细信息,请参阅 method

数据类型: char | string | cell

输出图像的大小,指定为由正数组成的二元素向量。有关详细信息,请参阅 [numrows numcols]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

大小调整缩放因子,指定为正数或由正数组成的二元素向量。如果指定标量,则 imresize 对行维度和列维度应用相同的缩放因子。如果指定二元素向量,则 imresize 对每个维度应用不同的缩放值。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参数

全部折叠

调整大小后的图像,返回为与输入图像 A 的数据类型相同的数值、逻辑或分类数组。

调整大小后的索引图像,返回为与输入索引图像 X 的数据类型相同的数值数组。

调整大小后的索引图像 Y 的颜色图,以 m×3 数值矩阵形式返回。默认情况下,imresize 返回经过优化的新颜色图和已调整大小的图像。要返回与原始颜色图相同的颜色图,请使用 "Colormap" 名称-值参数。

提示

  • 如果输出图像的大小不是整数,则 imresize 不会使用指定的比例。imresize 在计算输出图像大小时使用 ceil 函数。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开