基本图像导入、处理和导出
此示例说明如何将图像读入工作区、调整图像的对比度,然后将调整后的图像写入文件。
步骤 1:读取并显示图像
使用 imread
函数将图像读入工作区。该示例读取工具箱附带的一个示例图像(名为 pout.tif
的文件中一个小女孩的图像),并将其存储在名为 I
的数组中。imread
函数根据文件推断图形文件格式为标记图像文件格式 (TIFF)。
I = imread("pout.tif");
使用 imshow
函数显示该图像。您还可以在 图像查看器 中查看图像,该 App 提供显示图像和执行一些常见图像处理任务的集成环境。图像查看器提供 imshow
的所有图像显示功能,还支持访问其他几个图像导航和浏览工具,如滚动条、像素区域工具、图像信息工具和对比度调节工具。
imshow(I)
步骤 2:检查图像在工作区中的显示方式
使用 whos
函数,检查 imread
函数如何在工作区中存储图像数据。您也可以在工作区浏览器中检查变量。imread
函数返回变量 I
中的图像数据,这是由 uint8
数据组成的 291×240 元素数组。
whos I
Name Size Bytes Class Attributes I 291x240 69840 uint8
步骤 3:提高图像对比度
查看图像像素强度的分布。图像 pout.tif
是一个对比度较低的图像。要查看图像中的强度分布,请通过调用 imhist
函数创建直方图。请注意直方图表明图像的强度范围相当窄。该范围未能涵盖 [0, 255] 之间尽可能多的范围,而且图像缺少能产生良好对比度的高值和低值。
imhist(I)
使用 imhist
函数提高图像的对比度,然后显示结果。直方图均衡使强度值扩展分布到了图像的完整范围内。工具箱包含用于执行对比度调整的其他几个函数,包括 imadjust
和 adapthisteq
,以及图像查看器中提供的交互式工具,如调整对比度工具。
I2 = histeq(I); imshow(I2)
再次调用 imhist
函数,创建经过均衡处理的图像 I2
的直方图。如果比较这两个直方图,会看到 I2
的直方图比 I
的直方图在整个强度范围内散布得更广。
figure imhist(I2)
步骤 4:将调整后的图像写入文件
使用 imwrite
函数将刚刚经过调整的图像 I2
写入一个文件。此示例在文件名中包含扩展名 ".png"
,因此 imwrite
函数将图像写入可移植网络图形 (PNG) 格式的文件中。您可以指定其他文件格式。
imwrite(I2,"pout2.png");
步骤 5:检查新写入文件的内容
通过使用 imfinfo
函数查看文件中图像的相关信息,例如图像的格式、大小、宽度和高度。
imfinfo("pout2.png")
ans = struct with fields:
Filename: '/tmp/Bdoc24a_2528353_1683069/tp7f72316a/images-ex89505080/pout2.png'
FileModDate: '13-Feb-2024 00:46:39'
FileSize: 36938
Format: 'png'
FormatVersion: []
Width: 240
Height: 291
BitDepth: 8
ColorType: 'grayscale'
FormatSignature: [137 80 78 71 13 10 26 10]
Colormap: []
Histogram: []
InterlaceType: 'none'
Transparency: 'none'
SimpleTransparencyData: []
BackgroundColor: []
RenderingIntent: []
Chromaticities: []
Gamma: []
XResolution: []
YResolution: []
ResolutionUnit: []
XOffset: []
YOffset: []
OffsetUnit: []
SignificantBits: []
ImageModTime: '13 Feb 2024 05:46:39 +0000'
Title: []
Author: []
Description: []
Copyright: []
CreationTime: []
Software: []
Disclaimer: []
Warning: []
Source: []
Comment: []
OtherText: []
另请参阅
imread
| imshow
| imwrite
| imfinfo