Matlab之图像文件的读取与保存(四)

在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表示第几帧,也可表示是一个向量比如15,表示读取前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'); %然后在当前目录下检查

再补充一些东西:

  • 只适用于JPG
I = imwrite(f,'rose.jpg','quality',q);
%q为0-100之间的整数,q越小,图像退化越严重

如果要得到图像的详细信息,可以用imfinfo

I = imread('lena_color_256.tif');
imfinfo lena_color_256.tif

在这里插入图片描述

  • 只适用于tif的语法
imwrite(g,'filename.tif','compression','parameter',...
'resolution',[colres rowres])

%'parameter'可以是如下主要的值之一:
 ' none'表示无压缩; 
 'packbits' 表示比特包压缩(非二值图像的默认参数);
  'ccitt'表示ccitt压缩(二值图像的默认参数)%1 x 2矩阵[colres rowres]包含两个整数
%分别以每单位中的点数给出图像的列分辨率和行分辨率(默认值为[72 72] )

例如,若一幅图像的大小以英寸来表示,则colres是垂直方向上每英寸的点(像素)数(dpi),而rowres是水平方向上每英寸的点数。使用标量res来指定分辨率与使用[res res]是等价的。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值