主要内容

读取、写入和查询镜像文件

使用图像格式

在其原生形式中,图形文件格式的图像不存储为MATLAB®矩阵,或甚至必须作为矩阵。大多数图形文件以包含格式特定的信息标记的标题开头,并继续使用可以读取为连续流的位图数据。因此,您无法使用标准MATLAB I / O命令负载保存读写图形文件格式图像。

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

  • 读取图形文件格式映像使用Imread.

  • 要写入图形文件格式的图像,请使用imwrite

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

这个表提供了一个清晰的图片,哪个MATLAB命令应该使用哪个图像类型。

过程

函数使用

加载或保存矩阵作为MAT文件。

负载

保存

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

Imread.

imwrite

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

图像

显示亮度图像

公用事业

imfinfo

ind2rgb

读取图形图像

Imread.函数从支持的任意位深的任意图形图像文件中读取图像。金宝app你读到的大多数图片都是8位的。当它们被读入内存时,它们被存储为类uint8.该规则的主要例外是MATLAB支持PNG和TIFF图像的16位数据;金宝app如果读取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位的,而且大多数图形文件格式的图像不需要双精度数据。将图像数据保存为的规则有一个例外uint8PNG和TIFF图像可以保存为吗uint16.由于这两种格式支持16位数据,您可以通过指定金宝appuint16的数据类型imwrite.以下示例显示使用16位PNG文件使用imwrite

IMWRITE(我,'clown.png','bitdepth',16);

对图形图像进行子集设置(裁剪)

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

%从图形文件中读取RGB图像。IM = imread('Street2.jpg');%显示图像具有真正的纵横比图像(IM);轴图像%通过指向和单击两次P = ginput(2)来使用轧制矩形来选择矩形%区域的角点;%获取x和y角落坐标作为整数sp(1)= min(楼层(p(1)),地板(p(2)));%xmin sp(2)= min(地面(p(3)),地板(p(4)));%ymin sp(3)= max(ceil(p(1)),ceil(p(2)));%xmax sp(4)= max(ceil(p(3)),ceil(p(4)));%ymax%索引到原始图像中以创建新图像mm = 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(真彩色)、强度(灰度)或索引