在图窗窗口中显示图像
概述
imshow
函数适用于二维图像的基本显示。从 R2024b 开始,您还可以使用 imageshow
函数显示二维图像。虽然这两个函数都能够在图窗窗口中显示图像,但它们有一些关键的区别,使它们适合不同应用。
imshow
具有以下优势:
在坐标区内显示图像,您可以使用 MATLAB® 图形函数对其进行自定义。例如,使用
tiledlayout
一起显示多个图像,或添加标题、坐标区标签和数据提示等注解。在图窗窗口中显示图像,带有默认菜单和工具栏,允许您执行常见操作,如保存或打印图窗中的图像。
imageshow
函数具有以下优势:
专为提高渲染质量、快速性能以及平滑缩放和平移交互而设计,尤其适用于中大型图像和在 MATLAB Online™ 中使用。
可以显示存储为数值数组或分块图像的图像数据,包括太大而无法放入内存的文件备份图像。
与
imshow
相比,放大时显示的图像会填充图窗窗口,使用更大的屏幕部分。
注意
当您在实时编辑器中显示图像时,图窗会嵌入到实时脚本输出中。要在单独的窗口中打开图窗,请点击实时编辑器输出右上角的“在图窗窗口中打开”按钮 。
使用 imshow
显示图像
使用 imshow
函数将一个图像读入工作区并显示它。
moon = imread("moon.tif");
imshow(moon)
您还可以将要显示的图像指定为文件名。但是,请注意,此语法不会将图像数据存储在工作区中。如果要将图像放入工作区,必须使用 getimage
函数,该函数从当前图像目标中检索图像数据。
imshow("moon.tif");
有关使用 imshow
显示工具箱支持的各种图像类型的详细信息,请参阅Display Different Image Types。
指定初始图像放大倍率
默认情况下,imshow
尝试以 100% 的放大倍率显示整个图像(每个图像像素对应一个屏幕像素)。但是,如果图像太大,无法以 100% 的放大倍率显示在屏幕上的图窗窗口中,imshow
会缩放图像以适应屏幕并发出警告消息。
若要覆盖对 imshow
的特定调用的默认初始放大行为,请指定 InitialMagnification
参数。例如,要以 150% 的放大倍率查看图像,请使用以下代码。
pout = imread("pout.tif");
imshow(pout,InitialMagnification=150)
imshow
尝试遵从您指定的放大倍率。但是,如果图像无法以指定的放大倍率显示在屏幕上,imshow
会将图像缩放至合适的大小。您还可以将 "fit"
指定为初始放大倍率值。在这种情况下,imshow
会缩放图像以适应图窗窗口的当前大小。
要更改 imshow
的默认初始放大行为,请设置 ImshowInitialMagnification
工具箱预设项。要设置预设项,请通过调用 iptprefs
打开 Image Processing Toolbox™“预设项”对话框,或在 MATLAB 主页选项卡的环境部分中,点击 预设。
当 imshow
缩放图像时,它使用插值来确定与图像矩阵中的元素未直接对应的屏幕像素值。默认情况下,imshow
使用最近邻点插值,但您可以通过设置 Interpolation
名称-值参量来指定使用双线性插值。
控制图窗的外观
默认情况下,当 imshow
在图窗中显示图像时,图像周围会有灰色边框。您可以更改此默认值,并使用 "Border"
名称-值参量隐藏边框,如以下示例所示。
imshow("moon.tif",Border="tight")
下面的图窗显示同一个图像,一个带边框,一个不带边框。
"Border"
参量仅影响调用 imshow
时显示的图像。如果您希望用 imshow
显示的所有图像都不带灰色边框,请将 Image Processing Toolbox 的 "ImshowBorder"
预设项设置为 "tight"
。您也可以使用预设项设置在图窗中包含可见坐标区。有关预设项的详细信息,请参阅 iptprefs
。
使用 imageshow
显示图像
以下示例将同一图像读入工作区中,然后使用 imageshow
函数在图窗窗口中显示该图像。
moon = imread("moon.tif");
imageshow(moon)
与 imshow
类似,您也可以将要显示的图像指定为文件名。
imageshow("moon.tif");
imageshow
函数在查看器窗口中显示图像。图像缩放级别显示在查看器的右下角。要增大显示图像的大小,请最大化或手动拖动查看器的边缘来扩展窗口。如果使用鼠标滚轮或工具栏上的“缩放”按钮进行放大,图像会扩展以填充查看器窗口。比例尺会更新以显示当前缩放级别。
为了优化低缩放级别和高缩放级别的渲染质量,图像插值方法会自动更改。在较低缩放级别,当图像数据的一个像素跨度小于十个屏幕像素时,图像使用双线性插值显示。当一个图像数据像素宽度为十个以上的屏幕像素时,将使用最近邻点插值显示图像。您可以使用 Interpolation
名称-值参量手动更改插值。