在其原生形式中,图形文件格式的图像不存储为MATLAB®矩阵,或甚至必须作为矩阵。大多数图形文件以包含格式特定的信息标记的标题开头,并继续使用可以读取为连续流的位图数据。因此,您无法使用标准MATLAB I / O命令负载
和保存
读写图形文件格式图像。
调用特殊的MATLAB函数从图形文件格式读写图像数据:
读取图形文件格式映像使用Imread.
.
要写入图形文件格式的图像,请使用imwrite
.
若要获取有关图形文件格式图像的性质的信息,请使用imfinfo
.
这个表提供了一个清晰的图片,哪个MATLAB命令应该使用哪个图像类型。
的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位的,而且大多数图形文件格式的图像不需要双精度数据。将图像数据保存为的规则有一个例外uint8
PNG和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
函数使您能够获得关于前面列出的任何标准格式的图形文件的信息。你获得的信息取决于文件的类型,但它总是至少包括以下内容: