馬 祥, 杜忠華, 蔡 雨, 王鵬飛, 卿志勇
(1南京理工大學(xué) 機(jī)械工程學(xué)院,江蘇 南京 210094;2.黑龍江北方工具有限公司 108分廠,黑龍江 牡丹江 157000)
數(shù)字圖像中,噪聲主要來源于圖像的采集、傳輸和處理過程,噪聲使得圖像模糊、質(zhì)量下降,對(duì)后續(xù)圖像處理工作(如圖像分割、邊緣檢測、特征提取等)造成不便[1],去除圖像噪聲是圖像處理的關(guān)鍵步驟。
在椒鹽噪聲的眾多濾波方法中,中值濾波[2](median filtering,MF)是一種能夠減少邊緣模糊的非線性濾波方法,但是對(duì)于高密度噪聲圖像,容易造成重要邊緣信息丟失,尤其是含有細(xì)線特征的圖像。自適應(yīng)中值濾波(adaptive median filtering,AMF)算法能夠自適應(yīng)地調(diào)整濾波窗口尺寸,在處理高密度椒鹽噪聲時(shí)效果良好,但是在保護(hù)細(xì)線特征方面仍然有待提高。為此,很多研究人員提出了改進(jìn)的自適應(yīng)濾波算法[3~10],2017年由Khan S提出的ADWMF[3],即自適應(yīng)動(dòng)態(tài)加權(quán)中值濾波,根據(jù)噪聲檢測結(jié)果動(dòng)態(tài)分配中值濾波器的權(quán)值,基于特定區(qū)域內(nèi)檢測到的脈沖噪聲的像素個(gè)數(shù)自適應(yīng)調(diào)整窗口大小。宗永勝等人[4]提出一種自適應(yīng)雙閾值中值濾波,采用基于均值的雙閾值對(duì)脈沖噪聲進(jìn)行判別,再進(jìn)行中值濾波,但無法自適應(yīng)的選擇濾波窗口。張新明等人[6]采用四點(diǎn)模板中點(diǎn)濾波,降低了計(jì)算復(fù)雜度,去除高密度椒鹽噪聲性能優(yōu)越。黃夢濤等人[11]通過噪聲點(diǎn)密度大小自適應(yīng)調(diào)節(jié)濾波窗口大小,對(duì)低照度圖像進(jìn)行拉伸,實(shí)現(xiàn)低照度煙霧圖像的去噪和目標(biāo)增強(qiáng)。文獻(xiàn)[12]引入Hough變換檢測裂縫的方向,采用與裂縫形狀相應(yīng)的窗口對(duì)裂縫進(jìn)行有針對(duì)性濾波,能更好地濾除噪聲和減少有用信息的損失,但對(duì)于細(xì)線特征的保護(hù)并沒有明確的說明。
王松林等人[13]根據(jù)區(qū)域噪聲的密度自動(dòng)調(diào)整窗口尺寸,為避免鄰域噪聲的影響,用窗口內(nèi)的像素值與加權(quán)系數(shù)乘積的值代替中心像素點(diǎn)的值。
上述文獻(xiàn)提出的改進(jìn)自適應(yīng)濾波算法在保護(hù)細(xì)線特征時(shí)仍有較大的局限性,為了更好地保護(hù)細(xì)線特征,本文提出一種融合梯度信息的改進(jìn)中值濾波算法,根據(jù)邊緣梯度信息自適應(yīng)調(diào)整濾波窗口的形狀和大小,在去除椒鹽噪聲的同時(shí),能夠很好地保護(hù)細(xì)線特征,減少邊緣模糊。
中值濾波算法是使用一個(gè)像素點(diǎn)鄰域窗口中灰度級(jí)的中值來替代該像素的值。其數(shù)學(xué)表達(dá)式為
(1)
中值濾波算法對(duì)每個(gè)像素點(diǎn)都利用鄰域窗口的中值代替,不可避免地會(huì)出現(xiàn)非噪聲點(diǎn)被替換,當(dāng)脈沖噪聲密度很大時(shí),固定大小的濾波窗口將無法濾除所有脈沖噪聲,增大濾波窗口可以改善濾波效果,但是增大濾波窗口將會(huì)破壞圖像中的細(xì)線特征、邊緣模糊,造成圖像細(xì)節(jié)信息的丟失。
圖像中的邊緣特征主要表現(xiàn)為灰度值的突變,可以通過計(jì)算圖像的梯度來定位邊緣的位置。局部變化可以用微分來檢測,本文采用一階微分來檢測邊緣位置。本文選用Sobel算子計(jì)算梯度圖像,Sobel模板如圖1所示。
圖1 用于計(jì)算梯度的Sobel模板
本文在計(jì)算梯度幅值時(shí),使用絕對(duì)值近似梯度幅值,不僅能降低計(jì)算開銷,并且與灰度級(jí)的變化保持同步,梯度向量的大小和方向由下式給出
M(x,y)=|gx|+|gy|
(2)
a(x,y)=arctan(gy/gx)
(3)
式中M(x,y)和a(x,y)分別為梯度向量的幅值和方向,gx和gy分別為原圖f在(x,y)對(duì)x和y的偏微分,M(x,y),a(x,y),gx和gy都是與原圖f尺寸相同的圖像。
為避免鄰域窗口像素點(diǎn)坐標(biāo)值出現(xiàn)小數(shù),本文將邊緣方向量化為4個(gè)方向:水平、垂直、+45°和-45°。通過邊緣法線方向來確定邊緣方向,其中每個(gè)邊緣均有兩個(gè)方向范圍,例如,邊緣法線為0°和180°的邊緣表示同一個(gè)水平邊緣。四個(gè)方向的方向范圍如圖2所示。
圖2 邊緣方向?qū)?yīng)的邊緣法線方向范圍
本文采用雙閾值法來確定真實(shí)邊緣點(diǎn),減少偽邊緣。雙閾值法是通過高低閾值來對(duì)邊緣點(diǎn)進(jìn)行判斷,當(dāng)梯度幅值大于高閾值Tmax時(shí),確定為邊緣點(diǎn),梯度幅值小于低閾值Tmin時(shí),確定為非邊緣點(diǎn),當(dāng)梯度幅值處于高低閾值之間時(shí),若像素點(diǎn)能通過8連通的連接方法連接到邊緣點(diǎn),則標(biāo)記為邊緣點(diǎn)。本文設(shè)定高閾值與低閾值的關(guān)系為Tmax∶Tmin=3∶1,其中高閾值Tmax取目標(biāo)像素點(diǎn)鄰域窗口的梯度幅值均值。
為減少濾波過程中丟失的細(xì)節(jié)信息,本文引入梯度信息,利用梯度圖像確定邊緣位置及方向,在邊緣位置,利用梯度向量方向選擇合適的窗口形狀,窗口大小根據(jù)噪聲密度來確定,自適應(yīng)地對(duì)邊緣進(jìn)行濾波。
本文的算法流程如下:
步驟1檢測圖像中的噪聲點(diǎn),判斷準(zhǔn)則:當(dāng)z(x,y)=zmin或z(x,y)=zmax時(shí),將像素點(diǎn)(x,y)標(biāo)記為可疑噪聲點(diǎn),得到可疑噪聲密度ρ1;然后對(duì)可疑噪聲點(diǎn)做進(jìn)一步檢測,若可疑噪聲點(diǎn)滿足z(x,y)=zmax,鄰域窗口的中值z(mì)med滿足zmed=zmax,則此可疑噪聲點(diǎn)是圖像極值區(qū)域中的一點(diǎn),即非噪聲點(diǎn),否則將可疑噪聲點(diǎn)標(biāo)記為真實(shí)噪聲點(diǎn)。鄰域窗口尺寸n的大小由ρ1決定,確定噪聲點(diǎn)數(shù)量后,可估計(jì)出噪聲的密度ρ,得到標(biāo)記噪聲點(diǎn)的圖像fnoise。
步驟2對(duì)圖像fnoise進(jìn)行預(yù)濾波,圖像中的非噪聲點(diǎn)不需要濾波,直接輸出像素值。預(yù)濾波的處理過程:用3×3的鄰域窗口內(nèi)非噪聲點(diǎn)集合的中值代替噪聲點(diǎn)像素值,鄰域窗口中非噪聲點(diǎn)數(shù)量小于3個(gè),則增大濾波窗口尺寸,當(dāng)窗口尺寸增大到允許的最大尺寸7×7,鄰域窗口中的非噪聲點(diǎn)數(shù)量仍小于3個(gè),但不為零,則取非噪聲點(diǎn)像素值的均值,否則,取極大值像素和極小值像素的均值代替噪聲點(diǎn)像素值,得到預(yù)濾波圖像fpre。
步驟3利用Sobel模板與圖像fpre進(jìn)行卷積獲得梯度幅值圖像M(x,y)和方向圖像a(x,y),并根據(jù)上文中的邊緣點(diǎn)確定方法和邊緣方向量化法得到標(biāo)記邊緣點(diǎn)的幅值圖像(x,y)和量化后的方向圖像
步驟4利用步驟3獲得的(x,y)和對(duì)fniose中的邊緣噪聲點(diǎn)進(jìn)行濾波,濾波窗口制作方法如圖3所示。當(dāng)噪聲密度ρ大,需要增大濾波窗口尺寸m,得到邊緣點(diǎn)濾波圖像fedge。
步驟5將fedge中邊緣噪聲點(diǎn)濾波結(jié)果替換fpre中的邊緣噪聲點(diǎn)的濾波結(jié)果,得到最終濾波圖像fend,濾波結(jié)束。
圖3為兩個(gè)尺寸為7的濾波窗口,圖像坐標(biāo)系統(tǒng)的原點(diǎn)位于左上角,正x軸向下延伸,正y軸向右延伸。其中數(shù)字1,2,3,4分別代表邊緣像素點(diǎn)方向?yàn)樗健?45°、垂直和+45°,沒有數(shù)字則表示非邊緣點(diǎn),數(shù)字后面標(biāo)有*表示邊緣點(diǎn)為噪聲,如1*和3*,數(shù)字后面標(biāo)有#表示正在被濾波的邊緣噪聲點(diǎn),如2#和4#。
圖3 步驟4中濾波窗口擴(kuò)展示意
為檢驗(yàn)本文算法的去噪性能,進(jìn)行了算法驗(yàn)證。選擇圖4(a)的圖像作為原始灰度圖像,像素尺寸為300×300,為避免背景分明,對(duì)比度強(qiáng)烈,圖像背景像素值為127。為直觀體現(xiàn)改進(jìn)算法在保護(hù)細(xì)線特征和減少邊緣模糊的優(yōu)越性,圖像中的邊緣均為簡單方向邊緣。添加密度為0.1的脈沖噪聲圖像如圖4(b)所示。將本文算法與中值濾波算法和自適應(yīng)中值濾波算法濾波效果進(jìn)行比較,濾波效果如圖4(c)~(d),(e)所示,可看出自適應(yīng)中值濾波對(duì)寬度較小且與背景對(duì)比度不強(qiáng)的直線直接濾除,在直線相交處的邊緣出現(xiàn)模糊;中值濾波相對(duì)自適應(yīng)中值濾波來說,當(dāng)直線寬度大于1個(gè)像素時(shí),中值濾波能夠較好地保護(hù)細(xì)節(jié),但在直線相交處的邊緣仍出現(xiàn)了一定程度的模糊;本文方法在很好濾除噪聲的同時(shí),對(duì)寬度較小的直線能起到保護(hù)作用,邊緣模糊的情況相對(duì)上述兩種算法有很大改善。
圖4 原圖、噪聲圖像和三種方法濾波效果
同時(shí),采用峰值信噪比(peak signal-to-noise ratio,PSNR)和結(jié)構(gòu)相似度(structural similarity,SSIM)評(píng)價(jià)算法性能,其中,SSIM是一種衡量兩幅圖像相似度的指標(biāo),其數(shù)學(xué)表達(dá)式如下
(4)
(5)
表1 三種濾波方法MSE,PSNR和SSIM對(duì)比
為了證明本文算法在實(shí)際應(yīng)用過程中的魯棒性和優(yōu)越性,將本文算法用于彈殼底部圖像的濾波。彈殼底部圖像中具有復(fù)雜方向的邊緣,為了強(qiáng)調(diào)濾波效果,給彈殼底部圖像添加三種不同密度的脈沖噪聲,實(shí)驗(yàn)中,添加的脈沖噪聲密度為0.05,0.10,0.30。然后利用標(biāo)準(zhǔn)中值濾波、自適應(yīng)中值濾波、文獻(xiàn)[12]的方法和本文算法進(jìn)行濾波處理,文獻(xiàn)[12]中的方法是對(duì)中值濾波算法的改進(jìn),在保護(hù)細(xì)節(jié)方面優(yōu)于中值濾波和自適應(yīng)中值濾波算法,最后對(duì)濾波結(jié)果進(jìn)行評(píng)價(jià)。
計(jì)算四種方法濾波后的PSNR和SSIM,并進(jìn)行比較分析,具體計(jì)算結(jié)果如表2所示。
表2 四種濾波算法PSNR,SSIM對(duì)比
從表2不難看出,隨著密度噪聲的增大,四種濾波算法的濾波效果都會(huì)變差,但是本文算法濾波效果要優(yōu)于中值濾波和自適應(yīng)中值濾波。PSNR和SSIM只有輕微的下降;而自適應(yīng)中值濾波的PSNR和SSIM分別下降了約9 dB和2 %,在較高密度脈沖噪聲時(shí)(噪聲密度為0.10,0.30),本文算法濾波后的PSNR比中值濾波大13~16 dB,SSIM大4 %~6 %。本文算法在保護(hù)細(xì)線特征和減少邊緣模糊方面效果更好,細(xì)節(jié)信息丟失較少。
利用梯度信息確定邊緣的位置和方向,設(shè)計(jì)濾波窗口,對(duì)邊緣位置的像素點(diǎn)進(jìn)行有針對(duì)性的濾波。將本文算法用于含有簡單方向的細(xì)線特征圖像濾波,結(jié)果表明:算法能夠保護(hù)細(xì)線特征,減少邊緣模糊,效果明顯優(yōu)于中值濾波和自適應(yīng)中值濾波。并實(shí)際應(yīng)用到彈殼底部缺陷圖像上,利用PSNR和SSIM對(duì)濾波后的圖像進(jìn)行客觀評(píng)價(jià),實(shí)驗(yàn)結(jié)果表明:在較高密度噪聲圖像上,依然能保持很好的濾波效果,并且算法性能要優(yōu)于中值濾波和自適應(yīng)中值濾波。下一步將考慮降低算法的計(jì)算復(fù)雜度,提高濾波效率。