MATLAB课设.docx
《MATLAB课设.docx》由会员分享,可在线阅读,更多相关《MATLAB课设.docx(15页珍藏版)》请在冰豆网上搜索。
MATLAB课设
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
信息工程学院
题目:
MATLAB仿真软件进行图像的输入、输出和格式变换
初始条件:
①仿真软件matlab
②数字信号处理与图像处理基础知识。
要求完成的主要任务:
MATLAB仿真软件进行图像的输入、输出和格式变换。
要求:
读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换
时间安排:
第15周:
理论讲解.
第20周:
理论设计.仿真调试.撰写试验报告,准备答辩
第21周:
答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要I
AbstractII
1图像文件格式及图像类型1
1.1MATLAB支持的几种图像文件格式:
1
1.2MATLAB几种图像类型1
1.2.1索引图像2
1.2.2灰度图像2
1.2.3二值图像:
3
1.2.4RGB图像3
2图像的输入4
3图像的输出6
3.1索引图像的显示6
3.2灰度图像的显示7
3.3二值图像的显示7
3.4RGB图像的显示8
4图像的保存9
4.1文件保存9
4.2复制粘贴9
4.3Saveas函数10
4.4print函数10
5图像类型转换12
5.1RGB转换成灰度图像12
5.2灰度图像转换为索引图像13
5.3灰度图像转化为二值图像13
5.4RGB图像转化为索引图像14
6课设总结15
参考文献16
摘要
MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。
作为强大的科学计算平台,它几乎能够满足所有的计算需求。
MATLAB本身就是功能强大的数据可视化工具,可以通过各种形式显示分析数据,例如灰度直方图、等高线、蒙太奇混合、像素分析、图层变换以及材质贴图等。
利用可视化的图形,不仅能够评估图形图像的特性,还能够分析图像中的色彩分布等情况。
本次课程设计介就是Matlab环境下的一些最基本的图像处理操作,如读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换。
关键字:
MATLAB图像处理格式变换
Abstract
MATLABisascientificcomputinglanguagethataddsthefunctionofnumericalcomputingandgraphicsprocessing,symbolstogether.Asapowerfulscientificcomputingplatforms,itcanalmostsatisfyallthecalculationsthatneeds.MATLABitselfisapowerfultoolofdatavisualizationthatcandisplaydatathroughvariousforms,suchasgraylevelhistogram,contours,montagemixing,pixelanalysis,thelayertextureandtransformation.Withvisualgraphics,itcannotonlyevaluateimagecharacteristics,butalsoanalyzethedistributionofcolorimage.
ThepurposeofthepracticeofintroducingMatlabenvironmentisthemostbasicofsomeimageprocessingoperations,suchasread,write,imageinformationandimageformat,sizeandgraytelescopic;etc.Throughtheexperimentmasteryofimagehistogramsdepictsmethod,deepenthehistogramimagefeatureandtherelationshipbetweentheshapeofunderstanding,andtodeepentheunderstandingofhistogramequalizationalgorithm.
Keywords:
MATLABimageprocessingformattransformation
1图像文件格式及图像类型
1.1MATLAB支持的几种图像文件格式:
⑴JPEG(JointPhotogyaphicExpeytsGroup):
一种称为联合图像专家组的图像压缩格式。
⑵BMP(WindowsBitmap):
有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。
文件内容包括文件头(一个BITMAPFILEHEADER数据结构)、位图信息数据块(位图信息头BITMAPINFOHEADER和一个颜色表)和图像数据。
⑶PCX(WindowsPaintbrush):
可处理1位、4位、8位、16位、24位等图像数据。
文件内容包括文件头、图像数据和扩展色图数据。
⑷TIFF(TaggedIamgeFileFormat):
处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。
文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。
⑸PNG(PortableNetworkGraphics):
包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。
⑹GIF(GraphicsInterchangeFormat):
任何1位到8位的可交换的图像。
⑺HDF(HierarchialDataFormat):
有8位、24位光栅图像数据集。
⑻ICO(WindowsIconresource):
有1位、4位、8位非压缩图像。
⑼CUR(WindowsCursorresource):
有1位、4位、8位非压缩图像。
⑽XWD(XWindowsDump):
包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。
⑾RAS(SunRasterimage):
有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。
1.2MATLAB几种图像类型
MATLAB支持五种图像类型,即二值图像、索引图像、灰度图像、RGB图像和多帧图像阵列。
1.2.1索引图像
索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。
MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256ⅹ3,用MAP=[RGB]表示。
MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。
也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。
索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为256ⅹ3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。
索引图像的数据类型也可采用双精度浮点型(double)。
索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。
1.2.2灰度图像
灰度图像矩阵元素的取值范围通常为[0,255]。
因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。
“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。
在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。
1.2.3二值图像:
一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。
由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。
二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。
1.2.4RGB图像
图像中每个象素的颜色用三个数据来存储,分别指定红、绿、蓝三原色在象素颜色中的比例关系,组成一个三维数组,读入matlab后是一个三维的矩阵。
RGB图像就是采用红、绿、蓝作为三原色的,其中R为红色,G为绿色,B为蓝色。
这样这个三维矩阵A就可以表示成一个彩色矩阵,也就是一张数字图像可以在matlab中读成一个矩阵A。
这个三维矩阵的第一维就是上图中第一层代表红色数值,第二维为第二层代表绿色数值,第三维为第三层代表蓝色数值。
也可以这样理解:
将索引图像中的数据矩阵中每一个像素点直接加载上色图矩阵中对应的颜色值。
2图像的输入
MATLAB提供了一个重要的用于图像文件的读写的指令------从图像文件中读取数据的imread,
imread的常见调用格式为:
A=imread(‘filename’,’fmt’)
其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。
如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。
Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。
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('shuru.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I);title('原图像');
图2-1imread举例说明
3图像的输出
以图像形式输出,其实质就是图像的显示。
函数为image(imshow).
.
图3-1图像输出的框图
根据不同的图像形式,有一些不同的显示方法。
3.1索引图像的显示
索引图像包含一个数据矩阵A,一个颜色映射矩阵map。
像素颜色内数据矩阵X作为索引值向矩阵map进行索引。
可以用下面代码来显示一幅索引图像:
image(A)
colormap(map).
【例】
I=imread('suoyin.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
image(I);
colormap(map);
图3-2索引图的显示举例
3.2灰度图像的显示
一幅灰度图像是一个数据矩阵I
imshow(I,[low,high])
以灰度范围[low,high]显示图像,如果不知道灰度范围,可以用imshow(I,[])显示。
【例】按最大灰度范围显示
命令窗口输入:
I=imread('lena.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(I,[]);title('原图像');
colorbar
图3-3灰度图像的显示举例
3.3二值图像的显示
imshow(BW)
显示二值图像。
【例】显示二值图像
bw=imread('xiongmao.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(bw);title('原图像');
Colorbar
图3-4二值图像的显示举例
3.4RGB图像的显示
imshow(RGB)
显示真彩色图像。
【例】rgb=imread('yingwu.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
imshow(rgb);
图3-5RGB图像的显示举例
4图像的保存
图像的保存一般有四种方式:
4.1文件保存
File→SaveAs,再选择保存为fig,egs,jpeg,gif,png,bmp等格式
图4-1文件保存图像
4.2复制粘贴
Edit→CopyFigure,再粘贴到其他程序,如word文档,图画程序等。
图4-2复制粘贴图像
4.3Saveas函数
saveas(h,'filename')
saveas(h,'filename','format')
saveas(gca,filename,fileformat)
如下图保存为文件figure1.jpg
图4-3saveas函数调用
4.4print函数
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-1图像类型转换框图
5.1RGB转换成灰度图像
I=imread('chengzi.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I)
imshow(K);
图5-2RGB转换成灰度图像举例
5.2灰度图像转换为索引图像
I=imread('chengzi.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I);
Y=gray2ind(K);
imshow(Y);
图5-3灰度图像转换为索引图像
5.3灰度图像转化为二值图像
I=imread('chengzi.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
K=rgb2gray(I);
Y=im2bw(K);
imshow(Y);
图5-4灰度图像转化为二值图像举例
5.4RGB图像转化为索引图像
I=imread('chengzi.jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
[X,map]=rgb2ind(I,3);
imshow(X,map);
图5-5RGB图像转化为索引图像
6课设总结
通过课设,我认识到了matlab的功能非常强大,使得我们在使用的时候用户直接调用这些库函数并赋予实际参数就能解决实际问题,具有极高的编程效率。
我也熟悉了matlab的工作环境,可以很熟练的对matlab进行常规的操作,快速进行程序编程和仿真。
完成任务后才发现这次训练的内容并不算难。
首先要做的工作就是熟悉matlab中的各种库函数的格式和使用方法,其次就是针对具体图像进行操作,通过观察图像的质量等方面的问题,来了解变换的效果。
当然,结果了这次课程设计,我也发现了自己的很多不足。
而且我很赞同通过这种课程设计来考验我们的动脑能力的教学方式。
这样一方面激发了我们自主学习的兴趣,另一方面也巩固了学习到的理论知识,可以从实践中积累实际的经验,而不是老停留在理论学习的阶段。
当然这次设计学到的不仅仅是知识,还有如何去查阅资料。
如何去高质量的完成一份报告书等等。
我觉得这样的实践对我们现在的学习以及以后的工作都是很大的帮助,而且对我分析问题的方法也有很大的帮助,也使我考虑为难更加周到,更全面。
参考文献
[1]王华等.MATLAB电子仿真与应用教程.北京:
国防工业出版社,2001.
[2]李文锋.图形图像处理与应用.北京:
中国标准出版社,2006.
[3]王洪元.MATLAB语言以及在电子信息工程中的应用.北京:
清华大学出版社,2004
[4]刘文耀.数字图像采集与处理.北京:
电子工业出版社.2007.
[5]贺兴华.MATLAB7.X图像处理.北京:
人民邮电出版社,2006.
[5]章毓晋.图像工程(上册).北京:
清华大学出版社.1999.