1、第五章数字图像的预处理技术5.1 图像退化模型与噪声分类5.2 图像噪声的空间域滤波方法5.2.1 针对加性噪声的空间域滤波方法(1)自适应均值滤波器2自适应中值滤波器3自适应梯度倒数加权滤波器5.2.2 空间域滤波方法的 MATLAB 实现5.3 图像空间域滤波新方法探索5.3.1 中值滤波算法的研究1 噪声检测2 基于 数据逼近和细节保护规则函数的凸面代价函数与噪声恢复3 方法性能的仿真实验评价5.3.2 均值滤波算法的研究1 基于 RADON 变换的图像主纹理方向分析2 概率统计模型3 方法性能的仿真实验评价5.4 周期噪声与频域滤波5.5 小波滤波5.5.1 小波域去噪模型5.5.2
2、阈值的估计5.5.3 小波滤噪的 MATLAB 实现5.6 偏微分方程图像去噪5.7 边缘检测5.7.1 边缘检测的梯度算子1Roberts 算子 (,)(,)0gxyTdxy(5-116)2 Prewitt 算子3 Sobel 算子4 LOG 算子5 Canny 算子5.7.2 基于梯度算子的边缘检测 MATLAB 编程5.7.3Hough 变换与线检测第五章数字图像的预处理技术数字图像的预处理技术是图像处理与分析的基础,其处理结果对后序图像的处理与分析结果有非常大的影响。图像的预处理技术主要包括图像复原、图像增强两种操作,图像复原是通过使用退化现象的先验知识试图重建或恢复一幅退化图像,主要
3、包括几何畸变的修正、图像滤噪等,本书在第三章介绍了几何畸变的修正的基本内容。本章主要介绍图像滤噪的相关内容。图像增强是根据图像处理或分析的主要目标,以增强图像中相关的部分信息为主要目标的操作,主要包括图像锐化、边缘检测及基于图像直方图的图像增强等。在第三章介绍了基于图像直方图的图像增强技术。本章主要介绍图像图像锐化、边缘检测的相关内容。5.1 图像退化模型与噪声分类在图像生成与传输过程中,由于成像系统与通讯信道各种因素的影响,可能使图像质量降低。这种图像质量的降低,被称之为“退化” 。图像模糊、失真、附加噪声等都是图像退化的典型表现。图像复原是利用退化过程的先验知识使已被退化的图像恢复本来的面
4、目,从而改善图像的质量。图像复原可以看成是退化的逆过程,因此了解图像的退化是进行图像复原的基础。一般来说,图像的退化过程可以描述为如下的数学表达式:(5-1),gxyHf式中, 是原图像, 是综合退化因子, 是退化后的图像。通常,图像,fxy,gxy可以表示成:(5-2),fxyf d式中, 是像素点的特征函数, 为冲击响应。为了简化问题,假定,fxy成像系统是线性的。实际上,一般情况下,退化因子对图像的各个像素点所产生的影响是相同的,呈现出线性的规律。这样,式(5-2)可以表示为:,gxyHfxyd(5-3)令 ,称为成像系统的冲击相应,也叫做点扩散函数, ,hxyxy(PSF)。若成像系统
5、是线性移不变系统,则退化图像可以用 和 的卷积表示如下:fh(5-4), ,gfhdxy此外,如果受到加性噪声 的干扰,则图像的退化模型可表示为见图 5.1:nxy(5-5),fn如果噪声类型为乘性噪声,则图像的退化模型可表示为:(5-6),1,gxyfhxy从数学上来说,图像退化是卷积运算和加噪运算的组合,如果可以施行去卷积和去噪声的操作,退化的图像就可以复原见图 2.1。由此图像滤噪是图像复原的重要手段。(,)Hxy图像获取(,)fxy (,)gxy(,)nxy图 5.1 图像退化模型噪声可以理解为不可预测,只能用概率统计方法来认识的随机误差,因此将图像噪声看成是多维随机过程是合适的,描述
6、噪声完全可以借用随机过程及其概论分布函数。图像噪声按其产生的原因可分为内部噪声与外部噪声;从统计特性可分为平稳噪声与非平稳噪声,平稳噪声统计特性不随时间变化,而非平稳噪声统计特性是时间的函数;按噪声与信号的关系可分为加性噪声与乘性噪声。基于前面的假设,所关心的空间噪声描述符是上面所提及模型的噪声分量灰度值的统计特性。它们可以被认为是由概率密度函数(PDF)表示的随机变量,下面是图像处理常见的噪声分布类型。5.1.1 数字图像常见的噪声数字图像常见的噪声分布类型有 Gaussian 噪声分布、瑞利噪声分布、伽马(厄兰)噪声、指数分布噪声、对数正态分布噪声、脉冲噪声分布等。一般来说,高斯噪声可以近
7、似描述在低照明水平图像传感器成像产生的噪声,椒盐噪声可以模拟不完备的开关设备产生的噪声,瑞利噪声产生于波段成像,而指数与伽马(厄兰)噪声可以描述激光成像产生的噪声。照像乳胶中的银粒大小产生的噪声可以用对数正态分布噪声描述。图 5.2 给出了Lena 图片感染各种噪声的结果。1Gaussian 噪声分布这是一种常见的噪声模型,大多数噪声可近似认为满足高斯分布,而且高斯分布比较容易进行数学分析。设随机变量 满足高斯分布,则其概率密度函数为:z(5-7)21exp2pz其中, 表示图像的灰度值, 表示期望值, 表示 的均方差。如果 服从式(2-7)分z zz布时,其值有 70%落在 范围内,且有 9
8、0%落在,范围内。2,2瑞利噪声分布若随机变量 满足瑞利分布,则其概率密度函数为:z(5-8)azbazzbp0exp22的均值和方差为:z42ba3伽马(厄兰)噪声伽马噪声的 PDF 由下式给出:(5-9)00!1zebzapaz其中 , 为正整数。密度的均值和方差为:0a2ab尽管式(2-9) 经常被用来表示伽马密度,严格地说,只有分母为 时伽马函数才是正确b的。当分母如上式所示时,该密度近似为厄兰密度。4指数分布噪声指数噪声的 PDF 可由下式给出:(5-10)00zazp其中 。概率密度函数的期望值和方差为:0a21a指数分布的概率密度函数是当 时爱尔兰概率分布的特殊情况。1b5均匀分
9、布噪声均匀分布噪声的概率密度可由下式给出:(5-11)其 他0bzabzp概率密度函数的均值和方差可由下式给出:12ab6脉冲噪声分布脉冲噪声的概率密度函数如下:(5-12)0abpzz其 他如果 ,灰度值 在图像中将显示为一个亮点,相反, 将显示为一个暗点。若 或babaap为零,则脉冲噪声称为单极脉冲。如果 和 均不可能为零,尤其是它们近似相等时,p apb脉冲噪声值类似于随机分布在图像上的胡椒和盐粉微粒。由于这个原因,双极脉冲噪声也称为椒盐噪声。有时也称为散粒和尖峰脉冲。脉冲噪声可以是正,也可以是负。因为脉冲干扰通常与图像信号的强度相比较大,因此,在一幅图像中,脉冲噪声总是数字化为最大值
10、(纯白或纯黑) 。这样,通常假设 和 是饱和值,从某种意义上看,在数字化图像中,ab它们等于所允许的最大值和最小值。由于这一结果,负脉冲以一个黑点(胡椒点)出现在图像中,正脉冲以一个白点(盐点)出现在图像中。对于一个 8 位图像,这意味着 ,0a。25b7对数正态分布噪声对数正态分布噪声概率密度函数如下:(5-13 )2ln()/()1()2zabpze0z5.1.2 用 MATLAB 模拟各类噪声MATLAB 工具中提供了 imnoise()对图像添加噪声,其调用格式为:g=imnoise(f,type,parameters);其中 f 为待感染的图像,g 为感染后的图像,参数 type 指
11、定感染噪声类型,取值为gaussian感染的是高斯噪声,取值为salt 其中,m 为高斯噪声的均值, var 为方差。由于 imnoise()函数要求被感染图像必须是取值为0,1之间的 double 类型,所以对应参数应考虑这一点,例如,对于 256 灰度图像,如果感染均值为 64、方差为 100 的高斯噪声,参数 。如果类型为264/25,var10/56m椒盐噪声,则需指定噪声感染的概率密度,调用格式为:g=imnoise(f, salt 其中,d 为感染率,如果省略 d,则默认值为 0.05。type 取值为localvar,则感染的是均值为零的高斯噪声,调用有如下两种方式:g=imno
12、ise(f, localvar,v);或者为:g=imnoise(f, localvar,image_intensity,v);第一种方式 v 为与图像 f 大小相同的数组,可以对每个像素规定其方差值。第二种方式v 为与图像 f 的灰度值取值范围大小相同的数组,intensity 为对应灰度值,可以对图像的每个灰度值规定其方差值。type 取值为 speckle ,则用方程 将均值为 0,给定gfn方差的均匀分布的乘性噪声感染到图像 f 中,调用格式为:g=imnoise(f, speckle,var);其中,参量 var 指定均匀分布噪声的方差,缺省值为 0.04。图 5.2 Lena 图片
13、感染各种噪声的结果例 5.1 对 Lena 利用 MATLAB 编程实现感染均值 0,方差 0.01 高斯噪声。(a) Lena 原图像 (b)感染均值 0,方差 0.01 高斯噪声(c)感染概率为 0.05的椒盐噪声(d)感染 a=0,b=0.01的瑞利噪声(e)感染 a=1,b=0.5 的对数正态分布噪声(f)感染 a=10 的指数噪声(h)感染 a=20,b=5 的厄兰噪声(i)感染均匀分布噪声(j)感染均匀分布,方差为 0.04 的乘性噪声程序如下:f=imread(E:matlab7lena.bmp);g=rgb2gray(f);g1=im2double(g);g1=imnoise(
14、g1,gaussian,0,0.01);imshow(g1,);执行结果见图 5.2(b)例 5.2 对 Lena 利用 MATLAB 编程实现感染噪声密度为 0.05 的椒盐噪声。程序如下:f=imread(E:matlab7lena.bmp);g=rgb2gray(f);g1=im2double(g);g1=imnoise(g1, salt imshow(g1);执行结果见图 5.2(c)虽然利用 MATLAB 提供的 imnoise()可以方便的模拟一些图像噪声,但不能模拟所有图像噪声类型。哪么如何利用 MATLAB 模拟已知概率密度函数的所有图像噪声类型,根据概率论的一个著名结论:即若
15、 是一个在区间(0,1)内均均分布的随机变量,则可以通w过下式获得具有指定概率累积分布函数(CDF)的随机变量 :z(5-14)()zF其中 为随机变量 的累积分布函数 CDF。哪么如何产生一个在区间(0,1)内均均()zFwz分布的随机变量,MATLAB 提供的随机函数可以产生一个在区间(0,1)内近似均均分布的随机变量,其调用格式为:w=rand(n,m);其中,参量 为产生的随机变量组成的矩阵的大小,另外一个生成随机变量的函数为,nmrandn(),其生成取值为(0,1)均值为 0、单位方差的正态分布随机变量,其调用格式为:w=randn(n,m);参量 与 rand()函数相同。由此,
16、只有已知噪声模型的概率分布函数,就可以计算,出其累积分布函数,然后利用式(5-14)可以产生符合概率分布函数随机噪声,如果是加性噪声,即可以利用下式完成对图像 的感染:x(5-15)r其中, 为产生的与图像 尺度相同的随机噪声。如对于瑞利噪声,根据式(5-8)可以求r得其累积分布函数为:(5-16)2()/1e,()0,zabzF根据式(5-14) ,得方程为:(5-17 )2()/1ezabw解方程得:(5-18 )ln(1)z则生成瑞利噪声的 MATLAB m 函数如下:Function r=rayleigh(m,n,a,b)% rayleigh generates an array of
17、 random numbers with rayleigh PDF% with m-by-n, whos elements are random numbers between 0,1 with % parameters a and b. If m=n=1, it generates a single random number.r=a+(-b*log(1-rand(m,n).0.5end5.2 图像噪声的空间域滤波方法图像退化是卷积运算和加噪运算的组合,如果可以施行去卷积和去噪声的操作,退化的图像就可以复原。当图像退化原因仅仅是感染噪声时,式(5.2)变为: (5-19),gxyfnxy由于
18、噪声项 是未知的,从 减去它们不是一个现实的选择。不同的噪声处理,nxy方法也不同,存在加性噪声时,可以选择空间域滤波方法。如果是周期性噪声,频域处理方法较为适合。5.2.1 针对加性噪声的空间域滤波方法对于感染加性噪声的图像,常用的空间域滤波方法有均值滤波器与顺序统计滤波器,均值滤波器是一种线性滤波器,而顺序统计滤波器是一种非线性滤波器。1 均值滤波器均值滤波器主要有算术均值滤波器、几何均值滤波器、谐波均值滤波器、逆谐波均值滤波器。(1)算术均值滤波器算术均值滤波器是最简单的均值滤波器,如果 表示中心在 的点、尺寸为xyS,xy的矩形子图像窗口的坐标组。算术均值滤波算法过程就是计算由 定义的
19、区域中被mn S干扰图像 的平均值。在任意点 处复原图像 的值就是用 定义的区域的像,gxy,fxy素计算出来的算术平均值。即:(5-20)xyStsgmnf,1,这个操作也可以用系数为 的卷积模板来实现。(2)几何均值滤波器用几何均值滤波器复原一幅图像由如下表达式给出:(5-21)mnStsxygxf1,其中每一个复原像素由子图像窗口中像素点的乘积并自乘到 次幂得出。几何均值滤1mn波器所达到的平滑度可以与算法均值滤波器相比,在滤波过程中可以丢失更少的图像细节。(3) 谐波均值滤波器谐波均值滤波器滤噪操作如下表示:(5-22)xyStstgmnf,1,谐波滤波器对于“盐”噪声、高斯噪声效果比
20、较好,但是不适合于“胡椒”噪声。(4)逆谐波均值滤波器逆谐波均值滤波器对一幅图像进行恢复操作依据如下公式:(5-23)xyxyStsQtsgf,1,其中 称为滤波器的阶数。这种滤波器适合减少或者在实际中消除椒盐噪声,当 为正数Q Q时,滤波器用于滤除“胡椒”噪声,当 为负数时,滤波器用于滤除“盐”噪声。当时,逆谐波均值滤波器退化为算术均值滤波器,当 时,它退化为谐波均值滤0 1波器。 2 顺序统计滤波器顺序统计滤波器的响应基于由滤波窗口包围的图像区域中像素点的排序结果,滤波器在任意点的响应由排序结果决定。主要有中值滤波器、最大值和最小值滤波器、中点滤波器、修正后的阿尔法均值滤波器等。(1)中值
21、滤波器中值滤波器是最著名的顺序统计滤波器,它的输出响应是窗口中像素排序结果的中值:(5-24)tsgmedianyxfxySts,像素的原始值包含在中值的计算结果中。因为它对很多随机噪声都有很好的去噪能力,且在相同窗口尺寸下比线性滤波器引起的模糊少,所以中值滤波器应用很普遍。中值滤波器对滤除单极或双极脉冲噪声效果非常好。(2) 最大值/ 最小值滤波器中值滤波器采用的是排序结果中的中值,而从基本的统计学上讲排序还有其它很多的可能性。当使用排序中的最大值时,得到最大值滤波器如下:(5-25)tsgyxfxySts,ma,这种滤波器在发现图像中的亮点非常适用。同样,因为胡椒噪声是非常低的值,最大值滤
22、波器是选择子图像 中的最大值,可以滤除胡椒噪声。xyS如果选择排序中的最小值,即为最小值滤波器: (5-26)tsgfxySts,in,这种滤波器发现图像中的暗点非常有用,使用最小值滤波器,可以滤除盐噪声。 (3)中点滤波器中点滤波器是取滤波器涉及范围内的最大值和最小值之间的中点:(5-27)xyxy StsSts ggyxf ,mina21,这种滤波器结合了顺序统计和求平均,对于高斯和均匀随机分布噪声有较好的效果。(4) 修正后的阿尔法均值滤波器假设在 邻域内去掉 最高灰度值的 和最低灰度值的 ,用 代xyS,gst2d2d,rgst表剩余的 个像素,根据这些像素的平均值形成的滤波器被称为修
23、正后的阿尔法均值mnd滤波器。(5-28)xyStsrtgdnyxf,1,其中 可以取 0 到 之间的任意整数。当 时,修正后的阿尔法均值滤波器退化d0d为算术均值滤波器;当 时,修正后的阿尔法均值滤波器退化为中值滤波器。12m修正后的阿尔法均值滤波器当 取其它值时,结合了均值滤波器与中值滤波器的优点,对d多种噪声感染形成的混合噪声非常有用。4 自适应滤波器以上提到的滤波器应用于图像时,并没有充分考虑图像的局部特征的变化,自适应滤波器基于由 矩形窗口 xyS定义的区域内图像的统计特性,具有更好的滤波性能。mn(1)自适应均值滤波器随机变量最简单的统计参量是均值和方差。因为它们是与图像状态紧密相
24、关的数据,这些参数是自适应滤波器的基础。均值给出了区域图像的灰度平均值的度量,而方差给出了这个区域的对比度的度量。滤波器作用于局部区域 xyS,在任何点 ,xy上的响应基于以下四个量:,gxy表示噪声图像在点 ,上的值2表示干扰 ,f以形成 g的噪声方差Lm表示在 xy上像素点的局部均值2L表示在 xyS上像素点的局部方差滤波器的输出响应如下:如果 为零,滤波器应该简单地返回 ,gxy的值。 (在零噪声情况下 ,gxy等于,fxy)如果局部方差和 2是高相关的,那么滤波器要返回一个 ,gxy的近似值。如果两个方差相等,滤波器返回区域 xyS上的算术平均值。 (在局部面积与全部图像有相同特性的条
25、件下,局部噪声简单地用求均值来降低)为了获得 ,fxy,基于这些假设的自适应表达式可以写为:(5-29)LLmyxgyxg,2在实际中对于式(5-29)的实现应构建一个测试,以便如果条件 2L发生,把比率设置成 1。这使该滤波器为非线性的,但它可以防止由于缺乏图像噪声方差的知识而产生的无意义的结果(即负灰度值) 。另一个方法是允许负灰度值,在最后重新标定灰度值。这个结果将损失图像的动态范围。2自适应中值滤波器中值滤波器在冲激噪声空间密度不大(根据经验,噪声感染概率小于 0.2) ,性能很好。自适应中值滤波器可以处理更大概率的冲激噪声,另外在平滑非冲激噪声时可以更好地保存细节,这是传统中值滤波器
26、做不到的。符号定义如下: xyZ表示在坐标 ,xy上的灰度值min表示窗口 S中灰度最小值a表示窗口 xy中灰度最大值ed表示窗口 中灰度中值ax表示窗口 xy的最大值自适用中值滤波器的工作在两个层次,A 层和 B 层,如下:A 层:if (ZminSmaxZxy=Zxy;elserepeat from the begin;B 层:if (ZminSmaxZxy=Zxy;elserepeat from the begin;该算法的主要目的是滤除椒盐噪声,平滑其它非冲激噪声,减小诸如边缘细化或粗化的失真。 minZ和 ax的值进行统计后被算法认为是类冲激式的噪声成分,即使它们在图像中不是最高和最
27、低的可能象素点。从算法中可以看到,A 层的目的是决定中值滤波器的输出 medZ是否是一个脉冲(黑或白) 。如果条件 minmaxedZ有效,则 med就不是脉冲。在该情况下就转到 B 层,检查一下窗口中心点 xy本身是否是一个脉冲,如果条件 inmaxxy为真,则xy也不是脉冲。在这种情况下,算法输出 xyZ本身。如果条件 iZ为假,像素值 Z是一个极值且算法输出中值 med。假设在 A 层找到一个脉冲,算法就会扩大窗口尺寸并重复 A 层。如果达到了最大的窗口尺寸还是能找到脉冲,算法就返回 xyZ值。注意:如果噪声概率过小或者 axS在允许的范围内越大,过早推出条件的可能性就越小。这应该是合理
28、的,随着脉冲密度的增大,需要更大的窗口消除尖峰噪声。3自适应梯度倒数加权滤波器 图像中往往存在相邻区域的变化大于区域内部的变化,在同一区域中间像素的变化小于边缘像素的变化。梯度值正比于邻域像素灰度级之差,即图像变化缓慢区域,梯度值小,反之则大。如果取梯度的倒数,以梯度倒数作权重因子,则区域内部的相邻点权重就大于外部像素点的权重。这种滤波器的主要贡献来自于区域内部的,对于保持图像的细节会更有效。下面以 的窗口为例,如下图所示。3(1,)Dij(1,)ij(,1)Dij,ij,ij,ij定义: (5-3(,)(,)(,gijmnijnij0)并规定 时, 。则窗口内每一个像素点对应的(,)(,0D
29、ijij(,)0gijm权值为:(5-31)1,)(,)(1),(,mnijwij rng最后的倒数加权滤波输出为:(5-32)1(,)(,)(,)mnyDijrwijDijmn式中 是中心像素占有的权值,可以通过调节 的值来控制周围各点对滤波作用。r r5.2.2 空间域滤波方法的 MATLAB 实现从上一节可以看出:空间域的滤波方法主要有线性与非线性两种,各类均值滤波是线性滤波器,而统计滤波器是非线性滤波器。均值滤波的主要思路是将像素 特定邻域(,)xy中每个像素与相应的系数想相乘,然后将结果累加,取平均做为点 的滤波结果。若邻域大小为 ,则需要 系数,由这些系数组成的 的矩阵称为滤波掩模
30、、滤mnnmn波窗口或为滤波模板。滤波过程是将滤波掩模的中心逐点移动到图像的每个像素处,然后将滤波掩模的系数与对应像素相乘,取其平均值即为中心点像素的滤波结果,这类似于信号分析中的相关运算,如果滤波掩模以中心对称,则此过程也可以理解成为信号分析的卷积过程。因为卷积是线性移不变系统的数学抽象,所以此类滤波方法是线性的。1线性滤波器的 MATLAB 实现MATLAB 工具箱提供了 imfilter()实现线性空间滤波,调用格式为:g=imfilter(f,w,mode,boundary_options,size_option);其中,参数 f 为待滤波图像, w 为滤波掩模矩阵,mode 规定了计
31、算方式,如果为 corr,则使用相关运算,如果是conv ,则使用卷积运算,默认值为conv 。boundary_options 决定了对边界像素的处理方式,如果为 p,则以值 p 来填充图像边界,如果为replicate,则以外边界像素值填充图像边界,如果为symmetric ,则通过镜像反射来生成边界像素值,如果为circular,则将图像边界看成为一个二维周期函数的一个周期来扩展。参数size_option 决定输出图像的大小,如果为full,则输出图像与扩展图像大小相同,如果是same,则输出图像与输入图像大小相同,缺省值为same。滤波过程的计算结果是双精度类型,但 imfilter
32、 函数会将结果转换为输入图像原有的数据类型,如果输入图像为整数型,则计算结果中超出取值范围的数据将以最大值或最小值代替,小数部分将会四舍五入。如果要求更高的精度,则在使用该函数之前,应将输入图像通过 imdouble()或 double 转换为double 类型。例 5.3 对例 5.1 中感染高斯噪声的 Lena 图像利用 MATLAB 编程应用均值滤波器进行滤波。编程如下: f=imread(E:matlab7lena.bmp); g=rgb2gray(f); g=im2double(f); g1=imnoise(g,gaussian,0,0.01); imshow(g1); w=ones
33、(3,3)/9; d=imfilter(g1,w,conv,replicate,same); figure; imshow(d,);该程序是生成 的滤波掩模,然后调用 imfilter 实现滤波,由于 imfilter 只是计算卷3积运算,所以要准确计算均值应除以滤波掩模的元素数,因此在生成由 1 组成的滤波掩模时,除以滤波掩模的元素数,执行结果见图 5.3(b)。w算术均值滤波器可以直接调用函数 imfilter()写成,但是几何均值滤波必须先通过数学变换才能调用 imfilter(),对式 (5-21)两边求对数,有:(5-33 ),log(,)log(,)xystSstfxmn则实现几何
34、均值滤波的程序如下: w=ones(3,3)/9; warning off d1=exp(imfilter(log(g1),w,replicate,same); warning on figure; imshow(d1,);执行结果见图 5.3(c)。根据式 (5-22),谐波均值滤波器相当于用滤波掩模的元素数除以原图像的倒数与滤波掩模的卷积运算结果,对应程序如下: w=ones(3,3); d2=3*3./imfilter(1./(g1+eps),w,replicate,same); figure; imshow(d2,);其中,eps 是 MATLAB 的最小常量,引入原因是以防某些像素值
35、为 0 造成分母为零,程序的执行结果见 5.3(d)。根据(5-23),逆谐波均值滤波器相当于原图像的 Q 次幂与滤波掩模的卷积运算结果除以原图像的 Q-1 次幂与滤波掩模的卷积运算结果。 ,对应程序如下: w=ones(3,3);q=3; d3=imfilter(g1).q,w,replicate,same); d4=imfilter(g1).(q-1),w,replicate,same);d3=d3./d4; figure; imshow(d2,);执行结果见图 5.3(e)。图 5.3 感染均值为 0,方差为 0.01 高斯噪声的 Lena 图片用线性滤波器的操作结果为了配合函数 imf
36、ilter()的使用,MATLAB 还提供了产生线性空间滤波器滤波掩模的函数 fspecial(),其调用格式为:w=fspecial(type,parameters);其中,参数type表示滤波器的类型,parameters 规定了对应类型滤波器的参数。 type可以取以下值:(1) average Average 规定产生矩形均值滤波器的滤波掩模,其调用格式为:w=fspecial(average,r,c);结果是产生 大小的均值滤波矩阵,如果省略参数 r,c,则缺省值为 。rc 3(2) disk disk 规定产生圆形均值滤波器的滤波掩模,其调用格式为:w=fspecial(disk,
37、r);结果是产生半径为 的圆形均值滤波掩模,如果省略参数 r,,则缺省值为 5。r(3) gaussian gaussian 规定产生 gaussian 低通滤波器的滤波掩模,其调用格式为:w=fspecial(gaussian,r,c,sig);结果是产生大小为 、标准差为 sig 的 gaussian 低通滤波器的滤波掩模,如果省略参数rcr,c,则缺省值为 ,标准差 sig 的缺省值 0.5。3(4) laplacian (a)感染均值 0,方差0.01 高斯噪声(b) 算术均值滤波器滤波结果(c) 几何均值滤波器滤波结果(d) 谐波均值滤波器滤波结果(e) 逆谐波均值滤波器滤波结果la
38、placian 规定产生大小为 的拉普拉斯滤波掩模,其调用格式为:3w=fspecial(laplacian,alpha);结果是产生 大小的拉普拉斯滤波矩阵,形状由参量 alpha 规定,缺省值 0.5。拉普拉斯3滤波矩阵与参量 alpha= 的关系是:(5-34 )141w(5) log log 规定产生高斯-拉普拉斯滤波矩阵,其调用格式为:w=fspecial(log,r,c,sig);结果是产生 大小的高斯-拉普拉斯滤波矩阵,高斯的标准差由参量 sig 给出,缺省值为rc0.5,如果省略参数 r,c,则缺省值为 。5(6) prewitt prewitt 规定产生 大小的 prewit
39、t 滤波掩模,其调用格式为:3w=fspecial(prewitt);(7) sobel sobel 规定产生 大小的 sobel 滤波掩模,其调用格式为:w=fspecial(sobel);(8) unsharp unsharp 规定产生 大小的非锐化滤波掩模,其调用格式为:3w=fspecial(unsharp,alpha);其中,参数 alpha 控制形状,取值为(0,1),缺省值为 0.2。(9) motion motion 规定产生一个图像运动滤波器,其调用格式为:w=fspecial(motion,len,theta);其中,参数 a len 是运动的像素数,缺省值为 9,thet
40、a 规定运动方向,即与水平方向的夹角,缺省值为 0。例 5.4 对例 5.1 中感染高斯噪声的 Lena 图像利用 MATLAB 编程应用大小为 、方差为50.6 的高斯滤波器进行滤波。编程如下: f=imread(E:matlab7lena.bmp); g=rgb2gray(f); g=im2double(f); g1=imnoise(g,gaussian,0,0.01); imshow(g1); w=fspecial(gaussian,5,5,0.6); d=imfilter(g1,w,replicate);figure; imshow(d,);程序的执行结果见图 5.4。图 5.4 感染
41、均值为 0,方差为 0.01 高斯噪声的 Lena 图片用大小为 、方差为 0.6 的高斯5滤波器操作结果2 顺序统计滤波器的 MATLAB 实现MATLAB 用于实现顺序统计滤波器的函数是 ordfilt2(),其调用格式为:g=ordfilt2(f,order,domain);其中,参量 f 为输入图像,order 指定了用邻域排序后的第多少位的像素做为输出图像的当前像素,排序的顺序是由小到大的升序。排序的邻域由参量 domain 给出。domain 是取值为 0 或 1,大小为 的矩阵,参预排序的像素是在 f 中,以当前像素为中心,domain 矩mn阵中值为 1 的对应像素。例如:最小
42、值排序滤波器可以用以下语句实现:g=ordfilt2(f,1,ones(m,n);其中,函数 ones(m,n)是产生一个 大小的、值为 1 的矩阵。最大值排序滤波器可以用n以下语句实现:g=ordfilt2(f,m*n,ones(m,n);例 5.5 对例 5.1 中感染噪声密度为 0.05 的椒盐噪声的 Lena 图像利用 MATLAB 编程应用各类排序滤波器进行滤波。程序如下:f=imread(E:matlab7lena.bmp); g=rgb2gray(f); g2=imnoise(g,salt imshow(g2);%最小值排序滤波器 d1=ordfilt2(g2,1,ones(3,
43、3); figure; imshow(d1);%最大值排序滤波器 d2=ordfilt2(g2,3*3,ones(3,3); figure; imshow(d2);%中值滤波器 d3=ordfilt2(g2,median(1:3*3),ones(3,3); figure; imshow(d3);%中点滤波器 f1=ordfilt2(g2,1,ones(3,3),symmetric); f2=ordfilt2(g2,3*3,ones(3,3),symmetric); d4=imlincomb(0.5,f1,0.5,f2); figure; imshow(d4);%d=4 的阿尔法均值滤波器g3=
44、im2double(g2); d=4; f1=imfilter(g3,ones(3,3),symmetric); for k=1:d/2f=imsubtract(f1,ordfilt2(g3,k,ones(3,3),symmetric);end d=4; for k=(3*3-(d/2)+1):3*3f=imsubtract(f1,ordfilt2(g3,k,ones(3,3),symmetric);end f=f./(3*3-d); figure; imshow(f);图 5.5 感染噪声密度为 0.05 的椒盐噪声的 Lena 图像应用各类排序滤波器进行滤波结果程序中函数 d4=imlin
45、comb(a,f1,b,f2)是求两幅图像的线性加权和,权因子为 a、b,函数imsubtract(f1,f2);是求两幅图像的差。为了使用的方便,MATLAB 提供了专门的中值滤波函数 medfilt2(),其调用格式为:(a) 噪声密度为 0.05的椒盐噪声 (b) 最小值排序滤波器滤波结果(c) 最大值排序滤波器滤波结果(d) 中值滤波器滤波结果(e) 中点滤波器滤波结果(f) =4 的阿尔法均值滤波器滤波结果g=medfilt2(f,m n,padopt);其中,参量 f 为待滤波图像, m n指定一个大小为 的邻域,缺省值为 ,padopt 指mn3定了边界图像的填充模式, zero
46、s用零填充, symmetric以镜像反射方式填充, indexed根据类型进行填充,如果 f 是 double 型,以 1 填充,否则以零填充,缺省为zeros 。3 自适应中值滤波器的 MATLAB M 函数中值与均值滤波器对图像的任何像素执行相同的操作,会损伤图像的细节,自适应中值滤波器是根据图像像素的具体情况,执行不同的操作,对于像素点,直接输出,对于噪声点,则以其窗口的中值代替,而且根据图像的局部情况采取不同大小的滤波窗口。自适应中值滤波器的 M 函数如下:function f=amedian(g,smax)if(smax1);endm,n=size(g);f=zeros(m,n);
47、ap=false(m,n);for k=3:2:smaxzmin=ordfilt2(g,1,ones(k,k),symmetric);zmax=ordfilt2(g,k*k,ones(k,k),symmetric);zmed=medfilt2(g,k k,symmetric);pub=(zmedzmin)zb=(gzmin)opzxy=pubopzmed=pubf(opzxy)=g(opzxy);f(opzmed)=zmed(opzmed);ap=ap|pub;if all(ap(:)break;endendf(ap)=zmed(ap);end其中,函数 false(m,n);是生成大小为 的值为 0 的矩阵。mn(a) 噪声密度为 0.05的椒盐噪声 (b) 图像 a 的滤噪结果 (c) 噪声密度为 0.1的椒盐噪声 (e) 图像 c 的滤噪结果 (f) 噪声密度为 0.2的椒盐噪声 (g) 图像 f 的滤噪结果 图 5.6 感染各种噪声密度的椒盐噪声的 Lena 图像应用自适中值滤波器滤波结果图 5.6 给出了感染不同密度