读、写和查询图像文件
处理图像格式
在本土形式,图形图像文件格式不是存储为MATLAB®矩阵,甚至不一定是一个矩阵。大多数图形文件首先包含特定于格式的信息的标题标签,并继续与位图数据,可以理解为一个连续流。出于这个原因,你不能使用标准的MATLAB I / O命令负载
和保存
读写图形图像文件格式。
调用特殊的MATLAB函数来读取和写入图像数据从图形文件格式:
阅读一个图形文件格式图像使用
imread
。写一个图形文件格式图像,使用
imwrite
。获取信息的本质图形图像文件格式,使用
imfinfo
。
这个表给一个清晰的MATLAB命令应该使用图像类型。
阅读图形图像
的imread
函数读取图像从任何受支持的图形图像文件在任何支持的深度。金宝app大多数的图像,你读的是8位。当这些读取到内存中,它们被存储为类uint8
。主要的例外是MATLAB支持16位数据为PNG和TIFF图像;金宝app如果你读一个16位PNG或TIFF图像,它是存储为类uint16
。
请注意
对于索引的图像,imread
总是将colormap读入一个数组类双
,尽管图像数组本身可以是类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位数据,您可以通过指定覆盖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
功能使您能够获得的信息在任何标准的图形文件格式列出。你获得的信息取决于类型的文件,但它总是包括至少以下: