博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.4 读取和写入图像文件...
阅读量:6332 次
发布时间:2019-06-22

本文共 2311 字,大约阅读时间需要 7 分钟。

本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现》一书中的第1章,第1.4节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 读取和写入图像文件

数字图像处理与机器视觉——Visual C++与Matlab实现

Matlab可以处理以下的图像文件类型:BMP、HDF、JPEG、PCX、TIFF、XWD、ICO、GIF、CUR。可以使用imread和imwrite函数对图像文件进行读写操作,使用imfinfo函数来获得数字图像的相关信息。

1.imread函数

imread函数可以将指定位置的图像文件读入工作区。对于除索引图像以外的情况,其原型为:

A = imread(FILENAME, FMT);

参数说明:

FILENAME指定图像文件的完整路径和文件名。如果要读入的文件在当前工作目录中或者自动搜索列表中给出的路径下,则只需提供文件名。

FMT参数指定图像文件的格式所对应的标准扩展名,例如GIF等。如果imread没有找到FILENAME所指定的文件,它会尝试FILENAME.FMT。
返回值:

A是一个包含图像数据的矩阵。对于灰度图,它是一个m行n列的矩阵;对于RGB真彩图,则是一个m×n×3的矩阵。对于大多数图像文件,A的类型为uint8;而对于某些TIFF和PNG图像,A的类型为uint16。

对于索引图像,情况有所不同,此时IMREAD的调用形式为:

[X, MAP] = imread(FILENAME, FMT);

此时的返回值中,X为图像数据矩阵,MAP则是颜色索引表。图像中的颜色索引数据会被归一化到0到1的范围内。因为,对于索引图像,不论图像文件本身使用何种数据类型,imread函数都会使用双精度类型存储图像数据。

imread函数还可以处理RGBA等格式存储的图像,可以通过在命令窗口中输入help imread来查看Matlab中有关imread的在线帮助信息。

2.IMWRITE函数

imwrite函数用于将指定的图像数据写入文件中,通过指定不同的保存文件扩展名,起到图像格式转换的作用(参见例2.4)。其调用格式为:

imwrite(A, FILENAME, FMT);

参数说明:

FILENAME参数指定文件名(不必包含扩展名)。

FMT参数指定保存文件所采用的格式。
存储索引图像时,还需要一并存储颜色索引表,则此时IMWRITE函数的使用方法应为:

imwrite(A, MAP, FILENAME, FMT);

MAP是合法的Matlab颜色索引表。

imwrite函数还可以控制图像文件的很多属性,如TIFF文件格式所选择的彩色空间、GIF格式中的透明色以及图像文件的作者、版权信息、解析度和创建软件等。

【例1.4】 读入一幅tif图像文件,并在写入磁盘时将tif图像转换为bmp图像。

>>I=imread('pout.tif'); %读入图像>>whos I %查看图像变量信息 Name   Size          Bytes Class I    291x240          69840 uint8 arrayGrand total is 69840 elements using 69840 bytes%通过whos命令可以看到读入的高为291、宽为240的灰度图像I就是一个291*240的二维矩阵>>imwrite(I, 'pout.bmp'); %将图像写入文件pout.bmp,同时起到了转换文件类型的作用

3.imfinfo函数

imfinfo函数可以读取图像文件中的某些属性信息(参见例12.5),比如修改日期、大小、格式、高度、宽度、色深、颜色空间、存储方式等。其调用格式为:

imfinfo(FILENAME, FMT);

参数说明:

FILENAME参数指定文件名。

FMT参数是可选参数,用于指定文件格式。
【例1.5】 查看图像文件信息。

>>imfinfo('wolf.jpg') %查看图像文件信息ans =       Filename: 'wolf.jpg'     FileModDate: '16-十一月-2007 23:41:31'      FileSize: 64213       Format: 'jpg'    FormatVersion: ''        Width: 1024       Height: 768      BitDepth: 24      ColorType: 'truecolor'   FormatSignature: ''   NumberOfSamples: 3    CodingMethod: 'Huffman'    CodingProcess: 'Progressive'       Comment: {}     Orientation: 1     XResolution: 72     YResolution: 72   ResolutionUnit: 'Inch'      Software: 'Adobe Photoshop 7.0 '      DateTime: '2005:08:01 11:42:18 '  YCbCrPositioning: 'Centered'    DigitalCamera: [1x1 struct]

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

你可能感兴趣的文章
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>
awesome go library 库,推荐使用的golang库
查看>>
树形展示形式的论坛
查看>>
jdbcTemplate 调用存储过程。 入参 array 返回 cursor
查看>>
C++中的stack类、QT中的QStack类
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>
关于 Nginx 配置 WebSocket 400 问题
查看>>
Glide和Govendor安装和使用
查看>>
Java全角、半角字符的关系以及转换
查看>>
Dubbo和Zookeeper
查看>>
前端项目课程3 jquery1.8.3到1.11.1有了哪些新改变
查看>>
UOJ#179. 线性规划(线性规划)
查看>>
整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
Isolation Forest原理总结
查看>>
windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
redis 安装
查看>>