趙玲玲
(重慶師范大學計算機與信息科學學院,重慶 401331)
圖像作為現代社會中一種不可或缺的信息來源,通過對圖像進行加工處理獲得圖像包含的內容。但在通常情況下,各種噪聲在圖像生成或傳輸過程中使圖像降質,使得后續對圖像進行處理(如分割、壓縮和圖像理解等)時產生極大影響。因此,在使用圖像的過程中,要對圖像進行濾波處理。圖像濾波是指在盡可能保留原始圖像邊緣和細節特征的情況下,對目標圖像進行噪聲抑制,用來減少不同脈沖噪聲對圖像的影響。噪聲與圖像的邊緣和細節特征信號點之間可能存在某種相似性。當濾除噪聲時,可能濾除邊緣和細節信號點[1]。在實際的應用操作中,圖像被過濾,但是邊緣特征和圖像的一些細節不能在過濾過程中一起過濾[2]。圖像濾波分為線性濾波和非線性濾波。中值濾波是線性濾波中最典型的。其缺點是圖像的邊緣和細節容易模糊。非線性濾波,例如中值濾波,使用原始圖像和模板之間的邏輯關系來獲得結果。由于中值濾波被提出,它被廣泛用于的圖像噪聲濾波[3-4]。
中值濾波使用技術為非線性平滑技術,該算法首先對圖像的像素灰度值進行排序。圖像中每個像素的灰度值被認為是當前遍歷窗口中像素灰度值的中值,中值濾波的實現原理:圖像像素灰度值中的一個點的值被該點的遍歷窗口中每個點值的中值代替。這樣做的目的是使其周圍的像素值接近,從而消除非常大或非常小的噪聲點[5]。該算法的總體實現是使用二維滑動模板。遍歷模板的像素按像素值從大到小(或從小到大)排序。排序后的像素值產生二維數據的單調上升(或下降)序列[6]。二維中值濾波輸出為:

其中,f(x,y)是原始圖像,g(x,y)是處理后圖像。w表示濾波窗口(二維模板),一般有 3×3、5×5、7×7等模板。其實現過程為:
(1)選擇合適的模板來遍歷圖像中的圖像,直到模板的中心與圖像中像素的位置一致;
(2)提取模板中各個灰度值對應位置的像素點灰度值;
(3)把提取到的灰度值按從小到大進行排列;
(4)確定排列的中值;
(5)用中間值替換模板中心位置上的像素灰度值。
自適應中值濾波算法選取一個m×n的矩形窗口sxy作為濾波窗口在圖像上進行噪聲檢測。從而對圖像的像素點作出噪聲點與非噪聲點的判斷。執行過濾操作時,如果過濾窗口影響過濾操作,算法會根據預先設置的條件自動調整過濾窗口大小。否則,不要調整。輸出過濾結果時,首先確定當前遍歷窗口(即過濾窗口)中的像素的中值是否是噪聲點。判斷如果窗口中值是噪聲點,則增大窗口。判斷中值如果不是噪聲點,則判斷當前像素是否為噪聲點。如果是,則用中值代替輸出。如果不是,直接輸出[7-8]。
自適應中值濾波算法分為兩個進程,表示為進程A和進程B:
定義的變量:當前濾波窗口Sxy中的最小灰度值:Zmin。當前濾波窗口Sxy中的最大灰度值:Zmax。當前濾波窗口Sxy中的灰度值的中值:Zmed為。坐標(x,y)處的灰度值:Zxy。當前窗口Sxy允許的最大尺寸:Smax。

在圖像噪聲密度較小的情況下,中值濾波算法和自適應中值濾波算法都表現出了較好的去噪性能。如在噪聲密度為0.2的情況下,中值濾波和自適應中值濾波算法濾波性良好,并且對圖像的邊緣和細節有較好的保持。但是,當噪聲密度大于或等于1/2時,中值濾波算法和自適應中值濾波算法的濾波性能逐漸下降,如在噪聲密度為0.5時,中值濾波后的圖像有雪花狀噪聲,噪聲密度為0.8時,雪花狀噪聲出現更多,而自適應中值濾波后的圖像也出現雪花狀噪聲,圖像的邊緣和細節保持性能較噪聲密度為0.2時下降,如圖1所示。

圖1 兩種算法對圖像Lena的濾波效果比較
在對自適應中值濾波的改進中,如趙高長等人[9]在噪聲檢測時,對圖像增加閾值處理,并在濾波時引入均值濾波的思想,并用加權的方法得出中值然后輸出。但是在這一改進中存在以下問題:①閾值的大小難以確定,需要多次的實驗來確定,加大工作量;②采用均值濾波,進行加權,帶入了線性濾波的缺點即模糊了圖像的邊緣與細節,而這種現象與最初進行圖像濾波的目的不同。張旭明等人[10]提議根據噪聲干擾程度自動調整濾波器窗口大小。噪聲被去除的同時,圖像邊緣和細節特征保持不變,但是判斷噪聲干擾程度的方法不容易確定[11-12]。針對目前中值濾波和自適應中值濾波算法中存在的這些問題,本文對標準自適應中值濾波算法做了一些改進,從而避免了這些問題。
標準的自適應中值濾波算法先判斷濾波窗口的中值是否為噪聲點,再判斷當前圖像像素點是否為噪聲點。本文改進的算法先判斷當前圖像像素點是否為噪聲點,再根據需要判斷濾波窗口中值是否為噪聲點。第一步噪聲檢測:先檢測判斷圖像中該點的像素灰度值是否為噪聲點。第二步濾除噪聲。濾除噪聲時對該像素點考慮多種情況。情況一,該像素點不是噪聲點,直接輸出該像素灰度值。情況二,該點是噪聲點。檢測此時濾波窗口中的中值(Zmed)是否為噪聲點。在判斷中值是否為噪聲點時也要考慮多種情況。情況一,Zmed不是噪聲點,輸出此濾波窗口中值Zmed。情況二,Zmed是噪聲,根據算法中已設定的條件自動增大濾波窗口尺寸,一直循環到選出正確的中值。但是,這樣的循環操作中也會出現一些比較極端的情況,如,當濾波窗口自動增大到允許的最大窗口尺寸時,Zmed取值依然沒有選出來,對當前濾波窗口做處理。除去窗口中的極小和極大灰度值,用剩余像素的灰度均值代替當前像素值輸出。
改進算法的具體步驟:
定義變量:中心在(x,y)處的當前濾波窗口:Sxy。初始窗口大小:S0。允許的最大窗口大小:Smax。圖像(x,y)處的灰度值:Zxy。Sxy中的極小灰度值:Zmin。Sxy中的極大灰度值:Zmax。Sxy中的灰度值的中值:Zmed。窗口均指當前使用的濾波窗口大小。
①如果 Zmin〈Zxy〈Zmax,輸出 Zxy,否則執行②;
② 如 果Zmin〈Zmed〈Zmax,輸 出Zmed,否 則 執行③;
③如果 Sxy+2≤Smax,增大窗口:Sxy=Sxy+2,執行①,否則轉④;
④輸出當前窗口中除去極大、極小灰度值的其余像素的灰度均值Savg。
算法改進的兩方面:
(1)算法先判斷當前像素是否為噪聲,若不是則直接輸出當前像素;若是噪聲再判斷當前窗口的中值是否為噪聲,然后根據中值的判斷結果執行是否增大窗口,算法邏輯清晰,降低算法復雜度。
(2)在圖像噪聲密度較小時,中值濾波和標準自適應中值濾波算法表現了較好的濾波性能。但在圖像噪聲密度較大的情況下,標準的自適應中值濾波算法判斷當前像素和中值都為噪聲。依然用中值代替當前像素值作為輸出。這是不合常理的。而改進的自適應中值濾波算法解決了這了這一問題。
利用MATLAB R2016a實驗環境,依據本文提出的改進算法,進行仿真實驗。通過對添加了不同密度的脈沖噪聲的256×256圖像Lena進行濾波,與中值濾波、標準自適應中值濾波結果進行比較來證明改進算法的有效性。數據分析時引入峰值信噪比(PSNR)作為客觀數據的評價標注。
PSNR定義為:

其中m×n為圖像大小;MSE是原圖像與處理圖像之間均方誤差;I(i,j)為原始參圖像;K(i,j)為加噪濾波后的圖像。仿真實驗效果如圖2所示。

圖2 三種算法對圖像Lena的濾波效果比較
經過圖2的三種算法的圖像濾波效果比較:圖像脈沖噪聲密度為0.2時,三種算法的濾波效果基本沒有差別;圖像噪聲密度為0.5時,中值濾波效果圖出現較多的噪聲點,影響較大,而標準自適應和改進的自適應中值濾波表現較好,基本沒差別;當圖像噪聲密度變大為0.8時,三種算法出現明顯差別,中值濾波噪聲點影響最大,標準自適應中值濾波出現雪花狀噪聲點,與前兩種算法比,改進的算法濾波效果更好。不同算法的效果性能如圖3所示。

圖3 三種算法的濾波性能比較

表1 三種算法對標準圖像Lena濾波PSNR比較(單位:dB)
三種濾波算法對不同密度脈沖噪聲的PSNR如圖3所示,與圖2相對應的不同噪聲密度的PSNR值如表1所示。從圖3可得,在不同噪聲密度下,中值濾波濾波效果整體較差;而自適應中值濾波和本文的濾波算法在噪聲密度較小時,濾波效果接近,改進的算法PSNR稍大一點,差別不大,如噪聲密度為0.2~0.4。當噪聲密度增大時,自適應的兩種算法PSNR差別明顯變大,改進的自適應算法PSNR明顯大于標準的,如噪聲密度:0.6~0.9,并且從圖3中各算法的PSNR的圖形得出隨著噪聲密度的變大,兩種自適應算法的PSNR的差距呈逐漸增大趨勢。
與中值濾波算法相比,標準的自適應中值濾波在保持圖像的邊緣和細節的同時,可以有效地濾除圖像的不同密度的脈沖噪聲。但中值和標準自適應濾波算法始終存在局限性。針對這些局限性,本文提出了對自適應中值濾波的改進算法,并通過仿真實驗以及其數據分析證明,提出的改進自適應中值濾波算法的濾波性能優于中值濾波和標準自適應濾波。