基于MATLAB的图像滤波设计要点.docx
- 文档编号:28645713
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:34
- 大小:1.07MB
基于MATLAB的图像滤波设计要点.docx
《基于MATLAB的图像滤波设计要点.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图像滤波设计要点.docx(34页珍藏版)》请在冰豆网上搜索。
基于MATLAB的图像滤波设计要点
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
武汉理工大学
题目:
基于MATLAB的图像滤波设计
初始条件:
(1)Matlab仿真软件及其相关基本知识,基本操作技能
(2)基础数学、数字信号处理与图像处理课程相关基础知识
要求完成的主要任务:
采用MATLAB选用适当的函数或矩阵进行如下计算:
(1)极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程;
(2)矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算;
(3)多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。
基于MATLAB的图像滤波设计:
(1)读入图像并分别加入高斯噪声、椒盐噪声和乘性噪声,并比较结果。
(2)设计巴特沃斯低通滤波对图像进行低通滤波处理,显示结果。
(3)设计高斯高通滤波器对图像进行处理,显示结果。
(4)采用维纳滤波和中值滤波对图像进行处理,显示结果
时间安排:
第11周安排任务,分组;
第12周设计仿真,撰写报告;
第13周完成设计,提交报告,答辩。
指导教师签名:
2012年1月10日
系主任(或责任教师)签名:
2012年1月10日
摘要
图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐噪声、乘性噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值,而乘性噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声),与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声。
研究滤波就是为了消除噪声干扰,图像滤波总体上讲包括空域滤波和频域滤波。
频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。
MATLAB是一个高级的数学分析与运算软件,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等强大功能。
MATLAB的名称来自一矩阵实验室,它表明,MATLAB的基本数据单位是矩阵,其指令表达式与数学、工程中常用的形式十分相似,MATLAB拥有数百个内部函数和三十几种工具包,包括功能性工具包和学科工具包,可以通过工具包扩充符号计算、可视化建模等功能。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
在欧美高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具,成为攻读学位的本科生、硕士生、博士生必须掌握的基本技能。
在国内,目前各个高校也正在逐步开设相关课程,为广大学生学习和使用MATLAB提供方便。
本文主要应用MATLAB软件来讨论与验证针对加入高斯、椒盐、乘性噪声后设计的巴特沃斯低通滤波、高斯高通滤波、维纳滤波和中值滤波等几种处理噪声的滤波器。
关键词:
MATLAB;数学运算;图像处理;噪声;滤波器
Abstract
Randomimageintensityisoftensignals(alsoknownasnoise)ofthepollution.Somecommonnoiseareimpulsenoise,multiplicativenoise,Gaussiannoise.Saltandpeppernoisewithrandomblackandwhiteintensityvalue,whilethemultiplicativenoiseonlywithrandomwhiteintensityvalues(positiveimpulsenoise)orblackintensityvalue(negativeimpulsenoise),andthefirsttwodifferentGaussiannoisewithhighstrengthtoobeySriLankaorthenormaldistributionofnoise.Offilteringistoeliminatenoise,imagefilteringwhole,includingspatialfilteringandfrequencydomainfiltering.FrequencyfilteringneedtomaketheFouriertransformtothefrequencydomainandtheninversetransformtorestoretheimagebacktospatialdomain,spatialfilteringisdonedirectlyontheimagedataspacetransformationtoachievethepurposeoffiltering.MATLABisahighlevelofmathematicalanalysisandcomputationalsoftware,inadditiontohaveexcellentnumericalskills,italsoprovidesaprofessionallevelofsymboliccomputation,wordprocessing,visualization,modelingandsimulationandreal-timecontrolofotherpowerfulfeatures.
MATLABandMathematica,Mapleandcalledthreemathematicalsoftware.Itinmathclasstechnologysoftwareapplicationsinotherfieldsnumericalcalculation.MATLABcanundertakematrixanddrawingfunctionanddata,implementationalgorithms,createuserinterface,linktotherestoftheprogramminglanguageprocedure,etc.Aremainlyappliedinengineeringcalculation,controldesign,signalprocessingandcommunication,imageprocessingandsignaldetection,financialmodelingdesignandanalysis,etc.
ThispapertodiscusstheapplicationofMATLABsoftware,andvalidationforaddingGaussian,saltandpepper,designedbymultiplicativenoiseButterworthlow-passfilter,Gaussianhigh-passfilter,Wienerfilterandmedianfilterofseveraltreatmentssuchasnoisefilters.
Keywords:
MATLAB,Math,ImageProcessing,Noise,Filter
基于MATLAB的图像滤波设计
1绪论
1.1MATLAB基础知识介绍
MATLAB软件由美国MathWorks公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。
MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。
作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。
MATLAB是“矩证实验室”(MATrixLABoratoy)的缩写,它是一种以钜阵运算为基础的交互式程序语言,专门针对科学﹑工程计算机绘图的需求。
与其他计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高。
它用解释方式工作,键入程序立即得出结果,人机交互性能好,深得科技人员喜爱。
特别是数值计算用的最频繁的电子信息类的学科中,已成为每个学生都掌握的工具了。
它大大提高了课程教学﹑解题作业分析研究的效率。
学习掌握MATLAB,也可以说在科学计算工具上与国际接轨。
MATLAB的语言特点为:
起点高;人机界面合适科技人员;强大而简易的作图功能;智能化程度高;功能丰富,可扩展性强。
MATLAB7.x的工作环境主要有命令窗(CommandWindow)﹑图形窗(figurewindow)和文本编辑器(FileEditor)组成。
MATLAB基本绘图方法中可以根据给出的数据,用绘图命令在屏幕上画出其图形,通过图形对科学计算进行描述。
1.2滤波器知识简介
1.2.1滤波器功能及分类
滤波器主要功能是对信号进行处理,保留信号中的有用成分,去除信号中的无用成分。
其按处理的信号类型的不同可分为数字滤波器(DigitalFilter,DF)和模拟滤波器(AnalogFilter,AF);按频域特性不同可分为低通、高通、带通、带阻滤波器;按时域特性不同可分为有限长冲激响应(FIR)滤波器和无限长冲激响应(IIR)滤波器。
1.2.2模拟滤波器设计理论
模拟低通滤波器的设计是最基本的,而高通、带通、带阻滤波器则可利用频率转换的方法由低通滤波器映射而得到。
模拟滤波器的设计是根据一组设计规范来设计模拟系统函数
,使其逼近某个理想滤波器的特性。
其中可以由幅度平方函数确定系统函数。
目前,模拟滤波器的理论和设计方法已发展得相当成熟,且有若干典型的模拟低通滤波器的设计原型可供选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Ellips)滤波器、贝塞尔(Bessel)滤波器等。
这些滤波器各有特点,巴特沃斯滤波器具有通带内最平坦且单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带或阻带内有波动,可以提高选择性;贝塞尔滤波器通带内有较好的线性相位特性;而椭圆滤波器的选择性相对前三种是最好的。
一般来说都以低通滤波器为基础来讨论逼近函数,而高通、带通、带阻滤波器则可用变换方法有低通滤波器映射而得到。
一种是巴特沃斯低通逼近,另一种是切比雪夫低通逼近。
本次课程设计采用巴特沃斯低通逼近。
1.3图像数据采集简介
1.3.1灰度图像
本次课程设计要求应用MATLAB的相关函数对二维图像进行图像处理,在具体编程之前必须选取一副黑白图片进行相应的函数处理。
在数字图像使用中,图片可以分为真彩图像和灰度图像两种。
在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像,灰度图像在黑色与白色之间还有许多级的颜色深度,通常每个采样像素用8位的非线性尺度来保存,这样可以有256级灰度。
这种精度刚刚能够避免可见的条带失真,而且易于编程。
真彩色是指图像中的每个像素值都分成R、G、B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色。
计算机表示颜色也是用二进制。
16位色的发色总数是65536色,也就是2的16次方;24位色被称为真彩色,它可以达到人眼分辨的极限,发色数是1677万多色,也就是2的24次方。
在以上两种分类中,灰度图像属于这次课程设计所使用的二维图像,所以在数据采集时需要选取灰度图像或者将真彩图像转化为灰度图像。
1.3.2基于MATLAB的图像数据采集
在MATLAB中可以使用imread命令来读取图像,可设置一个变量I来存放图像数据,通过I=imread(’图像路径\图像名称.图像格式’)命令来读取图像。
由于在互联网上下载的图片是很多时候肉眼分辨不出是灰度图像还是真彩色图像,往往主观认为是灰度图像的实际上还是真彩色图像,所以在MATLAB中提供了两条命令来检查图像属性。
在读取图像之后,我们可以使用flag=isgray()来判断是否为灰度图象,我们通过程序的返回值来判断,如果返回值为1,则图像为灰度图像,如果返回值为0,则图像不是灰度图像。
同理,我们可以使用flag=isrgb()来判断是否为真彩图象。
如需要将真彩图像转化为灰度图像,用可以使用rgb2gray()对真彩色图像进行变换,使之成为灰度图像,并用一个新的变量G存放产生的灰度图像数据。
然后再使用imshow()命令查看灰度变换后的图像是否真的符合要求。
1.4噪声简介
实际获得的图像一般都会因受到某种干扰而含有噪声,这些噪声主要来自敏感元器件的内部噪声、相片底片上感光材料的颗粒、传输通道的干扰及量化噪声等。
噪声的产生通常是随机的,其产生原因决定了噪声的分布特性及它和图像信号的关系,有些是相关的,有些是相互独立的。
根据噪声和信号的关系可以将噪声分为两种形式:
加性噪声和乘性噪声。
加性噪声即噪声与图像信号
无关,信道噪声及扫描图像时产生的噪声都属于加性噪声。
乘性噪声即噪声与图像信号相关,可能是某像素处的噪声只与该像素的图像信号相关,也可能是某像点处的噪声与该像点及其邻域的图像信号相关,点扫描图像中噪声、电视扫描光栅和胶片颗粒噪声都属于乘性噪声。
另外,根据噪声服从的分布还可以分为高斯噪声、泊松噪声和颗粒噪声等。
高斯噪声即一种概率密度函数服从高斯分布(即正态分布)的一类噪声。
如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。
高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。
高斯白噪声包括热噪声和散粒噪声。
椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
椒盐噪声往往由于图像切割引起。
乘性噪声一般由信道不理想引起,其与信号的关系是相乘,信号在它在,信号不在它也就不在。
2MATLAB的基本运算
2.1基础微积分运算
2.1.1极限的计算
MATLAB提供的命令函数limit()可以完成极限运算,其调用格式如下:
limit(F,x,a,’left’)
该命令对表达式F求极限,独立变量x从左边趋于a,函数中除F外的参数均可省略,’left’可换成’right’。
极限计算示例及其计算结果如下所示:
2.1.2微分的计算
MATLAB提供的函数diff()可以完成对给定函数求导函数的运算,其调用格式如下:
Diff(fun,x,n)
其意义是求函数fun关于变量x的n阶导数,n为1时可省略。
使用MATLAB进行微分计算示例及其结果如下所示:
2.1.3积分的计算
MATLAB中积分常用函数为int,其调用格式如下:
int(f,x,a,b)
其中f表示待积分的函数,x表示积分变量,而a,b则分别表示积分起始终止点。
使用MATLAB进行积分计算示例及其结果如下所示:
2.1.4级数的计算
MATLAB中级数常用函数为symsum,其调用格式如下:
r=symsum(s);r=symsum(s,v);r=symsum(s,a,b);r=symsum(s,v,a,b)
函数表达的意义是表达式s关于变量v从a到b求和。
使用MATLAB进行级数计算示例及其结果如下所示:
2.1.5求解代数方程
代数方程分为很多种,有简单有复杂,方法也有很多。
一般多项式方程的根可为实数,也可为复数,可用MATLAB符号工具箱中的solve()函数,MATLAB中常solve(f,t)命令解代数方程,其调用格式格式如下:
[x,…]=solve(eqn1,eqn2,…,eqnn,’x,…’)
其中eqn表示的是式子,x等表示的是变量。
使用MATLAB求解代数方程示例及其结果如下所示,该代数方程的解为3:
2.1.6求解常微分方程
未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。
如果未知函数是一元函数,称为常微分方程。
MATLAB中主要用dsolve求符号解析解。
其调用格式如下:
s=dsolve(‘方程1’,‘方程2’,…,’初始条件1’,’初始条件2’…,’自变量’)
其中eq为方程;s1,s2,…为初始条件缺省时给出含任意常数c1,c2,…的通解;x为自变量,缺省时默认为t。
使用MATLAB求解常微分方程示例及其结果如下:
2.2矩阵的基本运算
2.2.1矩阵的最大值、最小值
MATLAB中的max函数可以表示求每一列的最大值,那么经过分析可以知道,先求出每一列的最大值然后求出这些最大值里面的最大值,就可以得出结果。
MATLAB中求最小值的函数为min函数,求解思路与求最大值思路类似。
使用MATLAB进行矩阵最大值及最小值计算示例及其结果如下所示:
2.2.2矩阵的均值
MATLAB中求解矩阵均值的函数是mean,其调用方法如下:
mean(A,1)表示对列取平均,mean(A,2)表示对行取平均,mean(A)则默认为mean(A,1)。
使用MATLAB进行矩阵的均值计算示例及其结果如下所示,其中矩阵行均值如a矩阵所示,矩阵列均值如b矩阵所示,矩阵均值如c所示:
2.2.3矩阵的方差
MATLAB中求解矩阵方差的函数是var,它的调用格式是V=var(X),如果X是一个矩阵,var(X)返回一个包含矩阵X每一列方差的行向量。
使用MATLAB进行矩阵的方差计算示例及其结果如下所示:
2.2.4矩阵的转置
矩阵的一个重要的运算是转置,如果A是一个实数矩阵,那么它被转置时,第1行变成第1列,第2行变成第2列,依此类推,一个m×n矩阵变为一个n×m矩阵。
如果矩阵是方阵,那么这个矩阵在主对角线反映出来。
MATLAB中求转置的函数是B=A’。
使用MATLAB进行矩阵转置示例及其结果如下所示:
2.2.5矩阵的逆矩阵及矩阵的行列式
MATLAB中求逆矩阵的函数是inv,格式为Y=inv(X)。
使用MATLAB求矩阵的逆矩阵示例及其结果如下所示:
MATLAB中求矩阵行列式的函数是det,格式为Y=det(X)。
使用MATLAB求矩阵行列式示例及其结果如下所示:
2.2.6矩阵的特征值
MATLAB求矩阵的特征值和特征向量可用eig函数。
Eig(A)求包含矩阵A的特征值的向量。
[V,D]=eig(A)产生一个矩阵A的特征值在对角线上的对角矩阵D和矩阵V,它的列是相应的特征向量,,满足AV=VD。
使用MATLAB求矩阵特征值示例及其结果如下所示:
2.2.7矩阵的相乘、左除、右除
MATLAB中求矩阵的乘积直接用符号*即可。
在MATLAB中,有两个矩阵除法的符号,左除“\”和右除“/”。
如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)*B和B*inv(A)。
可是,MATLAB执行它们时是不同的,且在MATLAB中求解一个系统用左除比用逆和乘法所需的运算次数要少。
使用MATLAB进行矩阵相乘运算示例及其结果如下所示:
2.2.8矩阵的幂运算
使用MATLAB进行矩阵的幂运算示例及其结果如下所示:
2.3多项式的基本运算
2.3.1多项式的加、减、乘、除运算
使用MATLAB进行多项式的加、减、乘、除运算示例及其结果如下所示:
2.3.2多项式的求导、求根、求值运算
MATLAB中多项式求导数的函数是polyder,其调用格式是e=polyder(c),其中c表示的是待求导的函数式。
求根运算的函数是roots或poly,其中roots是根据函数求多项式的根,其调用格式是h=roots(c),c代表待求根的函数式;而poly函数是根据根求函数,其调用格式是i=poly(h),表示根据h求函数i。
求值运算的函数是polyval,其调用格式是j=polyval(f,z),将多项式的自变量赋予值z,表示当变量是1时,函数f的结果。
使用MATLAB进行多项式的求导、求根、求值示例及其结果如下所示:
2.3.3多项式的部分分式展开
MATLAB中函数residue可以将多项式之比用部分分式展开,也可以将一个部分分式表示为多项式之比。
其调用格式如下:
[r,p,k]=residue(a,b),返回多项式之比a/b的部分分式展开。
[a,b]=residue(r,p,k),返回部分分式的多项式向量。
使用MATLAB进行多项式的部分分式展开示例及其结果如下所示:
2.3.4多项式的拟合、插值运算
MATLAB中实现多项式拟合用polyfit(x,y,n)来实现,n是拟合多项式的阶次。
其常用调用格式为p=polyfit(x,y,n),其中x为变量,y为函数,n为阶数。
而插值函数一般地可表示为yi=interpi(x,y,xi,’method’),其中i代表几维插值可取1、2,xi为插值范围内的任意点集的x坐标,yi是插值后对应数据点集的坐标,method为插值函数的类型选项,有linear为线性,也是缺省项,cubic和cubicspline为三次样条等三样。
使用MATLAB进行多项式的拟合示例程序及其结果如下及图2.1所示:
图2.1多项式拟合运算示例运行结果
使用MATLAB进行多项式插值运算示例程序及其结果如下及图2.2所示:
图2.2多项式插值运算示例运行结果
3基于MATLAB的图像滤波设计
3.1读入图像,加入高斯噪声、椒盐噪声、乘性噪声并对比
MATLAB中提供了给图像加入噪声的函数imnoise,其调用格式如下:
J=imnoise(I,type)
J=imnoise(I,type,parameters)
其中参数type和parameters用于确定噪声的类型和相应的参数。
使用MATLAB读入图像,加入高斯噪声、椒盐噪声、乘性噪声的示例程序及运行结果如下及图3.1所示。
从结果图中可以看出,加入高斯噪声的图像失真最为严重。
图3.1图像经过三类加噪处理结果
3.2设计巴特沃斯低通滤波器对图像进行低通滤波处理
由于理想低通滤波器在截止频率处的陡峭特性,会引起滤波后的图像产生模糊现象,为解决此问题可采用巴特沃斯低通滤波器。
巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。
在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。
一个截止频率为
的n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 图像 滤波 设计 要点