趙玲玲
(重慶師范大學(xué)計(jì)算機(jī)與信息科學(xué)學(xué)院,重慶 401331)
圖像作為現(xiàn)代社會(huì)中一種不可或缺的信息來(lái)源,通過(guò)對(duì)圖像進(jìn)行加工處理獲得圖像包含的內(nèi)容。但在通常情況下,各種噪聲在圖像生成或傳輸過(guò)程中使圖像降質(zhì),使得后續(xù)對(duì)圖像進(jìn)行處理(如分割、壓縮和圖像理解等)時(shí)產(chǎn)生極大影響。因此,在使用圖像的過(guò)程中,要對(duì)圖像進(jìn)行濾波處理。圖像濾波是指在盡可能保留原始圖像邊緣和細(xì)節(jié)特征的情況下,對(duì)目標(biāo)圖像進(jìn)行噪聲抑制,用來(lái)減少不同脈沖噪聲對(duì)圖像的影響。噪聲與圖像的邊緣和細(xì)節(jié)特征信號(hào)點(diǎn)之間可能存在某種相似性。當(dāng)濾除噪聲時(shí),可能濾除邊緣和細(xì)節(jié)信號(hào)點(diǎn)[1]。在實(shí)際的應(yīng)用操作中,圖像被過(guò)濾,但是邊緣特征和圖像的一些細(xì)節(jié)不能在過(guò)濾過(guò)程中一起過(guò)濾[2]。圖像濾波分為線性濾波和非線性濾波。中值濾波是線性濾波中最典型的。其缺點(diǎn)是圖像的邊緣和細(xì)節(jié)容易模糊。非線性濾波,例如中值濾波,使用原始圖像和模板之間的邏輯關(guān)系來(lái)獲得結(jié)果。由于中值濾波被提出,它被廣泛用于的圖像噪聲濾波[3-4]。
中值濾波使用技術(shù)為非線性平滑技術(shù),該算法首先對(duì)圖像的像素灰度值進(jìn)行排序。圖像中每個(gè)像素的灰度值被認(rèn)為是當(dāng)前遍歷窗口中像素灰度值的中值,中值濾波的實(shí)現(xiàn)原理:圖像像素灰度值中的一個(gè)點(diǎn)的值被該點(diǎn)的遍歷窗口中每個(gè)點(diǎn)值的中值代替。這樣做的目的是使其周圍的像素值接近,從而消除非常大或非常小的噪聲點(diǎn)[5]。該算法的總體實(shí)現(xiàn)是使用二維滑動(dòng)模板。遍歷模板的像素按像素值從大到?。ɑ驈男〉酱螅┡判?。排序后的像素值產(chǎn)生二維數(shù)據(jù)的單調(diào)上升(或下降)序列[6]。二維中值濾波輸出為:
其中,f(x,y)是原始圖像,g(x,y)是處理后圖像。w表示濾波窗口(二維模板),一般有 3×3、5×5、7×7等模板。其實(shí)現(xiàn)過(guò)程為:
(1)選擇合適的模板來(lái)遍歷圖像中的圖像,直到模板的中心與圖像中像素的位置一致;
(2)提取模板中各個(gè)灰度值對(duì)應(yīng)位置的像素點(diǎn)灰度值;
(3)把提取到的灰度值按從小到大進(jìn)行排列;
(4)確定排列的中值;
(5)用中間值替換模板中心位置上的像素灰度值。
自適應(yīng)中值濾波算法選取一個(gè)m×n的矩形窗口sxy作為濾波窗口在圖像上進(jìn)行噪聲檢測(cè)。從而對(duì)圖像的像素點(diǎn)作出噪聲點(diǎn)與非噪聲點(diǎn)的判斷。執(zhí)行過(guò)濾操作時(shí),如果過(guò)濾窗口影響過(guò)濾操作,算法會(huì)根據(jù)預(yù)先設(shè)置的條件自動(dòng)調(diào)整過(guò)濾窗口大小。否則,不要調(diào)整。輸出過(guò)濾結(jié)果時(shí),首先確定當(dāng)前遍歷窗口(即過(guò)濾窗口)中的像素的中值是否是噪聲點(diǎn)。判斷如果窗口中值是噪聲點(diǎn),則增大窗口。判斷中值如果不是噪聲點(diǎn),則判斷當(dāng)前像素是否為噪聲點(diǎn)。如果是,則用中值代替輸出。如果不是,直接輸出[7-8]。
自適應(yīng)中值濾波算法分為兩個(gè)進(jìn)程,表示為進(jìn)程A和進(jìn)程B:
定義的變量:當(dāng)前濾波窗口Sxy中的最小灰度值:Zmin。當(dāng)前濾波窗口Sxy中的最大灰度值:Zmax。當(dāng)前濾波窗口Sxy中的灰度值的中值:Zmed為。坐標(biāo)(x,y)處的灰度值:Zxy。當(dāng)前窗口Sxy允許的最大尺寸:Smax。
在圖像噪聲密度較小的情況下,中值濾波算法和自適應(yīng)中值濾波算法都表現(xiàn)出了較好的去噪性能。如在噪聲密度為0.2的情況下,中值濾波和自適應(yīng)中值濾波算法濾波性良好,并且對(duì)圖像的邊緣和細(xì)節(jié)有較好的保持。但是,當(dāng)噪聲密度大于或等于1/2時(shí),中值濾波算法和自適應(yīng)中值濾波算法的濾波性能逐漸下降,如在噪聲密度為0.5時(shí),中值濾波后的圖像有雪花狀噪聲,噪聲密度為0.8時(shí),雪花狀噪聲出現(xiàn)更多,而自適應(yīng)中值濾波后的圖像也出現(xiàn)雪花狀噪聲,圖像的邊緣和細(xì)節(jié)保持性能較噪聲密度為0.2時(shí)下降,如圖1所示。
圖1 兩種算法對(duì)圖像Lena的濾波效果比較
在對(duì)自適應(yīng)中值濾波的改進(jìn)中,如趙高長(zhǎng)等人[9]在噪聲檢測(cè)時(shí),對(duì)圖像增加閾值處理,并在濾波時(shí)引入均值濾波的思想,并用加權(quán)的方法得出中值然后輸出。但是在這一改進(jìn)中存在以下問(wèn)題:①閾值的大小難以確定,需要多次的實(shí)驗(yàn)來(lái)確定,加大工作量;②采用均值濾波,進(jìn)行加權(quán),帶入了線性濾波的缺點(diǎn)即模糊了圖像的邊緣與細(xì)節(jié),而這種現(xiàn)象與最初進(jìn)行圖像濾波的目的不同。張旭明等人[10]提議根據(jù)噪聲干擾程度自動(dòng)調(diào)整濾波器窗口大小。噪聲被去除的同時(shí),圖像邊緣和細(xì)節(jié)特征保持不變,但是判斷噪聲干擾程度的方法不容易確定[11-12]。針對(duì)目前中值濾波和自適應(yīng)中值濾波算法中存在的這些問(wèn)題,本文對(duì)標(biāo)準(zhǔn)自適應(yīng)中值濾波算法做了一些改進(jìn),從而避免了這些問(wèn)題。
標(biāo)準(zhǔn)的自適應(yīng)中值濾波算法先判斷濾波窗口的中值是否為噪聲點(diǎn),再判斷當(dāng)前圖像像素點(diǎn)是否為噪聲點(diǎn)。本文改進(jìn)的算法先判斷當(dāng)前圖像像素點(diǎn)是否為噪聲點(diǎn),再根據(jù)需要判斷濾波窗口中值是否為噪聲點(diǎn)。第一步噪聲檢測(cè):先檢測(cè)判斷圖像中該點(diǎn)的像素灰度值是否為噪聲點(diǎn)。第二步濾除噪聲。濾除噪聲時(shí)對(duì)該像素點(diǎn)考慮多種情況。情況一,該像素點(diǎn)不是噪聲點(diǎn),直接輸出該像素灰度值。情況二,該點(diǎn)是噪聲點(diǎn)。檢測(cè)此時(shí)濾波窗口中的中值(Zmed)是否為噪聲點(diǎn)。在判斷中值是否為噪聲點(diǎn)時(shí)也要考慮多種情況。情況一,Zmed不是噪聲點(diǎn),輸出此濾波窗口中值Zmed。情況二,Zmed是噪聲,根據(jù)算法中已設(shè)定的條件自動(dòng)增大濾波窗口尺寸,一直循環(huán)到選出正確的中值。但是,這樣的循環(huán)操作中也會(huì)出現(xiàn)一些比較極端的情況,如,當(dāng)濾波窗口自動(dòng)增大到允許的最大窗口尺寸時(shí),Zmed取值依然沒(méi)有選出來(lái),對(duì)當(dāng)前濾波窗口做處理。除去窗口中的極小和極大灰度值,用剩余像素的灰度均值代替當(dāng)前像素值輸出。
改進(jìn)算法的具體步驟:
定義變量:中心在(x,y)處的當(dāng)前濾波窗口:Sxy。初始窗口大?。篠0。允許的最大窗口大?。篠max。圖像(x,y)處的灰度值:Zxy。Sxy中的極小灰度值:Zmin。Sxy中的極大灰度值:Zmax。Sxy中的灰度值的中值:Zmed。窗口均指當(dāng)前使用的濾波窗口大小。
①如果 Zmin〈Zxy〈Zmax,輸出 Zxy,否則執(zhí)行②;
② 如 果Zmin〈Zmed〈Zmax,輸 出Zmed,否 則 執(zhí)行③;
③如果 Sxy+2≤Smax,增大窗口:Sxy=Sxy+2,執(zhí)行①,否則轉(zhuǎn)④;
④輸出當(dāng)前窗口中除去極大、極小灰度值的其余像素的灰度均值Savg。
算法改進(jìn)的兩方面:
(1)算法先判斷當(dāng)前像素是否為噪聲,若不是則直接輸出當(dāng)前像素;若是噪聲再判斷當(dāng)前窗口的中值是否為噪聲,然后根據(jù)中值的判斷結(jié)果執(zhí)行是否增大窗口,算法邏輯清晰,降低算法復(fù)雜度。
(2)在圖像噪聲密度較小時(shí),中值濾波和標(biāo)準(zhǔn)自適應(yīng)中值濾波算法表現(xiàn)了較好的濾波性能。但在圖像噪聲密度較大的情況下,標(biāo)準(zhǔn)的自適應(yīng)中值濾波算法判斷當(dāng)前像素和中值都為噪聲。依然用中值代替當(dāng)前像素值作為輸出。這是不合常理的。而改進(jìn)的自適應(yīng)中值濾波算法解決了這了這一問(wèn)題。
利用MATLAB R2016a實(shí)驗(yàn)環(huán)境,依據(jù)本文提出的改進(jìn)算法,進(jìn)行仿真實(shí)驗(yàn)。通過(guò)對(duì)添加了不同密度的脈沖噪聲的256×256圖像Lena進(jìn)行濾波,與中值濾波、標(biāo)準(zhǔn)自適應(yīng)中值濾波結(jié)果進(jìn)行比較來(lái)證明改進(jìn)算法的有效性。數(shù)據(jù)分析時(shí)引入峰值信噪比(PSNR)作為客觀數(shù)據(jù)的評(píng)價(jià)標(biāo)注。
PSNR定義為:
其中m×n為圖像大??;MSE是原圖像與處理圖像之間均方誤差;I(i,j)為原始參圖像;K(i,j)為加噪濾波后的圖像。仿真實(shí)驗(yàn)效果如圖2所示。
圖2 三種算法對(duì)圖像Lena的濾波效果比較
經(jīng)過(guò)圖2的三種算法的圖像濾波效果比較:圖像脈沖噪聲密度為0.2時(shí),三種算法的濾波效果基本沒(méi)有差別;圖像噪聲密度為0.5時(shí),中值濾波效果圖出現(xiàn)較多的噪聲點(diǎn),影響較大,而標(biāo)準(zhǔn)自適應(yīng)和改進(jìn)的自適應(yīng)中值濾波表現(xiàn)較好,基本沒(méi)差別;當(dāng)圖像噪聲密度變大為0.8時(shí),三種算法出現(xiàn)明顯差別,中值濾波噪聲點(diǎn)影響最大,標(biāo)準(zhǔn)自適應(yīng)中值濾波出現(xiàn)雪花狀噪聲點(diǎn),與前兩種算法比,改進(jìn)的算法濾波效果更好。不同算法的效果性能如圖3所示。
圖3 三種算法的濾波性能比較
表1 三種算法對(duì)標(biāo)準(zhǔn)圖像Lena濾波PSNR比較(單位:dB)
三種濾波算法對(duì)不同密度脈沖噪聲的PSNR如圖3所示,與圖2相對(duì)應(yīng)的不同噪聲密度的PSNR值如表1所示。從圖3可得,在不同噪聲密度下,中值濾波濾波效果整體較差;而自適應(yīng)中值濾波和本文的濾波算法在噪聲密度較小時(shí),濾波效果接近,改進(jìn)的算法PSNR稍大一點(diǎn),差別不大,如噪聲密度為0.2~0.4。當(dāng)噪聲密度增大時(shí),自適應(yīng)的兩種算法PSNR差別明顯變大,改進(jìn)的自適應(yīng)算法PSNR明顯大于標(biāo)準(zhǔn)的,如噪聲密度:0.6~0.9,并且從圖3中各算法的PSNR的圖形得出隨著噪聲密度的變大,兩種自適應(yīng)算法的PSNR的差距呈逐漸增大趨勢(shì)。
與中值濾波算法相比,標(biāo)準(zhǔn)的自適應(yīng)中值濾波在保持圖像的邊緣和細(xì)節(jié)的同時(shí),可以有效地濾除圖像的不同密度的脈沖噪聲。但中值和標(biāo)準(zhǔn)自適應(yīng)濾波算法始終存在局限性。針對(duì)這些局限性,本文提出了對(duì)自適應(yīng)中值濾波的改進(jìn)算法,并通過(guò)仿真實(shí)驗(yàn)以及其數(shù)據(jù)分析證明,提出的改進(jìn)自適應(yīng)中值濾波算法的濾波性能優(yōu)于中值濾波和標(biāo)準(zhǔn)自適應(yīng)濾波。