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