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