文獻標識碼: A
文章編號: 0258-7998(2011)04-0058-03
高清視頻監控逐漸成為市場的熱點,視頻監控不僅要求把現場圖像捕獲并保存,而且還要盡可能清晰。在高清圖像的生成和采集過程中,往往會受到各種噪聲的干擾,使高清圖像的質量變差,因此必須對圖像進行濾波、平滑等預處理來消除噪聲。中值濾波作為一種非線性濾波方法,既可以消除隨機噪聲和脈沖干擾,又可以很大程度地保留圖像的邊緣信息,得到了廣泛的運用。在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟件實現達不到實時處理的要求,因此選用硬件實現。
在硬件實現上,文獻[1]、[2]等采用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。文獻[3]、[4]提出了鄰域圖像幀存的存儲結構,該結構充分利用了圖像幀存的數據結構轉換特性,并行高速提供鄰域圖像數據,配以FPGA作為并行處理器,高速實時地實現了中值濾波。但是以上研究都是基于標清圖像的中值濾波器,處理的圖像大小一般為256×256、512×512的灰度圖等,很少有實現高清圖像的中值濾波器。本文在文獻[3]、[4]的理論基礎上,在蘇光大主持研制成功的NIPC-3鄰域圖像并行處理機上實時實現了1 920×1 080×8 bit的高清圖像的中值濾波器。該系統的硬件是基于一個標準的PCI板卡,Altera公司的CycloneII FPGA是圖像處理系統的核心,此外,該板卡還包括了若干片SRAM、視頻采集轉換芯片、CPLD和PCI接口芯片。NIPC-3硬件處理的結果由PCI傳到計算機做后續處理,是軟硬件結合的系統。
1 快速二維中值濾波器算法
本文中值濾波器排序算法用文獻[2]提出的快速排序算法。如圖1,將3×3窗口內的各個像素分別定義為M11、M12、M13、M21、M22、M23、M31、M32、M33。首先分別對窗口中的每一行計算最大值、中值,最小值不難判斷。9個數值中,3個最大值中的最大值和3個最小值中的最小值一定是9個像素中的最大值和最小值;3個中值中的最大值至少大于5個像素:即本行中的最小值和其他2行的中值及最小值;而3個中值中的最小值至少小于5個像素:即本行中的最大值和其他兩行中的中值及最小值。最后,比較3個最大值中的最小值Min_of_Max,3個中值中的中值Med_of_Med,3個最小值中的最大值Max_of_Min,得到中間值即為濾波的最后結果Med_of_Nine。
利用這種排序法的中值濾波運算僅需17次比較,且該算法十分適用于在FPGA上做并行處理,大大提高了濾波的速度。
2 FPGA硬件實現
鄰域圖像并行處理機是一種以鄰域圖像幀存提供鄰域圖像數據、以鄰域圖像處理器并行鄰域圖像處理的圖像并行處理機,其本質是鄰域數據(即多數據)的并行處理[4]。中值濾波系統框圖如圖2所示,主機通過PCI接口將待處理數據寫入共享RAM,數據再由共享RAM轉入鄰域存儲體,利用行順序鄰域生成方法[3],將數據由串行轉化為并行,實現處理并行,達到數據的高速處理。鄰域存儲體是由4片SRAM組成,型號是IS61SP6464,位寬為64 bit,一次可以存取8個字節,4片SRAM并行排列,一個時鐘周期最多可以吞吐32個字節。見圖3,考慮一個N1×1的隨機鄰域,N2個時鐘周期就可以得到N1×N2大小的鄰域。然后再將中值濾波模塊結果通過FIFO緩存寫入共享RAM,傳到PC機顯示。
2.1 分塊存儲方法和并行運算結構
如圖4,以256×256大小的圖像為例,將其劃分為8個256行32列的圖像塊,中值濾波運算就是按照塊的順序,對每塊圖像從上到下進行[5]。每一次存儲體訪問讀出一行鄰域后,通過流水線隊列即可形成n×32的鄰域,對于中值濾波算法n為3。為了最大化地提高圖像處理速度,采取了32個3×3鄰域的并行計算。但是構造32個3×3鄰域,需要額外增加2列數據,組成3行34列的運算矩陣。這額外的2列數據正是前一圖像塊的最右端的2列,為了后續運算的需要,已經保存在RAMa或RAMb中了。RAMa、RAMb的作用是實現乒乓RAM操作,例如向RAMa中寫當前圖像塊的最右端2列時,處理單元同時從RAMb中取出前一個圖像塊的最右端2列數據參與運算。運算單元架構如圖5,這樣每一次并行計算就得到了32個8 bit的結果,對應32個結果像素,即圖5中的result為256 bit。
2.2 FIFO緩存
共享RAM芯片采用了Cypress公司的CY7C1380,這是一款32 bit位寬、2 MB容量的同步SRAM。因為系統采用流水線結構,一個clk即可產生256 bit的結果,需要寫入到32 bit的SRAM,如果不加入緩沖器,必定會有結果數據的丟失,為此,加入一個FIFO,將256 bit結果分8次寫入共享RAM,每次寫32 bit,這樣,FIFO完成了寫快讀慢的緩沖過程。FIFO的深度取決于需要緩沖的數據量,緩沖的數據量取決于寫速率和讀速率,見式(1)。
3 FPGA實驗結果
圖6(a)是從高清攝像機隨機采得的帶噪圖像,從圖6(b)可看出本文設計的針對大圖像(1 920×1 080)的中值濾波器有較好的去噪效果。
整個電路結構采用Verilog編寫,該中值濾波器能達到的最大工作頻率為60 MHz,該中值濾波器對如圖6所示的1 920×1 080灰度圖執行中值濾波的時間約為10 ms,這個速度要比實時快4倍。為了突出本文設計的中值濾波器的性能,本文采用512×512的灰度圖做實驗。將本文設計的中值濾波器與文獻[1]、[3]設計的中值濾波器的性能比較,可以看出,本文設計的中值濾波器的處理速度約為文獻[1]方法的8倍,約為文獻[3]方法的20倍,如表1所示。
本文針對NIPC-3的特點,用適合并行處理的存儲方法,成功實現了1 920×1 080大小圖像的實時中值濾波系統。該系統有較好的去噪效果,同時在速度上完全滿足實時需要,是一個高速且完整的系統。該系統可以用于高清視頻圖像的預處理,有很大的實用價值。
參考文獻
[1] 石婷,張紅雨,黃自立.基于Stratix II EP2S60的改進中值濾波器的設計實現[J].國外電子元器件,2007(1):12-15.
[2] 徐大鵬,李從善.基于FPGA的數字圖像中值濾波器設計[J].電子器件,2006,29(4):1114-1117.
[3] 蘇光大.實時中值濾波器的實現[J].電視技術,1999(5):25-27.
[4] 蘇光大.鄰域圖像處理機中的新型鄰域功能流水線結構[J].電子學報,2000,27(2):1-4.
[5] 劉炯鑫.NIPC-3鄰域圖像并行處理機的軟件設計[D].清華大學電子工程系,2007.