文档

读,写和查询图像文件

与图像格式工作

其天然形式,图形文件格式的图像不被存储为MATLAB®矩阵,甚至是一个矩阵。大多数图形文件都以包含特定于格式的信息标记的头文件开始,然后继续使用可作为连续流读取的位图数据。由于这个原因,您不能使用标准的MATLAB I/O命令加载保存读取和写入图形文件格式的图像。

从调用图形文件格式的特殊功能的MATLAB读取和写入图像数据:

  • 用于读取图形文件格式的图像imread

  • 要编写一个图形文件格式的图像,使用imwrite

  • 若要获取有关的图形文件格式的图像,使用性质的信息imfinfo

此表给出了更清晰的画面,其中MATLAB命令应该与图像类型一起使用。

程序

功能要使用

将矩阵加载或保存为matu文件。

加载

保存

加载或保存的图形文件格式的图像,例如,BMP,TIFF。

imread

imwrite

显示加载到MATLAB工作区中的任何图像。

图片

于imagesc

公用事业公司

imfinfo

ind2rgb

阅读图形图像

imread函数从在任何所支持的位深度的任何支持的图形图像文件读取图像。万博1manbetx大多数你读的图像是8位。当这些被读入内存中,它们被存储为类UINT8。主要的例外是用于PNG和TIFF图像的16位数据MATLAB的支持;万博1manbetx如果你读一个16位PNG或TIFF图像,它被存储为类UINT16

注意

对于索引图像,imread总是读颜色映射到类的阵列,即使图像阵列本身可以是类的UINT8UINT16

下面的命令读出的图像ngc6543a.jpg到工作空间可变RGB然后显示使用图像图片功能:

RGB = imread( 'ngc6543a.jpg');图像(RGB)

你可以写(保存)使用的图像数据imwrite功能。该声明

负载的小丑%附带MATLAB的图像imwrite(X,地图, 'clown.bmp')

创建包含小丑图象BMP文件。

编写图形图像

当您使用保存图像imwrite,默认行为是位深度自动降低到UINT8。许多MATLAB中使用的图像都是8位,和大多数图形文件格式的图片不需要双精度数据。一个例外用于保存图像数据UINT8是,PNG和TIFF图像可以保存为UINT16。因为这两种格式都支持16位数据,您可以通过指定覆盖M万博1manbetxATLAB默认行为UINT16作为数据类型imwrite。下面的示例演示如何使用imwrite

imwrite(‘clown.png’,我‘BitDepth’,16);

子集图形图像(裁剪)

有时,您希望只处理图像文件的一部分,或者希望将其分解为子部分。指定您想要使用的矩形分段的内在坐标,并将其从命令行保存到文件中。如果你不知道该款的角点坐标,选择它们交互,如以下示例所示:

%从图形文件读取RGB图像。我= imread(“street2.jpg”);%显示真实宽高比图像(im);轴图像%用途ginput通过指向并点击鼠标两次P = ginput(2)选择一个矩形区域%的角点;%获得x和y角坐标为整数SP(1)= MIN(底部(P(1)),地板(P(2)));%XMIN SP(2)= MIN(底部(P(3)),地板(第(4)));%YMIN SP(3)= MAX(小区(P(1)),小区(P(2)));%XMAX SP(4)= MAX(小区(P(3)),小区(第(4)));%YMAX%指数成原始图像以创建新的图像MM = IM(SP(2):SP(4),SP(1):SP(3),:);%显示与相应的轴比图中的子集的图像;图像(MM);轴图像%写图像的图形文件。imwrite(MM 'street2_cropped.tif')

如果您知道图像的角坐标应该是什么样,你可以手动定义SP在前面的例子中,而不是使用ginput

您还可以在与图像进行交互以对其进行子集时显示一个“橡皮筋盒”。参见代码示例rbbox了解详情。欲了解更多信息,请参阅文档ginput图片功能。

获得有关图形文件

imfinfo功能使您能够获得任何的前面列出的标准格式有关的图形文件的信息。你获得的信息取决于文件的类型,但它总是至少包括以下内容:

  • 该文件的名称,包括文件夹路径,如果文件不是在当前文件夹

  • 文件格式

  • 文件格式的版本号

  • 文件的修改日期

  • 文件大小以字节为单位

  • 以像素为单位的图像宽度

  • 以像素为单位的图像高度

  • 每像素的比特数

  • 图像类型:RGB(真彩色),强度(灰度),或索引

这个话题有用吗?