基本原理
圖像受獲取和存儲、處理及各種干擾的影響,顯示時畫面上會出現(xiàn)噪聲。為了減少噪聲帶來的負面影響,盡可能地還原干凈真實的畫面,就需要用到降噪濾波器對圖像數(shù)據(jù)進行處理。
圖像的噪聲有多種類型。如加性噪聲、乘性噪聲、椒鹽噪聲、高斯噪聲等。常見的降噪方法有在空間域進行的,也有將圖像數(shù)據(jù)經(jīng)過傅里葉等變換以后轉到頻域中進行的。其中頻域里的濾波需要涉及復雜的域轉換運算,相對而言硬件實現(xiàn)起來會耗費更多的資源和時間。在空間域進行的方法有均值或加權后均值濾波、中值或加權中值濾波、最小均方差值濾波和均值或中值的多次迭代等。
實踐證明,這些方法雖有一定的降噪效果,但都有其局限性。比如加權均值在細節(jié)損失上非常明顯;而中值僅對脈沖干擾有效,對高斯噪聲卻無能為力。
事實上,圖像噪聲總是和有效數(shù)據(jù)交織在一起,若處理不當,就會使邊界輪廓、線條等變得模糊不清,反而降低了圖像質量。此外,由于各類噪聲往往不是單一存在而是同時并存,所以單純采用一種濾波器,往往達不到滿意的效果。
本文所述算法,就是針對這一問題,提出了一種新型的可同時濾除多種噪聲的數(shù)字圖像濾波器方法,其濾波效果優(yōu)于單純的某一種濾波器,同時計算量也不太復雜,硬件上較易實現(xiàn)。
算法描述
本文所采用的濾波算法包括以下主要步驟。
● 在某鄰域窗口內選擇多個鄰域像素fi,(i=1,2,…,n);
● 噪聲檢測:累計中心像素與鄰域內其他像素之間的差值中大于T1的個數(shù)N,T1是一個與圖像的細節(jié)程度有關的閥值;當 0<N<T2時,表示中心像素為信號點,否則為噪聲點。T2是與噪聲污染程度相關的閾值;
● 計算與所選像素對應的像素數(shù)據(jù)的加權平均值,這里用“g1”表示;
● 計算所選像素對應的多窗口(包括十字形窗、X形窗和矩形窗等三種窗口類型)像素數(shù)據(jù)排序比較后的中間值,這里用“g2”表示;
● 按照式(1)計算出濾波的最后輸出值,用來調整中心像素的像素數(shù)據(jù)。
(1)
上式中,g(x,y)表示濾波器的輸出像素值;a和b分別是針對不同噪聲類型選擇的線性和非線性濾波比例系數(shù),其取值與N的大小相關。
實驗結果
為了比較本文方法和原有方法的降噪效果,我們以Lena圖為例,對其同時添加了均值為0.003,差值為0.004的高斯噪聲以及強度為0.01的脈沖噪聲,然后分別用加權均值濾波、加權中值濾波和本文提出的方法對噪聲圖進行濾波處理,效果如圖1所示。
圖1(a)Lena原圖
圖1(b)同時加入高斯和椒鹽噪聲的Lena圖
圖1(c) 加權均值濾波后
圖1(d)加權中值濾波后
圖1(e)本文的方法濾波后
同時,可采用計算信噪比的方法對各種方法作出量化的比較。式(2)為信噪比的計算公式。
(2)
其中,M、N是圖像的長度和寬度,g是濾波以后的數(shù)據(jù),s是原圖數(shù)據(jù),f是附加了噪聲的圖像數(shù)據(jù)。計算得出的信噪比R若為負值,則說明噪聲被抑制,且R的值越小,說明濾波效果越好。表1顯示出了各種方法的信噪比結果。
可以看到,本文所述方法能集合均值濾波對高斯噪聲有效和中值濾波對脈沖噪聲有效的優(yōu)點,同時又避免了在濾波的同時使細節(jié)模糊的情況發(fā)生。所以,實驗證明本文所述方法是切實有效的。
硬件實現(xiàn)
圖2是硬件系統(tǒng)框圖。大量試驗表明,人眼對亮度信號的敏感度超過對色度的敏感。專門針對亮度信號進行降噪濾波,符合人眼的觀看模式。所以,RGB信號流首先經(jīng)過YUV色空間轉換進行亮色分離。RAM塊完成n-1行的亮、色數(shù)據(jù)存儲,它可實現(xiàn)一進n出的鄰域窗口數(shù)據(jù)流,輸出給后面的噪聲判斷和濾波處理模塊,最后再還原成RGB輸出給顯示終端。
圖2 硬件系統(tǒng)框圖
關鍵器件選型時要綜合考慮系統(tǒng)工作頻率、模塊總規(guī)模、調用IP庫、芯片成本、可擴展性和可升級性、廠商支持等多個方面的因素。由于此平臺僅用于芯片開發(fā)階段中的模塊驗證階段,所以不必選擇性能最優(yōu)而價格昂貴的系列。結合本設計的實際情況,選擇了Xilinx的Spartan 3E系列XC3S500E (PQ208封裝),該芯片內含20個RAM塊,滿足系統(tǒng)需14個RAM用于存儲兩行實時像素數(shù)據(jù)及對應控制信號的需求;10476個邏輯單元,4656個Slice,而本系統(tǒng)通過Synplify綜合后的規(guī)模為3158個Slice,約占70%的內部資源,留有一定余量。圖3是濾波主模塊流程圖。
圖3 濾波主模塊流程圖
電路設計中的注意事項
根據(jù)視頻電子標準協(xié)會(VESA)的規(guī)定,對于視頻標清及高清信號的像素時鐘,至少需要達到135MHz左右的頻率。為了滿足這一頻率要求,需要運用到流水管線設計方法,綜合考慮面積和速度兩方面的因素進行設計。
設計的難點有二:一是如何搭建一個實時的像素矩陣數(shù)據(jù)流,一次同時輸出n×n的矩陣數(shù)據(jù);二是如何采用流水管線的方式在延時若干拍后實時地輸出濾波處理后的像素數(shù)據(jù)。
對于第一個問題,可以調用Xilinx提供的RAM內核,運用Coregen工具在器件內部規(guī)劃出一個n行或n-1行的存儲空間,在第n行的第n個數(shù)據(jù)到達以后,就可以同時輸出n×n個矩陣數(shù)據(jù)到后面的處理模塊。輸出一個矩陣后,新的數(shù)據(jù)又進入存儲空間,使數(shù)據(jù)得到刷新。以3×3矩陣為例,其存儲模塊的功能仿真波形見圖4所示,可以看到在延遲一行加一個像素時鐘后,模塊就開始按時鐘輸出y11到y(tǒng)33共九個鄰域內數(shù)據(jù)。
圖4 存儲模塊的功能仿真波形
第二個問題的解決可充分利用能夠有效提高電路運行速度的流水線方法。首先將濾波處理過程分為若干步驟,每一步驟對應一些狀態(tài)標志寄存器或中間寄存器,由此搭建一個有著若干節(jié)拍的流水結構,最后在總的延遲拍數(shù)后實現(xiàn)實時的(即按圖像像素時鐘頻率來輸出)濾波數(shù)據(jù)輸出流。不論是3×3的還是7×7的矩陣鄰域,或者更大些的鄰域,從輸入矩陣數(shù)據(jù)到輸出此矩陣的中間值,都是只需最多8拍即可完成。從而有效提高電路工作頻率,本系統(tǒng)經(jīng)過靜態(tài)時序分析后的結果為135MHz,滿足高清信號處理所需的像素時鐘頻率。