胡 樾,陶 勝
(1.集美大學(xué)誠(chéng)毅學(xué)院,福建 廈門361021;2. 集美大學(xué)理學(xué)院,福建 廈門361021)
一幅干凈無污染的圖像可以獲得的信息量遠(yuǎn)大于有噪聲的圖像,因此,圖像質(zhì)量顯得極其重要??墒?,圖像往往在不知不覺中被污染。例如,在圖像獲取過程中,傳感器常常會(huì)受到各種因素的影響致使圖像出現(xiàn)噪聲;在傳輸過程中,由于所用的傳輸信道的干擾導(dǎo)致圖像受到噪聲污染[1]。當(dāng)噪聲干擾嚴(yán)重時(shí),甚至?xí)箞D片失去其本身的價(jià)值。脈沖噪聲是一種常見的噪聲,分成椒鹽噪聲(salt and pepper noise, SPN)和隨機(jī)值脈沖噪聲(random-valued impulse noise, RVIN)兩類。
傳統(tǒng)中值濾波被廣泛用于去除脈沖噪聲,可是不加區(qū)別地對(duì)圖像所有像素進(jìn)行統(tǒng)一處理會(huì)造成噪聲在鄰域傳播,會(huì)導(dǎo)致圖像細(xì)節(jié)結(jié)構(gòu)的平滑[2]。因此,一些改進(jìn)算法被提出,例如WM(weighted median)[3]、CWM(center weighted median)[4]等,這類算法通過給可能正常的像素點(diǎn)提供更大的權(quán)重來修復(fù)圖像細(xì)節(jié),但仍沒有區(qū)分噪聲與非噪聲點(diǎn)。隨后SWM(switching median)[5]提出一種將圖像處理過程進(jìn)行兩階段處理的策略,即先檢測(cè)噪聲后去噪。該方法依靠窗口內(nèi)鄰域點(diǎn)中值與檢測(cè)點(diǎn)差的絕對(duì)值判斷噪聲點(diǎn)和信號(hào)點(diǎn),僅對(duì)噪聲進(jìn)行中值處理。PSM(progressive switching median)[6]提出在兩階段處理圖像的同時(shí)多次迭代檢測(cè)及去噪的策略。由此衍生出了很多方法[7-13],例如TSM(tri-state median)[7]、MSM(multi-state median)[8]、PWMAD(pixel-wise median absolute deviation)[9]、SNC(similar neighbor criterion)[10]和SPF(seed pixels filter)[11]等。ADTM(adaptive dual threshold median)[12]采用基于像素值平均的自適應(yīng)雙閾值來檢測(cè)噪聲像素,并使用簡(jiǎn)單的中值濾波器去除它們。APCM(adaptive partition-cluster-based median)[13]使用基于自適應(yīng)分區(qū)簇的中值濾波器,該濾波器可以將像素分為不同的組,并應(yīng)用不同的策略來檢測(cè)和過濾噪聲像素。SSD(statistical standard deviation)[14]利用濾波窗口八個(gè)不同方向上的估計(jì)標(biāo)準(zhǔn)差和平均絕對(duì)差來計(jì)算相似性指數(shù),并以此判斷噪聲。BPDF(based on pixel density filter)[15]方法利用像素值變化時(shí)的關(guān)系來確定最合適的窗口大小和替換值,能夠在低中噪聲密度下得到較好的去噪效果。SAMFWMF(switching adaptive median and fixed weighted mean filtering)[16]方法結(jié)合了自適應(yīng)中值濾波器和固定加權(quán)均值濾波器,能夠在高噪聲密度下保持圖像的邊緣細(xì)節(jié),并且提供了一種有效的邊緣跟蹤和連接算法。雖然這些算法的效果提高了,但隨著噪聲密度提升仍會(huì)對(duì)噪聲檢測(cè)及濾波效果產(chǎn)生較大影響,特別遇到高密度噪聲時(shí),已經(jīng)無法保護(hù)圖像細(xì)節(jié),導(dǎo)致去噪效果下降明顯。
為了提高去噪效果,一些學(xué)者開始嘗試使用整體變分模型(total variation,TV)[17]來去除隨機(jī)值脈沖噪聲。整體變分模型最早被提出來是用于去除高斯噪聲,可是存在階梯效應(yīng)問題,隨后一些針對(duì)脈沖噪聲的改進(jìn)整體變分模型被提出。例如:文獻(xiàn)[18] 利用重疊組稀疏性和Lp-偽范數(shù)收縮的整體變分方法來保持圖像的邊緣和稀疏性。文獻(xiàn)[19]將像素分為損壞的、無噪聲的和可能損壞的,對(duì)不同類別的像素采用不同的處理方式,即,如果一個(gè)像素是損壞的,就使用改進(jìn)的整體變分?jǐn)U散方法進(jìn)行重構(gòu),如果一個(gè)像素是可能損壞的,就使用加權(quán)整體變分?jǐn)U散方法進(jìn)行重構(gòu),否則,就保持像素不變,并根據(jù)噪聲密度的不同,自適應(yīng)地調(diào)整窗口大小和閾值參數(shù)。文獻(xiàn)[20]提出快速的求解帶有盒約束的分?jǐn)?shù)階整體變分圖像恢復(fù)方法,利用交替方向乘子法、迭代加權(quán)L1算法和快速迭代技術(shù)去除脈沖噪聲。這些模型可以在一定程度上減少階梯效應(yīng),但是對(duì)于隨機(jī)值脈沖噪聲的去除效果還不夠理想,因?yàn)樗鼈儧]有充分利用噪聲點(diǎn)和非噪聲點(diǎn)的區(qū)別,而是對(duì)所有像素進(jìn)行同樣的處理。
為了解決去噪效果不佳的問題,本文結(jié)合開關(guān)濾波器的開關(guān)特性和整體變分模型的去噪算法,提出一種新的基于整體變分模型的隨機(jī)值脈沖噪聲去噪方法,以達(dá)到更好的去噪效果。
針對(duì)不同密度等級(jí)的隨機(jī)值脈沖噪聲圖像,本研究提出的去噪流程如圖1所示。
本文方法的第一階段是噪聲檢測(cè),首先對(duì)被污染的圖像進(jìn)行噪聲判定以獲得噪聲標(biāo)識(shí)矩陣,然后根據(jù)修正準(zhǔn)則對(duì)噪聲標(biāo)識(shí)矩陣進(jìn)行二次處理以防止對(duì)圖像像素的誤判。而第二階段噪聲去除,采用快速整體變分模型將噪聲標(biāo)識(shí)矩陣的點(diǎn)依次進(jìn)行修復(fù)處理。
根據(jù)噪聲的密度,將噪聲分為低密度、中密度和高密度三種情況,分別采用不同的鄰域窗口和判定準(zhǔn)則進(jìn)行噪聲檢測(cè)。同時(shí),為了避免對(duì)圖像的邊緣點(diǎn)誤判為噪聲,本研究還提出了相應(yīng)的修正準(zhǔn)則,對(duì)判定為噪聲的像素進(jìn)行二次處理。
1.1.1 低密度噪聲檢測(cè)
對(duì)于低密度(密度小于等于20%)噪聲的圖像,采用3 px×3 px的鄰域窗口。
判定準(zhǔn)則1:考察圖像中的任意像素P,計(jì)算該像素灰度值與周圍8個(gè)點(diǎn)的灰度值的差的絕對(duì)值。如果最小的3個(gè)絕對(duì)值之和小于或等于給定的閾值T(本研究取為48),則判定像素P為非噪聲像素;否則,判定像素P為噪聲像素。
上述判定準(zhǔn)則對(duì)非邊緣點(diǎn),能夠取得較好的檢測(cè)效果。但對(duì)于圖像的邊緣點(diǎn),由于它與周圍8個(gè)點(diǎn)的灰度值的差別較大,容易誤判為噪聲像素。因此,需要對(duì)這些已判定的噪聲像素進(jìn)行修正。
修正準(zhǔn)則1:對(duì)于噪聲像素Q,假設(shè)其灰度值為v,計(jì)算Q的3 px×3 px鄰域窗口內(nèi)非噪聲像素的平均值,記為v1。如果滿足:v與v1的差的絕對(duì)值小于等于T1,或者Q的3 px×3 px鄰域窗口內(nèi)存在相似的非噪聲像素(該像素的灰度值與v的差的絕對(duì)值小于等于20),則將像素Q修正為非噪聲像素。其中參數(shù)T1給定方法如下:計(jì)算Q的3 px×3 px鄰域窗口內(nèi)非噪聲像素的方差,如果該方差值較大,則T1取為32,否則T1取為16。
1.1.2 中密度噪聲檢測(cè)
對(duì)于中密度(密度大于20%,小于等于40%)噪聲的圖像,采用5 px×5 px的鄰域窗口。
判定準(zhǔn)則2:考察圖像中的任意像素P,計(jì)算該像素灰度值與周圍24個(gè)點(diǎn)的灰度值的差的絕對(duì)值。如果3 px×3 px的鄰域窗口內(nèi)對(duì)應(yīng)的最小的3個(gè)絕對(duì)值之和小于或等于給定的閾值T,或者5 px×5 px的鄰域窗口內(nèi)對(duì)應(yīng)的最小5個(gè)絕對(duì)值之和小于或等于給定的閾值T+16,則判定像素P為非噪聲像素;否則,判定像素P為噪聲像素。
這一判定準(zhǔn)則對(duì)非邊緣點(diǎn),能夠取得較好的檢測(cè)效果。然而,對(duì)于圖像的邊緣點(diǎn),需要對(duì)這些已判定的噪聲像素進(jìn)行修正。
修正準(zhǔn)則2:對(duì)于噪聲像素Q,假設(shè)其灰度值為v,計(jì)算Q的3 px×3 px鄰域窗口內(nèi)非噪聲像素的平均值,記為v1;計(jì)算Q的5 px×5 px鄰域窗口內(nèi)非噪聲像素的平均值,記為v2。如果滿足:v與v1的差的絕對(duì)值小于等于T1,或者v與v2的差的絕對(duì)值小于等于T2,或者Q的3 px×3 px、5 px×5 px鄰域窗口內(nèi)存在相似的非噪聲像素(該像素的灰度值與v的差的絕對(duì)值小于等于20),則將像素Q修正為非噪聲像素。其中參數(shù)T1和T2給定方法如下:計(jì)算Q的3 px×3 px鄰域窗口內(nèi)非噪聲像素的方差,如果該方差值較大,則T1取為32,否則T1取為16;計(jì)算Q的5 px×5 px鄰域窗口內(nèi)非噪聲像素的方差,如果該方差值較大,則T2取為32,否則T2取為16。
1.1.3 高密度噪聲檢測(cè)
對(duì)于高密度(密度大于40%)噪聲的圖像,采用7 px×7 px的鄰域窗口。由于噪聲密度大,所以需要采用區(qū)別于低密度噪聲和中密度噪聲的檢測(cè)方法。
判定準(zhǔn)則3:考察圖像中的任意像素P,計(jì)算該像素灰度值與周圍48個(gè)點(diǎn)的灰度值的差的絕對(duì)值。如果3 px×3 px的鄰域窗口內(nèi)對(duì)應(yīng)的最小的3個(gè)絕對(duì)值之和大于給定的閾值T,或者5 px×5 px的鄰域窗口內(nèi)對(duì)應(yīng)的最小的5個(gè)絕對(duì)值之和大于給定的閾值T+16,或者7 px×7 px的鄰域窗口內(nèi)對(duì)應(yīng)的最小的7個(gè)絕對(duì)值之和大于給定的閾值T+32,則判定像素P為噪聲像素;否則,判定像素P為非噪聲像素。
對(duì)于非邊緣點(diǎn),這一判定準(zhǔn)則能夠取得較好的檢測(cè)效果。然而,對(duì)于圖像的邊緣點(diǎn),由于它們與周圍點(diǎn)的灰度值差別較大,容易被誤判為噪音像素,因此需要對(duì)這些已判定的噪聲像素進(jìn)行修正。
修正準(zhǔn)則3:對(duì)于噪聲像素Q,假設(shè)其灰度值為v,計(jì)算Q的5 px×5 px鄰域窗口內(nèi)非噪聲像素的平均值,記為v1;計(jì)算Q的7 px×7 px鄰域窗口內(nèi)非噪聲像素的平均值,記為v2。如果滿足:v與v1的差的絕對(duì)值小于等于T1,或者v與v2的差的絕對(duì)值小于等于T2,或者Q的5 px×5 px、7 px×7 px鄰域窗口內(nèi)存在相似的非噪聲像素(該像素的灰度值與v的差的絕對(duì)值小于等于20),則將像素Q修正為非噪聲像素。其中參數(shù)T1和T2給定方法如下:計(jì)算Q的5 px×5 px鄰域窗口內(nèi)非噪聲像素的方差,如果該方差值較大,則T1取為32,否則T1取為16;計(jì)算Q的7 px×7 px鄰域窗口內(nèi)非噪聲像素的方差,如果該方差值較大,則T2取為32,否則T2取為16。
Chan等于2002年提出基于整體變分模型的圖像修復(fù)算法[17]。但原始修復(fù)方法速度慢,修復(fù)效果不太理想。許多學(xué)者在此基礎(chǔ)上提出了快速修復(fù)算法[21],并完全采用未破壞的區(qū)域信息對(duì)圖像進(jìn)行修復(fù)[22],取得了比較好的修復(fù)效果。
假設(shè)圖像為u(x,y),本研究采用的TV模型修補(bǔ)基本公式[22]如下:
(1)
設(shè)目標(biāo)像素點(diǎn)O的位置為(i,j),它周圍上、下、左、右對(duì)應(yīng)的鄰域點(diǎn)位置組成的集合為∧={PW,PE,PN,PS}={(i-1,j),(i+1,j),(i,j-1),(i,j+1)}(如圖2所示)。其中w,e,s,n分別為PW和O的中點(diǎn)、PE和O的中點(diǎn)、PS和O的中點(diǎn)、PN和O的中點(diǎn),這4個(gè)點(diǎn)對(duì)應(yīng)的像素值未知。令v=(v1,v2)=u/|u|ε,則它的散度為:
(2)
同理可得v1w,|uw|ε,v2n,|un|ε,v2s,|us|ε。將式(2)代入式(1),可得:
(3)
如果目標(biāo)像素點(diǎn)O的上、下、左、右對(duì)應(yīng)的鄰域點(diǎn)均為非噪聲像素,則按式(3)進(jìn)行修復(fù);如果存在噪聲像素,則對(duì)式(3)修正如下:
(4)
其中:如果點(diǎn)p為非噪聲像素點(diǎn),則m(p)=1;如果點(diǎn)p為噪聲像素點(diǎn),則m(p)=0。這樣可以減少噪聲對(duì)修復(fù)的干擾。
基于整體變分模型的去噪方法流程,先輸入噪聲圖像、迭代次數(shù)、初始閾值,然后分以下幾個(gè)步驟完成:
1)根據(jù)噪聲判斷和修正準(zhǔn)則得到噪聲標(biāo)識(shí)矩陣;
2)對(duì)噪聲標(biāo)識(shí)矩陣的噪聲像素,按照公式(4)進(jìn)行修復(fù),并將修復(fù)后的像素標(biāo)記成非噪聲像素;
3)更新閾值;
4)重復(fù)步驟1)→2)→3),直到設(shè)定的迭代次數(shù)完成。
本文采用MATLAB R2021a作為開發(fā)工具,在Windows 10平臺(tái)上實(shí)現(xiàn)了基于整體變分模型的隨機(jī)值脈沖噪聲去除算法。為了驗(yàn)證算法的性能,本研究使用512 px×512 px的Lena灰度圖像進(jìn)行了仿真實(shí)驗(yàn),如圖3所示。為了公平地比較各種方法的性能,本研究采用了以下兩種方式:1)對(duì)于能夠獲取代碼的方法,在不同噪聲密度下對(duì)圖像進(jìn)行了10次去噪處理,并取平均值作為最終的去噪結(jié)果;2)對(duì)于部分缺失代碼的方法,用該方法文獻(xiàn)上提供的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比分析。通過與其他幾種常用的去噪算法進(jìn)行比較,本文從主觀視覺效果和客觀評(píng)價(jià)指標(biāo)兩方面對(duì)本文算法進(jìn)行了評(píng)估和分析。
仿真實(shí)驗(yàn)中針對(duì)低、中、高密度范圍,分別對(duì)圖像疊加20%、40%、60%的隨機(jī)值脈沖噪聲,使用本文算法取得的去噪效果如圖4所示。
本研究用峰值信噪比PSNR(peak signal noise ratio)作為評(píng)價(jià)圖像質(zhì)量的客觀指標(biāo),并將本文算法與兩類對(duì)比方法進(jìn)行了實(shí)驗(yàn)對(duì)比。其中一類是基于開關(guān)濾波器的方法,如PSM、TSM、MSM、PWMAD、SNC、SPF、APCM、SSD;另一類是基于整體變分模型的方法,如OGSTV-Lp、DBMTVD。
表1展示了本文算法與其他算法在不同噪聲密度下的去噪效果。從表1可以看出,本文算法在噪聲密度不大于50%的時(shí)候,均表現(xiàn)出最好的效果;而在噪聲密度高于60%的時(shí)候,本文算法稍弱于SNC算法。這可能是因?yàn)镾NC算法使用了一個(gè)較大的鄰域窗口(9 px×9 px),在高密度噪聲的圖像中,更有可能在窗口內(nèi)找到未受污染的圖像點(diǎn),而小窗口則可能完全被噪聲點(diǎn)占據(jù)。通過計(jì)算所有噪聲密度區(qū)間內(nèi)所有算法的PSNR值的平均值,可以發(fā)現(xiàn)本文算法仍然領(lǐng)先于其他算法,這說明本文算法在不同噪聲密度下都具有較強(qiáng)的魯棒性和去噪性能。
表1 不同算法Lena 圖像去噪后PSNR 比較
為了有效地去除不同噪聲密度的隨機(jī)值脈沖噪聲,結(jié)合開關(guān)濾波器的靈活性和整體變分模型的去噪效果,本研究提出一種新的開關(guān)整體變分去噪方法。本文方法對(duì)于不同密度的噪聲,分別采用不同大小(3 px×3 px、5 px×5 px和7 px×7 px)的窗口鄰域,進(jìn)行自適應(yīng)檢測(cè)和修正,然后利用整體變分模型對(duì)噪聲像素進(jìn)行重構(gòu),保持圖像的細(xì)節(jié)信息。同時(shí),本文方法將噪聲檢測(cè)和去噪模型采用動(dòng)態(tài)閾值重復(fù)迭代處理。實(shí)驗(yàn)結(jié)果表明,本文方法在不同噪聲密度下能夠取得較滿意的結(jié)果,且具有較強(qiáng)的魯棒性,優(yōu)于對(duì)比的其他基于開關(guān)濾波器的方法和基于整體變分模型的方法。這說明本文提出的開關(guān)整體變分去噪方法可以更好地修復(fù)隨機(jī)值脈沖噪聲圖像,保護(hù)更多圖像細(xì)節(jié)。
未來的工作可以從以下兩個(gè)方面展開:一是對(duì)不同類型噪聲圖像的處理效果進(jìn)行進(jìn)一步研究,比如高斯噪聲、椒鹽噪聲等,探索模型的適應(yīng)性和通用性;二是對(duì)整體變分模型的參數(shù)選擇和優(yōu)化進(jìn)行深入探討,提高算法的效率和穩(wěn)定性,減少計(jì)算時(shí)間和內(nèi)存消耗。
集美大學(xué)學(xué)報(bào)(自然科學(xué)版)2023年5期