图像文件的读取
1、MATLAB支持的图像格式
在MATLAB中,管理所有支持的图像格式的函数为imformats函数,该函数有两种调用形式,一种无参数,一种有参数。
(1) 无参数形式
上述信息显示MATLAB中支持的所有的图像格式,包括格式的后缀,信息读取函数,图像数据读取函数,文件写入函数,有无ALPHA通道和对格式的简单描述。
(2) 有参数的情况下,调用形式如下:
Y = imformats(x)
其中,x是输入的字符串变量,表示图像格式的拓展名。
在MATLAB中读取文件信息,读取图像数据和写入图像数据的函数都使用统一的函数,imfinfo ,imread, imwrite函数,只是随格式不同,具体实现是再调用imformats函数显示与各格式对应的函数。
除了上述格式之外,MATLAB还使用另外一套函数来支持DICOM文件格式。对应的读取文件信息,读取图像数据,写入图像数据函数分别为dicominfo,dicomread,dicomwrite。
注:DICOM即数字影像和通信标准。DICOM标准中涵盖了医学数字图像的采集、归档、通信、显示及查询等几乎所有信息交换的协议;以开放互联的架构和面向对象的方法定义了一套包含各种类型的医学诊断图像及其相关的分析、报告等信息的对象集;定义了用于信息传递、交换的服务类与命令集,以及消息的标准响应;详述了唯一标识各类信息对象的技术;提供了应用于网络环境(OSI或TCP/IP)的服务支持;结构化地定义了制造厂商的兼容性声明(Conformance Statement)。
DICOM标准的推出与实现,大大简化了医学影像信息交换的实现,推动了远程放射学系统、图像管理与通信系统(PACS)的研究与发展,并且由于DICOM的开放性与互联性,使得与其它医学应用系统(HIS、RIS等)的集成成为可能。
2、文件信息读取
MATLAB提供imfinfo函数来实现所有格式(除DICOM文件)调用形式如下:
Info= imfinfo(filename)
其中,filename为输入的字符串参数,代表希望读取的文件名。
对于DICOM文件,读取文件信息的函数为dicominfo函数,调用格式如下:
Info= dicominfo(filename)
DICOM文件的信息中包含一些医疗信息,是普通图像文件所不具备的。
附图:
JPG格式下图像
图像信息如下:
…… 信息真的很多…….
3、常用格式读取
MATLAB中主要使用imread函数从图像文件中读取信息。主要使用格式如下:
[A,map] = imread(filename,fmt)
其中,finename为输入字符串,表示读取的图像文件名。参数fmt为输入字符串,表示读取的数据格式,可以省略由函数从文件中自动识别。读取的图像函数保存在矩阵A中,颜色查找表信息保存在map中,读取索引图像时,必须使用读来的颜色查找表才能得到正确的图像。
不同格式的图像文件读取的特点:
(1) CUR和ICO格式
这两种文件有两个特征,一是文件通常会含有多帧图像,以适应各种操作系统环境,二是,图像会带有ALPHA通道来指示透明区域,以便更好融入背景。
[a,map] = imread(filename,IDX),其中filename为文件名,IDX为一个整数值,指定了图像的帧号。
(2) GIF格式
GIF格式的特色就是文件中包含多帧图像,显示时可以构成动画。
[a,map] = imread(filename,IDX)
IDX参数必须是一个整数或一个整数向量组。
(3) 其他文件读取
EXCEL文件读取
有时候,一些图像有可能保存在EXCEL表格中,此时可以使用xlsread函数来读取其中的图像数据,函数调用形式如下:
X = xlsread(filename,sheet,range)
其中,filename 为EXCEL文件名,参数sheet为整数或字符串,它指定了EXCEL表格文件中的工作表。参数range为读取的范围,其形式类似于‘D2:H4’,其中D2指定了区域的左上角,H4指定了区域的右下角。函数X返回一个二维矩阵,其数据类型一定是double类型。
例: