鄭 亮, 方恩印, 朱 明
(1.上海出版印刷高等專科學(xué)校, 上海 200093;2.河南工程學(xué)院 材料與化學(xué)工程學(xué)院, 鄭州 450001)
椒鹽噪聲又稱脈沖噪聲,在圖像中的表現(xiàn)形式就是隨機(jī)分布的黑(椒噪聲)白(鹽噪聲)色像素點(diǎn)。椒鹽噪聲的產(chǎn)生一般是由圖像傳感器,傳輸信道或解碼系統(tǒng)的故障和缺陷造成的[1]。由于椒鹽噪聲點(diǎn)與圖像邊緣的正常像素點(diǎn)往往具有同樣的突變特征,因此為了保護(hù)邊緣細(xì)節(jié),最先使用非線性的中值濾波算法來去除椒鹽噪聲[2],后來又在此基礎(chǔ)上提出了極值中值算法[3],加權(quán)中值濾波算法[4-5]和自適應(yīng)中值濾波算法[6-7]。這些方法在濾除噪聲點(diǎn)的同時也會修改到正常像素點(diǎn),從而造成圖像的模糊。針對這些問題,近年來又提出了開關(guān)中值濾波的思想[8-11],這類方法首先需要判斷當(dāng)前像素是噪聲點(diǎn)還是正常信號點(diǎn),然后僅對噪聲點(diǎn)進(jìn)行處理,這樣可以最大程度地防止邊緣模糊[12-15],這種思路目前已經(jīng)被廣泛采用。
本文首先從信號局部差異性的思路入手設(shè)計(jì)了一種基于灰度范圍準(zhǔn)則和局部差別準(zhǔn)則的椒鹽噪聲檢測算法,又從信號方向差異性的思路入手設(shè)計(jì)了一種基于灰度范圍準(zhǔn)則和方向差別準(zhǔn)則的椒鹽噪聲檢測算法。這兩種算法均屬于二級噪聲檢測方法,第一級的檢測手段都借助了灰度范圍準(zhǔn)則,這是一種簡單的極值判斷方法,兩種算法的不同點(diǎn)體現(xiàn)在第二級檢測方法。在方法評價(jià)部分,首先通過分析和試驗(yàn)得出了兩種算法的最佳參數(shù)設(shè)置,然后借助PSNR值測試了兩種算法對不同噪聲密度的測試圖像的去噪效果,比較和分析了兩種算法的效果和特點(diǎn),最后,通過測試兩種算法的計(jì)算效率,分析了它們的算法結(jié)構(gòu)。
椒鹽噪聲是一種脈沖噪聲,被椒鹽噪聲污染的像素值往往位于像素極值點(diǎn)0或255附近。但如果將所有像素極值點(diǎn)都當(dāng)作噪聲點(diǎn)進(jìn)行濾除,那么圖像中一些未被噪聲污染的正常極值區(qū)域,例如圖像邊緣中的像素點(diǎn)就會被誤認(rèn)為是噪聲點(diǎn),使噪聲誤檢率顯著提高,從而破壞了圖像的正常邊緣區(qū)域。因此,僅僅通過像素極值來判斷其是否為椒鹽噪聲點(diǎn)是不可靠的,被判斷為極值點(diǎn)的像素只能作為可疑噪聲點(diǎn),需要再對其進(jìn)行第二級的檢測。本文設(shè)計(jì)的第一級檢測便是基于灰度范圍準(zhǔn)則。假設(shè)圖像的灰度范圍是[Lmin,Lmax],如果像素的灰度值在[Lmin,Tg]或[Lmax-Tg,Lmax]范圍中,則此像素點(diǎn)可能受到椒鹽噪聲的污染,并將此像素點(diǎn)作為可疑噪聲點(diǎn),其中Tg是閾值。該值設(shè)置的越大,極值像素點(diǎn)就越有可能被判斷為可疑噪聲點(diǎn)。
為了降低誤檢率,保護(hù)圖像邊緣,對可疑噪聲點(diǎn)的第二級檢測基于局部差別準(zhǔn)則。由于受椒鹽噪聲污染的像素點(diǎn)往往是較為孤立的,它與鄰域內(nèi)大多數(shù)像素的差值都很大。因此設(shè)置閾值Tv用以判斷可疑噪聲點(diǎn)與其鄰域內(nèi)像素間的灰度差值是否足夠大,設(shè)置閾值Tn用以判斷與可疑噪聲點(diǎn)灰度差值足夠大的鄰域像素個數(shù)是否足夠多。若可疑噪聲點(diǎn)滿足式(1),則認(rèn)為該像素點(diǎn)被椒鹽噪聲污染。將可疑噪聲點(diǎn)(x,y)處像素的鄰域表示為N(x,y),本文選擇5×5的鄰域窗口尺寸。該鄰域內(nèi)像素點(diǎn)(s,t)處的像素值為f(s,t),#[.]代表滿足條件的像素點(diǎn)個數(shù),于是可以將上述兩個準(zhǔn)則用式(1)統(tǒng)一表示。
(1)
圖1 5×5尺寸的中值濾波窗口Fig.1 A median filtering window for 5×5 size
在檢測出某像素點(diǎn)為椒鹽噪聲點(diǎn)后,為了更好地保留圖像細(xì)節(jié),本文采用中值濾波對噪聲點(diǎn)進(jìn)行濾除。在設(shè)置濾波窗口時,由于尺寸大的窗口計(jì)算量大,而尺寸小的窗口可以更好地保護(hù)細(xì)節(jié)。因此出于這兩個因素折中的考慮,本文使用5×5尺寸的窗濾波口,如圖1所示。為了排除窗口內(nèi)周圍噪聲點(diǎn)對濾波結(jié)果的干擾,在中值濾波前,首先要將窗口內(nèi)已經(jīng)判定為椒鹽噪聲的像素點(diǎn)去除,不讓其參與該窗口內(nèi)的像素值排序。然后將窗口內(nèi)19個正常的像素點(diǎn)進(jìn)行排序,取中值賦給窗口中心的噪聲點(diǎn)像素,若排序像素點(diǎn)個數(shù)是偶數(shù),則取中間兩個像素點(diǎn)的均值賦給中心像素。
圖2 5×5濾波窗口和9個噪聲檢測區(qū)域Fig.2 A filtering window for 5×5 size and the nine detecting areas
在基于信號方向差異性的椒鹽噪聲二級檢測中,其第一級檢測也是基于灰度范圍準(zhǔn)則,這與2.1節(jié)的方法相同,但其第二級檢測基于的是方向差別準(zhǔn)則。
首先,在5×5的噪聲檢測窗口(圖2(a))中設(shè)置9個檢測區(qū)域,包括1個以可疑噪聲點(diǎn)為中心的3×3檢測區(qū)(共8個像素點(diǎn))及8個以可疑噪聲點(diǎn)為頂點(diǎn)的檢測區(qū)(每個區(qū)共6個像素點(diǎn)),如圖2(b)所示。然后,計(jì)算這9個檢測區(qū)中除可疑噪聲點(diǎn)外其它像素點(diǎn)的灰度中值,如式(2)所示。其中,median[]表示對檢測區(qū)中的像素灰度值進(jìn)行中值計(jì)算;fk表示第k個檢測區(qū)中除可疑噪聲點(diǎn)外的其它像素點(diǎn)的灰度值集合,k=1~9;Ak表示第k個檢測區(qū)的灰度中值。如果檢測區(qū)中除可疑噪聲點(diǎn)外參與中值計(jì)算的像素個數(shù)為偶數(shù),那么該檢測區(qū)的中值取排序后中間兩個像素點(diǎn)的灰度均值。
Ak=median[fk]
(2)
最后一步是噪聲點(diǎn)的確定,分別計(jì)算可疑噪聲點(diǎn)的灰度值“suspicious_gray”與Ak的差值絕對值,并將所有檢測區(qū)對應(yīng)的差值絕對值“dk”分別與預(yù)先設(shè)置好的閾值T進(jìn)行比較,計(jì)算差值絕對值大于閾值的個數(shù)“num”,若其大于等于指定數(shù)量“Tnum”,則確定該可疑噪聲點(diǎn)為噪聲點(diǎn)“noise_signal”,否則為正常信號點(diǎn)“normal_signal”。這個過程可以借助MATLAB偽代碼表示,如式(3)所示。
為驗(yàn)證算法的噪聲檢測和去除效果,本文使用Matlab7.11對該算法進(jìn)行仿真實(shí)驗(yàn)。本文選擇如圖3所示的4幅測試圖像,并為每幅測試圖像分別加入0.01, 0.03, 0.05,0.07的椒鹽噪聲密度,例如,添加噪聲密度為0.01的Matlab命令是“imnoise(image,'salt & pepper',0.01)”。在基于信號局部差異性的噪聲檢測和去除過程中,根據(jù)椒鹽噪聲的極值特點(diǎn),可將灰度范圍閾值Tg設(shè)定為25。
圖3 實(shí)驗(yàn)所用測試圖像及其噪聲圖像的縮略圖Fig.3 Thumbnails of test images used in evaluating experiments
圖4 邊緣部位像素的椒鹽噪聲檢測案例(“I03”)Fig.4 Case for detecting salt & pepper noise at image-edges (“I03”)
通過分析可知:在Tn值一定的情況下,Tv值的設(shè)置不宜過大,這是因?yàn)樵谄骄彽牧琳{(diào)區(qū)域存在亮度值也很高的鹽噪聲,在平緩的暗調(diào)區(qū)域也存在著亮度值很低的椒噪聲,它們與本區(qū)域內(nèi)的正常信號點(diǎn)雖然有視覺差別,但相互之間的亮度值相差并不是特別大,此時如果將Tv值設(shè)置得過大,那么將無法檢測出這些噪聲點(diǎn)。若Tv設(shè)置較小,那么檢測窗口內(nèi)與中心像素灰度值相差大于閾值Tv的像素?cái)?shù)就會增多,就有可能將邊緣附近的正常信號點(diǎn)誤判為噪聲點(diǎn),使得噪聲誤檢率增大。在圖4所示的測試圖像“I03”的椒鹽噪聲檢測案例中,對于邊緣部位某一灰度值為227的像素來說,當(dāng)Tn設(shè)置為0.5,Tv為10時,該像素會被誤判為噪聲點(diǎn),濾波后的像素值變?yōu)?10。但當(dāng)Tn不變,Tv增大到40時,該像素沒有被誤檢。因此基于大量試驗(yàn)結(jié)果,文本建議將閾值參數(shù)Tn和Tv分別設(shè)置在[0.5, 0.7]和[20, 30]的范圍內(nèi)。
從圖5可以看出:(1)當(dāng)閾值參數(shù)固定為Tg=25,Tv=20,Tn=0.5時,隨著噪聲密度的提升,無論對于哪幅測試圖像,去噪前后的圖像PSNR值逐漸降低,表明噪聲的去除效果逐漸降低。而隨著噪聲密度的提升,算法的處理時間逐漸增長(為節(jié)省篇幅,未列出具體的程序運(yùn)算時間),這說明噪聲點(diǎn)數(shù)量的增多也增長了噪聲的檢測和去除時間;(2)從4幅測試圖像所對應(yīng)的PSNR值分布來看,測試圖像“I01”的去噪效果最好,對應(yīng)各噪聲密度的PSNR值都能達(dá)到40以上,去噪前后的圖像在視覺上幾乎不可分辨。測試圖像“I04”的去噪效果最差。通過視覺觀察和圖像頻譜分析可知,測試圖像“I03”和“I04”的細(xì)微邊緣明顯多于“I01”和“I02”。借助圖6的分析可以看出,基于信號局部差異性的椒鹽噪聲檢測極易將圖像中微小邊緣和細(xì)節(jié)誤判為噪聲點(diǎn),如圖6中的兩個局部區(qū)域。以區(qū)域1中像素值為6
圖5 基于信號局部差異性的椒鹽噪聲去除效果(Tg=25, Tv=20, Tn=0.5)Fig.5 Noise-removing effects based on local signal difference (Tg=25, Tv=20, Tn=0.5)
圖6 邊緣和細(xì)節(jié)部位像素的椒鹽噪聲檢測案例(“I04”)Fig.6 Case for detecting salt & pepper noise at image-edge and detail (“I04”)
的微小細(xì)節(jié)像素為中心像素,在檢測窗口中,中心像素值與鄰近像素值相差20以上的像素占比超過了50%,因此這個正常的細(xì)節(jié)像素點(diǎn)被誤判為噪聲點(diǎn);同理,區(qū)域2中像素值為22的微小邊緣像素也被誤判為噪聲點(diǎn)。這就是測試圖像“I03”和“I04”去噪效果最差的原因。
在基于信號方向差異性的椒鹽噪聲二級檢測中,其第一級檢測也是基于灰度范圍準(zhǔn)則,這與2.1節(jié)的方法相同,這里也將灰度范圍閾值Tg設(shè)定為25。第二種算法中最關(guān)鍵的是閾值參數(shù)“T”和“Tnum”的設(shè)定。通過分析可知,閾值參數(shù)“T”的作用類似于2.1節(jié)中的參數(shù)“Tv”,起到控制中心像素與鄰域像素差異度的作用,本文取閾值T=20,而參數(shù)“Tnum”的作用類似于2.1節(jié)中的參數(shù)“Tn”,可以控制局部差異度大的像素在濾波窗口中的占比。通過大量試驗(yàn)發(fā)現(xiàn):當(dāng)噪聲密度一定時,隨著“Tnum”值的增大,圖像去噪前后的PSNR值也逐漸增大,當(dāng)其值增大到6時,再繼續(xù)增大“Tnum”,PNSR值也變化不大,甚至還有可能降低,因此本文取閾值Tnum=6。圖7顯示了不同的“Tnum”值對測試圖像I01的去噪效果。
圖8顯示了基于信號方向差異性的椒鹽噪聲去除效果,算法中的閾值參數(shù)設(shè)置如下:Tg=25,T=20,Tnum=6。圖8中的PSNR值分布與圖4
圖7 不同的“Tnum”值對測試圖像I01的去噪效果Fig.7 Noise-removing effects of test image “I01” for different “Tnum” values(Tg=25, T=20, Tnum=2, 4, 6, 8)
相似,即隨著噪聲密度的提升,無論對于哪幅測試圖像,去噪前后的圖像PSNR值逐漸降低,這表明噪聲的去除效果逐漸變差。測試圖像“I01”的去噪效果最好,“I04”的去噪效果最差。通過仔細(xì)觀察可以發(fā)現(xiàn):圖8中的PNSR數(shù)據(jù)在總體上要略高于圖4,尤其是對于細(xì)微邊緣較多的測試圖像“I03”和“I04”來說,更是如此。這說明在椒鹽噪聲的檢測和去除方面,基于方向差異性的算法要略強(qiáng)于基于局部差異性的算法。注意:在測試圖像“I03”和“I04”的噪聲去除中,仍然會出現(xiàn)邊緣和細(xì)節(jié)信號點(diǎn)的誤判問題。
圖8 基于信號方向差異性的椒鹽噪聲去除效果(Tg=25, Tv=20, Tnum=6)Fig.8 Noise-removing effects based on directional difference (Tg=25, Tv=20, Tnum=6)
表1顯示了兩種算法對測試圖像“I01”和“I03”的處理時間,文中算法效率的測試環(huán)境為MATLAB平臺(DELL OptiPlex, Inter(R) Core(TM) i7-4770M CPU@3.40GHZ)??梢钥闯觯悍较虿町愋运惴ǖ倪\(yùn)算效率與局部差異性算法相當(dāng)。通過分析可知:兩種算法從原理上看都是將中心可疑像素與周圍鄰域的差異性作為噪聲檢測的準(zhǔn)則,可以將方向差異性算法看作是局部差異性算法的特例。另外,兩種算法在結(jié)構(gòu)上都分為噪聲檢測和噪聲去除兩個步驟。因此這兩種算法在結(jié)構(gòu)上非常相似,也具有相似的運(yùn)算效率。
表1 不同濾波算法對兩幅測試圖像的處理時間Tab.1 Computing times of different algorithms for the two test images (s)
續(xù) 表
開關(guān)中值濾波器非常適合用于椒鹽噪聲的檢測和去除。本文設(shè)計(jì)了一種基于信號局部差異性和一種基于信號方向差異性的椒鹽噪聲檢測算法。它們都屬于兩級噪聲檢測算法,兩者的第一級檢測都是基于灰度范圍準(zhǔn)則。它們的主要區(qū)別體現(xiàn)在第二級檢測中,前者基于局部差異性準(zhǔn)則,而后者基于方向差異性準(zhǔn)則。在算法性能評價(jià)部分,首先通過分析和實(shí)驗(yàn)確定兩種算法的最優(yōu)參數(shù)設(shè)置;然后,通過對不同噪聲密度的測試圖像去噪來評價(jià)兩種算法的去噪效果。評價(jià)結(jié)果表明:基于方向差異性的算法比基于局部差異性的算法具有更好的性能,且兩種算法的去噪效果都與噪聲密度成反比。需要注意的是,這兩種算法都容易將圖像中的細(xì)微邊緣或細(xì)節(jié)像素誤判為噪聲點(diǎn),這是目前開關(guān)二級濾波算法存在的主要問題,即在噪聲的檢測過程中,只能避免對圖像中主要邊緣和輪廓像素的誤判,還無法對圖像中的細(xì)微邊緣和細(xì)節(jié)進(jìn)行精確判定,這也是開關(guān)二級噪聲濾波算法今后的主要改進(jìn)方向。另外,通過算法效率的測試,可以看出兩種算法具有相似的計(jì)算時間,從而驗(yàn)證了兩者之間的算法結(jié)構(gòu)相似性。