其天然形式,图形文件格式的图像不被存储为MATLAB®矩阵,甚至是一个矩阵。大多数图形文件都以包含特定于格式的信息标记的头文件开始,然后继续使用可作为连续流读取的位图数据。由于这个原因,您不能使用标准的MATLAB I/O命令加载
和保存
读取和写入图形文件格式的图像。
从调用图形文件格式的特殊功能的MATLAB读取和写入图像数据:
用于读取图形文件格式的图像imread
。
要编写一个图形文件格式的图像,使用imwrite
。
若要获取有关的图形文件格式的图像,使用性质的信息imfinfo
。
此表给出了更清晰的画面,其中MATLAB命令应该与图像类型一起使用。
该imread
函数从在任何所支持的位深度的任何支持的图形图像文件读取图像。万博1manbetx大多数你读的图像是8位。当这些被读入内存中,它们被存储为类UINT8
。主要的例外是用于PNG和TIFF图像的16位数据MATLAB的支持;万博1manbetx如果你读一个16位PNG或TIFF图像,它被存储为类UINT16
。
对于索引图像,imread
总是读颜色映射到类的阵列双
,即使图像阵列本身可以是类的UINT8
或UINT16
。
下面的命令读出的图像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
功能使您能够获得任何的前面列出的标准格式有关的图形文件的信息。你获得的信息取决于文件的类型,但它总是至少包括以下内容: