- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于×字形窗口的自适应中值滤波算法
录入:edatop.com 点击:
由于种种原因,图像在生成、传输、变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化。噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法。线性滤波方法一般具有低通特性,而图像的边缘信息对应于高频信号,因此线性滤波方法往往导致图像边缘模糊,不能取得很好的复原效果。中值滤波是一种使边缘模糊较轻的非线性滤波方法,是由Tukey发明的一种非线性信号处理技术,早期用于一维信号处理,后来很快被用到二维数字的图像平滑中。该算法不仅能够去除或减少随机噪声和脉冲噪声干扰,而且能够很大程度地保留图像的边缘信息,近年来在图像平滑和数据分析与处理等多个领域中得到广泛应用。尽管如此,由于它对窗口和数据点的高度依赖,使其在处理空间密度较大的冲激噪声时,处理效果和效率受到了限制。文献[4]提出一种自适应中值滤波算法,通过扩大窗口来相对减少冲激噪声空间密度,但它是基于方形窗口的,当窗口尺寸增大时,计算量将按平方增大,因此在速度方面还不够理想。在数字图像处理中,作为一种典型的非线性滤波方法,中值滤波应用得非常广泛,因而对提高其算法效率是非常有意义的。本文对Matlab工具箱中的中值滤波算法进行改进,提出一种基于×字形滤波窗口的自适应中值滤波算法,在有效去除噪声的同时,较好地保持了图像细节,缩短了运行时间。
1中值滤波的基本原理及传统算法
信号中值(medians)是按信号值大小顺序排列的中间值。长为n的一维信号{X,n∈N}的中值用下式表示:

相对二维图像信号{Xij:i,j∈N},二维中值滤波器定义为:

式(1)、式(2)中:N表示自然数集;A为截取图像数据的窗口尺寸;r为窗口水平尺寸;s为窗口垂直尺寸;Xij为被处理图像平面上的一个像素点,坐标为(i,j);Yij是以Xij为中心,窗口W所套中范围内像素点灰度的中值,即中值处理的输出值。窗口A可以采用不同的形式,通常有线段窗、方形窗、圆形窗、十字窗和圆环窗等。文献[6]对中值滤波的多种形态及其发展有详细的介绍。
中值滤波就是选择一定形式的窗口,使其在图像的各点上移动,用窗内像素灰度值的中值代替窗中心点处的像素灰度值。它对于消除孤立点和线段的干扰十分有用,能减弱或消除傅里叶空间的高频分量,但也影响低频分量。高频分量往往是图像中区域边缘灰度值急剧变化的部分,该滤波可将这些分量消除,从而使图像得到平滑的效果。对于一些细节较多的复杂图像,还可以多次使用不同的中值滤波。传统中值滤波算法的具体实现过程如下:
(1)选择一个(2n+1)×(2n+1)的窗口(通常为3×3或5×5),并用该窗口沿图像数据进行行或列方向的移位滑动;
(2)每次移动后,对窗内的诸像素灰度值进行排序;
(3)用排序所得中值替代窗口中心位置的原始像素灰度值。
图1是传统中值滤波算法的框图。其中,M,N分别表示滤波图像的行数和列数。

[p] 2自适应中值滤波的基本原理及改进算法
中值滤波是当前应用最广泛的滤波方法之一,然而,中值滤波的去噪效果和处理速度依赖于滤波窗口的大小及参与中值计算的像素点数目。当脉冲噪声概率小于0.2时,中值滤波是很有效的方法,当脉冲噪声概率超过0.2时,则使用自适应中值滤波方法。
×字形窗口的自适应中值滤波算法是对中值滤波的一种改进。相对于中值滤波而言,它能够处理空间密度更大的冲激噪声,并且在平滑非冲激噪声时,还可保存更多的图像细节;效率方面也较一般的自适应中值滤波有所改善。常见窗口及本文提出窗口如图2所示。

基本原理如下:
首先,采用3×3的×字形窗口进行计算,计算图像的中值滤波值Zmed、最大值滤波值Zmax和最小值滤波值Zmin,并判断噪声敏感度,即:如果Zmec,不在Zmax和Zmin之间就自动增加×字形窗口的大小,然后重复以上的过程;对于Zmed在Zmax和Zmin之间的点先用原像素值与最大滤波值和最小滤波值进行判断,如果在其间,原值不做修改,反之就用Zmed取代原值。这一过程有如下的作用:
(1)使得未受脉冲噪声污染的点不用修改,很好地保护了图像的点、线等细节及边界信息;
(2)当检测到的噪声很强时,自动增大窗口,提高了去噪能力;
(3)当检测到的噪声不是很强时,就不用增加窗口的大小,既体现出自适应性,又减少了时间开销,提高了速度。
其中,×字形窗口的实现方法如下:
(1)先得到一个对角矩阵A;
(2)将对角矩阵A从左向右翻转,得到一个矩阵B;
(3)将矩阵A与矩阵B取或运算,得到X字形矩阵C。
3基于×字形窗口自适应中值滤波算法的Matlab实现
中值滤波是数字图像处理中一个很重要的部分,Matlab工具箱中有该函数,用到中值滤波算法时可直接调用。因此,用Matlab编程具有简单、方便、快捷等优点。另外,还可以对其内部函数进行改进。本文的算法就是通过另外编程修改中值滤波有关的内部函数实现的。下面就是自适应中值滤波算法的实现流程,添加新的库函数――adpmedianXzi对图像处理工具箱进行扩展,以实现数字图像自适应中值滤波(部分伪代码)。

4实验结果及其分析
在实验中,选择了大小为256×256像素、灰度为256级的Lena图像。实验环境为IBM R52,Matlab7.0软件。实验结果如图3、图4所示。[p]

图3(b)显示了被“椒盐”噪声污染了的图像,该噪声的概率为Pa=Pb=0.25。这里噪声水平非常高,能够模糊图像的大部分细节。作为比较的基础,图像首先用7×7的中值滤波器进行滤波,消除大部分可见的脉冲噪声痕迹(见图3(b))。虽然噪声被有效消除了,但是滤波器在图像上也引起了明显的细节损失。
图3(d)显示了使用Smax=7的方形窗口自适应中值滤波器的效果,噪声消除水平同中值滤波器相似。图3(e)为基于×型窗口的自适应中值滤波效果。自适应滤波器保持了点的尖锐性和细节。可见,改进是很明显的,而且通过对比方形窗口与×字形窗口发现,×字形窗口的运行效率也提高了不少。
5结语
通过对Matlab图像处理工具箱中算法的改进,实现了一种快速自适应中值滤波算法。在对图像滤波前,首先判断是否为脉冲,然后采取变化×字形窗口大小来对噪声进行滤波,这样既有效消除了噪声,也很好地保持了图像细节。实验结果表明,基于×字形的滤波方法比一般自适应中值滤波效率有了一定程度的提高。算法原理简单、稳定、实用。若进一步研究,可针对不同噪声采取更加智能的处理措施,如CWMFANFIS(自适应模糊神经中值滤波系统),用以达到更好的处理效果。
1中值滤波的基本原理及传统算法
信号中值(medians)是按信号值大小顺序排列的中间值。长为n的一维信号{X,n∈N}的中值用下式表示:

相对二维图像信号{Xij:i,j∈N},二维中值滤波器定义为:

式(1)、式(2)中:N表示自然数集;A为截取图像数据的窗口尺寸;r为窗口水平尺寸;s为窗口垂直尺寸;Xij为被处理图像平面上的一个像素点,坐标为(i,j);Yij是以Xij为中心,窗口W所套中范围内像素点灰度的中值,即中值处理的输出值。窗口A可以采用不同的形式,通常有线段窗、方形窗、圆形窗、十字窗和圆环窗等。文献[6]对中值滤波的多种形态及其发展有详细的介绍。
中值滤波就是选择一定形式的窗口,使其在图像的各点上移动,用窗内像素灰度值的中值代替窗中心点处的像素灰度值。它对于消除孤立点和线段的干扰十分有用,能减弱或消除傅里叶空间的高频分量,但也影响低频分量。高频分量往往是图像中区域边缘灰度值急剧变化的部分,该滤波可将这些分量消除,从而使图像得到平滑的效果。对于一些细节较多的复杂图像,还可以多次使用不同的中值滤波。传统中值滤波算法的具体实现过程如下:
(1)选择一个(2n+1)×(2n+1)的窗口(通常为3×3或5×5),并用该窗口沿图像数据进行行或列方向的移位滑动;
(2)每次移动后,对窗内的诸像素灰度值进行排序;
(3)用排序所得中值替代窗口中心位置的原始像素灰度值。
图1是传统中值滤波算法的框图。其中,M,N分别表示滤波图像的行数和列数。

[p] 2自适应中值滤波的基本原理及改进算法
中值滤波是当前应用最广泛的滤波方法之一,然而,中值滤波的去噪效果和处理速度依赖于滤波窗口的大小及参与中值计算的像素点数目。当脉冲噪声概率小于0.2时,中值滤波是很有效的方法,当脉冲噪声概率超过0.2时,则使用自适应中值滤波方法。
×字形窗口的自适应中值滤波算法是对中值滤波的一种改进。相对于中值滤波而言,它能够处理空间密度更大的冲激噪声,并且在平滑非冲激噪声时,还可保存更多的图像细节;效率方面也较一般的自适应中值滤波有所改善。常见窗口及本文提出窗口如图2所示。

基本原理如下:
首先,采用3×3的×字形窗口进行计算,计算图像的中值滤波值Zmed、最大值滤波值Zmax和最小值滤波值Zmin,并判断噪声敏感度,即:如果Zmec,不在Zmax和Zmin之间就自动增加×字形窗口的大小,然后重复以上的过程;对于Zmed在Zmax和Zmin之间的点先用原像素值与最大滤波值和最小滤波值进行判断,如果在其间,原值不做修改,反之就用Zmed取代原值。这一过程有如下的作用:
(1)使得未受脉冲噪声污染的点不用修改,很好地保护了图像的点、线等细节及边界信息;
(2)当检测到的噪声很强时,自动增大窗口,提高了去噪能力;
(3)当检测到的噪声不是很强时,就不用增加窗口的大小,既体现出自适应性,又减少了时间开销,提高了速度。
其中,×字形窗口的实现方法如下:
(1)先得到一个对角矩阵A;
(2)将对角矩阵A从左向右翻转,得到一个矩阵B;
(3)将矩阵A与矩阵B取或运算,得到X字形矩阵C。
3基于×字形窗口自适应中值滤波算法的Matlab实现
中值滤波是数字图像处理中一个很重要的部分,Matlab工具箱中有该函数,用到中值滤波算法时可直接调用。因此,用Matlab编程具有简单、方便、快捷等优点。另外,还可以对其内部函数进行改进。本文的算法就是通过另外编程修改中值滤波有关的内部函数实现的。下面就是自适应中值滤波算法的实现流程,添加新的库函数――adpmedianXzi对图像处理工具箱进行扩展,以实现数字图像自适应中值滤波(部分伪代码)。

4实验结果及其分析
在实验中,选择了大小为256×256像素、灰度为256级的Lena图像。实验环境为IBM R52,Matlab7.0软件。实验结果如图3、图4所示。[p]

图3(b)显示了被“椒盐”噪声污染了的图像,该噪声的概率为Pa=Pb=0.25。这里噪声水平非常高,能够模糊图像的大部分细节。作为比较的基础,图像首先用7×7的中值滤波器进行滤波,消除大部分可见的脉冲噪声痕迹(见图3(b))。虽然噪声被有效消除了,但是滤波器在图像上也引起了明显的细节损失。
图3(d)显示了使用Smax=7的方形窗口自适应中值滤波器的效果,噪声消除水平同中值滤波器相似。图3(e)为基于×型窗口的自适应中值滤波效果。自适应滤波器保持了点的尖锐性和细节。可见,改进是很明显的,而且通过对比方形窗口与×字形窗口发现,×字形窗口的运行效率也提高了不少。
5结语
通过对Matlab图像处理工具箱中算法的改进,实现了一种快速自适应中值滤波算法。在对图像滤波前,首先判断是否为脉冲,然后采取变化×字形窗口大小来对噪声进行滤波,这样既有效消除了噪声,也很好地保持了图像细节。实验结果表明,基于×字形的滤波方法比一般自适应中值滤波效率有了一定程度的提高。算法原理简单、稳定、实用。若进一步研究,可针对不同噪声采取更加智能的处理措施,如CWMFANFIS(自适应模糊神经中值滤波系统),用以达到更好的处理效果。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
闂傚倸鍊搁崐宄懊归崶顒夋晪鐟滃繘骞戦姀銈呯疀妞ゆ棁妫勬惔濠囨⒑瑜版帒浜伴柛鐘冲浮瀹曟垿骞橀幇浣瑰兊濡炪倖鍔戦崹鍦矈椤曗偓濮婃椽妫冨☉娆樻闂佺ǹ锕ら…鐑界嵁閹达箑绀嬫い鎺戝€婚幊婵嗩渻閵堝棛澧痪鏉跨Т閳诲秵绻濋崶銊㈡嫽婵炴挻鍩冮崑鎾寸箾娴e啿娲﹂弲顒勭叓閸ャ劎鈽夐柣鎺戠仛閵囧嫰骞掗幋婵愪患闂佽棄鍟伴崰鏍蓟閺囥垹閱囨繝鍨姈鏁堥梻浣呵归鍐礉瀹ュ桅闁告洦鍨伴崘鈧梺闈涒康婵″洤鈻撻妶鍡欑瘈闁冲皝鍋撻柛鏇ㄥ墰椤︿即姊洪崫鍕効缂傚秳绶氶悰顔嘉熼崗鐓庢瀭闂佸憡娲﹂崢褰掑焵椤掆偓閿曨亜顫忓ú顏呭仭闁哄瀵т簺婵$偑鍊栭崹鐢杆囬悽绋课ュù锝呭濞笺劑鏌嶈閸撶喖鐛崘顔碱潊闁靛牆鎳庣粣娑欑節閻㈤潧孝閻庢凹鍘奸埢鎾活敊閸撗咃紳闂佺ǹ鏈懝楣冨焵椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿吅闂佹寧娲嶉崑鎾剁磼閻欌偓閸ㄥ爼寮婚妸鈺傚亞闁稿本绋戦锟� | More...
闂傚倸鍊搁崐宄懊归崶顒夋晪鐟滃繘骞戦姀銈呯疀妞ゆ棁妫勬惔濠囨⒑瑜版帒浜伴柛鐘冲浮瀹曟垿骞橀幇浣瑰兊濡炪倖鍔戦崹鍦矈椤曗偓濮婃椽妫冨☉娆樻闂佺ǹ锕ら…鐑界嵁閹达箑绀嬫い鎺戝€婚幊婵嗩渻閵堝棛澧痪鏉跨Т閳诲秵绻濋崶銊㈡嫽婵炴挻鍩冮崑鎾寸箾娴e啿娲﹂弲顒勭叓閸ャ劎鈽夐柣鎺戠仛閵囧嫰骞掗幋婵愪患闂佽棄鍟伴崰鏍蓟閺囥垹閱囨繝鍨姈鏁堥梻浣呵归鍐礉瀹ュ桅闁告洦鍨伴崘鈧梺闈涱槶閸庮噣宕戦幘璇插唨妞ゆ劗鍠庢禍鐐叏濡厧浜鹃悗姘炬嫹濠电姷鏁告慨鐑藉极閹间礁纾婚柣鎰惈閸ㄥ倿鏌涢锝嗙缂佺姴缍婇弻宥夊传閸曨剙娅i梺绋胯閸旀垿寮婚敐澶婄疀闂傚牊绋戦埛鎺戔攽閻愯尙澧旂紒顔界懇瀵濡搁埡鍌氫簽闂佺ǹ鏈粙鎴︻敂閿燂拷闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柛鎾茬劍閸忔粓鏌涢锝嗙闁汇倗鍋撶换婵嬫濞戝崬鍓梺閫炲苯鍘搁柣鎺炲閹广垹鈹戠€n亞鍊為梺鑲┣归悘姘枍閹剧粯鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洘绮岄埥澶愬閳锯偓閹稿啴姊洪崨濠冨闁稿繑绋撻幑銏ゅ幢濞戞瑧鍘梺鍓插亝缁诲啴宕崇憴鍕╀簻闊洦鎸鹃幗鐘睬庨崶褝韬い銏℃礋椤㈡鎷呴崜韫处
闂傚倸鍊搁崐宄懊归崶顒夋晪鐟滃繘骞戦姀銈呯疀妞ゆ棁妫勬惔濠囨⒑瑜版帒浜伴柛鐘冲浮瀹曟垿骞橀幇浣瑰兊濡炪倖鍔戦崹鍦矈椤曗偓濮婃椽妫冨☉娆樻闂佺ǹ锕ら悘婵嬫偩闁垮闄勭紒瀣仢瀹撳棝姊虹紒妯哄妞ゆ梹鐗曞嵄婵炲樊浜濋悡鐔兼煟閺傛寧鎲搁柣顓炶嫰椤儻顦虫い銊ョ墦瀵偊顢氶埀顒勭嵁閹烘绫嶉柍褜鍓熷鍐测堪閸喓鍘甸梺璇″灡濠㈡ǹ顣块梻浣虹帛閹搁箖宕伴幇鏉课﹂柛鏇ㄥ灱閺佸啯銇勯幇鈺佺仼缂佺姾宕电槐鎾存媴閻ゎ垰鍘¢梺绋跨箲閿曘垹顕f繝姘櫜濠㈣埖蓱閺咃綁姊虹紒妯哄缂佷焦鎸抽獮鎰板礃椤旇В鎷洪梺鑽ゅ枑濠㈡ê危缂佹ǜ浜滈柟瀛樼箥濡偓闂佺粯渚楅崳锝夌嵁鐎n喗鏅濋柍褜鍓涚划璇测槈閵忊檧鎷婚梺鍓插亞閸犳捇鍩婇弴銏$厱濠电姴鍊块崣鍕叏婵犲嫮甯涢柟宄版嚇閹煎綊鐛惔鎾充壕濠电姴娲﹂悡娑㈡煕濞戝崬鏋ょ紒鐘靛仱閺屾洟宕遍弴鐘插缂備胶绮换鍫濈暦閸洘鍤嬮柛顭戝亝閻濓箓姊婚崒娆戭槮闁规祴鈧秮娲晝閸屾艾鍋嶉梺浼欑到婢跺洭宕戦幘鎰佹僵妞ゆ挾鍋涢幗鐢告⒑閸濆嫭婀伴柣鈺婂灦閻涱喖螣娓氼垱瀵岄柣鐘叉穿瀵挻绔熼弴銏♀拻濞达絽鎲¢幆鍫ユ煟椤撶儐妯€妤犵偛绻橀弫鎾绘晸閿燂拷
闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗ù锝堟缁€濠傗攽閻樻彃鈧绱撳杈ㄥ枑闁哄啫鐗勯埀顑跨窔瀵粙顢橀悙鑼垛偓鍨攽閿涘嫬浠х紒顕呭灦瀵偊鎮╃紒妯锋嫼闂備緡鍋嗛崑娑㈡嚐椤栨稒娅犳い鏂款潟娴滄粍銇勯幘璺轰沪闁稿鍎抽埀顒冾潐濞叉粓骞婇幘璇茬叀濠㈣泛艌閺嬪酣鏌熼柇锕€鏋涚紒鎻掓健濮婂宕掑▎鎴濆闂佽鍠栭悥鐓庣暦閹版澘鍗抽柣蹇氼嚙缂嶅﹪骞冨⿰鍫熷癄濠㈣泛鐭堥崬鐢告⒑鐠囨彃鍤辩紓宥呮瀹曚即寮介銈勭瑝闂佸搫琚崕鏌ユ偂濞嗗緷褰掓偂鎼达絾鎲煎┑鐐村毆閸ャ劎鍘靛銈嗘瀹曠數绮i弮鈧幈銊︾節閸涱噮浠╅梺鍛婄墬閻楃姴顕i幘顔藉亜闁告縿鍎辩徊鍨攽閿涘嫬浜奸柛濠冨灴瀹曠銇愰幒鎾存珖濡炪倕绻愰悧鍕焵椤戣法顦﹂柍璇查叄楠炴ê鐣烽崶鑸敌у┑锛勫亼閸婃牠骞愭ィ鍐ㄧ獥閹兼番鍔嶉崑鐔访归悡搴f憼闁抽攱鍨块弻娑樷槈濮楀牊鏁鹃柣搴$仛閻熲晠寮诲鍫闂佸憡鎸鹃崰搴敋閿濆棛绡€婵﹩鍘藉▍銏ゆ⒑鐠恒劌娅愰柟鍑ゆ嫹
濠电姷鏁告慨鐑藉极閸涘﹥鍙忓ù鍏兼綑閸ㄥ倻鎲搁悧鍫濈瑲闁稿﹤鐖奸弻娑㈩敃閻樻彃濮庨梺姹囧€楅崑鎾舵崲濠靛顥堟繛鎴濆船閸撲即姊洪崨濠呭缂傚秴锕悰顕€寮介妸锔剧Ф闂佸憡鎸嗛崥閿嬪灦缁绘繂鈻撻崹顔句哗闂侀潧鐗婇幃鍌氼嚕婵犳碍鍋勯柣鎴灻弸鍌炴⒑閸涘﹥澶勯柛瀣椤ゅ倿姊婚崒娆戭槮闁硅绻濆畷娲礃椤旇偐锛涢梺鐟板⒔缁垶鎮¢悢鐓庣婵烇綆鍓欓埀顑惧€曞玻鍧楀箛閻楀牏鍘靛銈嗘閸嬫劙宕洪敐鍥e亾鐟欏嫭绀冩繛鑼枛閻涱喗鎯旈妸锕€鐧勬繝銏f硾閼活垶鐛幒妤佲拻濞达絿枪閹垹绱掓担瑙勫唉鐎殿喗褰冮オ浼村醇濠靛洩绶㈡繝鐢靛Т閿曘倝鎮ф繝鍥ㄥ亗闁哄洨鍠嗘禍婊堟煙閺夊灝顣抽柟顔垮亹缁辨帡鎮╃粵纭呪偓鍧楁煛鐏炲墽鈽夋い顐g箞椤㈡﹢鎮╅崘鍙夌彴闂傚倷娴囬鏍窗濞戭澁缍栧璺虹灱缁犳棃鏌i弮鍌氬付闁绘劕锕﹂幉绋款吋閸モ晙绗夐梺鑽ゅ枛閸嬪﹤銆掓繝姘厪闁割偅绻傞弳娆忊攽閿涘嫭娅曠紒杈ㄥ浮椤㈡瑦绺界粙鍨強婵°倗濮烽崑娑⑺囬婵堜簷闂備礁鎲℃笟妤呭窗濡も偓閳诲秹濮€閵堝棌鎷洪柣鐘充航閸斿苯鈻嶉幇鐗堢厵闁告垯鍊栫€氾拷
射频和天线工程师培训课程详情>>