主要内容

读、写和查询图像文件

处理图像格式

在本土形式,图形图像文件格式不是存储为MATLAB®矩阵,甚至不一定是一个矩阵。大多数图形文件首先包含特定于格式的信息的标题标签,并继续与位图数据,可以理解为一个连续流。出于这个原因,你不能使用标准的MATLAB I / O命令负载保存读写图形图像文件格式。

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

  • 阅读一个图形文件格式图像使用imread

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

  • 获取信息的本质图形图像文件格式,使用imfinfo

这个表给一个清晰的MATLAB命令应该使用图像类型。

过程

函数使用

作为一个MAT-file加载或保存一个矩阵。

负载

保存

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

imread

imwrite

显示任何映像加载到MATLAB工作区。

图像

显示亮度图像

公用事业公司

imfinfo

ind2rgb

阅读图形图像

imread函数读取图像从任何受支持的图形图像文件在任何支持的深度。金宝app大多数的图像,你读的是8位。当这些读取到内存中,它们被存储为类uint8。主要的例外是MATLAB支持16位数据为PNG和TIFF图像;金宝app如果你读一个16位PNG或TIFF图像,它是存储为类uint16

请注意

对于索引的图像,imread总是将colormap读入一个数组类,尽管图像数组本身可以是类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位数据,您可以通过指定覆盖MA金宝appTLAB的默认行为uint16的数据类型imwrite。下面的例子显示了16位PNG文件使用写作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)),地板(p (4)));% ymin sp (3) = max(装天花板(p(1)),装天花板(p (2)));% xmax sp (4) = max(装天花板(p(3)),装天花板(p (4)));% ymax %指数到原始图像创建新的图像毫米= im (sp (2): sp (4)、sp (1): sp (3):);%显示图像子集以适当的轴比图; image(MM); axis image % Write image to graphics file. imwrite(MM,'street2_cropped.tif')

如果你知道图像角坐标,您可以手动定义sp在前面的例子,而不是使用ginput

您还可以显示一个“橡皮筋盒子”当你与图像子集。看到的代码示例rbbox获取详细信息。为进一步的信息,请参阅文档ginput图像功能。

获取信息的图形文件

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

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

  • 文件格式

  • 文件格式的版本号

  • 文件修改日期

  • 文件大小的字节

  • 图像在像素宽度

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

  • 每像素的比特数

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