MATLAB输入输出格式变换.docx
《MATLAB输入输出格式变换.docx》由会员分享,可在线阅读,更多相关《MATLAB输入输出格式变换.docx(17页珍藏版)》请在冰豆网上搜索。
![MATLAB输入输出格式变换.docx](https://file1.bdocx.com/fileroot1/2022-11/24/e5e75213-6f9e-4000-980d-93198aada9a1/e5e75213-6f9e-4000-980d-93198aada9a11.gif)
MATLAB输入输出格式变换
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
MATLAB仿真软件进行图像的输入、输出和格式变换。
初始条件:
1.仿真软件matlab
2.数字信号处理与图像处理基础知识。
要求完成的主要任务:
MATLAB仿真软件进行图像的输入、输出和格式变换。
要求:
读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换。
时间安排:
第15周:
理论讲解。
第17周:
理论设计,仿真调试,撰写试验报告,准备答辩。
第18周:
答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
1.图像的格式及类型5
2.图像的输入7
2.1从图形图像上读取数据7
3.图像的输出8
3.1以图像形式输出8
3.1.1索引图像的显示8
3.1.2灰度图像的显示9
3.1.3二值图像的显示9
3.1.4RGB图像的显示10
3.2以图像文件的形式输出11
4.图像的保存12
5.图像的格式转换14
5.1RGB转换成灰度图像14
5.2灰度图像转换为索引图像15
5.3灰度图像转化为二值图像15
5.4RGB图像转化为索引图像16
小结与体会17
参考文献18
摘要
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。
本次课程设计就是利用MATLAB来进行读取,保存和显示不同格式的图像,并进行图像格式的相互变换,包括了索引图像、灰度图像、RGB图像和二值图像的相互转换的应用。
关键词:
matlab;矩阵;图像转换;
Abstract
MATLABisreleasedbytheUnitedStatesmathworksmainfaceofscientificcomputing,visualizationandinteractiveprogramdesignedhigh-techcomputingenvironment.Itnumericalanalysis,matrixcomputation,scientificdatavisualizationaswellasnon-lineardynamicsystemsmodelingandsimulation,andmanyotherpowerfulintegratedinaneasy-to-useWindowsenvironment,scientificresearch,engineeringdesignandtheneedforeffectivenumericalmanyscientificfields,acomprehensivesolutiontogetridofthetraditionalnon-interactiveprogramminglanguageeditingmodelargelyrepresentativeoftoday'sinternationaladvancedlevelofscientificcomputingsoftware.ThiscoursedesignistheuseofMATLABtoread,saveanddisplayimagesofdifferentformats,andthemutualconversionofimageformats,includingthemutualconversionoftheindeximage,thegrayscaleimage,RGBimageandthebinaryimageoftheapplication.
Keywords:
matlab;matrix;converttheimage;
1图像的格式及类型
1.1MATLAB支持的图像文件格式和类型
MATLAB支持的图像文件格式:
(1)JPEG(JointPhotogyaphicExpeytsGroup):
一种称为联合图像专家组的图像压缩格式。
(2)BMP(WindowsBitmap):
有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。
文件内容包括文件头(一个BITMAPFILEHEADER数据结构)、位图信息数据块(位图信息头BITMAPINFOHEADER和一个颜色表)和图像数据。
(3)PCX(WindowsPaintbrush):
可处理1位、4位、8位、16位、24位等图像数据。
文件内容包括文件头、图像数据和扩展色图数据。
(4)TIFF(TaggedIamgeFileFormat):
处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。
文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。
(5)PNG(PortableNetworkGraphics):
包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。
(6)GIF(GraphicsInterchangeFormat):
任何1位到8位的可交换的图像。
(7)HDF(HierarchialDataFormat):
有8位、24位光栅图像数据集。
(8)ICO(WindowsIconresource):
有1位、4位、8位非压缩图像。
(9)CUR(WindowsCursorresource):
有1位、4位、8位非压缩图像。
(10)XWD(XWindowsDump):
包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。
(11)RAS(SunRasterimage):
有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。
(12)PBM(PortableBitmap)。
(13)PGM(PortableGraymap)。
(14)PPM(PortablePixmap)。
MATLAB支持的图像类型:
(1)索引图像:
它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种。
色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,所有元素值都在[0,1]内。
(2)灰度图像:
数据矩阵中的元素值一般都在[0,1]或[0,255]之间,灰度图像根据这些数据利用线性插值来和色图中的颜色种类匹配。
灰度图像一般看起来是一副黑白图像,但是色彩明暗度较二值图像更为丰富。
因为每一个像素点的取值在[0,1]或[0,255]之间。
灰度图像读入matlab中是一个二维的平面矩阵,其中行与列的乘积代表其图片中像素点的个数。
(3)二值图像:
数据矩阵中的元素值只是0或1。
读入matlab也是一个二维矩阵。
二值图像读入matlab中也是一个二维的平面矩阵,但像素点取值只限于0,1。
(4)RGB图像:
图像中每个象素的颜色用三个数据来存储,分别指定红、绿、蓝三原色在象素颜色中的比例关系,组成一个三维数组,读入matlab后是一个三维的矩阵。
RGB图像就是采用红、绿、蓝作为三原色的,其中R为红色,G为绿色,B为蓝色。
这样这个三维矩阵A就可以表示成一个彩色矩阵,也就是一张数字图像可以在matlab中读成一个矩阵A。
这个三维矩阵的第一维就是上图中第一层代表红色数值,第二维为第二层代表绿色数值,第三维为第三层代表蓝色数值。
也可以这样理解:
将索引图像中的数据矩阵中每一个像素点直接加载上色图矩阵中对应的颜色值。
索
引
图
像
图像数组大小:
m×n
图像元素取值:
[1,p]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,255]
图像数组大小:
m×n
图像元素取值:
[0,p-1]
色度矩阵:
p×3
色度元素值:
[0,65535]
灰
度
图
像
图像数组大小:
m×n
图像元素值:
[0,1]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,255]
色度矩阵:
p×3
色度元素值:
[0,1]
图像数组大小:
m×n
图像元素值:
[0,65535]
色度矩阵:
p×3
色度元素值:
[0,1]
二
值
图
像
图像数组大小:
m×n
图像元素值:
0或1
图像数组大小:
m×n
图像元素值:
0或1
真
彩
图
像
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,1]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,255]
(无调色板)
数组大小:
m×n×3
(:
:
1)-红色分量
(:
:
2)-绿色分量
(:
:
3)-蓝色分量
元素取值:
[0,65535]
(无调色板)
表1.1图像类型特征表
2图像的输入
2.1从图形图像上读取数据
MATLAB提供了一个重要的用于图像文件的读写的指令,从图像文件中读取数据的imread,常见调用格式为:
A=imread(‘filename’,’fmt’)
其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。
如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。
Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。
图2.1像读入框图
imread的其他几种重要的调用格式为:
[X,map]=imread(‘filename’,’fmt’)
[…]=imread(‘filename’)
[…]=imread(URL,…)
[…]=imread(…,idx) (CUR,ICOandTIFFonly)
[…]=imread(…,’frames’,idx) (GIFonly)
[…]=imread(…,ref) (HDFonly)
[…]=imread(…,’BackgroundColor’,BG) (PNGonly)
[A,map,alpha]=imread(…) (ICO,CURandPNGonly)
上面一些参数的含义如下:
idx是指读取图标(cur、ico、tiff)文件中第idx个图像,默认值为1。
’frame’,idx是指读取gif文件中的图像帧,idx值可以是数量、向量或’all’。
ref是指整数值。
alpha是指透明度。
程序如下:
I=imread('C:
\Users\hp\Pictures\a.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I);title('原图像');
图2.2inread举例说明
3图像的输出
3.1以图像形式输出
以图像形式输出,其实质就是图像的显示。
函数为image(imshow).根据不同的图像形式,有一些不同的显示方法。
图3.1图像输出的框图
3.1.1索引图像的显示
索引图像包含一个数据矩阵A,一个颜色映射矩阵map。
像素颜色内数据矩阵A作为索引值向矩阵map进行索引。
1.可以用下面代码来显示一幅索引图像:
image(A);
colormap(map);
程序如下:
I=imread('C:
\Users\hp\Pictures\b','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
image(I);
colormap(map);
图3.2索引图的显示举例1
2.使用imshow命令显示索引图像,则需要指定图像矩阵和调色板:
Imshow(A,map)在显示一幅索引图像时,inshow函数将设置句柄图形属性来控制颜色显示方式。
程序如下:
I=imread('C:
\Users\hp\Pictures\b.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I,map);
图3.3索引图像的显示举例2
3.1.2灰度图像的显示
一幅灰度图像是一个数据矩阵I
1.imshow(I,[low,high])
以灰度范围[low,high]显示图像,如果不知道灰度范围,可以用imshow(I,[])显示。
按最大灰度范围显示
程序如下:
I=imread('C:
\Users\hp\Pictures\c.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I,[]);title('原图像');
colorbar
图3.4灰度图像的显示举例1
2.imshow(I,n)
显示灰度级为n的图像,n缺省为256。
程序如下:
按256灰度级显示
I=imread('C:
\Users\hp\Pictures\c.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I,256);title('原图像');
colorbar
图3.5灰度图像的显示举例2
3.1.3二值图像的显示
imshow(bw)
显示二值图像。
程序如下:
bw=imread('C:
\Users\hp\Pictures\d.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(bw);title('原图像');
colorbar
图3.6二值图像的显示举例
3.1.4RGB图像的显示
imshow(rgb)
显示真彩色图像。
程序如下:
rgb=imread('C:
\Users\hp\Pictures\a','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(rgb);
图3.7RGB图像的显示举例
3.2以图像文件的形式输出
以图像文件的形式输出,即图像文件形式之间的转换。
图3.8图像文件形式的输出框图
调用函数格式为:
imwrite(A,’filename’,’fmt’)保存无调色板的图像
imwrite(X,map,’filename’,’fmt’)保存有调色板的图像
imwrite(…,’filename’)文件名中含格式
imwrite(…,Param1,Vall,Param2,Val2,…)指定保存参数
imwrite(…,Param1,Val1,Param2,Val2…)可以让用户控制HDF、JPEG、TIFF等的输出特性。
在MATLAB中,默认保存类型是uint8。
由于PNG和TIFF格式支持16位的图像,保存类型uint16。
文件格式:
bmp、jpg、pcx、tif。
程序如下:
将tif图像保存为jpg图像
[x,map]=imread('e.tif');
imwrite(x,map,'e.jpg','JPG','Quality',50)
图3.9以图像文件的形式输出
4图像的保存
图像的保存一般有四种方式:
1.文件保存
File→SaveAs,再选择保存为fig,egs,jpeg,gif,png,bmp等格式
图4.1文件保存图像
2.复制粘贴
Edit→CopyFigure,再粘贴到其他程序,如word文档,图画程序等。
图4.2复制粘贴图像
3.Saveas函数
saveas(h,'filename')
saveas(h,'filename','format')
saveas(gca,filename,fileformat)
如下图保存为文件figure1.jpg
图4.3saveas函数调用
4.print函数
print(h,'-dpng','filename')
如图print('-dpng','a2.png')表示保存为png图片,文件名为a2.png,其中第一个参数可以是:
-dpng:
保存为png格式
-dpcx:
保存为pcx格式
-dpdf:
保存为pdf格式
-dtiff:
保存为tiff格式
-dbmp:
保存为bmp格式
-djpeg:
保存为jpeg格式
图4.4print函数调用
5图像类型转换
图5.0图像类型转换框图
5.1RGB转换成灰度图像
I=imread('C:
\Users\hp\Pictures\a.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I)
imshow(K);
图5.1RGB转换成灰度图像举例
5.2灰度图像转换为索引图像
I=imread('C:
\Users\hp\Pictures\a.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I);
Y=gray2ind(K);
imshow(Y);
图5.2灰度图像转换为索引图像
5.3灰度图像转化为二值图像
I=imread('C:
\Users\hp\Pictures\a','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I);
Y=im2bw(K);
imshow(Y);
图5.3灰度图像转化为二值图像举例
5.4RGB图像转化为索引图像
I=imread('C:
\Users\hp\Pictures\a.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
[X,map]=rgb2ind(I,3);
imshow(X,map);
图5.4RGB图像转化为索引图像
小结与体会
通过本次课程设计,我巩固了课堂的理论知识,并利用所学到的理论知识正确分析信号处理的基本问题和解释信号处理的基本现象,认识到了matlab的功能强大,使得我们在使用的时直接调用库函数并赋予实际参数就能解决许多实际问题,提高了编程效率。
也让我熟悉了matlab的工作环境,掌握了matlab的常规操作,并通过图像信号变换掌握了图像和信号处理的方法和步骤,这些使我收获颇多。
同时在本次课程设计,我也发现了自身的很多不足之处。
毕竟是从实践中积累实际的经验,而不是简单的理论学习阶段中的分析,我也犯了一些想当然的错误,并在不断尝试中得以修正。
可以说,通过这样的实践对我们现在的学习以及将来的工作都是很大的帮助,而且也提高了自我分析问题的能力,培养了自主解决困难的素养。
对此,我由衷地感谢本次课程设计。
参考文献
[1]VinayK.Ingle,数字信号处理及其MATLAB实现,电子工业出版社,1998
[2]王洪元,MATLAB语言以及在电子信息工程中的应用,清华大学出版社,2004
[3]贺兴华,MATLAB7.X图像处理,人民邮电出版社,2006
[4]李欣文,数字图像采集与处理,电子工业出版社,2007
[5]张思远,图形图像处理与应用,电子工业出版社,2009
姓名
性别
专业班级
课程设计题目:
利用MATLAB软件进行图像的输入、输出和格式变换
课程设计答辩或质疑记录:
(1)matlab支持的图像类型有哪些?
答:
主要有索引图像,灰度图像,二值图像,RGB图像。
(2)RGB图像转换为索引图像需要调用什么函数命令?
答:
采用rgb2ind函数命令,例如[X,map]=rgb2ind(A,3);
(3)matlab工作环境下,图像是怎么读取的?
答:
图像的读取一般用imread函数,常用调用格式A=imread(filename,fmt)
作用是将文件名用字符串filename表示,扩展名用fmt表示的图像文件中的数据读到矩阵A中。
如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。
同时filename表示的文件名必须在matlab的搜索范围内,否则需指出完整路径。
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)