鄒瑜
(廣州科易光電技術(shù)有限公司,廣東廣州,510000)
椒鹽噪聲又稱脈沖噪聲,是圖像去噪處理中常見的一類噪聲。所謂椒鹽,椒就是黑,鹽就是白,它是一種隨機(jī)出現(xiàn)的白點或者黑點,可能是亮的區(qū)域有黑色像素或是在暗的區(qū)域有白色像素(或兩者皆有)。椒鹽噪聲產(chǎn)生的原因復(fù)雜,主要是在成像過程中由于信號脈沖強(qiáng)度引起的,例如失效的感應(yīng)器導(dǎo)致像素值為最小值,飽和的感應(yīng)器導(dǎo)致像素值為最大值,該噪聲對圖像的污染嚴(yán)重。另一方面附近有強(qiáng)電流設(shè)備,或者電機(jī)設(shè)備,對整個電源紋波造成影響,也會帶來閃爍的椒鹽噪聲。針對椒鹽噪聲的去噪問題,眾多學(xué)者已提出和設(shè)計了諸多方法,如經(jīng)典的中值去噪法,自適應(yīng)中值去噪法,取得了較好的效果。但是結(jié)合工程實際應(yīng)用又存在一些不足,比如有些方法需要對窗口內(nèi)的所有像素點進(jìn)行移動處理,計算量較大;噪聲點和信號點都用窗口內(nèi)的中值代替,對噪聲點而言可以去噪,但對信號點卻使得圖像失真;窗口設(shè)置的大小對去噪效果也有重要影響,若去噪窗口設(shè)置較小能較好保留圖像細(xì)節(jié),但噪聲密度增大時圖像去噪能力下降,若去噪窗口設(shè)置較大,則對圖像細(xì)節(jié)信息易造成損失,圖像清晰度下降。針對中值去噪法的不足,自適應(yīng)中值法引入了噪聲檢測的步驟,根據(jù)噪聲密度自適應(yīng)地選擇窗口,但自適應(yīng)去噪法在噪聲檢測時存在漏判或誤判,且方形窗口形狀單一,不利于保留圖像細(xì)節(jié)。上述兩種方法隨著噪聲密度的加大,其去噪能力均下降。因此,針對椒鹽噪聲去噪問題和已有方法中的不足,改進(jìn)或設(shè)計新的適用于椒鹽噪聲的去噪方法,提高圖像清晰度,增強(qiáng)圖像質(zhì)量。
部分學(xué)者也進(jìn)行改進(jìn),提出了不少改進(jìn)的自適應(yīng)中值去噪算法。針對自適應(yīng)中值,無法正常使用在FPGA中對圖像進(jìn)行濾波。考慮到實時性和FPGA資源占用率,這種方法在自適應(yīng)選擇濾波窗口時,需要更多的FPGA資源。考慮到效果更好則需要更多的濾波窗口,隨之會占用更多的資源。本文結(jié)合工程應(yīng)用,利用項目已存的算法,經(jīng)過一些特殊的處理,分時復(fù)用處理,可以在FPGA上實時濾除椒鹽噪聲。
椒鹽噪聲濾除方法有很多種,常便于工程實現(xiàn)的主要是中值濾波方法,極點標(biāo)定法和自適應(yīng)中值濾波方法。本文主要是描述在工程上易于實現(xiàn)且能解決實際問題的椒鹽去噪去除方法。
標(biāo)準(zhǔn)中值濾波方法,是以圖像內(nèi)一個點P( i, j )為中心,取n×n大小的濾波窗口。在每個窗口里面,對數(shù)據(jù)進(jìn)行排序,選擇位于中間數(shù)值的像素點作為,濾除后的像素值。具體步驟如下:
首先,選擇n×n的窗口,在軟件上實現(xiàn),一般會選擇3x3、5x5、7x7等大小的窗口。
最后,繼續(xù)滑動窗口,重復(fù)上面的步驟,一直將所有的圖像數(shù)據(jù)處理完。
極點標(biāo)定法主要是針對圖像的極大值和極小值進(jìn)行判斷,該方法會將圖像中的最大值或者最小值作為噪點。在0-255的灰度圖像中,該方法將像素值為0或者255的值認(rèn)定為噪點,其它在0-255之間的數(shù)據(jù),則認(rèn)定為非噪聲點。
其中X( i, j )表示像素(i,j)的數(shù)值,F(xiàn)indNoise(i, j)表示像素(i,j)為噪聲像素,需要進(jìn)行處理;
FindNoise(i, j)=1則表示像素(i,j)為非噪聲像素,直接輸出其原始值即可,不需要進(jìn)行去噪處理。當(dāng)FindNoise(i, j)=0,則需要采取3x3或者5x5的區(qū)域進(jìn)行均值替換。這種標(biāo)法簡單方便,占用資源極小。非常適合FPGA定點運(yùn)算。但是該方法有明顯的缺點就在于有些椒鹽噪聲并不是極大值或者極小值,或者有些極大值或者極小值就是真實的數(shù)據(jù),這些都會導(dǎo)致誤判。會影響用戶的視覺體驗效果。
在噪聲概率密度不高時,使用經(jīng)典中值濾波的效果不錯。但是當(dāng)噪聲出現(xiàn)的概率比較高時,采取常規(guī)的中值濾波算法的效果較差。采取更大的濾波器窗口尺寸,可以提高濾波效果。自適應(yīng)中值濾波法,結(jié)合了中值濾波和定點檢測的方法。在噪聲點的判斷檢測進(jìn)行適當(dāng)?shù)母倪M(jìn)。使用自適應(yīng)中值濾波器的目的就是,根據(jù)預(yù)設(shè)好的條件,動態(tài)地改變中值濾波器的窗口尺寸,以同時兼顧去噪聲作用和保護(hù)細(xì)節(jié)的效果。
該方法分為兩部分,第一步,判斷該區(qū)域是否是噪聲點,第二步,處理噪聲點。不失一般性,假設(shè)濾波窗口大小為Wsize,允許的最大窗口為Wmax。Sij表示濾波窗口所覆蓋的區(qū)域。中心值位置為(i,j)。Vmin表示窗口所覆蓋區(qū)域Sij的最小值,Vmax表示窗口所覆蓋區(qū)域Sij的最大值,Vmed表示窗口所覆蓋區(qū)域Sij的中值。Vij標(biāo)識,像素點(i,j)的灰度值。
傳統(tǒng)的易于在FPGA實現(xiàn)的椒鹽去噪算法,往往選擇簡單的中值濾波算法,在不考慮資源的情況下,會選擇自適應(yīng)中值濾波的方法。自適應(yīng)中值濾波需要自適應(yīng)地確定窗口大小和中值替換。在FPAG中實現(xiàn),會選擇一個最大的窗口,根據(jù)需要進(jìn)行裁剪,比如根據(jù)實際應(yīng)用需求,定義一個13x13的窗口。針對320x240的紅外圖片。這里至少需要12個240*16bit大小的RAM或者shift_ram(移位寄存器)。同時其方法需要噪聲監(jiān)測,容易將高頻信號誤判為噪聲點。會在一些特殊的應(yīng)用場景失效。
針對傳統(tǒng)FPGA實現(xiàn)的自適應(yīng)中值去椒鹽噪聲的算法,本文采取中值濾波和導(dǎo)向濾波相結(jié)合的方法,實現(xiàn)保邊去噪,同時去掉椒鹽噪聲的方法。導(dǎo)向濾波本身已存在于FPGA中。從應(yīng)用上來看只需要占用少量的中值濾波和控制指令資源,即能夠?qū)崿F(xiàn)去噪。
工程上,對高壓桿塔進(jìn)行拍攝時,因為設(shè)備之間的干擾,會對圖像質(zhì)量產(chǎn)生較大的影響。圖1所示,是筆者在工程實際應(yīng)用時拍攝的照片,從圖片看,有非常明顯的亮點和暗點。
圖1 拍攝亮點和暗點圖
如果采取閾值的方法進(jìn)行噪聲剔除,得到的圖像如圖2所示。有許多比較細(xì)小的像素點。沒有滿足0或者255的點,并沒有被剔除掉,視覺上能明顯感覺到噪聲。
圖2 采取閾值去噪方法得到的圖像
在實際應(yīng)用中經(jīng)常碰到的噪聲是椒鹽噪聲和高斯噪聲。因此筆者針對椒鹽噪聲時,也考慮了中值濾波加高斯濾波的方法。中值加高斯濾波,可以濾除掉椒鹽噪聲,但是圖像上會有所模糊。從圖3所看,椒鹽噪聲基本上已被濾除掉,并且一些其它噪聲也濾除的比較干凈,但視覺上看稍顯模糊,感覺欠佳。
圖3 椒鹽噪聲基本上濾除
在這里,我們使用中值加導(dǎo)向濾波的方法。導(dǎo)向濾波的基圖選擇帶椒鹽噪聲的原圖,參考圖為中值濾波的圖片。經(jīng)過運(yùn)算得到的結(jié)果如圖4所示。椒鹽噪聲被濾除的非常干凈,圖像自帶的一些其它噪聲也被處理的很好,細(xì)節(jié)得到保留。
圖4 運(yùn)算結(jié)果圖
另一方面,筆者將算法應(yīng)用使用到視頻流中,對椒鹽噪聲濾除的非常干凈,并保留足夠多的細(xì)節(jié)。如圖5所示。
圖5 視頻截取圖
本文提出一種保邊去噪,可以去掉椒鹽噪聲的一種方法。且是利用現(xiàn)在常有的經(jīng)典算法,只需要修改一些細(xì)微的參數(shù),即可達(dá)到很好的濾波效果。該方法已應(yīng)用在工程上,取得了良好的視覺效果。