董林鷺,楊平先,陳明舉,林國軍
(四川輕化工大學(xué)自動化與信息工程學(xué)院,四川自貢643000)
由于互聯(lián)網(wǎng)的快速發(fā)展,獲取信息時,在傳播過程中會受到各種干擾,使信號質(zhì)量變差. 造成圖像隨機(jī)產(chǎn)生暗點(diǎn)和亮點(diǎn),稱為椒鹽噪聲[1-3],該噪聲嚴(yán)重影響了圖像信息的表達(dá),除去圖像椒鹽噪聲的研究從未停止過[4-5],學(xué)者們提出了許多濾波方法[6-9],如 自 適 應(yīng) 中 值 濾 波(AMF)[10]、加 權(quán) 中 值 濾 波(WMF)[11]等,利用圖像內(nèi)部數(shù)據(jù),對噪聲點(diǎn)進(jìn)行濾波處理,其缺點(diǎn)是濾波處理時間較長,無法滿足實(shí)際工程需要. 王志軍[12]提出一種自適應(yīng)中值梯度倒數(shù)加權(quán)的圖像濾波算法.該算法自適應(yīng)調(diào)節(jié)窗口大小檢測出椒鹽噪聲并進(jìn)行中值濾波處理,同時通過設(shè)定的閾值對高斯噪聲進(jìn)行梯度倒數(shù)加權(quán)平滑,以達(dá)到濾除混合噪聲的目的. 蘭霞[13]等人提出了一種迭代的中值濾波算法,該方法首先依據(jù)像素的強(qiáng)度值判斷噪聲點(diǎn)的位置,然后在循環(huán)迭代的處理框架內(nèi),對噪聲像元進(jìn)行逐步恢復(fù),但是對復(fù)雜模型的噪聲效果還不夠理想. 這些濾波算法都有一個特點(diǎn),即計(jì)算復(fù)雜度高且濾波時間長,不能滿足實(shí)際工程應(yīng)用中的大批量實(shí)時濾波要求. 自適應(yīng)中值濾波(AMF)[10]算法首先選定大小為3×3 的濾波窗口,利用該窗口內(nèi)像素中值分別與窗口內(nèi)像素最大值、像素最小值做差,若前者之差<0且后者之差>0,則用窗口中間位置處像素值與窗口內(nèi)像素最大值、像素最小值分別做差,若前者之差<0且后者之差>0,就判定該窗口中心處像素點(diǎn)為原圖像素,直接出該像素值.否則增加窗口維度,繼續(xù)重復(fù)以上步驟,直到窗口維度達(dá)到設(shè)定值,完成自適應(yīng)中值濾波過程.
王拓[14]等人提出一種消除椒鹽噪聲的迭代自適應(yīng)中值濾波算法,該算法主要是利用椒鹽噪聲的特性即噪聲像素值為(0,255),先判斷3×3窗口內(nèi)噪聲是否為百分之百,若不是,則選取該窗口內(nèi)非噪聲像素的中值替換窗口中心處噪聲像素,若是,擴(kuò)大窗口為5×5. 重復(fù)以上過程,若是百分之百被污染,則標(biāo)記該窗口中值處像素坐標(biāo),進(jìn)行迭代處理,完成濾波過程. 周華[15]提出基于動態(tài)窗口的自適應(yīng)中值濾波算法,該算法先進(jìn)行噪聲檢測,即利用噪聲點(diǎn)與原像素點(diǎn)的差值關(guān)系,設(shè)立閾值,區(qū)分出椒鹽噪聲像素點(diǎn)與原圖像像素點(diǎn),判斷出噪聲點(diǎn)后,利用比較AM值與像素極大值Gmax與極小值Gmin的關(guān)系,確定是否調(diào)整窗口大小,達(dá)到動態(tài)窗口自適應(yīng)中值濾波的目的.
本文利用傳統(tǒng)中值濾波(MF)[16]能快速濾波的優(yōu)點(diǎn),對其不足之處,即需要手動調(diào)整濾波窗口和濾波過程造成圖像細(xì)節(jié)模糊化的缺點(diǎn)進(jìn)行改進(jìn),提出一種基于椒鹽噪聲自適應(yīng)調(diào)整濾波窗口的算法,其思路是估計(jì)出圖像的噪聲密度,并在手動調(diào)整中值濾波窗口情況下進(jìn)行大量實(shí)驗(yàn),得出不同噪聲密度下的最優(yōu)濾波窗口,建立兩者的函數(shù)關(guān)系,達(dá)到自適應(yīng)選取在該密度下濾波效果最好的濾波窗口維度,再從濾波后的圖像中分離出噪聲修復(fù)像素和濾波前未被噪聲污染的細(xì)節(jié)像素,將細(xì)節(jié)像素與噪聲修復(fù)像素鑲嵌融合,達(dá)到保護(hù)圖像細(xì)節(jié)的作用.
中值濾波就是用一個含有奇數(shù)點(diǎn)的移動窗口,將窗口中心點(diǎn)的值用窗口內(nèi)各點(diǎn)的中值代替,即:
式中:Sxy是以像素(x,y)為中心的含奇數(shù)個像素點(diǎn)的鄰域窗口,{ f(s,t)}是窗口Sxy內(nèi)所有像素灰度值按大小排序后的一維數(shù)據(jù)序列. 圖1 是一幅行與列為5×5 的圖像,對其采用濾波窗口分別為3×3、5×5中值濾波處理,達(dá)到經(jīng)典中值濾波算法原理的目的.
圖1 中值濾波模板
例如,對于像素(x,y)的一個3×3 的鄰域內(nèi)所有像素值(10,20,20,20,15,20,20,25,100),對這些值排序后為(10,15,20,20,20,20,20,25,100),那么,其中值是第5個值,而在一個5×5的鄰域中,中值就是第13個值,等等. 可見該算法簡單,濾波處理時間快,但容易造成圖像細(xì)節(jié)模糊[17-18]、細(xì)節(jié)丟失和在不同噪聲密度下需要手動調(diào)整窗口維度來獲得最優(yōu)輸出結(jié)果等缺點(diǎn).
本文算法分為兩部分:①估計(jì)噪椒鹽噪聲密度P,并根據(jù)噪聲密度P%自適應(yīng)調(diào)節(jié)最優(yōu)中值濾波窗口對噪聲圖像進(jìn)行濾波處理;②優(yōu)化濾波處理后圖像的細(xì)節(jié).
分析椒鹽噪聲特點(diǎn),將圖像的像素歸為兩類,第一類是圖像細(xì)節(jié)像素點(diǎn)記為fi,j,第二類是椒鹽噪聲污染像素點(diǎn)記為Zi,j,椒鹽噪聲污染圖像數(shù)學(xué)表達(dá)式為:
利用經(jīng)典中值濾波對噪聲圖像進(jìn)行濾波預(yù)處理,目的是為了快速得到一幅近似原圖的濾波圖,其表達(dá)式為:
式中,f"i,j表示濾波處理后原細(xì)節(jié)像素,由于包含了誤處理像素點(diǎn),所以區(qū)別于fi,j且fi,j≈f"i,j.Z"i,j表示噪聲修復(fù)區(qū)域像素.為了減少濾波誤處理帶來的誤差影響,本文在提取噪聲時加入閥值,經(jīng)過大量實(shí)驗(yàn)后,閾值設(shè)為40 能得到最優(yōu)結(jié)果. 利用噪聲圖像減去預(yù)處理圖像. 當(dāng)各像素點(diǎn)差值大于閾值時,判定該點(diǎn)為鹽(像素值255)噪聲,并令其值為1. 當(dāng)各像素點(diǎn)差的絕對值小于0時,判定該點(diǎn)為椒(像素值0)噪聲,為了在估計(jì)噪聲密度時方便統(tǒng)計(jì)噪聲像素點(diǎn)個數(shù),令所有小于0 的像素點(diǎn)其值為1. 提取噪聲像素Zi,j的過程滿足表達(dá)式(4):
利用MATLAB 統(tǒng)計(jì)出圖像中像素Zi,j的個數(shù),即尋找差值圖像中像素值為1 的個數(shù)(記為S1). 再利用圖像像素維度的高M(jìn)、寬N,求出圖像的總像素點(diǎn)個數(shù)S=M×N,則椒鹽噪聲估計(jì)密度P 表達(dá)式滿足:
由經(jīng)典中值濾波算法(MF)濾波原理可知,在濾波過程中是遍歷整幅圖像,對每個像素點(diǎn)取中值,圖像細(xì)節(jié)部分同時被模糊化. 針對這一問題,在估計(jì)出噪聲密度后利用本文算法對噪聲圖再次進(jìn)行濾波,中值濾波窗口為最優(yōu)輸出效果時窗口大小,然后提取濾波后圖像中噪聲修復(fù)區(qū)域像素Z"i,j,表達(dá)式如(6)所示:
式(6)中設(shè)立了閥值15,目的是減少fi,j≈f"i,j的誤差對Z"i,j的影響.fi,j由式(2)、(4)聯(lián)合求得:
利用式(7)得到未被噪聲污染的像素fi,j與式(6)得到的濾波后圖像中噪聲修復(fù)像素點(diǎn)Z"i,j鑲嵌融合,保證了濾波后未被噪聲污染區(qū)域像素的細(xì)節(jié)不會受到濾波算法的影響,表達(dá)式為:
Gi,j即為本文算法濾波后的最終輸出結(jié)果.
為了更加直觀地反映出本文算法對濾波后圖像細(xì)節(jié)的保護(hù),可以應(yīng)用圖例來具體介紹該過程. 首先對大小為256×256 的8 bit 標(biāo)準(zhǔn)MATLAB 實(shí)驗(yàn)圖Baboon(圖2a),加入20%密度的椒鹽噪聲(圖2b),用窗口大小為5×5 的中值濾波(MF)對其濾波處理(圖2c),整個過程如圖2所示.
圖2 中值濾波過程
由公式(4)提取噪聲Zi,j過程如圖3所示.
由公式(7)提取未被污染區(qū)域像素fi,j的過程如圖4所示.
圖3 噪聲提取過程
圖4 未被污染區(qū)提取過程
由公式(6)提取噪聲修復(fù)區(qū)域像素Z"i,j過程如圖5所示.
圖5 噪聲修復(fù)區(qū)域提取
由公式(8),將噪聲修復(fù)區(qū)域Z"i,j與未被噪聲污染區(qū)域fi,j鑲嵌融合得到本文算法的輸出結(jié)果,如6所示.
圖6 算法輸出過程
首先對噪聲圖進(jìn)行中值濾波預(yù)濾波處理,然后利用噪聲圖Ui,j與濾波處理后的圖像ui,j做差與閥值比較提取出噪聲Zi,j,由噪聲圖像Ui,j與噪聲Zi,j做差取出未被污染區(qū)域fi,j,再利用未被污染區(qū)域像素點(diǎn)個數(shù)與圖像總像素點(diǎn)個數(shù)估計(jì)出噪聲密度P,根據(jù)噪聲密度與中值濾波窗口的函數(shù)關(guān)系,自適應(yīng)調(diào)整中值濾波窗口對噪聲圖像進(jìn)行濾波處理,最后結(jié)合提取出來的未被污染區(qū)域fi,j與閥值提取出本文算法濾波后的噪聲修復(fù)區(qū)域Z"i,j,將fi,j與Z"i,j鑲嵌融合,得到一張完整的濾波處理圖,圖7為本文算法的輸出結(jié)果.
圖7 本文算法流程圖
本文選用了30 幅大小為256×256 的8 bit 標(biāo)準(zhǔn)MATLAB實(shí)驗(yàn)圖片,加10%~90%密度的椒鹽噪聲,分別用窗口大小為W(3×3)、W(5×5)、W(7×7)、W(9×9)、W(11×11)、W(13×13)、W(15×15)的中值濾波(MF)對椒鹽噪聲圖像進(jìn)行濾波處理,并采用峰值信噪比對各中值濾波窗口在不同椒鹽噪聲下的效果做出客觀評價(jià),取30 幅圖像的平均評價(jià)值(表1)來確定不同噪聲密度下中值濾波算法的最優(yōu)窗口大小,并建立函數(shù)關(guān)系.其中峰值信噪比(PSNR)原理如下:
式中,M 和N 分別為圖像橫向和縱向的像素個數(shù);X(i,j)為原始圖像的灰度值;Y(i,j)為經(jīng)過濾波器處理后的圖像灰度值;F 為圖像中可能出現(xiàn)的最大灰度值(本文選用8 bit 灰度圖像,則S=255). 由式(9)可知,PSNR越大,濾波圖像與原圖越接近.
表1 各種中值濾波窗口對30幅圖像濾波后的平均PSNR值的比較
分析表1 可見,噪聲密度在10%、20%時窗口大小為W(3×3)的PSNR 值最高、當(dāng)椒鹽噪聲密度在30%、40%時窗口大小為W(5×5)的PSNR 值最高,當(dāng)椒鹽噪聲密度在50%、60%時窗口大小為W(7×7)的PSNR 值最高,當(dāng)椒鹽噪聲密度在70%時窗口大小為W(11×11)的PSNR值最高,當(dāng)椒鹽噪聲密度在80%時窗口大小為W(13×13)的PSNR值最高,當(dāng)椒鹽噪聲密度在90%時窗口大小為W(15×15)的PSNR值最高,為了直觀地觀察不同椒鹽噪聲下中值濾波窗口對濾波效果的影響,將表1繪制成折線圖如圖8所示.
根據(jù)表1得到了不同密度下椒鹽噪聲濾波效果最好時所對應(yīng)中值濾波窗口大小的關(guān)系,從而建立自適應(yīng)調(diào)取窗口大小的函數(shù)關(guān)系如下:
圖8 各種中值濾波窗口對30幅圖像濾波后的平均PSNR值的比較
W(n×n)即為同椒鹽噪聲密度下自適應(yīng)選取中值濾波窗口的大小.
為了證明本文對中值濾波算法細(xì)節(jié)的保護(hù)優(yōu)勢,選用4 幅標(biāo)準(zhǔn)MATLAB 實(shí)驗(yàn)圖加入30%密度的椒 鹽 噪 聲,分 別 用 窗 口 大 小 為W(3×3)、W(5×5)、W(7×7)、W(9×9)、W(11×11)、W(13×13)、W(15×15)和本文的算法對其濾波處理,得到的濾波效果如圖9所示.
圖9 30%噪聲密度下不同窗口中值濾波效果與本文算法對比
結(jié)合公式(10)與圖9 可以看出,在噪聲密度為30%時,中值濾波窗口濾波效果最好的是W(5×5),同時本文算法是基于中值濾波在該噪聲密度下濾波效果最好的窗口大小,但本文算法的濾波效果在細(xì)節(jié)保護(hù)上比中值濾波在該密度下的最優(yōu)窗口保護(hù)細(xì)節(jié)的能力更強(qiáng).
對一種濾波算法的評價(jià)常常以峰值信噪比、結(jié)構(gòu)相似度的大小以及濾波處理時間t(單位為s)來對其進(jìn)行評價(jià),其中時間的,如果只看濾波效果而忽略濾波處理時間的長短,將無法滿足實(shí)際工程的要求.
因此首先驗(yàn)證本文算法對噪聲圖像估計(jì)出的椒鹽噪聲密度與實(shí)際椒鹽密度的誤差,再采用客觀的評價(jià)函數(shù)圖像的峰值信噪比與圖像的結(jié)構(gòu)相似度來對本文算法自適應(yīng)調(diào)用濾波庫中算法進(jìn)行客觀驗(yàn)證.其中峰值信噪比的評價(jià)原理在前文有詳細(xì)的介紹,對于結(jié)構(gòu)相似度的圖像評價(jià)原理,其表達(dá)式為:
式中,μx是x的平均值,μy是y的平均值,是x的方差,是y 的 方 差,σxy是x 和y 的 協(xié) 方 差. c1=(k1L)2、c2=(k2L)2是用來維持穩(wěn)定的常數(shù),其L 是像素值的動態(tài)范圍,k1=0.01,k2=0.03. 由式(11)可得,在0 到1 之間,SSIM 值越接近1,兩張圖片結(jié)構(gòu)越相似,當(dāng)值為1時表示兩圖完全一致.
本文提出的方法運(yùn)用MATLAB 2016 編程,以2.60 GHz 的英特爾CPU、運(yùn)行內(nèi)存為8 GB 的筆記本平臺進(jìn)行仿真,分別對265×265 大小8 bit 的灰度圖lena、einstein、Baboon、Cameraman加10%~90%的椒鹽噪聲,再用窗口大小為W(3×3)、W(5×5)、W(7×7)、W(9×9)、W(11×11)、W(13×13)、W(15×15)的中值濾波算法和本文算法對圖像進(jìn)行濾波處理,得到客觀評價(jià)值后進(jìn)行比較,結(jié)果如表2 所示,其中Wz表示噪聲圖與原圖的峰值信噪比,客觀評價(jià)值是多次試驗(yàn)后取得的平均值.
從表2 可以看到,本文對應(yīng)噪聲的估計(jì)誤差在3%內(nèi)波動,為了滿足函數(shù)的調(diào)用公式,本文采用了四舍五入的方法,使濾波窗口與噪聲密度相匹配,達(dá)到快速調(diào)整濾波窗口的目的.為了直觀地了解本文自適應(yīng)選擇濾波窗口與濾波處理中對圖像細(xì)節(jié)的保護(hù)優(yōu)勢,將表2 中峰值信噪比和圖像相似度繪制成折線圖,結(jié)果如圖10、11所示.從圖中可以看到在不同噪聲密度下本文算法客觀評價(jià)值都是最優(yōu),同時隨著噪聲密度的增加,本文算法對于同一大小窗口的中值濾波的客觀評價(jià)的提升是逐漸變?nèi)醯? 因?yàn)椋肼暶芏仍酱髨D像未被污染的像素就越少,所以對細(xì)節(jié)保護(hù)的比例就越小.在濾波時間上本文算法只是在10-3s級別增加變化,完全可以忽略這樣的變化. 因此本文算法在實(shí)際工程中,對于大批量的椒鹽噪濾波處理有著重要的意義.
圖10 不同窗口中值濾波與本文算法的PSNR評價(jià)比較
圖11 不同窗口中值濾波與本文算法的SSIM評價(jià)比較
中值濾波因?yàn)樗惴ê唵巍V波處理時間快的特點(diǎn)被廣泛的應(yīng)用于椒鹽噪聲的濾出,但該算法在不同的椒鹽噪聲密度下濾波窗口大小對濾波效果的影響非常大,為了得到最好的濾波效果常常需要手動調(diào)整濾波窗口大小,嚴(yán)重限制了該算法在工程上的應(yīng)用. 針對該問題,本文提出的基于椒鹽噪聲密度自適應(yīng)調(diào)整中值濾波(MF)窗口的算法,根據(jù)噪聲的密度自適應(yīng)調(diào)整中值濾波的窗口,使得濾波效果達(dá)到最理想的結(jié)果,而且對中值濾波本身的濾波時間只是在10-3s級別上略微增加,同時細(xì)節(jié)保護(hù)能力更強(qiáng),使算法能夠滿足實(shí)際工程應(yīng)用的要求.