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