胡 勝,陳 朋,藍曉柯
(浙江工業(yè)大學信息工程學院,杭州310023)
基于FPGA的多路視頻合成與去噪設計
胡 勝,陳 朋,藍曉柯
(浙江工業(yè)大學信息工程學院,杭州310023)
在嵌入式視頻處理領(lǐng)域,針對視頻實時性要求高的特點,提出一種基于現(xiàn)場可編程門陣列(FPGA)的多路視頻合成和去噪方法,包含四路視頻合成一路視頻的具體實現(xiàn)方案,以及對合成后的一路視頻進行中值濾波的去噪算法,使用DDR2 SDRAM作為視頻的幀緩存,設計中值濾波算法的硬件結(jié)構(gòu)和邏輯結(jié)構(gòu)。系統(tǒng)設計采用Verilog語言進行描述,并在Xilinx的FPGA上進行邏輯綜合和硬件測試。實驗結(jié)果表明,該方法利用FPGA實現(xiàn)了硬件并行和流水線技術(shù),可保證視頻的實時處理。
現(xiàn)場可編程門陣列;Verilog語言;多路視頻合成;去噪;中值濾波;實時性
在嵌入式視頻處理領(lǐng)域,一般選用DSP作為處理器,DSP只對某些固定的運算提供了硬件優(yōu)化,其體系還是串行指令執(zhí)行系統(tǒng),但是視頻的數(shù)據(jù)量大且實時性要求高,如果把視頻的一些預處理了也放在DSP上實現(xiàn),視頻處理的實時性很難得到保證。FPGA適合做數(shù)據(jù)量大、算法結(jié)構(gòu)簡單的運算,不適合做復雜的運算[1],視頻預處理的特點是數(shù)據(jù)量大算法簡單,因此用FPGA做視頻預處理很合適。如果用FPGA完成視頻的預處理,然后傳給DSP完成視頻編解碼或者視頻圖像檢測等工作,不僅保證了整個視頻處理的實時性,也增加了系統(tǒng)的靈活性[2-3]。近年來,隨著FPGA的廣泛應用、成本的下降以及內(nèi)部資源的增加,特別FPGA能在設計上實現(xiàn)硬件并行和流水線技術(shù)[4],出現(xiàn)用FPGA來獨立設計較復雜的視頻處理系統(tǒng)[5-6]。本文選用 FPGA做多路視頻的預處理,在FPGA上將四路CIF視頻合成為一路D1視頻,并對合成后的一路D1視頻進行中值濾波去噪處理,整個處理過程可保證視頻處理的實時性。
系統(tǒng)的硬件結(jié)構(gòu)如圖 1所示,主要用到TVP5158,FPGA和DDR2 SDRAM等器件。TVP5158是TI公司的多通道視頻解碼芯片,一片TVP5158可以采集四路NTSC/PAL的模擬視頻,每個通道含有10 bit的高速A/D轉(zhuǎn)化器,把模擬視頻轉(zhuǎn)化為數(shù)字視頻;TVP5158輸出的數(shù)字視頻圖像支持8 bit ITU-R BT.656和16 bit 4:2:2 YCbCr格式,并且輸出的分辨率是可配置為D1、Half-D1以及CIF。FPGA采用Xilinx公司的Spartan-6系列的xc6slx9-2ftg256芯片, Spartan-6是專門針對成本和功率敏感的市場。xc6slx9-2ftg256提供的資源包括:32個 18 Kb的BRAM(Block RAM)、2個時鐘管理單元、存儲控制器MCB(Memory Controller Block)等[7]。
圖1 系統(tǒng)硬件結(jié)構(gòu)
本文系統(tǒng)把四路 PAL的模擬視頻接入到TVP5158,通過I2C總線配置TVP5158,配置它的輸出分辨率為CIF(288×360),并以BT.656視頻圖像數(shù)據(jù)協(xié)議輸出給FPGA。FPGA對TVP5158輸出的四路CIF視頻進行采集并合成一路D1(576×720)視頻,然后對合成后視頻進行去噪處理,最后FPGA再以BT.656格式輸出D1視頻,用于顯示或者后端處理。
視頻圖像往往會在獲取、傳輸和存儲等過程中引入噪聲,這些噪聲破壞了圖像原有的信息,影響圖像的質(zhì)量和清晰度,進而影響視頻圖像的后續(xù)處理(如邊緣檢測、圖像分割、特征提取、模式識別等)的效果或準確性[8]。常用的去噪算法有均值濾波和中值濾波,以及在它們基礎(chǔ)上改進的算法,中值濾波在盡可能地保護信號原有特征的同時濾除掉噪聲[9-10],因而被廣泛應用。
中值濾波的基本原理是把數(shù)字圖像中每一像素點的值設置為該點某鄰域窗口內(nèi)所有像素點值的中值,因為噪聲的特點,窗口內(nèi)的中值一般不是噪聲點,從而達到抑制噪聲的目的。Gonzalo和Michael提出一種的“Max/Median中值濾波”算法[11]。
設am,n為圖像在(m,n)處的像素值,Z是一個(2N+1)×(2N+1)的濾波窗口:
由式(1)得到以am,n為中心的4個子窗口的中值,然后再由式(2)對4個中值取最大值,作為窗口的濾波值。
文獻[12]對上面的算法進行了改進:
先由式(3)得到Z1,Z2,am,n和Z3,Z4,am,n的中值,然后再由式(4)得到濾波的值。
如式(2)所示的算法保留了信號的幾何特性,結(jié)合圖像所有一維的特性來做二維估計,保留二維圖像的一維特性,但是它本質(zhì)上不是對稱的,對噪聲比較密集的區(qū)域性能不是很好。如式(4)所示的算法在保持前一種算法的優(yōu)點同時,解決了它的不足之處。本文在FPGA上對改進算法進行了實現(xiàn),設計算法實現(xiàn)的邏輯結(jié)構(gòu),完成了對合成后的一路D1視頻的去噪處理。
TVP5158解碼的四路CIF視頻流以一種超級幀的格式輸出,超級幀的格式如圖2所示,這種超級幀符合4:2:2 YCbCr的BT.656數(shù)據(jù)圖像協(xié)議,視頻的垂直同步信號和水平同步信號由內(nèi)嵌的EAV(End Active Video)和SAV(Start Active Video)數(shù)據(jù)區(qū)分開來,解碼以后的四路CIF視頻的有效數(shù)據(jù)包含在超級幀的有效數(shù)據(jù)區(qū)(v_sync=0且h_sync=0的區(qū)域)。FPGA對超級幀的進行采集,提取四路CIF視頻的有效視頻數(shù)據(jù)并合成為一路D1視頻數(shù)據(jù),然后對合成后的一路D1視頻進行中值濾波處理,最后對合成的D1視頻添加同步所需的EAV數(shù)據(jù)、SAV數(shù)據(jù)和消隱數(shù)據(jù)后輸出。FPGA的整個邏輯設計如圖3所示,虛線框1完成四路CIF視頻合成一路D1視頻的操作,虛線框2完成一路D1視頻的中值濾波處理并按BT656協(xié)議輸出。
圖2 超級幀的格式
圖3 FPGA的邏輯設計
4.1 四路CIF視頻的合成
FPGA接收TVP5158輸出的超級幀,如圖3的虛線框1所示,經(jīng)過輸入檢測模塊、FIFO1、超級幀檢測模塊和視頻讀寫控制邏輯把四路CIF視頻合成為一路D1視頻。DDR2 SDRAM作為一路D1視頻的幀緩存,在DDR2 SDRAM中開辟2個幀緩存空間,每塊的空間大小應大于或等于合成后的一路D1有效視頻數(shù)據(jù)1 440 Byte×576 Byte,一塊緩存空間處于寫狀態(tài)時,另一塊處于讀狀態(tài),兩塊緩存空間交替處于讀寫狀態(tài)。DDR2控制器有2個用戶端口,一個端口用來寫,另一個端口用來讀,2個端口以輪詢的方式與一片DDR2 SDRAM的進行交互,由于DDR2 SDRAM芯片的工作頻率遠遠高于DDR2控制器用戶端口的工作頻率,從而視頻的讀寫操作幾乎可以同時地進行。
4.1.1 輸入檢測模塊
輸入FPGA進行合成的視頻流是以幀為單位,因此,在系統(tǒng)上電或復位后,只有輸入檢測模塊檢測到一個超級幀的第一行的EAV(FF 00 00 B6)時,才把TVP5158輸入的視頻流緩存到FIFO1中,輸入檢測模塊工作的流程如圖4所示,只有當FPGA工作在S4狀態(tài)的時候,FIFO1才打開寫使能,緩存TVP5158的輸入的視頻數(shù)據(jù)。FIFO1是一個異步的FIFO,完成視頻流從8 bit到32 bit的轉(zhuǎn)化,是為了與DDR2控制器的最小用戶數(shù)據(jù)接口32 bit相符合,這樣可以提高DDR2控制器工作的效率。
圖4 輸入模塊的工作流程
4.1.2 超級幀檢測模塊
超級幀檢測模塊從FIFO1中讀取32 bit視頻流,根據(jù)BT.656數(shù)據(jù)圖像協(xié)議,采集視頻流中的EAV和SAV,解析出超級幀的有效數(shù)據(jù)區(qū)(圖2中v_sync=0且h_sync=0的區(qū)域)。從圖2中可知,有效數(shù)據(jù)區(qū)是1 252行,而四路CIF視頻的有效行總數(shù)是288×4,因此超級幀的有效數(shù)據(jù)區(qū)還有一些行并不是有效行,通過超級幀有效數(shù)據(jù)區(qū)中8 Byte的Start Code可以判斷出來是否是有效行,并且可以得到Start Code后720 Byte有效數(shù)據(jù)來自的通道數(shù)(channel)、場數(shù)(fieldid)、行數(shù)(fline)。
4.1.3 視頻讀寫控制模塊
視頻讀寫控制模塊對前面檢測出來的有效行視頻,根據(jù)這行 CIF視頻的channel、fieldid以及fline計算出它在D1視頻中的位置,D1視頻在DDR2 SDRAM的存放格式有場和幀2種格式。以場格式存放時,計算公式如式(5)所示,以幀格斯存放時,計算公式如式(6)所示。
其中,式(5)和式(6)中的ch0_addr,ch1_addr,ch2_addr,ch3_addr分別為4個通道的一行CIF視頻的有效數(shù)據(jù)在DDR2 SDRM幀緩存中存放的開始地址;frame_startaddr是DDR2 SDRAM的2塊緩存空間的其中一個首地址,每當接收完一個超級幀時,frame_startaddr的值變換一次;X是一行D1視頻的有效數(shù)據(jù)的字節(jié)數(shù)1 440;Y是D1視頻的有效行數(shù)576。
當采集完一個超級幀的數(shù)據(jù)時,寫緩存空間中已經(jīng)存放了合成好的一幀D1有效視頻數(shù)據(jù),寫緩存空間將變成讀緩存空間,原來的讀緩存空間變成寫緩存空間。然后從讀緩存空間的開始地址依次讀出D1的有效視頻數(shù)據(jù),用作后續(xù)的去噪處理。
4.2 中值濾波
FPGA已經(jīng)對TVP5158輸出的四路CIF視頻合成為了一路D1視頻,現(xiàn)在對合成后的一路D1的視頻進行中值濾波,來去除掉視頻圖像中的噪聲,以便于后續(xù)的輸出或進一步處理。
FPGA實現(xiàn)的中值濾波整體的邏輯電路結(jié)構(gòu)如圖3的虛線框2所示,合成后的一路D1有效視頻數(shù)據(jù)進入到異步FIFO2,FIFO2完成視頻流從32 bit到16 bit的轉(zhuǎn)化,使得中值濾波以像素點為單位對進行濾波,異步FIFO3完成視頻流從16 bit到8 bit的轉(zhuǎn)化,視頻輸出模塊添加SAV、EAV以及消隱數(shù)據(jù),使其以符合BT.656協(xié)議輸出D1的視頻流。中值濾波模塊包括3個主要的部分:濾波窗口的設計、圖像邊緣檢測以及濾波算法的實現(xiàn)。
4.2.1 濾波窗口的設計
FPGA要實現(xiàn)中值濾波,最關(guān)鍵的一步是如何得到濾波窗口。圖5左圖是3×3濾波窗口的實現(xiàn)方法,D32,D31,D22,D21,D12和D11都是寄存器,做一個時鐘周期的延時,Line_buf1和Line_buf2是用作行緩存,緩存數(shù)據(jù)大小是717個像素,這樣就能夠得到如圖5右圖所示的濾波窗口,這個濾波窗口水平移動是以列為單位,當窗口到達圖像最右邊時,窗口跳到最左邊同時向下移動一行。
圖5 3×3濾波窗口的FPGA實現(xiàn)
4.2.2 圖像邊緣檢測
從圖5右圖可以知道一幀圖像的第一行、最后一行、第一列和最后一列是沒有3×3的濾波窗口,因此,本文把它們當作邊緣處理,對邊緣的像素點保留原始像素值。對輸入FIFO3的數(shù)據(jù)維持D1視頻的一幀圖像的行列計數(shù),D1視頻的一幀圖像是720×576個像素點,圖6是邊緣檢測的流程。
圖6 圖像邊緣檢測流程
行計數(shù)i和列計數(shù)j是從0開始計數(shù)的,當i= 575且j=719時,一幀圖像已經(jīng)輸入到FIFO3中,然后對i和j復位為0。
4.2.3 濾波算法的實現(xiàn)
本文用到的中值濾波算法是Nieminen和Neuvo提出的改進的算法,窗口大小是3×3,圖7是濾波算法實現(xiàn)的結(jié)構(gòu)。C是一個三輸入的比較器,經(jīng)過3個時鐘周期能夠得到3個輸入值的中值,D3是一個延時3個周期的延時模塊。整個濾波算法由3級比較電路構(gòu)成,第1級電路可以得到Z1,Z2,Z3,Z4的值,第2級比較電路得到Y(jié)1,Y2的值,第3級電路得到最后的濾波值;由于視頻數(shù)據(jù)是連續(xù)的,必須保證視頻數(shù)據(jù)操作時的同步性,因此在第一級和第二級電路之間加入了延時模塊,對R22做3個周期的延時,這樣就可以保證視頻的流水線操作,進而保證視頻實時性。同樣,在第2級和第3極電路之間也加入3周期的延時模塊。
圖7 濾波算法實現(xiàn)的結(jié)構(gòu)
本文的所有模塊用 Verilog語言描述,然后Xilinx的ISE13.4工具對設計模塊進行綜合、映射、布局和布線后,最后將生成的FPGA燒寫文件下載到xc6slx9-2ftg256中,得到如圖8所示的結(jié)果,其中四路CIF視頻合成為了一路D1視頻,并且合成后一路D1視頻經(jīng)過了中值濾波去噪處理。這個系統(tǒng)占用FPGA的主要資源如表1所示,FPGA的總功耗是0.689 W。本設計以較少的資源和較低的功耗完成了多路視頻的預處理,且視頻的實時性也完全得到了保證。
圖8 本文方法實驗結(jié)果
表1 系統(tǒng)占用FPGA的資源利用情況
本文利用FPGA在設計上可實現(xiàn)硬件并行和流水線技術(shù),提出一種在FPGA上實現(xiàn)四路CIF視頻合成為一路D1視頻的設計方法,對合成的一路D1視頻進行中值濾波去噪。中值濾波采用文獻[12]提出的改進算法,本文給出了該算法在FPGA上實現(xiàn)的邏輯結(jié)構(gòu),實現(xiàn)的濾波算法只有6個時鐘周期的延時。實驗結(jié)果表明,該方法利用FPGA實現(xiàn)了硬件并行和流水線技術(shù),從而保證了視頻的實時處理,沒有出現(xiàn)丟幀的現(xiàn)象。在保證視頻處理的實時性情況下,對中值濾波算法進行改進,加入閾值比較或者自適應處理,是今后研究的內(nèi)容。
[1] 沈淦松,葉玉堂,劉 霖,等.FPGA軟硬件協(xié)同處理實時圖像處理系統(tǒng)[J].光電工程,2012,39(10): 143-150.
[2] 李 波,葛寶珊,李 煒,等.基于通用DSP的多模式視頻編碼器[J].計算機學報,2004,27(12): 1648-1656.
[3] 樊兆賓,史忠科,楊 珺.基于視頻的車輛檢測系統(tǒng)設計[J].計算機工程,2008,34(6):255-257.
[4] Iakovidou C,Vonikakis V, Andreadis I. FPGA Implementation of a Real-time Biologically Inspired Image Enhancement Algorithm[J].Journal of Real-time Image Processing,2008,3(4):269-287.
[5] 周文暉,杜 歆,葉秀清,等.基于 FPGA的雙目立體視覺系統(tǒng)[J].中國圖象圖形學報,2005,10(9): 1166-1170.
[6] 馮偉昌,林玉池,何 冬,等.基于 FPGA的雙通道實時圖像處理系統(tǒng)[J].傳感技術(shù)學報,2010,23(8): 1118-1122.
[7] 王春平,張曉華,趙 翔.Xilinx可編程邏輯器件設計與開發(fā)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2011.
[8] Hu Y,JiH.ResearchonImageMedianFiltering Algorithm and Its FPGA Implementation[C]//Proc.of Global Congress on Intelligent Systems.Xiamen,China: [s.n.],2009:226-230.
[9] Gundam M,Charalampidis D.Median Filter on FPGAs [C]//Proc.of the 44th IEEE Southeastern Symposium on System Theory.Jacksonville,USA:IEEE Systems Theory Press,2012:83-87.
[10] Fahmy S A,Cheung P Y K,Luk W.High-throughput One-dimensional Median and Weighted Median Filters on FPGA[J].IET Computers&Digital Techniques, 2009,3(4):384-394.
[11] Arce G R,McLoughlin M.Theoretical Analysis of the Max/Median Filter[J].IEEE Transactions on Acoustics,Speech,and Signal Processing,1987,35(1): 60-69.
[12] Nieminen A,Neuvo Y.Comments on Theoretical Analysis of the Max/median Filter[J].IEEE Transactions on Acoustics,Speech,and Signal Processing,1988,36(5): 826-827.
編輯 索書志
Design of Multi-channel Video Compositing and De-noising Based on FPGA
HU Sheng,CHEN Peng,LAN Xiao-ke
(College of Information Engineering,Zhejiang University of Technology,Hangzhou 310023,China)
In the field of embedded video processing,due to the critical real-time requirement of the video,this paper proposes an FPGA-based multi-channel video compositing and de-noising method.This paper contains concrete realization scheme that four-channel video is combined to one-channel video and de-noising algorithm of median filtering to onechannel video.The video is buffered by DDR2 SDRAM,and the hardware structure and logic structure of median filtering algorithm are demonstrated.The Verilog language is used to describe the overall system design,and a logic synthesis and hardware test is implemented on Xilinx FPGA.Experimental results show that the design uses the FPGA's hardware parallelism and pipeline technology,and the performance of real-time processing for the video is entirely achieved.
Field Programmable Gate Array(FPGA);Verilog language;multi-channel video compositing;de-noising; median filtering;real-time
1000-3428(2014)09-0295-05
A
TP391
10.3969/j.issn.1000-3428.2014.09.059
國家自然科學基金資助項目(61303139)。
胡 勝(1988-),男,碩士研究生,主研方向:嵌入式多媒體技術(shù);陳 朋,副教授、博士;藍曉柯,碩士研究生。
2013-09-09
2013-10-14E-mail:husheng.happy1@163.com