Matlab二维灰度图象分析及变换处理.docx
《Matlab二维灰度图象分析及变换处理.docx》由会员分享,可在线阅读,更多相关《Matlab二维灰度图象分析及变换处理.docx(15页珍藏版)》请在冰豆网上搜索。
Matlab二维灰度图象分析及变换处理
《基础强化训练》设计报告
题目:
二维灰度图象的统计分析及变换处理
专业班级:
学生姓名:
指导教师:
2010年7月17日
《基础强化训练》设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
二维灰度图象的统计分析及(FFT)变换处理
课程设计目的:
1较全面了解常用的数据分析与处理原理及方法;
2能够运用相关软件进行模拟分析;
3掌握基本的文献检索和文献阅读的方法;
4提高正确地撰写论文的基本能力。
课程设计内容和要求
1采集一幅像素大于64*64黑白图像;
2常规的数学统计数据处理:
计算图象各象素点灰度值得均值、标准差、方差,并绘出灰度直方图;
3采用[FFT(傅立叶变换)]对图像进行分析
初始条件:
1MATLAB软件。
2数字信号处理与图像处理基础知识。
时间安排:
第18周周一:
安排任务
19~20周:
仿真设计(鉴主13楼计算机实验室)
第20周周六:
完成(答辩,提交报告,演示)
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要1
Abstract2
1数据采集3
1.1图像的选取3
1.2MATLAB读取方法4
1.2.1编辑M文件4
1.2.2图像的读取4
1.2.3查看图像的格式6
1.2.4灰度值的获取7
2数据统计处理8
2.1均值计算8
2.1.1原理及计算公式8
2.1.2计算程序及结果9
2.2各像素点灰度值的标准差9
2.3各像素点灰度值的方差10
2.4灰度直方图11
3.傅立叶变化13
3.1原理及计算公式13
3.2变换及逆变换程序及结果14
3.3对变换后的图像的说明16
4.总结(心得体会)17
5.参考文献18
摘要
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。
作为强大的科学计算平台,它几乎能够满足所有的计算需求。
MATLAB本身就是功能强大的数据可视化工具,可以通过各种形式显示分析数据,例如灰度直方图、等高线、蒙太奇混合、像素分析、图层变换以及材质贴图等。
利用可视化的图形,不仅能够评估图形图像的特性,还能够分析图像中的色彩分布等情况。
本次练习介绍的就是Matlab环境下的一些最基本的图像处理操作,如读图像、写图像、查看图像信息和格式、尺寸和灰度的伸缩等等;通过实验掌握图像直方图的描绘方法,加深直方图形状与图像特征间关系间的理解;加深对直方图均衡算法的理解。
Abstract
MATLABisMatrixlab(MatrixofLaboratory,istheMathWorkscompanybusinessmathematicssoftwareisusedtodevelop,datavisualizationalgorithm,dataanalysisandnumericalcalculationofseniortechnicalcalculationlanguageandinteractiveenvironment,includingMATLABandSimulinktwomost.MATLABisascientificcomputinglanguagethataddsthefunctionofnumericalcomputingandgraphicsprocessing,symbolstogether.Asapowerfulscientificcomputingplatforms,itcanalmostsatisfyallthecalculationsthatneeds.MATLABitselfisapowerfultoolofdatavisualizationthatcandisplaydatathroughvariousforms,suchasgraylevelhistogram,contours,montagemixing,pixelanalysis,thelayertextureandtransformation.Withvisualgraphics,itcannotonlyevaluateimagecharacteristics,butalsoanalyzethedistributionofcolorimage.
ThepurposeofthepracticeofintroducingMatlabenvironmentisthemostbasicofsomeimageprocessingoperations,suchasread,write,imageinformationandimageformat,sizeandgraytelescopic;etc.Throughtheexperimentmasteryofimagehistogramsdepictsmethod,deepenthehistogramimagefeatureandtherelationshipbetweentheshapeofunderstanding,andtodeepentheunderstandingofhistogramequalizationalgorithm.
1数据采集
Matlab软件的图像采集工具箱提供了大量的函数用于采集图像和视频信号,该工具箱支持的硬件设备包括工业标准的PC图像采集卡和相应的设备。
所支持的硬件包括:
Matrox和DataTranslation公司提供的视频采集设备,同时还支持Windows平台下支持USB或者火线(IEEE-1394的视频摄像头等设备。
MATLAB可以支持很多很多图片的文件格式,例如﹡cur、﹡bmp、﹡hdf、﹡ico、﹡jpg、﹡tif、﹡gif、﹡pcx等。
用于读写图像数据的函数有imread(从图像格式的文件中读取数据)和imwrite(将数据写入图像格式的文件)。
这里我用到的是imread,主要是用到图像文件的读取。
1.1图像的选取
图1.1本次研究的图像如图所示,科比的图像
1.2MATLAB读取方法
1.2.1编辑M文件
打开Matlab软件,在File下选择New\M-File。
1.2.2图像的读取
imread函数用于读入各种图象文件,其一般的用法为:
[X,MAP]=imread(‘filename’,‘fmt’;
亦可直接写为imread(‘’;其中,X,MAP分别为读出的图象数据和颜色表数据,fmt为图象的格式,filename为读取的图象文件(可以加上文件的路径)。
例如本次设计中:
i=imread(’科比.jpg’);
利用函数imread函数实现图像文件的读取,然后运用imshow函数显示图像。
如果采集图像为彩色图像,可以先将彩色图像转换为灰度图像,再进行计算分析。
操作如下图-1,将存在D:
\matlab\work里的图片“科比.jpg”写入MATLAB中。
需要先打开运行MATLAB,然后在File里面新建M-File文件,再将读写图片数据的程序输进去即可。
图1.2.1科比的彩色图像转化成灰度图像
检查程序无误之后,就可以直接在commandwindow窗口运行。
如果运行之后在MATLAB主页面里显示有错误的话就需要重新回到M-File的页面里面对程序进行修改然后才可以运行;如果运行之后在MATLAB主页面里面没有错误显示就可以看到图1.2.2。
图1.2.2
1.2.3查看图像的格式
Matlab中可以使用imfinfo函数查看文件信息,图像的查询及读写在Matlab中要查询一个图像文件的信息,只要用imfinfo指令加上文件及其完整路径名即可。
函数调用格式为:
Info=imfinfo(filename,fmt
Info=imfinfo(filename
参数fmt对应为所有图像处理工具箱中所有支持的图像文件格式。
info=
Filename:
'科比.jpg'
FileModDate:
'04-Jul-201012:
41:
22'
FileSize:
32901
Format:
'jpg'
FormatVersion:
''
Width:
299
Height:
450
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
''
NumberOfSamples:
3
CodingMethod:
'Huffman'
CodingProcess:
'Sequential'
Comment:
{}
上面的即是图像的格式处理
1.2.4灰度值的获取
从上面的文件信息可以看出来,这个jpg文件的色彩类型为'truecolor'真彩类型,因此要获得这个图像的灰度值,首先需要将这幅真彩图转换成灰度图。
可以使用rgb2gray函数,最后的结果保存在一个八位矩阵中,由于这个矩阵为400*300大小,限于篇幅只截取部分。
每个单元的数值就是原来的图像对应的灰度值。
如图
图1.2.4
2数据统计处理
2.1均值计算
2.1.1原理及计算公式
均值计算的原理较简单,在MATLAB的函数库中表示均值的函数是mean2,其格式是mean2(),括号里面就是待处理分析的信号。
图2.1.1
上面的程序同样是在新建的M-File文件里面编写运行的,检查程序没有错误之后,就在commandwindow窗口直接运行。
2.1.2计算程序及结果
图2.1.2
2.2各像素点灰度值的标准差
在MATLAB的函数库中表示标准差的函数为std2,其格式是std2(),括号里面就是待处理分析的信号。
由于标准差反映的是偏离灰度均值的程度,如果标准差越大,则说明灰度级越大,则图像包含的信息就越多。
如下图,程序如下:
图2.2.1
结果显示如下:
图2.2.2
2.3各像素点灰度值的方差
这里对图像的方差进行计算如图2.3.1所示,在求标准差的基础上,方差是标准差的平方。
图2.3.1
结果如下,得到的即是灰度值的方差:
图2.3.2
2.4灰度直方图
直方图是一个显示灰度或索引图像亮度分布情况的图表,它是图像分析中用来说明图像灰度分布的图形。
直方图的每一个分支表示对应灰度级出现的频数(处于该灰度级的像素的数目)间的统计关系,用横坐标表示灰度级,纵坐标表示频数(或相对频数=频数/总像素数目)。
这里对图像的直方图的绘制用的函数是imhist,下面为具体绘制图像直方图的程序,如图2.4.1
图2.4.1
灰度直方图的显示如下图:
图2.4.2
3.傅立叶变化
3.1原理及计算公式
傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。
在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。
最初傅里叶分析是作为热过程的解析分析的工具被提出的(参见:
林家翘、西格尔著《自然科学中确定性问题的应用数学》,科学出版社,北京。
原版书名为C.C.Lin&L.A.Segel,MathematicsAppliedtoDeterministicProblemsintheNaturalSciences,MacmillanInc.,NewYork,1974)。
*傅里叶变换属于谐波分析。
*傅里叶变换的逆变换容易求出,而且形式与正变换非常类似; *正弦基函数是微分运算的本征函数,从而使得线性微分方程的求解可以转化为常系数的代数方程的求解.在线性时不变的物理系统内,频率是个不变的性质,从而系统对于复杂激励的响应可以通过组合其对不同频率正弦信号的响应来获取; *卷积定理指出:
傅里叶变换可以化复杂的卷积运算为简单的乘积运算,从而提供了计算卷积的一种简单手段; *离散形式的傅里叶变换可以利用数字计算机快速的算出(其算法称为快速傅里叶变换算法(FFT.
这里是对图像快速傅里叶变化,用到的是fft2函数。
说明:
以下程序的原始图片科比.jpg放在matlab安装目录下work文件夹里。
打开matlab后将本程序段直接复制到matlab的“commandwindow”里面的">>"后即可进行图片的傅立叶变换。
对图像快速傅里叶变化后,可以对图像进行反傅里叶变换,应用函数ifft2(,如果得到的图像与傅里叶变换前的图像相同,则傅里叶变换正确。
图3.1.1
3.2变换及逆变换程序及结果
检查无误后,运行以上的程序,观察程序运行结果。
程序运行的结果如下图示:
图3.2
3.3对变换后的图像的说明
图3.2中上图是傅里叶变换得到的结果
下图则是傅里叶逆变换得到的结果,即是科比的灰度图像
设x(n为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。
当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。
这样变换以后,总的运算次数就变成N2(N/2)2=NN2/2。
继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。
而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。
4.总结(心得体会)
这次的课程设计主要是让我们学习使用MATLAB,利用对图像的处理来学习MATLAB这个软件。
首先我认识了MATLAB这个软件,其功能非常的强大,由总包和若干个工具箱组成,可以实现数值分析、自动控制、图像处理、神经元网络等若干个领域的计算和图形显示,它将这些不同领域的计算用函数的形式分类成对用户完全透明的库函数,构成一个个针对专门领域的工具箱。
使得我们在使用的时候用户直接调用这些库函数并赋予实际参数就能解决实际问题,具有极高的变成效率。
我觉得通过这次课设之后,我发现MATLAB强大的功能。
不仅仅局限于我们分析信号与系统的时候用到的那些功能,还有其他更多更广泛的用途。
通过了本次课程设计,我学会了使用M文件来编写能解答特殊题目的程序,一道很基础简单的电路题目,让我对一款很陌生的软件有了一个初步的认识,这对我以后的学习和研究会产生很好的影响。
本来通过并不复杂的计算就能得到结果,但是在建立了矩阵后,可以使用MATLAB来解决这种并不能在一般的计算器上计算出来的问题,而且编程过程中,可以清楚地从workspace中看到自己所输入的参数是否正确,也能直观地看到一些中间变量是否有误,而最后的运算结果更是一目了然。
这一切都让我对这款软件产生了极高的好感。
5.参考文献
1.《电路》(第五版)………………………邱关源……高等教育出版社
2.《电路学习指导与习题分析》…………罗先觉……高等教育出版社
3.《MATLABR2007基础与提高》…………常巍……电子工业出版社
4.《MATLAB实用教程》………………………郑阿奇……电子工业出版社
5.《MATLAB数值分析》……………………周品,何正风机械工业出版
6.《MATLAB教程》......................罗建军电子工业出版社
本科生基础强化训练成绩评定表
姓名
性别
专业、班级
题目:
答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日