初学MATLAB之图像文件的读写

        在MATLAB中,用户想要对一幅图像或者图像文件进行操作和处理,最首要的一个步骤就是对需要处理的图像或者文件进行“读取”,然后再进行具体的操作和处理,最后可以将处理后的图像进行保存。

文件信息读取

        在MATLAB中,对图像进行操作和处理时,经常需要知道图像文件的文件名、文件格式、图像大小、图像类型、数据类型等信息,可以直接调用MATLAB函数imfinfo( )来读取图像文件的信息。其调用格式如下:

info=imfinfo(‘filename’, ‘fmt’)或者info=imfinfo(‘filename.fmt’)

        其中,filename指的是图像文件的“文件名”,fmt指的是该文件的“扩展名”,info是一个结构数组。不同格式的文件最终得到的INFO所包含的结构成员不同,但基本都包含前9个结构成员,具体如下所示:

例(以lena为例):

info=imfinfo(‘lena.jpg’)

图像文件的读取

        在MATLAB中,图像文件的读取最主要的是利用函数imread( ),该函数几乎支持MATLAB中所有的图像文件格式。根据所读取图像格式的不同以及图像类型的不同,该函数的调用格式也各不相同。

常见图像格式读取

        MATLAB中常常利用函数imread()来完成图形图像文件的读取,其调用格式主要有以下几种方式:

  • I=imread(lena','jpg) 或者(lena.jpg'):该函数是用于读取字符串lena指定的真彩色图像文件。其中lena是文件名,jpg是文件扩展名或文件格式。如果该文件不在当前路径下,或者在MATLAB路径下,那么需要写出完整的路径。
  • [X,map]=imread('filename', 'fimt)或者(filename.fmt'):该函数是读取字符串filename指定的索引图像文件。其中X用于存储索引图像数据,即对应颜色映射表的“映射序号值”,map用于存储与该索引图像相关的颜色映射表。
  • [..]=imread('filename'):该函数是在执行图像读取操作时,首先需要从图像文件filename的内容推断其图像类型,即imread()参数中没有给出图像文件的类型fmt,而是需要推断得到。而该语句左边“[...]”表示根据待读取的图像数据是真实像素值,还是索引图像的相应颜色映射表的序号值,而分别采用格式1和格式2中的不同形式。
  • [...]=imread(URL,...): 该函数是读取Internet URL的图像文件,URL 要求其必须
    包含协议类型,例如http://。

特殊图像格式读取

        函数imread()的调用格式除了前面介绍的比较常用的4种方式外,还有针对某些特殊
类型的图像读取格式,具体如下:

  • [...]=imread( filename',idx):该函数是只针对包含多幅图像的文件,例如ico、 tif、cur、gif 等格式的文件。该格式实现的功能是读取相应文件中的第几幅图像,或者多幅图像。其中idx是- -个整 数或者整型向量。
  • [...]=imread(...,'frames',dx): 该函数是只适用于读取GIF 格式图像文件。它与上一功能基本上相同,两者的区别是前者的idx的取值可以是all,在这种情况下,该格式将读取图像文件中的所有帧图像,并且按照在文件中的存储顺序返回。
  • [...]=imread(...'1',BG);:该函数是只适用于PNG文件的读取,其功能是将透明的像素与指定的颜色进行合成。其中BG的形式取决于文件是否包含一个索引、强度(灰度)或RGB图像。如果BG为none,将不进行合成。如果输入图像是索引图像,BG将是取值范围为[1,P]内的整数,其中P是颜色映射表的长度;如果输入图像是灰度图像,BG应该是在[0,1]的范围内的整数;如果输入图像是RGB图像,BG应该是一个三元素的向量,每一个元素的取值在[0,1]范围内。
  • [...]=imread('lena',ref):该函数是只用于HDF文件的读取,只读取HDF文件中多幅图像中的一幅,其中ref是一个整数,用来确定要读取图像的参考编号。
  • [...]=imread(..., 'Paraml', valuel, 'Param2', value2, ...):该函数是使用参数/值对控制读取操作。

图像文件的保存

        MATLAB中利用函数imwrite( )来实现图像文件的写入操作,即保存,与函数imread( )的作用相对。其调用格式通常有以下几种:

  • imwrite(I, 'filename', 'fmt'):该函数是把图像数据I保存到由字符串“filename”指定的文件中,存储的文件格式由fmt指定。
  • imwrite(X,map, 'filename', 'fmt'):该函数是用于保存索引色图像,其中X表示索引色图像数据矩阵,map表示与其关联的颜色映射表,filename为保存的文件名,fmt为文件的保存格式。
  • imwrite(…, 'filename'):该函数是将图像保存到文件中时,从filename的扩展名中推断图像的文件格式,该扩展名要求必须是MATLAB所支持的类型。函数imwrite()中在filename之前的参数“”与前面提到的格式是相同的调用方式。
  • imwrite(…, 'Param1',Val1, 'Param2',Val2,…):该函数是用于在保存HDFJPEGPBMPGMPPMPNGRASGIFTIFF等类型文件时指定某些参数值。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值