在MATLAB中,对图像进行操作和处理时,经常需要知道图像文件的文件名、文件格式、图像大小、图像类型、数据类型等信息,可以直接调用MATLAB函数imfinfo( )来读取图像文件的信息。其调用格式如下:
INFO=imfinfo('filename', 'fimt ')或者INFO=imfinfo('filename. fmt')
该函数是读取文件filename fmt的信息。其中,filename指的是图像文件的“ 文件名”,fmt指的是该文件的“扩展名”,INFO是一个结构数组。不同格式的文件最终得到的INFO所包含的结构成员不同,但基本都包含前9个结构成员。
下表 imfinfo( )返回的结构数组基本内容
结构数组成员名 | 所代表含义中文件名称 |
---|---|
Filename | 文件名称 |
FileMoDate | 文件最后修改日期和时间(日-月-年 时:分:秒) |
FileSize | 文件大小(单位是字节) |
Format | 文件格式或扩展名(tif、jipg、 png等) |
FormatVersion | 文件格式版本号 |
Width | 图像文件的宽度,单位为像素 |
Height | 图像文件的高度,单位为像素 |
BitDepth | 图像文件中每一个像素所占位宽(真彩色图像每个像素占24位) |
ColorType | 图像类型( grayscale-灰度图像,truecolor-RGB图像,mdexed索引图像) |
举例:
info = imfinfo('wood.tif');
在MATLAB中, 图像文件的读取最主要的是利用函数imread(),该函数几乎支持MATLAB中所有的图像文件格式。根据所读取图像格式的不同以及图像类型的不同,该函数的调用格式也各不相同。下面将分别从“常见图像格式读取”和“ 特殊图像格式读取”两部分进行介绍:
1.常见图像格式读取
l=imread(' filename',"fmt')或者('filename.fmt')
[X,map]=imread('filename', 'fmt')或者(filename.fmt)
[...]=imread('filename')
[...]=imread(URL..)
举例:
I = imread('foot.jpg');
I = imread('tree.png');
I = imread('E:\pig.jpg');
imshow(I);
2.特殊图像格式读取
[..] = imread('filename',idx)
%用于读取第几幅图像,idx表示第几帧,也可表示是一个向量比如1:5,表示读取前5幅
[..] = imread(...,'frames',idx)
%适用于读取GIF文件格式
[..] = imread(...,'BackgroundColor',BG)
%只适用于PNG文件读取,将透明像素与指定颜色进行合成,BG的形式取决于文件是否包含一个索引或灰度,RGB
[..]=imread('filename',ref)
%只用于HDF文件读取,ref用来确定读取参考编号,但可能图片顺序与参考编号不匹配,故可以用imfinfo来进行图像的处理
[..]=imread(...,'Param1',value1, 'Param2', value2, ...)
举例:
[X1,map1] = imread('one.gif',2);
[X2,map2] = imread('one.gif',15);
subplot(211) imshow(X1,map1);
subplot(212) imshow(X2,map2);
3.图像文件的保存
利用函数imwrite( )米实现图像文件的写入操作,即保存,与函 数imread( )的作用相对。其调用格式通常有以下几种:
imwrite(I, 'filename', fmt')
imwrite(X, map, 'filename', 'fmt')
imwrite(..., 'filename')
imwrite(..., 'Param1', Val1, 'Param2, Val2,...)
举例:
load tree
whos %输出文件部分信息
imwrite(I,map,'tree.png'); %然后在当前目录下检查