Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

imshow

显示图像

说明

示例

imshow(I) 在图窗中显示灰度图像 Iimshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。

imshow(I,[low high]) 显示灰度图像 I,以二元素向量 [low high] 形式指定显示范围。有关详细信息,请参阅 DisplayRange 参数。

示例

imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。imshow 使用 [min(I(:)) max(I(:))] 作为显示范围。imshowI 中的最小值显示为黑色,将最大值显示为白色。有关详细信息,请参阅 DisplayRange 参数。

示例

imshow(RGB) 在图窗中显示真彩色图像 RGB

示例

imshow(BW) 在图窗中显示二值图像 BW。对于二值图像,imshow 将值为 0(零)的像素显示为黑色,将值为 1 的像素显示为白色。

示例

imshow(X,map) 显示带有颜色图 map 的索引图像 X

示例

imshow(filename) 显示存储在由 filename 指定的图形文件中的图像。

imshow(___,Name,Value) 使用名称-值对组控制运算的各个方面来显示图像。

himage = imshow(___) 返回 imshow 创建的图像对象。

示例

全部折叠

使用 imshow 显示 RGB(真彩色)、灰度、二值或索引图像。

显示 RGB 图像

将样本 RGB 图像 peppers.png 读入 MATLAB 工作区。

rgbImage = imread("peppers.png");

使用 imshow 显示 RGB 图像。

imshow(rgbImage)

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

显示灰度图像

通过使用 rgb2gray 函数将 RGB 图像转换为灰度图像。

grayImage = rgb2gray(rgbImage);

使用 imshow 显示灰度图像。

imshow(grayImage)

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

显示二值图像

通过使用阈值化将灰度图像转换为二值图像。

meanVal = mean(grayImage,"all");
binaryImage = grayImage >= meanVal;

使用 imshow 显示二值图像。

imshow(binaryImage)

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

显示索引图像

将示例索引图像 corn.tif 读入 MATLAB 工作区。

[corn_indexed,map] = imread('corn.tif');

使用 imshow 显示索引图像。

imshow(corn_indexed,map)

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

显示存储在文件中的图像。

imshow('peppers.png');

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

将样本灰度三维体图像 mri.mat 加载到工作区的变量 D 中。通过使用 squeeze 函数删除三维体的单一维度。

load("mri.mat");
vol = squeeze(D);

从三维体的中间选择一个切片。使用 copper 颜色图显示该切片,并将显示范围缩放至像素值范围。

sliceZ = vol(:,:,13);
imshow(sliceZ,[],Colormap=copper)

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

使用 colormap 函数更改图像的颜色图。

colormap(hot)

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

将真彩色 (RGB) 图像读入工作区中。图像的数据类型是 uint8

RGB = imread('peppers.png');

提取图像的绿色通道。绿色通道是第二个颜色平面。

G = RGB(:,:,2);
imshow(G)

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

创建一个用于检测图像水平边缘的滤波器。

filt = [-1 -1 -1;0 0 0;1 1 1];

使用 filter2 函数对图像的绿色通道进行滤波。结果是数据类型为 double 的图像,最小值为 -422,最大值为 656。滤波后的图像中具有大幅值的像素表示强边缘。

edgeG = filter2(filt,G);

使用 imshow 和默认显示范围显示滤波后的图像。对于数据类型为 double 的图像,默认显示范围为 [0, 1]。图像显示为黑白,因为滤波后的像素值超出范围 [0, 1]。

imshow(edgeG)

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

显示滤波后的图像,并将显示范围缩放到图像中的像素值。图像以完整范围的灰度值显示。

imshow(edgeG,[])

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

corn.tif 文件中的灰度图像读取到工作区中。此图像的灰度版本是文件中的第二个图像。

corn_gray = imread('corn.tif',2);

选择图像的一小部分。使用 imshow 以 100% 放大倍率显示细节图像。

corn_detail = corn_gray(1:100,1:100);
imshow(corn_detail)

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

使用 'InitialMagnification' 名称-值对组参数以 1000% 放大倍率显示图像。默认情况下,inshow 执行像素值的最近邻点插值。图像有块伪影。

imshow(corn_detail,'InitialMagnification',1000)

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

以 1000% 放大倍率显示图像,指定双线性插值方法。图像看起来更平滑。

imshow(corn_detail,'InitialMagnification',1000,'Interpolation',"bilinear")

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

输入参数

全部折叠

灰度图像输入,指定为矩阵。灰度图像可以是任何数值数据类型。

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

真彩色图像输入,指定为 m×n×3 数组。

如果您指定数据类型为 singledouble 的真彩色图像,则值应在 [0, 1] 范围内。如果像素值超出此范围,则可以使用 rescale 函数将像素值缩放到范围 [0, 1] 内。当输入图像为真彩色时,'DisplayRange' 参数无效。

数据类型: single | double | uint8 | uint16

二值图像输入,指定为矩阵。

数据类型: logical

索引图像,指定为由正整数组成的二维矩阵。X 中的值是指向 map 指定的颜色图的索引。

数据类型: single | double | uint8 | logical

与索引图像 X 关联的颜色图,指定为 c×3 矩阵。map 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。当 map 的数据类型为 singledouble 时,矩阵的值在 [0, 1] 范围内。

数据类型: single | double | uint8

文件名,指定为字符向量。图像必须可由 imread 函数读取。imshow 函数显示图像,但不将图像数据存储在 MATLAB® 工作区中。如果该文件包含多个图像,则 imshow 显示文件中的第一个图像。

示例: 'peppers.png'

数据类型: char

灰度图像显示范围,指定为二元素向量。有关详细信息,请参阅 'DisplayRange' 名称-值对组参数。

示例: [50 250]

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

名称-值参数

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

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

示例: imshow('board.tif','Border','tight')

图窗窗口边框空间,指定为以逗号分隔的对组,由 'Border''tight''loose' 组成。设为 'loose' 时,图窗窗口包含图窗中的图像周围的空间。设为 'tight' 时,图窗窗口不包含图窗中的图像周围的任何空间。

如果图像非常小或者该图窗除了包含图像及其坐标区之外还包含其他对象,无论如何设置该参数,imshow 都可以使用边框。

数据类型: char

坐标轴的颜色图,指定为逗号分隔的对组,其中包含 'Colormap' 和一个由 [0, 1] 范围内的值组成的 c×3 矩阵。矩阵的每行都是一个包含三个元素的 RGB 三元组,指定颜色图的单种颜色的红、绿和蓝分量。使用此参数可以查看假彩色灰度图像。如果指定空的颜色图 ([]),则 imshow 函数会忽略此参数。

示例: cmap = copper; imshow('board.tif','Colormap',cmap)

数据类型: double

显示灰度图像的范围,指定为 [low high] 形式的二元素向量。imshow 函数将值 low(以及任何小于 low 的值)显示为黑色,并将值 high(以及任何大于 high 的值)显示为白色。使用默认数量的灰度级别时,介于 lowhigh 之间的值显示为灰色的中间色调。

如果您指定空矩阵 ([]),则 imshow 使用 [min(I(:)) max(I(:))] 的显示范围。换句话说,I 中的最小值是黑色,最大值是白色。

如果未指定显示范围,则 imshow 根据图像数据类型选择默认显示范围。

  • 如果 I 是整数类型,则 DisplayRange 默认为该整数类的最小和最大可表示值。例如,uint16 数组的默认显示范围是 [0, 65535]。

  • 如果 Isingledouble 数据类型,则默认显示范围是 [0, 1]。

注意

除了图像由文件名指定时外,其他情况下包含参数名称都是可选的。imshow(I,[low high]) 语法等于 imshow(I,'DisplayRange',[low high])。如果调用带文件名的 imshow,则必须指定 'DisplayRange' 参数。

示例: 'DisplayRange',[10 250]

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

图像显示的初始放大倍率,指定为逗号分隔的对组,其中包含 'InitialMagnification' 和一个数值标量或 'fit'。如果设为 100,则 imshow 在 100% 放大倍率下显示图像(每个图像像素对应一个屏幕像素)。如果设为 'fit',则 imshow 缩放整个图像以适合窗口。

首先,imshow 会尝试以指定的放大倍率显示整个图像。如果放大倍率值很大以至于图像太大而无法在屏幕上显示,则 imshow 在适合屏幕大小的最大放大倍率下显示该图像。

如果图像显示在图窗中时其 'WindowStyle' 属性设为 'docked',则 imshow 在适合图窗大小的最大放大倍率下显示该图像。

注意:如果指定坐标区的位置,则 imshow 忽略您可能已指定的任何初始放大倍率并默认设置为 'fit' 行为。

使用 imshow 并配有 'Reduce' 参数时,初始放大倍率必须为 'fit'

MATLAB Online™ 中,'InitialMagnification' 设置为 'fit' 且不能更改。

示例: 'InitialMagnification',80

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

插值方法,指定为 'nearest''bilinear'。MATLAB 通过插值在屏幕上显示图像的缩放版本。您选择的值不会影响图像数据。根据图像内容和要实现的效果选择插值方法:

  • 'nearest' - 最近邻点插值。位于 (x, y) 的像素值是原始图像中与 (x, y) 最邻近的像素值。当有少量表示明显不同类别的像素值时,或当您要在高度放大的视图中查看各个像素时,此方法最合适。

  • 'bilinear' - 双线性插值。位于 (x, y) 的像素值是原始图像中该位置周围像素的加权平均值。为了最大限度地减少显示伪影,当您缩小图像时,imshow 函数会执行抗锯齿功能。此方法在几乎所有其他情况下都最合适。

图像对象的父级坐标区,指定为逗号分隔的对组,其中包含 'Parent' 和一个 Axes 对象或 UIAxes 对象。使用 'Parent' 名称-值参数构建一个 UI,用于控制 FigureAxes 属性。

二次抽样的指示符,指定为逗号分隔的对组,包含 'Reduce'truefalse10。该参数仅在与 TIFF 文件名一起使用时才有效。使用 Reduce 参数显示非常大的图像的概览图。

数据类型: logical

非默认坐标系的 X 坐标轴范围,指定为逗号分隔的对组,其中包含 'XData' 和一个二元素向量。该参数通过指定图像 XData 创建非默认的空间坐标系。该值可以拥有两个以上的元素,但 imshow 仅使用第一个和最后一个元素。

示例: 'XData',[100 200]

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

非默认坐标系的 Y 坐标轴范围,指定为逗号分隔的对组,其中包含 'YData' 和一个二元素向量。该值可以拥有两个以上的元素,但 imshow 仅使用第一个和最后一个元素。

示例: 'YData',[100 200]

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

输出参数

全部折叠

imshow 函数创建的图像,指定为图像对象。

提示

  • 要在创建图像后更改颜色图,请使用 colormap 命令。

  • 可以将 imshowtiledlayoutnexttile 函数结合使用,在同一个图窗中显示多个具有不同颜色图的图像。

  • 您可以在调用 imshow 后使用 hold on 命令在 imshow 创建的坐标区之上创建一个坐标区。

  • 使用 -nojvm 选项启动 MATLAB 时,不支持 imshow 函数。

扩展功能

版本历史记录

在 R2006a 之前推出