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。颜色图矩阵可以具有任意行数,但它必须恰好包含 3 列。每行被解释为一种颜色,其中第一个元素指定红色的强度,第二个元素指定绿色的强度,第三个元素指定蓝色的强度。颜色强度可以在 [0, 1] 区间中指定。

示例

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

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

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

imshow(I,RI) 显示图像 I 以及相关联的二维空间参照对象 RI

imshow(X,RX,map) 显示索引图像 X 以及相关联的二维空间参照对象 RX 和颜色图 map

示例

全部折叠

使用 imshow 显示灰度图像、RGB(真彩色)图像、索引图像或二值图像。MATLAB® 包含一个名为 corn.tif 的 TIF 文件,其中包含三个图像:灰度图像、索引图像和真彩色 (RGB) 图像。此示例从灰度图像创建二值图像。

显示灰度图像

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

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

使用 imshow 显示灰度图像。

imshow(corn_gray)

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

显示索引图像

corn.tif 文件中的索引图像读取到 MATLAB 工作区。此图像的索引版本是文件中的第一个图像。

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

使用 imshow 显示索引图像。

imshow(corn_indexed,map)

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

显示 RGB 图像

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

[corn_rgb] = imread('corn.tif',2);

使用 imshow 显示 RGB 图像。

imshow(corn_rgb)

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

显示二值图像

corn.tif 文件中的灰度图像读取到 MATLAB 工作区,然后通过阈值法将其转换为二值图像。此图像的灰度版本是文件中的第三个图像。

[corn_gray] = imread('corn.tif',3);

确定灰度图像中像素的均值。

meanIntensity = mean(corn_gray(:));

使用平均强度值作为阈值来创建二值图像。

corn_binary = corn_gray > meanIntensity;

使用 imshow 显示二值图像。

imshow(corn_binary)

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

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

imshow('peppers.png');

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

将示例索引图像 corn.tif 读取到工作区,然后显示该图像。

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

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

通过使用 colormap 函数并指定目标坐标区作为第一个输入参数,更改该图像的颜色图。使用不带红色分量的原始颜色图。

newmap = map;
newmap(:,1) = 0;
colormap(gca,newmap)

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

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

RGB = imread('peppers.png');

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

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

Figure contains an axes. The axes 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. The axes contains an object of type image.

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

imshow(edgeG,[])

Figure contains an axes. The axes 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. The axes contains an object of type image.

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

imshow(corn_detail,'InitialMagnification',1000)

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

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

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

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

将图像读入工作区。

I = imread('pout.tif');

显示图像。请注意,坐标区范围反映图像的大小。

figure
imshow(I)

创建与图像相关联的空间参照对象。使用参照对象设置世界坐标系中的 x 轴和 y 轴范围。

RI = imref2d(size(I));
RI.XWorldLimits = [0 3];
RI.YWorldLimits = [2 5];

显示图像,指定空间参照对象。请注意 x 轴和 y 轴范围的变化。

figure
imshow(I,RI)

输入参数

全部折叠

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

数据类型: 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

颜色图,指定为 [0 1] 范围内的 singledouble 类型的 c×3 数组,或 uint8 类型的 c×3 数组。每行指定一个 RGB 颜色值。

数据类型: single | double | uint8

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

示例: imshow('peppers.png')

数据类型: char

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

示例: [50 250]

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

与输入图像相关联的二维空间参照对象,指定为 imref2d 对象。

与索引图像相关联的二维空间参照对象,指定为 imref2d 对象。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

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

图窗窗口边框留白,指定为以逗号分隔的对组,由 'Border''tight''loose' 组成。当设置为 'loose' 时,图窗窗口中图像周围留有空白。当设置为 'tight' 时,图窗窗口中图像周围不留空白。

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

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

数据类型: char

颜色图,指定为逗号分隔的对组,其中包含 'Colormap' 和一个由 [0, 1] 范围内的值组成的 c×3 矩阵。imshow 使用此参数设置坐标区的颜色图。使用此参数以假彩色查看灰度图像。如果指定空的颜色图 ([]),则 imshow 忽略该参数。

注意

从 R2016b 开始,imshow 更改包含图像的坐标区的颜色图,而不是更改图窗的颜色图。

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

数据类型: 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' 参数。

示例: imshow(I,'DisplayRange',[0 80]);

数据类型: 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' 且不能更改。

示例: h = imshow(I,'InitialMagnification','fit');

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

缩放图像时使用的插值方法,指定为以逗号分隔的对组,由 'Interpolation' 和下列值之一组成。

说明
'nearest'最近邻点插值(默认值)。位于 (x, y) 的像素值是原始图像中与 (x, y) 最邻近的像素值。
'bilinear'双线性插值。位于 (x, y) 的像素值是原始图像中该位置周围像素的加权平均值。

在初始放大以及放大或缩小显示的图像时会应用插值方法。

图像对象的父坐标区,指定为逗号分隔的对组,其中包含 '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 创建的坐标区上创建一个坐标区。

  • 如果您有 Image Processing Toolbox™,则可以将图像查看器用作集成环境,以显示图像并执行常见的图像处理任务。

  • 如果您有 Image Processing Toolbox,则可以使用 iptsetpref 函数设置工具箱预设项以修改 imshow 的行为。

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

扩展功能

在 R2006a 之前推出