学生姓名: 专业班级: 指导教师: 工作单位: 武汉理工大学 题 目: 基于MATLAB的图像滤波设计 初始条件:
(1) Matlab仿真软件及其相关基本知识,基本操作技能 (2) 基础数学、数字信号处理与图像处理课程相关基础知识
要求完成的主要任务:
采用MATLAB选用适当的函数或矩阵进行如下计算:
(1) 极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程;
(2) 矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算;
(3) 多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。 基于MATLAB的图像滤波设计:
(1) 读入图像并分别加入高斯噪声、椒盐噪声和乘性噪声,并比较结果。 (2) 设计巴特沃斯低通滤波对图像进行低通滤波处理,显示结果。 (3) 设计高斯高通滤波器对图像进行处理,显示结果。 (4) 采用维纳滤波和中值滤波对图像进行处理,显示结果
时间安排:
第11周安排任务,分组; 第12周设计仿真,撰写报告; 第13周完成设计,提交报告,答辩。
指导教师签名: 2012年 1月 10日 系主任(或责任教师)签名: 2012年 1月 10日
武汉理工大学《MATLAB》课程设计报告
目录
摘要----------------------------------------------------------------------------------III Abstract-------------------------------------------------------------------------------IV 1 绪论----------------------------------------------------------------------------------1
1.1 MATLAB基础知识介绍 ------------------------------------------------------------ 1 1.2 滤波器知识简介 ---------------------------------------------------------------- 1
1.2.1滤波器功能及分类 --------------------------------------------------------- 1 1.2.2模拟滤波器设计理论 ------------------------------------------------------- 2 1.3 图像数据采集简介 -------------------------------------------------------------- 2
1.3.1 灰度图像 ---------------------------------------------------------------- 2 1.3.2 基于MATLAB的图像数据采集 ----------------------------------------------- 3 1.4 噪声简介 ---------------------------------------------------------------------- 3 2 MATLAB的基本运算 ---------------------------------------------------------------------5
2.1 基础微积分运算 ---------------------------------------------------------------- 5
2.1.1 极限的计算 -------------------------------------------------------------- 5 2.1.2 微分的计算 -------------------------------------------------------------- 5 2.1.3 积分的计算 -------------------------------------------------------------- 6 2.1.4 级数的计算 -------------------------------------------------------------- 6 2.1.5 求解代数方程 ------------------------------------------------------------ 6 2.1.6 求解常微分方程 ---------------------------------------------------------- 7 2.2 矩阵的基本运算 ---------------------------------------------------------------- 7
2.2.1 矩阵的最大值、最小值 ---------------------------------------------------- 7 2.2.2 矩阵的均值 -------------------------------------------------------------- 8 2.2.3 矩阵的方差 -------------------------------------------------------------- 8 2.2.4 矩阵的转置 -------------------------------------------------------------- 9 2.2.5 矩阵的逆矩阵及矩阵的行列式 ---------------------------------------------- 9 2.2.6 矩阵的特征值 ----------------------------------------------------------- 10 2.2.7 矩阵的相乘、左除、右除 ------------------------------------------------- 10 2.2.8 矩阵的幂运算 ----------------------------------------------------------- 11 2.3 多项式的基本运算 ------------------------------------------------------------- 11
2.3.1 多项式的加、减、乘、除运算 --------------------------------------------- 11 2.3.2 多项式的求导、求根、求值运算 ------------------------------------------- 12 2.3.3 多项式的部分分式展开 --------------------------------------------------- 13 2.3.4 多项式的拟合、插值运算 ------------------------------------------------- 14
3 基于MATLAB的图像滤波设计 -----------------------------------------------------------16
3.1 读入图像,加入高斯噪声、椒盐噪声、乘性噪声并对比 ----------------------------- 16 3.2 设计巴特沃斯低通滤波器对图像进行低通滤波处理 --------------------------------- 17
3.2.1 对加入高斯噪声的图像进行巴特沃斯低通滤波 ------------------------------- 17 3.2.2 对加入椒盐噪声的图像进行巴特沃斯低通滤波 ------------------------------- 18 3.2.3对加入乘性噪声的图像进行巴特沃斯低通滤波 -------------------------------- 19 3.2.4 结果分析 --------------------------------------------------------------- 19 3.3 设计高斯高通滤波器对图像进行处理 --------------------------------------------- 19
3.3.1 对加入高斯噪声的图像进行高斯高通滤波 ----------------------------------- 20 3.3.2 对加入椒盐噪声的图像进行高斯高通滤波 ----------------------------------- 21
I
武汉理工大学《MATLAB》课程设计报告
3.3.3 对加入乘性噪声的图像进行高斯高通滤波 ----------------------------------- 21 3.3.4 结果分析 --------------------------------------------------------------- 21 3.4 采用维纳滤波对图像进行处理 --------------------------------------------------- 22
3.4.1 对加噪后图像采用维纳滤波器处理 ----------------------------------------- 22 3.4.2 结果分析: ------------------------------------------------------------- 23 3.5 采用中值滤波对图像进行处理 --------------------------------------------------- 24
3.5.1 对加噪后图像采用中值滤波器处理 ----------------------------------------- 24 3.5.2 结果分析 --------------------------------------------------------------- 25 3.6 几种滤波方式比较 ------------------------------------------------------------- 25 4 心得体会 ----------------------------------------------------------------------------26 5 参考文献 ----------------------------------------------------------------------------27
II
武汉理工大学《MATLAB》课程设计报告
摘要
图像常常被强度随机信号(也称为噪声)所污染.一些常见的噪声有椒盐噪声、乘性噪声、高斯噪声等.椒盐噪声含有随机出现的黑白强度值,而乘性噪声则只含有随机的白强度值(正脉冲噪声)或黑强度值(负脉冲噪声),与前两者不同,高斯噪声含有强度服从高斯或正态分布的噪声。研究滤波就是为了消除噪声干扰,图像滤波总体上讲包括空域滤波和频域滤波。频率滤波需要先进行傅立叶变换至频域处理然后再反变换回空间域还原图像,空域滤波是直接对图像的数据做空间变换达到滤波的目的。MATLAB是一个高级的数学分析与运算软件,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等强大功能。MATLAB的名称来自一矩阵实验室,它表明,MATLAB的基本数据单位是矩阵,其指令表达式与数学、工程中常用的形式十分相似,MATLAB拥有数百个内部函数和三十几种工具包,包括功能性工具包和学科工具包,可以通过工具包扩充符号计算、可视化建模等功能。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。在欧美高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具,成为攻读学位的本科生、硕士生、博士生必须掌握的基本技能。在国内,目前各个高校也正在逐步开设相关课程,为广大学生学习和使用MATLAB提供方便。
本文主要应用MATLAB软件来讨论与验证针对加入高斯、椒盐、乘性噪声后设计的巴特沃斯低通滤波、高斯高通滤波、维纳滤波和中值滤波等几种处理噪声的滤波器。
关键词:MATLAB; 数学运算; 图像处理; 噪声; 滤波器
III
武汉理工大学《MATLAB》课程设计报告
Abstract
Random image intensity is often signals (also known as noise) of the pollution. Some common noise are impulse noise, multiplicative noise, Gaussian noise. Salt and pepper noise with random black and white intensity value, while the multiplicative noise only with random white intensity values (positive impulse noise) or black intensity value (negative impulse noise), and the first two different Gaussian noise with high strength to obey Sri Lanka or the normal distribution of noise. Of filtering is to eliminate noise, image filtering whole, including spatial filtering and frequency domain filtering. Frequency filtering need to make the Fourier transform to the frequency domain and then inverse transform to restore the image back to spatial domain, spatial filtering is done directly on the image data space transformation to achieve the purpose of filtering. MATLAB is a high level of mathematical analysis and computational software, in addition to have excellent numerical skills, it also provides a professional level of symbolic computation, word processing, visualization, modeling and simulation and real-time control of other powerful features.
MATLAB and Mathematica, Maple and called three mathematical software. It in math class technology software applications in other fields numerical calculation. MATLAB can undertake matrix and drawing function and data, implementation algorithms, create user interface, link to the rest of the programming language procedure, etc. Are mainly applied in engineering calculation, control design, signal processing and communication, image processing and signal detection, financial modeling design and analysis, etc.
This paper to discuss the application of MATLAB software, and validation for adding Gaussian, salt and pepper, designed by multiplicative noise Butterworth low-pass filter, Gaussian high-pass filter, Wiener filter and median filter of several treatments such as noise filters .
Keywords: MATLAB, Math, Image Processing, Noise, Filter
IV
武汉理工大学《MATLAB》课程设计报告
基于MATLAB的图像滤波设计
1绪论
1.1 MATLAB基础知识介绍
MATLAB软件由美国Math Works公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。
MATLAB是“矩证实验室”(MATrix LABoratoy)的缩写,它是一种以钜阵运算为基础的交互式程序语言,专门针对科学﹑工程计算机绘图的需求。与其他计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高。它用解释方式工作,键入程序立即得出结果,人机交互性能好,深得科技人员喜爱。特别是数值计算用的最频繁的电子信息类的学科中,已成为每个学生都掌握的工具了。它大大提高了课程教学﹑解题作业分析研究的效率。学习掌握MATLAB,也可以说在科学计算工具上与国际接轨。
MATLAB的语言特点为:起点高;人机界面合适科技人员;强大而简易的作图功能;智能化程度高;功能丰富,可扩展性强。
MATLAB 7.x的工作环境主要有命令窗(Command Window)﹑图形窗(figurewindow)和文本编辑器(File Editor)组成。
MATLAB基本绘图方法中可以根据给出的数据,用绘图命令在屏幕上画出其图形,通过图形对科学计算进行描述。
1.2 滤波器知识简介
1.2.1滤波器功能及分类
滤波器主要功能是对信号进行处理,保留信号中的有用成分,去除信号中的无用
1
武汉理工大学《MATLAB》课程设计报告
成分。其按处理的信号类型的不同可分为数字滤波器(Digital Filter,DF)和模拟滤波器(AnalogFilter,AF);按频域特性不同可分为低通、高通、带通、带阻滤波器;按时域特性不同可分为有限长冲激响应(FIR)滤波器和无限长冲激响应(IIR)滤波器。
1.2.2模拟滤波器设计理论
模拟低通滤波器的设计是最基本的,而高通、带通、带阻滤波器则可利用频率转换的方法由低通滤波器映射而得到。模拟滤波器的设计是根据一组设计规范来设计模拟系统函数Ha(s),使其逼近某个理想滤波器的特性。其中可以由幅度平方函数确定系统函数。
目前,模拟滤波器的理论和设计方法已发展得相当成熟,且有若干典型的模拟低通滤波器的设计原型可供选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Ellips)滤波器、贝塞尔(Bessel)滤波器等。这些滤波器各有特点,巴特沃斯滤波器具有通带内最平坦且单调下降的幅频特性;切比雪夫滤波器的幅频特性在通带或阻带内有波动,可以提高选择性;贝塞尔滤波器通带内有较好的线性相位特性;而椭圆滤波器的选择性相对前三种是最好的。
一般来说都以低通滤波器为基础来讨论逼近函数,而高通、带通、带阻滤波器则可用变换方法有低通滤波器映射而得到。一种是巴特沃斯低通逼近,另一种是切比雪夫低通逼近。本次课程设计采用巴特沃斯低通逼近。
1.3 图像数据采集简介
1.3.1 灰度图像
本次课程设计要求应用MATLAB的相关函数对二维图像进行图像处理,在具体编程之前必须选取一副黑白图片进行相应的函数处理。在数字图像使用中,图片可以分为真彩图像和灰度图像两种。
在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像,灰度图像在黑色与白色之间还有许多级的颜色深度,通常每个采样像素用8位的非线性尺度来保存,这样可以有256级灰度。这种精度刚刚能够避免可见的条带失真,而且易于编程。
真彩色是指图像中的每个像素值都分成R、G、B三个基色分量,每个基色分量直接
2
武汉理工大学《MATLAB》课程设计报告
决定其基色的强度,这样产生的色彩称为真彩色。计算机表示颜色也是用二进制。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 噪声简介
实际获得的图像一般都会因受到某种干扰而含有噪声,这些噪声主要来自敏感元器件的内部噪声、相片底片上感光材料的颗粒、传输通道的干扰及量化噪声等。噪声的产生通常是随机的,其产生原因决定了噪声的分布特性及它和图像信号的关系,有些是相关的,有些是相互独立的。
根据噪声和信号的关系可以将噪声分为两种形式:加性噪声和乘性噪声。加性噪声即噪声与图像信号f(x,y)无关,信道噪声及扫描图像时产生的噪声都属于加性噪声。乘性噪声即噪声与图像信号相关,可能是某像素处的噪声只与该像素的图像信号相关,也可能是某像点处的噪声与该像点及其邻域的图像信号相关,点扫描图像中噪声、电视扫描光栅和胶片颗粒噪声都属于乘性噪声。
3
武汉理工大学《MATLAB》课程设计报告
另外,根据噪声服从的分布还可以分为高斯噪声、泊松噪声和颗粒噪声等。高斯噪声即一种概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。 高斯白噪声包括热噪声和散粒噪声。椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由于图像切割引起。乘性噪声一般由信道不理想引起,其与信号的关系是相乘,信号在它在,信号不在它也就不在。
4
武汉理工大学《MATLAB》课程设计报告
2 MATLAB的基本运算
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进行微分计算示例及其结果如下所示:
5
武汉理工大学《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:
6
武汉理工大学《MATLAB》课程设计报告
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进行矩阵最大值及最小值计算示例及其结果如下所示:
7
武汉理工大学《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每一列方差的行向量。
8
武汉理工大学《MATLAB》课程设计报告
使用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求矩阵的逆矩阵示例及其结果如下所示:
9
武汉理工大学《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中求解一个系统用左除比用逆和乘法所需的运算次数要少。
10
武汉理工大学《MATLAB》课程设计报告
使用MATLAB进行矩阵相乘运算示例及其结果如下所示:
2.2.8 矩阵的幂运算
使用MATLAB进行矩阵的幂运算示例及其结果如下所示:
2.3 多项式的基本运算
2.3.1 多项式的加、减、乘、除运算
使用MATLAB进行多项式的加、减、乘、除运算示例及其结果如下所示:
11
武汉理工大学《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进行多项式的求导、求根、求值示例及其结果如下所示:
12
武汉理工大学《MATLAB》课程设计报告
2.3.3 多项式的部分分式展开
MATLAB中函数residue可以将多项式之比用部分分式展开,也可以将一个部分分式表示为多项式之比。其调用格式如下:
[r,p,k]=residue(a,b),返回多项式之比a/b的部分分式展开。 [a,b]=residue(r,p,k),返回部分分式的多项式向量。
使用MATLAB进行多项式的部分分式展开示例及其结果如下所示:
13
武汉理工大学《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和cubic spline为三次样条等三样。
使用MATLAB进行多项式的拟合示例程序及其结果如下及图2.1所示:
图2.1 多项式拟合运算示例运行结果
14
武汉理工大学《MATLAB》课程设计报告
使用MATLAB进行多项式插值运算示例程序及其结果如下及图2.2所示:
图2.2 多项式插值运算示例运行结果
15
武汉理工大学《MATLAB》课程设计报告
3 基于MATLAB的图像滤波设计
3.1 读入图像,加入高斯噪声、椒盐噪声、乘性噪声并对比
MATLAB中提供了给图像加入噪声的函数imnoise,其调用格式如下: J = imnoise(I,type)
J = imnoise(I,type,parameters)
其中参数type和parameters用于确定噪声的类型和相应的参数。
使用MATLAB读入图像,加入高斯噪声、椒盐噪声、乘性噪声的示例程序及运行结果如下及图3.1所示。从结果图中可以看出,加入高斯噪声的图像失真最为严重。
图3.1 图像经过三类加噪处理结果
16
武汉理工大学《MATLAB》课程设计报告
3.2 设计巴特沃斯低通滤波器对图像进行低通滤波处理
由于理想低通滤波器在截止频率处的陡峭特性,会引起滤波后的图像产生模糊现象,为解决此问题可采用巴特沃斯低通滤波器。
巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。
一个截止频率为D0的n阶巴特沃斯低通滤波器的传递函数如式3.1所示:
H(u,v)1 (式 3.1) 2n1[D(u,v)/D0]由于在通带与阻带间有个平滑的过渡带的存在,用巴特沃斯低通滤波器得到的输出图像保留了微量的高频信号,从而使图像的边缘模糊程度大大降低。
一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝、 三阶巴特沃斯滤波器的衰减率为每倍频18分贝、如此类推。巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数,振幅对角频率曲线都保持同样的形状的滤波器。只不过滤波器阶数越高,在阻频带振幅衰减速度越快。其他滤波器高阶的振幅对角频率图和低级数的振幅对角频率有不同的形状。
3.2.1 对加入高斯噪声的图像进行巴特沃斯低通滤波
使用MATLAB对加入高斯噪声的图像进行巴特沃斯低通滤波处理的示例程序及其运行结果如下和图3.2所示。
17
武汉理工大学《MATLAB》课程设计报告
图3.2 对加入高斯噪声后的图像进行四阶巴特沃斯低通滤波结果图
3.2.2 对加入椒盐噪声的图像进行巴特沃斯低通滤波
利用与3.2.2中类似的程序对加入椒盐噪声的图像进行巴特沃斯低通滤波(将程序中的y1=imnoise(x,'gaussian',0,0.02);改为y1=imnoise(I,'salt & pepper',0.02);),其运行结果如图3.3所示。
图3.3 对加入椒盐噪声的图像进行四阶巴特沃斯滤波结果图
18
武汉理工大学《MATLAB》课程设计报告
3.2.3对加入乘性噪声的图像进行巴特沃斯低通滤波
利用与3.2.2中类似的程序对加入乘性噪声的图像进行巴特沃斯低通滤波(将程序中的y1=imnoise(x,'gaussian',0,0.02);改为y1=imnoise(I,'speckle',0.02);imnoise),其运行结果如图3.4所示。
图3.4 对加入乘性噪声的图像进行巴特沃斯低通滤波结果图
3.2.4 结果分析
由资料得,图像高频分量对应于图像的细节信息,而低频分量对图像的整体视觉效果有着决定性的影响,而且阶数 n越高,其幅频特性越好,低频检测信号保真度越高。通过上述的运行程序结果图片可看出,巴特沃斯低通滤波保留了低频成分,故图像的整体效果保存下来,但是图像的细节信息没能很好的显示,出现模糊化。
3.3 设计高斯高通滤波器对图像进行处理
频域高通滤波是对图像特定频率范围内的低频成分进行衰减甚于截断,这种处理的效果是使能够代表图像细节、突变等的高频成分大大增强,使图像边缘部分更加清晰。该方法比较适合于抽取图像中物体的边缘或对物体勾边,使物体在背景中更加突出,从而使整幅图像更加清晰和鲜明。
高通滤波器的作用是滤去音频信号中的低音成分,增强中音和高音成分以驱动扬声器的中音和高音单元。高通滤波器实质上是一种信号的滤波器,其用途是信号的平滑处理。数字图像用于后期应用,其噪声是最大的问题,由于误差会累计传递等原因,很多图像处理教材会在很早的时候介绍Gauss滤波器,用于得到信噪比SNR较高的图像(反应真实信
19
武汉理工大学《MATLAB》课程设计报告
号),与此相关的有Gauss-Laplace变换。高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。它对去除服从正态分布的噪声很有效。
3.3.1 对加入高斯噪声的图像进行高斯高通滤波
使用MATLAB对加入高斯噪声的图像进行高斯高通滤波处理的示例程序及其运行结果如下和图3.5所示。
图3.5 对加入高斯噪声的图像进行三阶高斯高通滤波结果图
20
武汉理工大学《MATLAB》课程设计报告
3.3.2 对加入椒盐噪声的图像进行高斯高通滤波
利用与3.2.2中类似的程序对加入椒盐噪声的图像进行高斯高通滤波(将程序中的y1=imnoise(x,'gaussian',0,0.02);改为y1=imnoise(I,'salt & pepper',0.02);),其运行结果如图3.6所示。
图3.6 对加入椒盐噪声的图像进行高斯高通滤波结果图
3.3.3 对加入乘性噪声的图像进行高斯高通滤波
利用与3.2.2中类似的程序对加入乘性噪声的图像进行高斯高通滤波(将程序中的y1=imnoise(x,'gaussian',0,0.02);改为y1=imnoise(I,'speckle',0.02);imnoise),其运行结果如图3.7所示。
图3.7 对加入乘性噪声的图像进行高斯高通滤波结果图
3.3.4 结果分析
图像高频分量对应于图像的细节信息,而低频分量对图像的整体视觉效果有着决定性
21
武汉理工大学《MATLAB》课程设计报告
的影响。经过高斯高通滤波后,图像保留了一些细节信息,使图片的边缘信息增强,图中人物有一个整体轮廓,但是没有整体视觉效果,对于高斯和乘性噪声,滤波后由于整体图像偏暗,单纯从图像无法看出滤波效果;由于添加椒盐噪声后图像会出现白黑点,高斯高通滤波的图像中很明显的看出仍存在白点,说明椒盐噪声没有完全被滤除,对椒盐噪声来说,其滤除效果不理想。
3.4 采用维纳滤波对图像进行处理
从噪声中提取信号波形的各种估计方法中,维纳(Wiener)滤波是一种最基本的方法,适用于需要从噪声中分离出的有用信号是整个信号(波形),而不只是它的几个参量。假设维纳滤波器的输入为含噪声的随机信号。期望输出与实际输出之间的差值为误差,对该误差求均方,即为均方误差。因此均方误差越小,噪声滤除效果就越好。为使均方误差最小,关键在于求冲激响应。如果能够满足维纳-霍夫方程,就可使维纳滤波器达到最佳。根据维纳-霍夫方程,最佳维纳滤波器的冲激响应,完全由输入自相关函数以及输入与期望输出的互相关函数所决定。
维纳根据最小均方误差准则(滤波器的输出信号与需要信号之差的均方值最小),求得了最佳线性滤波器的参数,这种滤波器被称为维纳滤波器。维纳滤波器的优点是适应面较广,无论平稳随机过程是连续的还是离散的,是标量的还是向量的,都可应用。对某些问题,还可求出滤波器传递函数的显式解,并进而采用由简单的物理元件组成的网络构成维纳滤波器。维纳滤波器的缺点是,要求得到半无限时间区间内的全部观察数据的条件很难满足,同时它也不能用于噪声为非平稳的随机过程的情况,对于向量情况应用也不方便。因此,维纳滤波在实际问题中应用不多。
MATLAB图像处理工具箱中的wiener2函数可以实现对图像噪声的自适应滤除。wiener2函数根据图像的局部方差来调整滤波器的输出,当局部方差较大时,滤波器的平滑效果较弱,当局部方差较小时,滤波器的平滑效果较强。实际上,维纳滤波器是另外一种线性平滑滤波器,也是一种自适应滤波器。
3.4.1 对加噪后图像采用维纳滤波器处理
使用MATLAB分别对加入高斯噪声、椒盐噪声、乘性噪声的图像采用维纳滤波器进
22
武汉理工大学《MATLAB》课程设计报告
行滤波程序及结果如下和图3.8所示。
图3.8 经过三类加噪后图像通过维纳滤波器滤波结果图
3.4.2 结果分析:
由上述结果图可以看出,维纳滤波作为含噪波形中的最佳滤波,比一般的线性滤波器效果都好,不仅保留了图像边缘部分和高频部分(即细节部分),而且尤其对处理乘性噪声具有最佳效果。
但维纳滤波对椒盐噪声效果不是很明显。
23
武汉理工大学《MATLAB》课程设计报告
3.5 采用中值滤波对图像进行处理
中值滤波也是一种典型的低通滤波器,主要目的是保护图像边缘,同时也能去除噪声,也就是说,能够在抑制随机噪声的同时不使图像边缘模糊。与加权平均方式的线性平滑滤波不同,中值滤波是将邻域中的像素按灰度级排序,取其中间值作为输出像素。中值滤波的效果依赖于两个因素:邻域的空间范围和中值计算中涉及的像素数。
中值滤波的应用非常广泛,因为对于很多种随机噪声,它都有良好的去噪能力,且在相同尺寸下比线性平滑滤波引起的模糊更少。中值滤波不影响阶跃函数和斜波函数,周期小于m/2的脉冲将抑制,三角函数顶部变平。因此可以消除噪声。中值滤波尤其对单极或双极脉冲噪声非常有效。最大值滤波对发现图像中的最亮点非常有用。同样,因为椒盐噪声是非常低的值,作为子图像区域的最大值选择结果,它可以通过这种滤波消除;最小值滤波对发现图像中的最暗点非常有用。同样,作为最小值操作的结果,它可以用来消除椒盐噪声。中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
综上所述,中值滤波法对消除椒盐噪音非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大。
中值滤波的实现方法步骤:(1) 通过从图像中的某个采样窗口取出奇数个数据进行排序;(2) 用排序后的中值取代要处理的数据。
3.5.1 对加噪后图像采用中值滤波器处理
使用MATLAB分别对加入高斯噪声、椒盐噪声、乘性噪声的图像采用中值滤波器进行滤波程序及结果如下和图3.9所示。
24
武汉理工大学《MATLAB》课程设计报告
图3.9经过三类加噪后图像通过维纳滤波器滤波结果图
3.5.2 结果分析
中值滤波器的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围像素接近的值,从而可以消除孤立的噪声点。由于它不是简单的取均值,所以产生的模糊比较少。经medfilt2函数处理椒盐噪声后的图像几乎复原了原始图像,其效果比相同条件下的高斯噪声及乘性噪声处理要好很多。
3.6 几种滤波方式比较
综合分析上述各幅图像我们可以得出结论:在处理椒盐噪声的问题上,中值滤波比其他三种滤波方式更优越;在处理乘性噪声的问题上,高斯高通滤波效果稍微好一点;而本设计提出的四种滤波方式都没能很好地对高斯噪声进行滤波。
25
武汉理工大学《MATLAB》课程设计报告
4心得体会
本次MATLAB课程设计的目地是为了提高我们应用MATLAB的函数功能实现图像的去噪能力。经过数日的学习操练,对MATLAB软件及其功能有了更深一层的认识,较好地达到了课程设计的目的。现总结如下:
首先是对于MATLAB程序语言的使用上有了很大的提高。MATLAB拥有数百个内部函数,使用户在使用时较为简单便捷,不用自己定义相关常用函数。但是,由于平时操练过少,对一些常用函数的用法只是一知半解。在添加各种噪声与滤波的时候,一开始不知道噪声函数和滤波函数的具体操作,所以难以下手。再者,在编程方面,由于学得不够扎实,因此,在编写程序时忽视了一些细小的地方(例如括号、引号,分号等),导致最后得不到相应的结果。
其次,通过这次课程设计,我对于用信息技术处理图像有了新的认识。以前只是很粗略的知道高斯噪声与普通滤波,但是不知道其他噪声的特点与其他滤波方式的运用场合。本次课程设计深入了解了高斯噪声、椒盐噪声、乘性噪声的特性,还有4种滤波方式的效果与最佳运用场合。
第三,对书本上的理论知识有了更深刻的理解。在程序的编写过程中不断利用课堂所学理论知识对电路进行调整和修改;最终实现设计目的过程是自己从另一个层面又一次学习的过程。
这次课程设计,也折射出学习中我的诸多的不足。由于对MATLAB的函数不够了解且对四种滤波方式没有很扎实的理论基础,导致在使用这些函数的时候往往有一种只追求效果不顾原理,虽然程序输出的图像符合要求,但是感觉还是有些过于表面了,对其真正的意义所在没有相关深入认识。关于这一点,在今后的学习工作中仍有待进一步提高,须不断努力。
26
武汉理工大学《MATLAB》课程设计报告
5参考文献
[1] 同济大学数学系编,高等数学上下册(第五版),高等教育出版社,2007 [2] 吴传生主编,经济数学.线性代数(第二版),高等教育出版社,2009
[3] 陈怀琛主编,MATLAB及在电子信息课程中的应用(第三版),电子工业出版社,2006 [4] 周开利,邓春晖主编,MATLAB基础及其应用教程,北京大学出版社,2007 [5] 王正林、刘明编著,精通matlab 7,电子工业出版社,2006 [6] 郑阿奇,MATLAB实用教程[M],电子工业出版社,2007.
[7] 余成波,数字图像处理及MATLAB实现[M],重庆大学出版社,2003.6. [8] 程佩青,数字信号处理教程第二版[M],清华大学出版社,2001.
[9] 陶泽明,基于MATLAB的车辆图像滤波[J],哈尔滨理工大学学报,2008,13(1):125-127. [10] 张鹏,分数阶高斯噪声随机数据仿真系统的设计与实现[D],华东师范大学.2007.
27
武汉理工大学《MATLAB》课程设计报告
本科生课程设计成绩评定表
姓 名 专业、班级 性 别 课程设计题目:基于MATLAB的图像滤波设计 课程设计答辩或质疑记录: 1、 什么是多项式的拟合? 答:a=polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式 的系数 ,相对应的次数为由高到低 多项式在x处的值y可用下面程序计算. y=polyval(a,x) 2、 实验时为什么要使用灰度图像? 答:此次MATLAB实验处理的是二维数组形式的数据。灰度图像属于这次课程设计所使用的二维图像,真彩图像属于多维图像。所以在数据采集时需要选取灰度图像或者将真彩图像转化为灰度图像。 3、 在高斯、椒盐、乘性噪声的处理上,低通滤波、高斯高通滤波、中值滤波和维纳滤波的处理效果如何? 答:在处理椒盐噪声的问题上,中值滤波比其他三种滤波方式更优越;在处理乘性噪声的问题上,高斯高通滤波效果稍微好一点;而本设计提出的四种滤波方式都没能很好地对高斯噪声进行滤波。 成绩评定依据: 最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年 月 日
28
因篇幅问题不能全部显示,请点此查看更多更全内容