图像的输入输出和格式变换.docx
- 文档编号:23588412
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:31
- 大小:1.58MB
图像的输入输出和格式变换.docx
《图像的输入输出和格式变换.docx》由会员分享,可在线阅读,更多相关《图像的输入输出和格式变换.docx(31页珍藏版)》请在冰豆网上搜索。
图像的输入输出和格式变换
课程设计任务书
学生姓名:
叶伟超专业班级:
通信1005
指导教师:
刘新华工作单位:
信息工程学院
题目:
利用MATLAB仿真软件进行图像的输入、输出和格式变换
起始条件:
Matlab软件
数字信号处理相关知识
要求完成的主要任务:
MATLAB仿真软件进行图像的输入、输出和格式变换。
要求:
读取、保存和显示不同格式的图像
进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的
相互转换
时间安排:
序
号
阶段内容
所需时间
1
方案设计
1天
2
软件设计
2天
3
系统调试
1天
4
答辩
1天
合计
5天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
1绪论1
1.1课题研究的相关背景1
1.2选题的目的和意义1
1.3课题研究的内容2
2Matlab图像文件3
2.1Matlab图像文件简介3
2.2Matlab图像文件类型4
2.3Matlab中图像的存储运算与显示方式7
3图像的读取与写入9
3.1图像的读取9
3.3图像文件的写入11
4图像类型与显示13
4.1索引图像及显示13
4.2灰度图像及其显示16
4.3二值图像及其显示18
4.4RGB图像及其显示19
5图像类型转换21
5.1RGB转换成灰度图像21
5.2灰度图像转换为索引图像22
5.3灰度图像转化为二值图像23
5.4RGB图像转化为索引图像25
6收获、体会和建议26
参考文献:
27
摘要
当今的信息化社会,图像是人类赖以获取信息的最重要的来源之一。
随着计算机技术的迅猛发展,图像技术与计算机技术不断融合,产生了一系列图像处理软件,如VC、MATLAB,这些软件的广泛应用为图像技术的发展提供了强大的支持。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
本次课程设计介就是Matlab环境下的一些最基本的图像处理操作,如读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换。
关键词:
Matlab、图像、索引、灰度、相互转换
Abstract
Today'sinformation-orientedsociety,theimageisoneofthemostimportantsourcesformankind'saccesstoinformation.Withtherapiddevelopmentofcomputertechnology,imagetechnologyandcomputertechnology,continuousintegration,resultinginaseriesofimageprocessingsoftware,suchasVC,MATLAB,thesewidelyusedsoftwareprovidespowerfulsupportforthedevelopmentofimagetechnology.
MATLABcanmatrixoperations,drawingfunctionsanddata,implementationalgorithmtocreatetheuserinterface,connectedtootherprogramminglanguagesprocedures,mainlyusedinengineeringcalculations,controldesign,signalprocessingandcommunications,imageprocessing,signaldetection,financialmodelingdesignanalysisandotherfields.
ThecoursedesignreferralMatlabenvironment,someofthemostbasicimageprocessingoperations,suchasread,saveanddisplayimagesofdifferentformats,andmutualtransformationofimageformats,suchasindeximages,grayscaleimages,RGBimages,andbinaryimageconversion.
Keywords:
Matlab,image,index,grayscale,interconversion
1绪论
1.1课题研究的相关背景
数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
数字图像处理的产生和迅速发展主要受三个因素的影响:
一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。
数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。
数字图像处理作为一门学科大约形成于20世纪60年代初期。
早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。
图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。
首次获得实际成功应用的是美国喷气推进实验室(JPL)。
他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。
随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。
1.2选题的目的和意义
课程设计的目的之一是为了巩固课堂理论学习,并能用所学理论知识正确分析信号处理的基本问题和解释信号处理的基本现象。
课程设计的目的之二是通过设计具体的图像信号变换掌握图像和信号处理的方法和步骤。
通过这次课程设计,对数字信号处理这门课程有了更深的理解,而且学会了利用Matlab进行信号处理,图像处理的应用。
而且学会了读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换。
本文参考了大量的文献,对数字信号处理,图像处理有了更加深刻的理解,通过详细的调查分析,对于了解Matlab处理信号的技术及其发展状况十分有益。
1.3课题研究的内容
本课题通过Matlab进行图像的综合处理,对图像经行读取、保存和显示。
并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换
通过研究并在设计后发现,采用Matlab进行图像处理,首先,Maltab功能强大,第二,能够提供很强大的信号处理能力,是目前比较抢答的信号处理软件。
2Matlab图像文件
2.1Matlab图像文件简介
针对MATLAB的数字图像处理功能,我们讨论它可以处理的几种图像文件格式:
(A)PCX格式。
可处理1、4、8、16、24位等图像数据。
文件内容包括文件头、图像数据、扩展调色板数据。
(B)BMP格式,即位图文件,整幅图可视为一个数字矩阵。
它包括1、4、8、24位非压缩图像,8位RLE(行程编码)图像。
文件内容包含文件头、位图信息数据块和图像数据。
选择BMP格式保存一幅灰度模式图像时,可选择以Windows格式保存。
而且在选中4位或8位位图时,还可选压缩(RLE)项,在用RLE方式压缩保存后图像将毫无损失。
这是用得最广的图像格式之一,在本文中都对这种格式的图像进行操作。
(C)HDF格式。
有8位,24位光栅图像数据集。
(D)JPEG格式。
是一种联合图像专家组的图像压缩格式,是目前所用对静止灰度或彩色图像的压缩标准。
它实际上定义了3种编码系统:
a.基于DCT的有损编码基本系统,可用于绝大多数压缩场合;
b.用于高压缩比、高精度或渐进重建应用的扩展编码系统;
c.用于无失真应用场合的无损系统。
JPEG没有规定文件格式、图像分辨率或所用的彩色空间模型,这使它就有可能适用于MATLAB。
(E)TIFF格式。
处理1、4、8、24位非压缩图像,1、4、8、24位packbit压缩图像,1位CCITT压缩图像等。
文件内容包括:
文件头、参数指针表与参数域、参数数据表和图像数据四部分。
它是一种用途广泛的文件格式,其特点是可移植性好,几乎所有的扫描仪及在Windows、Macintosh平台上常用的版面设计软件都支持TIFF文件格式。
以这种格式保存的图像文件结构比较复杂,在不压缩存放时文件比较大。
(F)XWD格式。
1、8位Zpixmaps,Xybitmaps,1位XYPixmaps。
(G)TGA格式。
处理1、4、8、16、24位非压缩图像和行程编码图像。
文件包由5个固定长度字段和3个可变长度字段组成。
2.2Matlab图像文件类型
MATLAB支持五种图像类型,即二值图像、索引图像、灰度图像、RGB图像和多帧图像阵列。
索引图像:
它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种。
色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,所有元素值都在[0,1]内。
表2-1索引图像的特征
索
引
图
像
双精度类:
Double
(每个元素占8个字节)
图像数组大小:
m×n
图像元素取值:
[1,p]
色度矩阵:
p×3
色度元素值:
[0,1]
整数类:
Unit8
(每个元素占1个字节)
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,255]
整数类(Unit16)
(每个元素占2个字节)
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,65535]
图2-1索引图像对应的色度元素值
灰度图像:
数据矩阵中的元素值一般都在[0,1]或[0,255]之间,灰度图像根据这些数据利用线性插值来和色图中的颜色种类匹配。
灰度图像一般看起来是一副黑白图像,但是色彩明暗度较二值图像更为丰富。
因为每一个像素点的取值在[0,1]或[0,255]之间。
灰度图像读入matlab中是一个二维的平面矩阵,其中行与列的乘积代表其图片中像素点的个数。
表2-2灰度图像的特征
灰
度
图
像
图像数组大小:
m×n
图像元素值:
[0,1]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,255]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,65535]
色度矩阵:
p×3
色度元素值:
[0,1]
图2-2灰度图像的色度元素值
二值图像:
数据矩阵中的元素值只是0或1。
读入matlab也是一个二维矩阵。
二值图像读入matlab中也是一个二维的平面矩阵,但像素点取值只限于0,1。
表2-3二值图像的特征
二
值
图
像
图像数组大小:
m×n
图像元素值:
0或1
图像数组大小:
m×n
图像元素值:
0或1
图2-3二值图像的元素值
RGB图像:
图像中每个象素的颜色用三个数据来存储,分别指定红、绿、蓝三原色在象素颜色中的比例关系,组成一个三维数组,读入matlab后是一个三维的矩阵。
RGB图像就是采用红、绿、蓝作为三原色的,其中R为红色,G为绿色,B为蓝色。
这样这个三维矩阵A就可以表示成一个彩色矩阵,也就是一张数字图像可以在matlab中读成一个矩阵A。
这个三维矩阵的第一维就是上图中第一层代表红色数值,第二维为第二层代表绿色数值,第三维为第三层代表蓝色数值。
也可以这样理解:
将索引图像中的数据矩阵中每一个像素点直接加载上色图矩阵中对应的颜色值。
表2-4RGB图像的特征
双精度类:
Double
(每个元素占8个字节)
整数类:
Unit8
(每个元素占1个字节)
整数类(Unit16)
(每个元素占2个字节)
真
彩
图
像
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,1]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,255]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,65535]
(无调色板)
图2-4RGB图像的色度元素值
2.3Matlab中图像的存储运算与显示方式
在MATLAB中,数值一般都采用double型(64位)存储和运算,为了节省存储空间,MATLAB为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称为8位型像。
函数image能够直接显示8位图像,但8位型数据和double型数据在image中意义不一样,对于索引图像,数据矩阵中的值指定该像素的颜色种类在色图矩阵中的行数。
当数据矩阵中的值为0时,表示用色图矩阵中第一行表示的颜色绘制;当数据矩阵中的值为1时,表示用色图矩阵中的第二行表示的颜色绘制该像素,数据与色图矩阵中的行数总是相差1。
所以,索引图像double型和uint8型在显示方法上没有什么不同,只是8位数据矩阵的值和颜色种类之间有一个偏差1。
调用格式均为image(x);colormap(map);对于灰度图像,uint8表示范围[0,255],double型表示范围[0,1]。
可见,double型和uint8型灰度图像不一样,二者转换格式为:
I8=uint8(round(I64*255));
I64=double(I8)/255;
反之,imread根据文件中的图像种类作不同的处理。
当文件中的图像为灰度图像时,imread把图像存入一个8位矩阵中,把色图矩阵转换为双精度矩阵,矩阵中每个元素值在[0,1]内;当为RGB图像时,imread把数据存入到一个8位RGB矩阵中。
本软件的处理统一针对BMP格式的灰度图。
在编程时图像读入与输出均要求转换为uint8型,中间运算处理过程则要用double型。
3图像的读取与写入
3.1图像的读取
函数imread用来读取图像,把图像数据读取出来以后,可以赋给一个变量。
其一调用格式如下:
A=imread(filename,fmt)
[X,map]=imread(…)
[…]=imread(filename)
[…]=imread(URL,…)
[…]=imread(…,Paraml,Vall,Param2,Val…)
但在Matlab中imread的最基本调用格式是:
A=imread(filename,fmt)
其中,filename为需要读取的图形文件名。
fmt为图像格式(可以是JPG/JPEG、TIF/TIFF、GIF、BMP、PNG、HDF、PCX、XVD、CUR和IC0),如果不指定fmt参数,则系统根据文件名自动判断图像类型。
输出参数X表示存储图像数据的矩阵名,若图像为索引图像,map为该图像的调色板。
在应用中,可以通过使用imread函数在线帮助来获得最新的图像文件格式及其位深度信息。
imread还可以分帧读取一个多帧图像文件。
例如,以下语句将读取,rice。
Png文件的第5帧图像:
I=imread(‘rice.png’);
I(;,5)
大多数图像文件格式采用8位数据存储像素值,将这些文件读入内存后,MatlabR2009a都将其存储为uint8类型。
对于支持16位数据的文件格式,如PNG和TIFF,MatlabR2009a
则将这些图像存储为uint16类型。
和其他MatlabR2009a生成的图像一样,一旦一副图像被显示了,那么它将成为一个图形对象句柄。
例如一下代码将图像earth.jpg读入MatlabR2009a工作平台,读取数据矩阵变为变量RGB:
>>RGB=imread(‘F:
earth.jpg’)
需要注意的是,对于索引图像来说,即使调色板数据本身为uint8或uint16类型,imread函数仍然将颜色映像表读取,并存储到一个双精度浮点类型的数据中。
【例】
I=imread('E:
\ted.png');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I);title('原图像');
图2-1inread举例说明
3.3图像文件的写入
MatlabR2009a中,可用imwrite来完成图像文件的写入操作。
其调用格式如下:
imwrite(A,filename,fmt)
imwirte(X,map,filename,fmt)
imwirte(…,filename)
imwrite(…,Paraml,Vall,Param2,Val2…)
第二条为其基本调用格式。
其中,X为索引图像名,map为调色板,filename为写入文件,fmt为存储格式。
如果指定的图像X为uint8或者uint16位的,那么imwrite将按指定的格式显示原图像。
如果X是双精度的,在用uint8(X-1)写图像时,imwrite函数将自动补偿阵列的数值。
例如,以下语句将根据MAP格式(Matlab数据文件格式)装载图像,然后保存为一帧包含小丑图像的JPG文件:
>>loadclown
>>imwrite(X,map,’clown.jpg’)
此外,在MatlabR2009a中,显示一幅图像还可以用image函数,这个函数将创建一个图像对象句柄,其调用格式如下:
image(C)
image(x,y,C)
image(x,y,C,’PropertyName’,PropetryValue,…)
image(‘PropertyName’,PropertyValue,..)
handle=image(…)
其中,x、y分别表示图像显示位置的左上角坐标,C表示所需显示的图像。
函数imagesc与image函数类似,但是它可以自动标度输入数据。
下面是用image函数来显示一幅图像,效果如图3-2所示。
图3-2image函数显示图像
>>figure
ax
(1)=subplot(1,2,1);
rgb=imread('E:
\ted.png');
image(rgb);title('RGBimage')
ax
(2)=subplot(1,2,2);
im=mean(rgb,3);
image(im);title('IntensityHeatMap')
colormap(hot(256))
linkaxes(ax,'xy')
axis(ax,'image')
4图像类型与显示
在Matlab的图像处理工具箱里,一幅图像可能包括一个数据矩阵,也可能包含一个色图矩阵。
图像类型是指数组和像素颜色之间定义的关系。
除了基本的图像类型外,Matlab还支持由多帧图像组成的图像序列。
在Matlab中通常使用3种格式来存储图像:
uint8、uint16(8位、16位无符号整型)和double(双精度)。
4.1索引图像及显示
索引图像包括一个数据矩阵X,一个颜色映像矩阵map。
其中map是一个mx3的数据矩阵,其每个元素的值为[0,U]之间双精度浮点型数据。
map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。
在MatlabR2009a中,索引值指向矩阵map进行索引。
例如值1指向矩阵map中的第一行,2指向第二行,以此类推。
可用下面的代码来显示一副索引图像:
>>image(X)
>>colormap(map)
【例】
[I,map]=imread('E:
\suoyin.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
image(I);
colormap(map);
程序运行,效果如图4-1所示。
图4-1索引图像显示
颜色映像表通常和索引图像存储在一起。
当用户在调用函数imread时,MatlabR2009a自动同时加载颜色映像表。
在MatlabR2009a中可以选择所需要的颜色映像表,而不必局限于使用默认的颜色映像表。
可以使用属性CdateMapping来选取其他的颜色映像表,包括用户自定义的颜色映像表。
使用imshow命令显示索引图像,则需要指定图像矩阵和调色板。
imshow(X,map)
对于X的每一个像素,imshow显示存储在map相应行中的颜色。
图像矩阵中数值和调色板之间的关系依赖于图像矩阵是double、uint8和uint16类型。
如果图像矩阵是双精度类型,那么数值1将指向调色板的第一行,数值2指向第二行,以此类推。
如果图像矩阵是unit6或unit16类型,则会有一个偏移量:
数值0指向调色板的第一行,数值1指向第二行,依次类推。
偏移量是有图像对象自动掌握的,不能使用句柄图像进行控制。
【例】
[I,map]=imread('E:
\suoyin.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I,map);
图4-2索引图像显示2
4.2灰度图像及其显示
在MatlabR2009a中,灰度图像即Windows下常说的灰度图像。
一幅灰度图像是一个数据矩阵I,其中数据均代表了在一定范围内的颜色灰度值。
MatlabR2009a把灰度图像用矩阵的形式进行存储,每个元素则表示了图像中的每个像素。
矩阵元素可以是双精度的浮点类型、8位或16位无符号的整数类型。
多数情况下,强度图像很少和颜色映表一起保存。
但是,在显示灰度图像时,MatlabR2009a仍然在后台使用系统预定义的磨人灰度颜色映像表。
MatlabR2009a中,要显示一幅灰度图像,可以调用函数imshow或imagesc(即imagescale,图像缩放函数)。
1)imshow函数显示灰度图像
灰度图像显示最基本的调用格式如下:
imshow(I)
imshow函数通过将灰度值标度为灰度级调色板的索引来显示图像。
如果I是双精度类型,若像素值为0.0,则显示为黑色,1.0则显示为白色,0.0和1.0之间则显示为灰色。
如果I为uint16类型,则像素值65535将显示为白色。
Imshow函数显示灰度图像的另一种调用格式是:
使用明确指定的灰度级目。
例如,以下语句将显示一幅32个灰度级的图像I:
imshow(I,32)
由于MatlabR2009a自动对灰度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 输入输出 格式 变换