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)

将图像加载到工作区。

I = imread('ngc6543a.jpg');

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

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

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

imshow(I)
title('Original Image')

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

将 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")

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

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

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

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

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

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

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

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

输入参数

全部折叠

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

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

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

如果您指定的大小调整因子不会产生整数长度的图像维度,则 imresize 会在调整大小操作后调用 ceil 函数。换句话说,输出图像有 ceil(scale*size(A,1)) 行和 ceil(scale*size(A,2)) 列。

数据类型: 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 对每个维度应用不同的缩放值。

如果您指定的大小调整缩放因子不会产生整数长度的图像维度,则 imresize 会在调整大小操作后调用 ceil 函数。换句话说,输出图像有 ceil(Scale(1)*size(A,1)) 行和 ceil(Scale(2)*size(A,2)) 列。

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

输出参量

全部折叠

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

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

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

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开