摘 要:傳統(tǒng)的中值濾波方法在去除脈沖噪聲的同時(shí)會(huì)損失部分圖像細(xì)節(jié),且運(yùn)行速度也不能很好地滿足實(shí)時(shí)性要求。在此對(duì)Matlab工具箱中的中值濾波算法進(jìn)行改進(jìn),提出一種基于×字形濾波窗口的自適應(yīng)中值濾波算法。該方法具有根據(jù)3×3的×字形窗口中噪聲點(diǎn)個(gè)數(shù)自適應(yīng)調(diào)整濾波窗口大小及根據(jù)矩陣的對(duì)稱性及基本的邏輯運(yùn)算實(shí)現(xiàn)×字形窗口的特點(diǎn)。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的方形窗口中值濾波算法相比,該方法在有效去除椒鹽噪聲和脈沖噪聲的同時(shí),較好地保持了圖像細(xì)節(jié),縮短了運(yùn)行時(shí)間。
關(guān)鍵詞:自適應(yīng)中值濾波; ×字形窗口; Matlab語(yǔ)言; 數(shù)字圖像處理
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)10-0090-03
Algorithm of Adaptive Median Filtering Based on ×-shaped Window
WANG Yan-xia1, ZHANG You-hui1, KANG Zhen-ke1, ZHANG Jin-dong2
(1. College of Mathematics and Information Science, Hebei Normal University, Shijiazhuang 050016, China;
2. Institute of Communications Engineering, PLA Univ. of Sci. Tech., Nanjing 210007, China)
Abstract:Since the traditional median filtering methods may lose some image details while removing impulse noise and can not meet the demand of real-time image preprocessing, the common median filtering method in the Matlab toolbox is modified and a self-adaptive median filtering algorithm based on ×-shaped windows is proposed. This method has the following characteristics: the adaptive filtering window size is adaptively adjusted according to the number of noise points in the 3×3 X-shaped window, X-shaped window is achievedaccording to the symmetry of the matrix and the basic logic operations. The simulation results show that compared with the square-shaped windows, this method can maintain the image details while removing the salt and pepper noise and impulse noiseing, and can reduce the running time effectively.
Keywords:adaptive median filtering; ×-shaped window; Matlab language; digital image processing
0 引 言
由于種種原因,圖像在生成、傳輸、變換等過程中往往會(huì)受到各種噪聲的污染,從而導(dǎo)致圖像質(zhì)量退化。噪聲信號(hào)的濾波是圖像處理的基本任務(wù)之一,主要有線性濾波和非線性濾波兩種方法。線性濾波方法一般具有低通特性,而圖像的邊緣信息對(duì)應(yīng)于高頻信號(hào),因此線性濾波方法往往導(dǎo)致圖像邊緣模糊,不能取得很好的復(fù)原效果[1]。中值濾波是一種使邊緣模糊較輕的非線性濾波方法,是由Tukey發(fā)明的一種非線性信號(hào)處理技術(shù),早期用于一維信號(hào)處理,后來(lái)很快被用到二維數(shù)字的圖像平滑中。該算法不僅能夠去除或減少隨機(jī)噪聲和脈沖噪聲干擾,而且能夠很大程度地保留圖像的邊緣信息,近年來(lái)在圖像平滑和數(shù)據(jù)分析與處理等多個(gè)領(lǐng)域中得到廣泛應(yīng)用[2]。盡管如此,由于它對(duì)窗口和數(shù)據(jù)點(diǎn)的高度依賴,使其在處理空間密度較大的沖激噪聲時(shí),處理效果和效率受到了限制[3]。文獻(xiàn)[4]提出一種自適應(yīng)中值濾波算法,通過擴(kuò)大窗口來(lái)相對(duì)減少?zèng)_激噪聲空間密度,但它是基于方形窗口的,當(dāng)窗口尺寸增大時(shí),計(jì)算量將按平方增大,因此在速度方面還不夠理想。在數(shù)字圖像處理中,作為一種典型的非線性濾波方法,中值濾波應(yīng)用得非常廣泛,因而對(duì)提高其算法效率是非常有意義的[5]。本文對(duì)Matlab工具箱中的中值濾波算法進(jìn)行改進(jìn),提出一種基于×字形濾波窗口的自適應(yīng)中值濾波算法,在有效去除噪聲的同時(shí),較好地保持了圖像細(xì)節(jié),縮短了運(yùn)行時(shí)間。
1 中值濾波的基本原理及傳統(tǒng)算法
信號(hào)中值(medians)是按信號(hào)值大小順序排列的中間值。長(zhǎng)為n的一維信號(hào){Xn,n∈N}的中值用下式表示:
Yn=Med{X1,X2,…Xn;n∈N}(1)
相對(duì)二維圖像信號(hào){Xij:i,j∈N},二維中值濾波器定義為:
Yij=Med{Xij}=Med{Xi+r,j+s:r,s∈A} (2)
式(1)、式(2)中:N表示自然數(shù)集;A為截取圖像數(shù)據(jù)的窗口尺寸;r為窗口水平尺寸;s為窗口垂直尺寸;Xij為被處理圖像平面上的一個(gè)像素點(diǎn),坐標(biāo)為 (i,j);Yij是以Xij為中心,窗口W所套中范圍內(nèi)像素點(diǎn)灰度的中值,即中值處理的輸出值。窗口A可以采用不同的形式,通常有線段窗、方形窗、圓形窗、十字窗和圓環(huán)窗等。文獻(xiàn)[6]對(duì)中值濾波的多種形態(tài)及其發(fā)展有詳細(xì)的介紹。
中值濾波就是選擇一定形式的窗口,使其在圖像的各點(diǎn)上移動(dòng),用窗內(nèi)像素灰度值的中值代替窗中心點(diǎn)處的像素灰度值[7]。它對(duì)于消除孤立點(diǎn)和線段的干擾十分有用,能減弱或消除傅里葉空間的高頻分量,但也影響低頻分量。高頻分量往往是圖像中區(qū)域邊緣灰度值急劇變化的部分,該濾波可將這些分量消除,從而使圖像得到平滑的效果。對(duì)于一些細(xì)節(jié)較多的復(fù)雜圖像,還可以多次使用不同的中值濾波。傳統(tǒng)中值濾波算法的具體實(shí)現(xiàn)過程如下[8]:
(1) 選擇一個(gè)(2n+1)×(2n+1)的窗口(通常為3×3或5×5),并用該窗口沿圖像數(shù)據(jù)進(jìn)行行或列方向的移位滑動(dòng);
(2) 每次移動(dòng)后,對(duì)窗內(nèi)的諸像素灰度值進(jìn)行排序;
(3) 用排序所得中值替代窗口中心位置的原始像素灰度值。
圖1是傳統(tǒng)中值濾波算法的框圖。其中,M, N分別表示濾波圖像的行數(shù)和列數(shù)。
圖1 中值濾波程序流程圖
2 自適應(yīng)中值濾波的基本原理及改進(jìn)算法
中值濾波是當(dāng)前應(yīng)用最廣泛的濾波方法之一,然而,中值濾波的去噪效果和處理速度依賴于濾波窗口的大小及參與中值計(jì)算的像素點(diǎn)數(shù)目[9]。當(dāng)脈沖噪聲概率小于0.2時(shí),中值濾波是很有效的方法,當(dāng)脈沖噪聲概率超過0.2時(shí),則使用自適應(yīng)中值濾波方法[3]。
×字形窗口的自適應(yīng)中值濾波算法是對(duì)中值濾波的一種改進(jìn)。相對(duì)于中值濾波而言,它能夠處理空間密度更大的沖激噪聲,并且在平滑非沖激噪聲時(shí),還可保存更多的圖像細(xì)節(jié);效率方面也較一般的自適應(yīng)中值濾波有所改善。常見窗口及本文提出窗口如圖2所示。
圖2 常見窗口
基本原理如下[3]:
首先,采用3×3的×字形窗口進(jìn)行計(jì)算,計(jì)算圖像的中值濾波值Zmed、最大值濾波值Zmax和最小值濾波值Zmin,并判斷噪聲敏感度,即:如果Zmed不在Zmax和Zmin之間就自動(dòng)增加×字形窗口的大小,然后重復(fù)以上的過程;對(duì)于Zmed在Zmax和Zmin之間的點(diǎn)先用原像素值與最大濾波值和最小濾波值進(jìn)行判斷,如果在其間,原值不做修改,反之就用Zmed取代原值。這一過程有如下的作用:
(1) 使得未受脈沖噪聲污染的點(diǎn)不用修改,很好地保護(hù)了圖像的點(diǎn)、線等細(xì)節(jié)及邊界信息;
(2) 當(dāng)檢測(cè)到的噪聲很強(qiáng)時(shí),自動(dòng)增大窗口,提高了去噪能力;
(3) 當(dāng)檢測(cè)到的噪聲不是很強(qiáng)時(shí),就不用增加窗口的大小,既體現(xiàn)出自適應(yīng)性,又減少了時(shí)間開銷,提高了速度。
其中,×字形窗口的實(shí)現(xiàn)方法如下:
(1) 先得到一個(gè)對(duì)角矩陣A;
(2) 將對(duì)角矩陣A從左向右翻轉(zhuǎn),得到一個(gè)矩陣B;
(3) 將矩陣A與矩陣B取或運(yùn)算,得到×字形矩陣C。
3 基于×字形窗口自適應(yīng)中值濾波算法的Matlab實(shí)現(xiàn)
中值濾波是數(shù)字圖像處理中一個(gè)很重要的部分,Matlab工具箱中有該函數(shù),用到中值濾波算法時(shí)可直接調(diào)用。因此,用Matlab編程具有簡(jiǎn)單、方便、快捷等優(yōu)點(diǎn)。另外,還可以對(duì)其內(nèi)部函數(shù)進(jìn)行改進(jìn)。本文的算法就是通過另外編程修改中值濾波有關(guān)的內(nèi)部函數(shù)實(shí)現(xiàn)的。
下面就是自適應(yīng)中值濾波算法的實(shí)現(xiàn)流程,添加新的庫(kù)函數(shù)adpmedianXzi對(duì)圖像處理工具箱進(jìn)行擴(kuò)展,以實(shí)現(xiàn)數(shù)字圖像自適應(yīng)中值濾波(部分偽代碼)。
function f=adpmedianXzi(g,Smax)
%首先進(jìn)行×字形窗口的極小值濾波和極大值濾波
zmin=ordfilt2(g,1,eye(k)|fliplr(eye(k)) ,′symmetric′);
zmax=ordfilt2(g,2*k-1,eye(k)|fliplr(eye(k)),′symmetric′);
%然后進(jìn)行中值濾波
zmed=medfilt2(g,[k,k],′symmetric′);
%判斷Zmed是否為一脈沖
processUsingLeveB=(zmed>zmin)(zmax>zmed)~alreadyProcessed;
%判斷Zxy是否為一脈沖
zB=(g>zmin)(zmax>g);
outputZxy=processUsingLeveBzB;
outputZmed=processUsingLeveB~zB;
%若Zmed為一脈沖,輸出一個(gè)不變的像素值Zxy來(lái)代替鄰域中值作為輸出
f(outputZxy)=g(outputZxy);
%若Zmed不是一脈沖,輸出中值濾波的值作為輸出
f(outputZmed)=zmed(outputZmed);
4 實(shí)驗(yàn)結(jié)果及其分析
在實(shí)驗(yàn)中,選擇了大小為256×256像素、灰度為256級(jí)的Lena圖像。實(shí)驗(yàn)環(huán)境為IBM R52,Matlab7.0軟件。實(shí)驗(yàn)結(jié)果如圖3、圖4所示。
圖3 原始圖像、噪聲圖像和濾波后圖像
圖4 方形窗口與×形窗口運(yùn)行效率對(duì)比
圖3(b)顯示了被“椒鹽”噪聲污染了的圖像,該噪聲的概率為Pa=Pb= 0.25。這里噪聲水平非常高,能夠模糊圖像的大部分細(xì)節(jié)。作為比較的基礎(chǔ),圖像首先用7×7的中值濾波器進(jìn)行濾波,消除大部分可見的脈沖噪聲痕跡(見圖3(b))。雖然噪聲被有效消除了,但是濾波器在圖像上也引起了明顯的細(xì)節(jié)損失。圖3(d)顯示了使用Smax=7的方形窗口自適應(yīng)中值濾波器的效果,噪聲消除水平同中值濾波器相似。圖3(e)為基于×型窗口的自適應(yīng)中值濾波效果。自適應(yīng)濾波器保持了點(diǎn)的尖銳性和細(xì)節(jié)??梢?,改進(jìn)是很明顯的,而且通過對(duì)比方形窗口與×字形窗口發(fā)現(xiàn),×字形窗口的運(yùn)行效率也提高了不少。
5 結(jié) 語(yǔ)
通過對(duì)Matlab圖像處理工具箱中算法的改進(jìn),實(shí)現(xiàn)了一種快速自適應(yīng)中值濾波算法。在對(duì)圖像濾波前,首先判斷是否為脈沖,然后采取變化×字形窗口大小來(lái)對(duì)噪聲進(jìn)行濾波,這樣既有效消除了噪聲,也很好地保持了圖像細(xì)節(jié)。實(shí)驗(yàn)結(jié)果表明,基于×字形的濾波方法比一般自適應(yīng)中值濾波效率有了一定程度的提高。算法原理簡(jiǎn)單、穩(wěn)定、實(shí)用。若進(jìn)一步研究,可針對(duì)不同噪聲采取更加智能的處理措施,如CWMFANFIS(自適應(yīng)模糊神經(jīng)中值濾波系統(tǒng))[10],用以達(dá)到更好的處理效果。
參考文獻(xiàn)
[1]董付國(guó),原達(dá),王金鵬.中值濾波快速算法的進(jìn)一步思考[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(26):48-64.
[2]郭煒.多級(jí)非線性加權(quán)平均中值濾波改進(jìn)算法[J].現(xiàn)代電子技術(shù),2006,29(19):159-161.
[3]ABDULLAH T, INAN G. Impulse noise reduction in medical images with the use of switch mode fuzzy adaptive median filter[J]. Digital Signal Processing, 2007, 17:711-723.
[4]袁西霞,岳建華,趙賢任.Matlab在中值濾波改進(jìn)算法中的應(yīng)用[J].廣東工業(yè)大學(xué)學(xué)報(bào),2007,24(1):33-35.
[5]曹治華,宋斌恒.多種形狀窗口下的中值濾波算法[J].計(jì)算機(jī)應(yīng)用研究,2006,23(3):86-88.
[6]劉麗梅,孫玉榮,李麗.中值濾波技術(shù)發(fā)展研究[J].云南師范大學(xué)學(xué)報(bào),2004,24(1):23-27.
[7]隋雪莉,梅園.基于中值濾波的指紋增強(qiáng)算法[J].現(xiàn)代電子技術(shù),2009,32(10):107-109.
[8]張明艷,吳莉,謝玉鵬.一種圖像快速中值濾波算法[J].吉林省教育學(xué)院學(xué)報(bào),2007,23(1):91-92.
[9]吳玉蓮.圖像處理的中值濾波方法及其應(yīng)用[D].西安:西安電子科技大學(xué),2006.
[10]ME Yüksel. A median/ANFIS filter for efficient restoration of digital images corrupted by impulse noise[J]. Int. Electron. Commun., 2006, 60: 628-637.