基于MATLAB的图像滤波中值算法研究 .doc

上传人:yy****2 文档编号:97630532 上传时间:2024-06-19 格式:DOC 页数:27 大小:612.50KB
返回 下载 相关 举报
基于MATLAB的图像滤波中值算法研究 .doc_第1页
第1页 / 共27页
基于MATLAB的图像滤波中值算法研究 .doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《基于MATLAB的图像滤波中值算法研究 .doc》由会员分享,可在线阅读,更多相关《基于MATLAB的图像滤波中值算法研究 .doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 基于MATLAB的图像滤波中值算法研究摘 要使用一种图像处理的语言MATLAB语言,利用它所具有的图像处理工具箱,对图像进行中值滤波技术处理。结果表明,利用MATLAB语言对加噪图像进行滤波处理,具有速度快、编程简单、处理效果好的特点,且大大节省了编程时间,缩短了编程周期。在目前的研究基础上结合MATLAB编程软件以及图像滤波等相关知识,对图像处理工具箱进行图像滤波算法的研究与分析得出一些中值滤波特殊算法,并运用实例进行深入论证。关键词:MATLAB语言,图像处理,图像滤波,中值滤波MATLAB-basedAlgorithm For Image Filtering In ValueAbstr

2、actUsing an image processing language MATLAB, take advantage of its image processing Toolbox, image, median filtering technology processing-the result shows that using MATLAB on noise in an image, with a median filter processing speed, programming, better features, and less programming time, reducin

3、g the programming cycle. In the present study, based on the combined with MATLAB programming software and image filtering and other related knowledge, On the image processing Toolbox for image filtering algorithm and analysis have median filter special algorithm, and use an instance of the in-depth

4、evaluation.Key Words:MATLAB language; image filtering ; image processing; median filtering目录1 绪 论21.1选题的背景及研究状况21.2 MATLAB在图像滤波中应用的意义21.3 主要研究内容、方法与思想22 MATLAB和图像滤波器的知识32.1 MATLAB概况32.1.1 MATLAB的发展及其特点32.1.2 MATLAB的主要功能62.2图像滤波的概述72.3 常见滤波器的应用比较83 MATLAB中值滤波算法及其改进算法103.1 经典中值滤波算法103.1.1中值滤波的基本原理103.

5、1.2中值滤波的主要特性113.1.3中值滤波算法113.1.4中值滤波算法步骤123.1.5中值滤波算法改进123.2 MATLAB中值滤波的基本原理133.3 利用MATLAB实现图像自适应中值滤波143.4 自适应中值滤波与77中值滤波效果比较163.5基于噪声个数判断的中值滤波算法173.6改进型中值滤波算法183.6.1小波软阈值算法193.6.2小波硬阈值算法203.6.3基于噪声个数判断的改进型中值滤波214 结 论24参考文献25致 谢261绪 论1.1选题的背景及研究状况 图像采集过程中,不可避免的会产生噪声。这些噪声恶化了图像质量,使图像模糊,甚至淹没和改变特征,给图像分析

6、和识别带来困难,因此常采用滤波的方法来消除噪声。噪声信号的滤除主要有线性滤波和非线性滤波。线性滤波方法一般具有低通特性,而图像边缘信息对应于高频信号,因此线性滤波方法会导致图像边缘变模糊。中值滤波是一种较少边缘模糊的非线性滤波方法,不仅能够去除或者减少随机噪声和脉冲干扰,还能较好地保留图像边缘信息。但是标准的中值滤波方法,需要进行大量的排序工作,计算量很大。因此我们对标准中值滤波也在进行不但断的改进。1.2MATLAB在图像滤波中应用的意义应用MATLAB语言对图像进行滤波等一系列处理时具有编程简单、操作方便、处理速度快等特点。MATLAB语言的图像处理工具箱的功能非常强大,图像处理中经常用到

7、的技术和方法在这个工具箱都可以实现。所以,在对图像进行处理时,可以充分利用MATLAB的图像处理工具箱,使图像处理工作者可以从烦琐的编程工作中解脱出来。因此应用MATLAB语言对图像进行滤波并对其算法进行改进具有重要意义。1.3主要研究内容、方法与思想研究内容:利用MATLAB中图像处理工具箱进行中值滤波,研究与分析得出一些特殊算法,并比较各种算法的可行性。研究方法与思路:基于目前MATLAB中值滤波算法的基础上,对图像处理工具箱进行图像滤波算法的研究与分析得出一些特殊算法及应用。并运用实例进行深入论证,通过实际编程实验的持股各种滤波的特性,对其进行比较,已达到理论与实例应用融会贯通。2MAT

8、LAB和图像滤波器的知识2.1MATLAB概况2.1.1 MATLAB的发展及其特点随着计算机性能的不断提高,人们发现过程上的许多问题可以通过计算机强大的计算功能来辅助完成。如此一来,MATLAB软件强大的运算核心开始被关注。经过近20年的发展,MATLAB的核心被进一步完善和强化,同时许多过程领域的专业人员也开始用MATLAB构造本领的专门辅助工具,这些工具后来便发展为MATLAB的各种工具箱。特别一提的是,MATLAB是一种开放式的软件,任何人通过一定的程序都可以将自己开发的优秀的应用程序集加入到MATLAB工具的行列中。这样,许多领域前沿的研究者和科学家都可以将自己的成果集成到MATLA

9、B之中,被全人类继承和利用。因此,我们现在看到的MATLAB才会如此强大和丰富。MATLAB诞生在20世纪70年代,它的编写者是Cleve Moler博士和他的同事。1984年,Cleve Moler和John Little成立Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的开发。从此时开始,他们又推出了许多新版本,每一次版本的推出都使MATLAB有了长足的进步,界面越来越友好,内容越来越丰富,功能越来越强大。它的帮助信息采用超文本格式和FDF格式,可以很方便地阅读。MATLAB长于数值的计算,能处理大量的数据,而且效率比较高。MATLAB产品族支持研究从概念设计

10、、算法开发、建模仿真、实时实现的理想的集成环境。无论是进行科学研究还是产品开发,MATLAB产品族都是必不可少的工具。MATLAB产品族可用来进行:数据分析、数值和符号计算、工程与科学绘图、控制系统设计、数字图像信号处理、财务工程、建模、仿真、原型开发、应用开发、图形用户界面设计等。MATLAB产品族广泛地应用于包括信号与图像处理、控制系统设计、通信、系统仿真等诸多领域。开放式的结构使MATLAB产品族和容易针对特定的需求进行扩充,从而在不断深化对问题的认识的同时,提高自身的竞争力1。MATLAB语言有不同于其他高级语言的特点,它被称为第四代计算机语言。正如第三代计算机语言如FORTRAN语言

11、与C语言等使人们摆脱了对计算机硬件的操作一样,MATLAB一样使人们从繁琐的程序代码中解放出来。它的丰富的函数使开发者无需重复编程,只要简单地调用和使用即可。MATLAB语言最大的特点是简单和直接。MATLAB的摘要特点有:1. 编程效率高;2. 用户使用方便;3. 扩充能力强,交互性好;4. 移植性好,开放性好;5. 语句简单,内涵丰富;6. 高效方便的矩阵和数组运算;7. 方便的绘图功能;MATLAB自问世一来,又推出了许多新版本,功能也越来越强大,得到了广泛使用。如2004年Math Works公司发布MATLAB最新产品7.0版。它已成为大学生、硕士生以及博士生必须掌握的基本技能。它的

12、特点在于全新的桌面及各种不同的领域的集成工具,使用户易于使用。多种新工具简化了一般的工作,如资料输入、快速分析,并可创造处高品质且具实用性的图表分析等。其他新的特色包括以下四个方面:1. 编程和数据类型:增加了变量名、函数名和文件名的最大长度;支持64位的文件偏移量,能够为大于2GB的数据文件实现低层次的I/O函数;支持有符号和无符号的64位整数;支持使用动态域名来访问和修改结构数组;简化了AND和OR逻辑运算;支持新的MATLAB定时器,而不是定时执行MATLAB命令;改进了音频支持;加强了警告和错误提示功能,支持格式化的字符串和消息标识符。2. 外部接口:改进了自动化客户接口,新的查看和修

13、改属性用户接口,增强了事件和例外句柄;增强了网络集成,读URL的内容,在MATLAB中发送E-mail及解压缩文件。3. 开发环境:新的M文件接口,能更好地理解M代码;新的启动按钮,易于执行共同的 命令;改进了文件和目录管理工具;增强了数组编辑器;改进了编辑和调试工具;改进与PC平台的控制接口;支持新的图形用户接口,可以从HDF或HDF-EOS文件导入数据;JVM1.3.1支持Window,Linux和Solaris平台。4. 数学:更快地计算许多函数,比如矩阵乘法、矩阵转置和线性代数运算等。鉴于以上优点,MATLAB在我国也开始流行,应用MATLAB的单位和个人急剧增加。全国许多高校已开设这

14、方面的课程,收到了良好的效果。可以预见,MATLAB将在我国科学研究和工程应用中发挥越来越大的作用。MATLAB是英文MATrix Laboratory(矩阵实验室)的缩写。1980年前后,时任美国墨西哥大学计算机科学系主任的Cleve Moler教授在给学生教授线性代数课程时,想教学生使用当时流行的线性代数软件包Linpack和基于特征值计算的软件包Eispack,但发现用其他高级语言编程极为不便,于是,Cleve Moler教授为学生编写了方便使用Linpack和Eispack接口程序并命名为MATLAB,这便是MATLAB的雏形。 早期的MATLAB是用FORTRAN语言编写的,尽管功能

15、十分简单,但作为免费软件,还是吸引了大批使用者。经过几年的校际流传,在John Little的推动下,有John Little、Cleve Moler和Steve Bangert合作,于1984年成立了Math Works公司,并正式推出MATLAB第1版(DOS版)。从这时起,MATLAB的核心采用C语言编写,功能越来越强,除原有的数值计算外,还增了图形处理功能。以后,MATLAB版本不断更新。Math Works公司于1992年推出了具有划时代意义的4.0版,并于1993年推出了其微机版,该版本可以在Windows3.X上使用,使之应用范围越来越广。1994年推出的4.2版扩充了4.0版的

16、功能,尤其在图形界面设计方面提供了新的方法。1997年春,MATLAB5.0版问世,5.0版支持了更多的数据结构,如单元数据、结构数据、多维数据、对象与类等,使其成为一种更方便、更完善的编程语言。1999年初推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能,随之推出的全新版本的最优化工具箱和Simulink3.0版达到了很高水平。之后,MATLAB还在不断改进和创新,2000年10月,MATLAB6.0版问世,在操作界面上有了很大改观,为用户的使用提供了很大的方便;在计算性能方面,速度变得更快,性能也更好;在图形用户界面设计上更趋合理;与C语言接口及转换的兼容性更强;与

17、之配套的Simulink4.0版的新功能也特别引人注目。2001年6月推出的MATLAB6.1版及Simulink4.1版,功能已经十分强大。2002年6月又推出了MATLAB6.5版及Simulink5.0版在计算方法、图形功能、用户界面设计、编程手段和工具等方面都有了重大改进。2004年7月,Math Works公司推出了最新的MATLAB7.0版,其中集成了最新的MATLAB7.0编辑器、Simulink6.0仿真软件以及很多工具箱。这一版本增加了很多新的功能和特性,内容相当丰富。2.1.2 MATLAB的主要功能MATLAB自1984年由Math Works公司推向市场以来,经历了20

18、多年的发展和竞争,现已风靡世界。可靠的数值计算和符号计算、强大的绘图功能、简单易学的语言体系以及为数众多的应用工具箱是MATLAB区别其他科技应用软件的显著标志。其功能特点如下:1. 数值计算和符号计算功能MATLAB以矩阵作为数据操作的基本单位,这使得矩阵运算变得非常简捷、方便、高效。MATLAB还提供了十分丰富的数据计算函数,而且所采用的数据计算算法都是国际公认的最先进、可靠的算法,其程序由世界一流专家编制和高度优化。高质量的数值计算功能为MATLAB赢得了声誉。2. 绘图功能利用MATLAB绘图十分方便,它既可以绘制各种图形,包括二维图形和三维图形,还可以对图形进行修饰和控制,以增强图形

19、的表现效果。MATLAB提供了两个层次的绘图操作。利用MATLAB的高层绘图操作,用户可以更灵活地对图形进行各种操作,为用户在图形表现方面开拓了一个没有束缚的广阔空间。3. 语言体系 MATLAB具有程序结构控制、函数调用、数据结构、输入/输出、面向对象等程序语言特征,所以使用MATLAB也可以像使用BASIC、FORTRAN、C等传统编程语言一样,进行程序设计,而且简单易学、编程效率高。因此,对于从事数值计算、计算机辅助设计和系统仿真等领域的人员来说,用MATLAB编程的确是一个理想选择。4. MATLAB工具箱MATLAB包含两部分内容:基本部分和各种可选的工具箱。基本部分构成了MATLA

20、B的核心内容,也是使用和构造工具箱的基础。MATLAB工具箱分为两大类:功能性工具箱和学科性工具箱。它们都是可读、可改的源文件,用户通过对源文件的修改或加入自己编写的文件去构成新的专用工具箱2。2.2图像滤波的概述在图像滤波中,目前有两种主要方法。一种是空域滤波,还有一种是频域滤波。频域滤波利用图像的频谱信息进行图像滤波处理。频域滤波以卷积理论为基础。根据卷积定理,设函数f(x,y)与线形位不变算子h(x,y)的卷积结果为g(x,y),则在频域有G(u,v)=H(u,v)F(u,v) (1)其中:G (u, v),H(u, v),F (u, v)分别是g(x, y) h(x,y),f(x,y)

21、的傅立叶变换。同时,若给定f(x,y)和H(u,v),则可由傅立叶反变换得到g(x,y),即g(x,y)=F-1H(u,v)F(u,v) (2)频域滤波的过程如下:(1) 对需要滤波的图像f(x,y)进行傅立叶变换,得到F(u,v);(2) 选定一个的滤波器函数H(u, v)与F(u, v)相乘得到G(u,v),滤除图像噪声;(3) 对G(u,v)进行傅立叶反变换,得到滤波后的图像g(x,y)。在进行图像频域滤波时,通常针对整幅图像,而且在确定转换函数时也是基于整个图像的统计量,这样进行的卷积运算,需要的处理时间长,并且难于保证某些局部区域内的噪声被完全滤除。空域滤波是在图像空间中利用模板进行

22、图像滤波,它同样也利用了卷积理论,使用模板对图像象素进行卷积运算。空域的滤波过程如下:(1) 将模板在图像中游动,顺序将模板中心与图像中的某个象素位置重合;(2) 将该象素值与对应模板值进行某种运算;(3) 将运算结果赋给图像中对应模板中心的象素。MATLAB全称是Matrix Laboratory(矩阵实验室),是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言1。图像在理论上是一种二维连续函数,在计算机上处理图像,首先要对其在空间和亮度上进行数字化,即图像的采样和量化,得到一幅离散化成MN样本的数字图像,显然用矩阵来描述该数字图像是最直观最简便的了。而MATLAB的长处就是处理

23、矩阵运算,MATLAB软件还具有针对不同应用学科的工具箱(toolbox),其中图像的处理工具箱(Image Processing Toolbox)是由一系列支持图像处理操作的函数组成,可以滤波器设计等图像处理操作,支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读、写和显示。2.3常见滤波器的应用比较常见的滤波器有均值滤波器、中值滤波器、维纳滤波器等。前两者属于空域滤波的范畴,维纳滤波属于一种自适应的频域滤波。现分别用这几种滤波器对图像进行去噪处理,对比其处理效果

24、。下面用滤波器去图像噪声(分别用均值滤波,中值滤波,及维纳滤波器去除加入高斯噪声的图像),程序如下:I=imread(C: );%加入高斯噪声J=imnoise(I,gaussian,0,0.005) ;%进行均值滤波h=f special(average,3);I2=uint8(round(filter2(hI);%进行中值滤波I3=medfilt2(J,3,3);%进行维纳滤波I4=wiener2(J, 3,3);subplot(2,3,2), imshow(J),title(含噪声图像a)subplot(2,3,3),imshow(I2), title(均值滤波后图像b)subplot(

25、2,3, 4),imshow(I3),title(中值滤波后图像c)subplot(2,3,5),imshow(I4), title(维纳滤波后图像d)滤波前后的对比效果如图2-1所示。观察滤波前后的对比效果得知,在这种情况下,均值滤波的滤波效果比较好,能够保持原来图像的特点和层次,中值滤波维纳滤波效果损失了图像的层次,图像的部分细节损失.所以,在进行车辆图像滤波时,如应用传统方式,应首选均值滤波。 (a)含噪声图像 (b)维纳滤波后图像 (c)均值滤波后图像 (d)中值滤波后图像图2-1常见滤波器的滤波效果比较组图3MATLAB中值滤波算法及其改进算法3.1经典中值滤波算法中值滤波(Medi

26、an filtering)对应的中值滤波器(Median filter)是非线性滤波器,是一种典型的空域低通滤波器。在一定条件下,中值滤波可以克服线性滤波器如邻域平均滤波、最小均方滤波等带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。众多研究表明,中值滤波器是一种优化的保持边缘、滤除脉冲干扰的滤波器。3.1.1中值滤波的基本原理中值滤波是一种非线性滤波方法,在一定条件下可以克服线性滤波器处理图像细节模糊的问题,但是对点、线、尖顶等细节较多的图像,则会引起图像信息的丢失3。中值滤波的基本思想是把局部区域的像素按灰度等级进行排序,取该邻域中灰度的中央值(中值)作为当前像素的灰度值。以

27、二维图像为例,设原始图像为f(x,y),含有噪声的图像为g(x,y),代表以当前点(x,y)为中心的子窗口的尺寸, (x,y)是f(x,y)在点(x,y)处的估计值,则有通常要求1/2窗宽大于噪声的延续宽度,由于中值是第(nSxy+1) /2个最大值,因此需要搜索3(nSxy2-1) /8次。通过计算可知,随着窗口尺寸的增加,比较次数将快速增多,因而二维中值滤波器的窗口形状和尺寸的选择对滤波效果的影响很大。对于不同的图像内容和要求,应采用不同的形状和尺寸。窗口尺寸需要由小到大逐步增加点数,直到效果满意为止。一般而言,对于变化缓慢且具有较长轮廓线的物体图像,可采用方形或圆形窗口,而对于具有尖角的

28、物体图像,则采用十字形窗口4。虽然中值滤波能滤除图像中相对较小的噪声,但因为该算法的窗口尺寸一经选定,即对所有像素均采用同一模板进行处理,所以无论窗口范围内噪声点或大或小,都会导致图像模糊。当图像噪声密度较大,有很多彼此靠近的噪声点时,标准的中值滤波效果较差。标准的中值滤波运算简单,便于实现,是抑制噪声的一种方法。当正负脉冲噪声概率(Pa和Pb)均小于0.2时,中值滤波是可用的,而当脉冲噪声在空间出现的概率较大时,使用中值滤波可能产生较严重的失真5-6。3.1.2中值滤波的主要特性(1) 边缘保护:边缘图像是指一幅图像在一条线的一边所有点具有公共值,在这条线的另一边所有点具有公共值b,且。 (

29、2) 中值滤波的输出与输入噪声的密度分布有关,对于脉冲宽度小于1/2,相距较远的窄脉冲干扰,中值滤波的效果比较明显。(3) 采用总体试验观察,由中值滤波的频谱曲线可知中值滤波的频谱特性H起伏不大,均值比较平坦,可以认为信号经中值滤波后,频谱基本不变。(4) 对于某些特定的输入信号,例如单调增加或单调减少的序列,中值滤波后的信号仍然不变。虽然标准的中值滤波技术在衰减噪声的同时较好的保护图像边缘,但由于其考虑滤波窗内输入数据的排序信息,而未考虑输入数据的时序源信息,故在图像处理中会产生边缘抖动,并会删除一些重要的图像细节,对一些噪声的抑制较差7。3.1.3中值滤波算法中值滤波是一种非线性滤波方法,

30、于1971 年首次提出9。它首先对邻域点的灰度值进行排序,然后选择中间值作为输出灰度值。中值滤波是一种可以有效地抑制图像噪声,提高图像信噪比的非线性滤波技术,相应的中值滤波器(Median Filter, MF)是一种非线性滤波器。中值滤波器的应用非常广泛,与均值滤波器和其它线性滤波器相比,中值滤波器可以有效地滤除脉冲噪声和随机噪声,同时能够很好地保留图像的边缘细节。然而中值滤波是对图像中所有的像素进行滤波,改变了图像中未被脉冲噪声污染的像素,所以在有效滤除脉冲噪声的同时,会出现对图像的边缘细节过度平滑。中值滤波算法的基本原理是把数字图像中一点的像素灰度值用该点的某个邻域内所有点的像素灰度值的

31、中值来代替。中值滤波的公式如下:g(x, y) = med( f (x I, y - j) I,j S (1)其中, g(x,y)和 f ( x, y) 为像素灰度值;S 为模板窗口。中值滤波要实现的是用中值g(x, y) 来代替中心点值f ( x, y) 。3.1.4中值滤波算法步骤中值滤波算法步骤为: (1)将滤波模板在图像中漫游,并将模板中心与图像中某个像素位置重合; (2)读取模板中各对应像素的灰度值; (3)将这些灰度值从小到大排列; (4)取这一列数据的中间数据赋给对应模板中心位置的像素;可以看出,中值滤波器的主要功能就是让与周围像素灰度值的差比较大的像素改取与周围像素接近的值,从

32、而可以消除孤立的噪声点。由于它不是简单的取均值,所以产生的模糊比较少。中值滤波器虽然对孤立的噪声点,即椒盐噪声、脉冲噪声具有很好的滤波效果,但对于随机高斯、均匀噪声的滤波效果并不理想。结合邻域均值滤波算法的特点,我们在中值滤波算法的基础上,研究设计了一种新的改进中值滤波算法,有效地改进了其滤波性能8。3.1.5中值滤波算法改进对于椒盐噪声来说,由于中值滤波模板的中值很大程度上不会是噪声,因此中值滤波能很好地消除它。当中心点值为噪声时,其值和中值数值相差较大,应该用中值来代替中心点值。但是,当中心点值不为噪声时,其值和中值数值相差不大,如果还用中值来代替心点值,那么虽然对于单个像素点来说,不会产

33、生较大的差异,但是如果对一整幅图像都进行这样的处理,这将在一定程度上使整幅图像变得模糊10。据此,可以对中值滤波算法做一些改进。首先,排序窗口内的图像数据,找到中值。然后将值和中心点值做差,将差值与事先设定的阈值T 进行比较,如果两值之差的绝对值|g(x, y - f (x, y) |大于等于阈值T ,则认为中心点图像数据是噪声, 用中值代替原数据值; 如果两值之差的绝对值|g(x, y - f (x, y) |小于阈值T ,则认为中心点图像数据是有效数据,保持不变。即 (2)其中,g(x ,y)如式(1)中定义。阈值 T 的选择应该针对不同的图像,根据经验或者实验进行选取。如果阈值选择过大,

34、将有可能滤除不掉噪声;如果阈值选择小,将仍会使图像变得模糊9。由于噪声和周围像素相差较大,也和中值相差较大,因此阈值一般选择在几十左右。这样,滤波处理之后的图像在除去噪声的同时会更加接近于原图像,能在更大程度上保留图像细节,使图像更清晰11。3.2 MATLAB中值滤波的基本原理中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。中值滤波的优点是运算简单且速度较快,在滤除叠加白噪声和长尾叠加噪声方面显示出了极好的性能。在某些条件下,中值滤波方法可以去除噪声,保护图像边缘,使图像较好地复原。它非常适用于一些线性滤波器无法胜任的数字图像处理的应用场合12。中值滤波的基本原理是把数字

35、图像或数字序列中一点的值用该点邻域中各点值的中值替代。其定义为:一组数,把n个数按值的大小顺序排列。xi1xi2xi3x iny=Med,=xi(n+12),(n为奇数)12xi(n2)+xi(n2+1), (n为偶数)y称为序列,的中值。例如有一个序列为(2,3,4,5,6),这个序列的中值为4。把一个点的特定长度或形状的邻域称作窗口。在一维情形下,中值滤波器是一个含有奇数个像素的滑动窗口。窗口正中间那个像素的值用窗口内各像素值的中值代替。设输入序列为xi,iI,I为自然数集合或子集,窗口长度为n,则滤波器输出为:y i=Medxi,iI=Medxi-uxixi+u其中,i I,u=(n-1

36、)2。将一维中值滤波器理论推广至二维,此时可以利用某种形式的二维窗口。设:y i j=Medx i j,(I,j)I2=MedAx(i+r),(j+s),(r,s)A,(I,j)I2其中,A为二维中值滤波窗口。中值滤波器用于图像处理中是这样进行的:设置一个滤波窗口,将其移遍图像(序列)上的点,且用窗口内各原始值的中值代替窗口中心点的值。3.3利用MATLAB实现图像自适应中值滤波结合MATLAB图像处理工具箱的函数,在原中值滤波程序的基础上,结合新算法进行改进,在不大量增加编程工作的基础上将工作重点放在如何进行算法改善上,可以明确直观地观察不同算法对于图像的处理效果,有助于算法的优化。相比用V

37、C+或C+语言编程来实现改进中值滤波算法而言,可以为图像处理工作者节省大量的时间和精力,从而提高图像处理的工作效率13。下面就以自适应中值滤波算法为例,添加新的库函数adpmedian,介绍如何对图像处理工具箱进行扩展,以实现数字图像自适应中值滤波。(1) 打开MATLAB的M文件编辑器,编写如下内容:程序主体如下:function f=adpmedian(g, S m ax)%ADPMEDIAN Perform adaptive median filtering%首先判断S m ax是否符合要求: Smax应该是大于1的奇数if(S m ax1.)endM,N=size(g);%初始化。f=

38、g;f(: )=0;already Processed=false(size(g);%开始滤波。for k=3: 2: S m ax%相当于k* k的极小值滤波Z min=ordfilt2(g,1,ones(k,k),symmetric);%相当于k* k的极大值滤波Z max=ordfilt2(g,k* k,ones( k,k),symmetric);% k* k的中值滤波Z med=medfilt2(g,k,k,symmetric);%判断Z med是否为一脉冲Process U sing Level B = ( z med z min) & ( z maxz med) & already

39、 Processed;%判断Z ,x,y是否为一脉冲zB=(gzmin)&(zmaxg);out put Z x y=process U sing Level B& z B;out put Z med=process Using Level B& z B;%输出一个不变的像素值Z x,y来代替邻域中值作为输出f(out put Z x y)=g(out put Z x y);%输出中值滤波的值作为输出f(out put Z med)=z med(out put Z med);already Processed=already Processed |process Using Lev-el B;

40、if all(already Processed(: )break;endend这个函数中调用了ordfilt2和medfilt2两个函数。这样方便了编程,简化了编程过程。其中ordfilt2(x,n, s)和medfilt2(x, m n)都是MATLAB图象工具箱中的函数,前者作用是对图象矩阵x的每一元素作如下处理:按由小到大的顺序取邻域s中的第n个元素进行替换。后者是用指定大小为mn的窗口对图象x进行中值滤波。(2) 选择File/Save命令,将所有文件保存在磁盘中,并命名为adpmedian.m.将它保存在默认目录下,并注意文件命名和函数名尽量保持一致,以便后面调用。(3) 调用时,

41、只需直接调用工具箱里自带的函数和编写的扩展函数。3.4自适应中值滤波与77中值滤波效果比较下面举例对加噪的图像进行7*7中值滤波和自适应中值滤波:%读取原图像A = inread(eight t if),figure;%显示原图像imshow(A)%对原图像添加辣椒噪声B = imnoise (A,salt&pepper, 0.25);figure;%显示加噪图像imshow(B)%对加噪图像进行中值滤波,滤波窗口为7 7C =Medfilt2 (B,7 7,symmetric);%显示滤波后图像imshow(C) %对加噪图像进行自适应中值滤波,滤波窗口为7 7D=ad p median (

42、B,7)figure;%显示滤波后图像imshow(D) %测试Medfilt2(B,7 7)函数运行时间tic,Medfilt2(B,7 7,symmetric); toc; %测试adp median(B,7)函数运行时间tic, adp median (B,7); toc; 图3-2原始图象 图3-3加入强度为0. 25椒盐噪声的图象 图3-477中值滤波后的图像 图3-5自适应滤波后的图像图3-3显示了被“椒盐”噪声污染了的图像,结果比较见图3-2与图3-5,该噪声的概率为Pa=Pb=0.25。在这里噪声水平非常高,能够模糊图像的大部分细节。作为比较的基础,图像首先用77的中值滤波器进

43、行滤波,消除大部分可见的脉冲噪声痕迹(见图3-4)。虽然噪声被有效消除了,但是滤波器在图像上也引起了明显的细节损失。图3-5显示了使用Sma =7的自适应中值滤波器的效果,噪声消除水平同中值滤波器相似。但是,自适应滤波器保持了点的尖锐性和其细节,可以看出,其改进是很明显的。另外,通过两个函数的运行时间可以看出,自适应滤波器要花费中值滤波器10倍多的处理时间,对于不是很大的图像这还是可以接受的,随着计算机速度日益提高,这个问题也会迎刃而解。3.5基于噪声个数判断的中值滤波算法对于脉冲噪声,中值滤波算法具有明显的优势,但是仅采用单一的中值滤波算法对图像进行去噪,将不可避免地丢失图像的部分边缘细节,

44、造成视觉效果的模糊。为了在提取噪声图像边缘细节的同时能将边缘与噪声分开,分析如下33的窗口:(1)如果当前的中心像素点为平坦区域像素点,则其邻域内绝大部分像素点的灰度值应与其接近,即使存在1个或2个噪声点,但是它们之差的绝对值大于某一阈值M的个数cnt不会大于2;(2)如果当前的中心像素点为图像边缘点,则其邻域内像素点的灰度值将大约有5个和它接近,而另外4个则差异较大,它们之差的绝对值大于某一阈值M的个数cnt将大于4;(3)如果当前的像素点为噪声点,即使它的邻域内还有1个或2个像素灰度值和它接近的噪声点,但是它们之差的绝对值大于某一阈值M的个数cnt将不会少于6。基于以上假设,可以将噪声图像

45、分为平坦区域、图像边缘和噪声点3部分。对噪声点进行中值滤波,而对其它点进行保留。通过基于噪声个数判断的中值滤波算法可以有效地提取噪声图像的边缘细节,抑制大量的噪声点,提高去噪后图像的清晰度。3.6改进型中值滤波算法小波分析是20世纪80年代中期发展起来的一门新兴学科,由于小波具有良好的时频特性,因而被广泛应用于去噪领域。目前,小波域内的图像去噪已经成为一个最的研究热点。Donoho提出的小波软阈值算法对高斯白噪声具有很强的抑制效果,能够改善图像的信噪比,但同时也存在着图像边缘细节模糊以及对脉冲噪声基本无效的缺陷。当噪声图像中含有的噪声为高斯白噪声和脉冲噪声时,应该分别进行分析。对于高斯白噪声,

46、它对所有小波系数的影响都是相同的,并且对信号低频成分的影响较小,因此可以通过平滑运算来有效地降低高斯白噪声。而脉冲噪声只影响少数的小波系数,使它们发生较大的变化。由于图像的边缘细节信息主要分布于高频部分,而噪声也分布于高频部分,因此脉冲噪声对图像信号的高频信息即边缘细节影响较大,并会通过平滑运算将其影响扩散到周围的像素,所以对脉冲噪声的处理如果也采用单一的阈值算法显然不太合适。文献在小波软阈值算法的基础上,提出一种基于噪声个数判断的改进型中值滤波算法,该算法能对含有高斯白噪声和脉冲噪声的噪声图像完成去噪,可以更好地保留图像的边缘细节,提高图像去噪的效果。3.6.1小波软阈值算法小波软阈值算法的具体步骤如下:(1)对图像信号进行小波变换。(2)在小波域进行软阈值处理。设y(i,j)是噪声图像的小波系数,Thr为阈值,软阈值函数为:软阈值函数是将噪声图像的小波系数y(i,j)与所选定的阈值Thr进行比较,大于等于阈值的点,取该点与阈值的差;小于等于阈值相反数的点,取该点与阈值的和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁