易子川, 林 躍, 王 利,, 劉先明, Nicolaas Frans de ROOIJ, 周國(guó)富,4*
(1. 電子科技大學(xué)中山學(xué)院,中山 528402; 2. 華南師范大學(xué)華南先進(jìn)光電子研究院,廣州 510006; 3. 深圳市國(guó)華光電科技有限公司研發(fā)中心,深圳 518110; 4. 深圳市國(guó)華光電研究院,深圳 518110)
基于FPGA的多路視頻實(shí)時(shí)處理系統(tǒng)
易子川1,3,4, 林 躍1, 王 利1,2,3, 劉先明2,3, Nicolaas Frans de ROOIJ3, 周國(guó)富2,3,4*
(1. 電子科技大學(xué)中山學(xué)院,中山 528402; 2. 華南師范大學(xué)華南先進(jìn)光電子研究院,廣州 510006; 3. 深圳市國(guó)華光電科技有限公司研發(fā)中心,深圳 518110; 4. 深圳市國(guó)華光電研究院,深圳 518110)
針對(duì)傳統(tǒng)多路視頻監(jiān)控系統(tǒng)控制不靈活、處理速度慢、系統(tǒng)無法對(duì)各路視頻信號(hào)進(jìn)行視頻算法等問題,介紹了一種采用FPGA設(shè)計(jì)多路視頻實(shí)時(shí)處理和顯示的系統(tǒng)方案. 通過使用單片F(xiàn)PGA硬件方式實(shí)現(xiàn)多路視頻的采集、格式轉(zhuǎn)化、視頻緩存、視頻算法處理、視頻拼接和顯示,并可以進(jìn)行多路視頻與其中任意一路視頻切換顯示和處理,同時(shí)系統(tǒng)支持對(duì)每一路視頻進(jìn)行不同的算法處理. 該方案利用FPGA的并行處理能力,可以實(shí)時(shí)處理和顯示4路視頻,幀頻達(dá)到了15幀/s,每一路視頻信號(hào)的處理時(shí)間不超過4 ms. 該方案具有低成本、低功耗、實(shí)時(shí)性好、擴(kuò)展性強(qiáng)等特點(diǎn),適用于目前常用的視頻監(jiān)控應(yīng)用場(chǎng)景.
FPGA; 多路視頻處理; 視頻切換; 視頻拼接
當(dāng)今社會(huì)信息化步伐加快,科技發(fā)展日新月異,視頻監(jiān)控為當(dāng)前的生活創(chuàng)造了巨大的便利,已廣泛應(yīng)用于各個(gè)領(lǐng)域,如:智能交通監(jiān)控、銀行安保系統(tǒng)、航天航空、小區(qū)安防等,具有較大的研究?jī)r(jià)值與現(xiàn)實(shí)意義. 當(dāng)前視頻監(jiān)控方案眾多,為了達(dá)到全方位的監(jiān)控,一般采用多路視頻監(jiān)控,將多路信號(hào)顯示在一個(gè)區(qū)域,便于管理的同時(shí)還提高監(jiān)控效果.
在已有多路視頻監(jiān)控方案中,有的基于PC機(jī)方案[1-2],有的基于ARM平臺(tái)實(shí)現(xiàn)方式[3]、基于DSP平臺(tái)方案[4-5]、基于現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)的方案[6]、基于DSP+FPGA平臺(tái)或者其他不同處理器相結(jié)合的方式[7-8]. 這些實(shí)現(xiàn)方案存在一定的缺陷,基于PC機(jī)的實(shí)現(xiàn)方案具有高功耗和高成本的特點(diǎn),還存在便攜性差、處理速度慢等缺點(diǎn)[9-10];基于ARM為核心的方案處理能力較弱,無法進(jìn)行復(fù)雜視頻算法;基于DSP的實(shí)現(xiàn)方案處理速度比FPGA慢[11],采用較為高端的芯片可以達(dá)到較好的效果,但是成本較高[12-13];目前,基于FPGA方案的系統(tǒng)無法實(shí)時(shí)地進(jìn)行每一路視頻的算法處理[14-15];其他微處理器結(jié)合方案的實(shí)現(xiàn)較為復(fù)雜,增加了人力和硬件成本. 上述方案都很難進(jìn)行高分辨率視頻處理,不利于小型化,成本較高[16].
針對(duì)這些情況,本文提出了基于單片F(xiàn)PGA實(shí)現(xiàn)多路視頻監(jiān)控的處理系統(tǒng)設(shè)計(jì),充分利用FPGA的并行處理能力,視頻采集、處理和顯示模塊全部在FPGA內(nèi)部實(shí)現(xiàn),無需過多的外設(shè)電路,并可以對(duì)每一路信號(hào)進(jìn)行算法處理,還可以實(shí)現(xiàn)單路和多路視頻的切換顯示. 單片F(xiàn)PGA的設(shè)計(jì)成本低、功耗低、利于集成,具有較好的應(yīng)用價(jià)值.
系統(tǒng)設(shè)計(jì)的原理框圖如圖1所示,采用4路視頻信號(hào)輸入,每一路視頻信號(hào)單獨(dú)處理,由于采用的是相同型號(hào)的攝像頭,模塊均可以復(fù)用,通過模塊復(fù)用可節(jié)省FPGA資源,降低系統(tǒng)開發(fā)難度和成本,同時(shí)充分利用了FPGA的并行處理能力.
圖1 系統(tǒng)設(shè)計(jì)原理框圖
系統(tǒng)主要包括6個(gè)模塊:視頻采集、格式轉(zhuǎn)化、視頻緩存、視頻算法實(shí)現(xiàn)、視頻拼接和視頻顯示模塊,根據(jù)需要可以在視頻拼接模塊中加入不同的視頻算法模塊,算法選擇和視頻切換通過外部開關(guān)控制. 系統(tǒng)設(shè)計(jì)的核心部分是視頻緩存、視頻算法處理和視頻拼接,視頻緩存采用同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(SDRAM)器件,視頻拼接模塊將4路視頻信號(hào)進(jìn)行拼接顯示.
1.1 視頻采集與格式轉(zhuǎn)化
該系統(tǒng)采用的攝像頭是數(shù)字?jǐn)z像頭,通過I2C對(duì)攝像頭進(jìn)行配置,視頻采集模塊通過讀取攝像頭通用輸入/輸出(GPIO)傳輸?shù)囊曨l信號(hào),通過GPIO接口采集的數(shù)字圖像是Bayer格式,若要正常顯示需要進(jìn)行格式轉(zhuǎn)化. 本系統(tǒng)要轉(zhuǎn)化為30位標(biāo)準(zhǔn)RGB格式,R、G、B各10 bit,轉(zhuǎn)化通過插值完成. 該模塊將視頻分辨率從1 280×1 024降為320×240,滿足了SDRAM的存儲(chǔ)器大小要求. 由于VGA顯示的分辨率是640×480,降低后分辨率恰好與4路信號(hào)拼接之后的分辨率相同. 如果要提高顯示視頻的分辨率,可以參考VGA協(xié)議手冊(cè),通過增大存儲(chǔ)器和提高顯示時(shí)鐘來實(shí)現(xiàn).
1.2 視頻緩存
視頻緩存是為了實(shí)現(xiàn)多路信號(hào)的同步和視頻拼接. 圖2是本系統(tǒng)SDRAM視頻緩存模塊原理,采用設(shè)計(jì)的8端口SDRAM控制器:包括4路輸入和4路視頻輸出. 各讀寫端口與SDRAM之間采用異步的先入先出隊(duì)列(FIFO),達(dá)到SDRAM與外部寫入和讀出時(shí)鐘不一致時(shí)的數(shù)據(jù)緩存. 為了有效利用資源和SDRAM的數(shù)據(jù)16 bit位寬,對(duì)于系統(tǒng)的10 bit的R、G、B的信號(hào)采取只存儲(chǔ)高5位的形式,讀出時(shí)低5位補(bǔ)零. 以便節(jié)省資源,且不影響顯示效果.
對(duì)于16路或者多路的視頻信號(hào),可采用更大的SDRAM存儲(chǔ)器,同時(shí)開發(fā)多端口的控制器,即可實(shí)現(xiàn)功能.
圖2 SDRAM視頻緩存原理
1.3 視頻算法處理
系統(tǒng)中4路視頻信號(hào)均可獨(dú)立進(jìn)行算法處理,且每個(gè)算法都可以在4路信號(hào)中同時(shí)使用,也可以單獨(dú)對(duì)其中一路視頻進(jìn)行處理. 為了保證顯示的同步性,可計(jì)算每一個(gè)算法模塊的處理時(shí)間,所有算法模塊結(jié)束后,會(huì)以處理時(shí)間最長(zhǎng)的模塊作為基準(zhǔn)信號(hào). 為了保持信號(hào)同步,其他算法模塊做延時(shí)處理,算法處理模塊信號(hào)處理如圖3所示.
圖3 算法處理模塊
圖3列出了系統(tǒng)實(shí)現(xiàn)的4種算法處理模塊,實(shí)際應(yīng)用中可以在系統(tǒng)中加入更多的算法. 視頻信號(hào)經(jīng)過一個(gè)算法模塊之后還可以送入另外一個(gè)模塊進(jìn)行處理,二值化處理與邊緣檢測(cè)算法模塊均在灰度處理模塊的基礎(chǔ)上進(jìn)行.
(1)灰度處理. 采集的視頻幀序列為f(x,y,1)、f(x,y,2)、….、f(x,y,n),從SDRAM中讀取做灰度處理和二值化處理.R、G、B轉(zhuǎn)化為灰度圖常用公式:
Gray=0.299R+0.587G+0.114B.
(1)
在FPGA中涉及到浮點(diǎn)運(yùn)算,會(huì)消耗大量的邏輯資源,實(shí)際實(shí)現(xiàn)過程中將系數(shù)量化成3/10、6/10和1/10. 除法采用FPGA的除法器可以加快信號(hào)處理速度,該處理方式能達(dá)到很好的效果.
(2)二值化處理. 二值化采用自適應(yīng)閾值,計(jì)算一幅圖像的灰度分量的平均值為二值化的閾值,以有效減少環(huán)境變化(如光線變化)對(duì)系統(tǒng)的干擾. 二值化公式:
(2)
其中,iTH為二值化的閾值.
(3)邊緣檢測(cè). 邊緣檢測(cè)采用Sobel檢測(cè)算子,采用3×3的Sobel算子核,先對(duì)圖像垂直方向進(jìn)行邊緣檢測(cè),再對(duì)水平方向進(jìn)行邊緣檢測(cè),image為輸入圖像信號(hào),Gx和Gy分別是垂直方向和水平方向Sobel算子核:
(3)
計(jì)算出圖像的每一個(gè)像素的垂直方向及水平方向灰度值,則該點(diǎn)灰度值:
(4)
FPGA實(shí)現(xiàn)過程則是采用3個(gè)FIFO緩存3行圖像,F(xiàn)IFO輸出通過與Sobel算子進(jìn)行乘加運(yùn)算,充分利用FPGA的宏單元模塊,主要調(diào)用其乘法器與并行加模塊,而開平方運(yùn)算也是調(diào)用開方宏單元模塊,宏單元模塊可以加速運(yùn)算,提高系統(tǒng)的運(yùn)算能力.
(4)圖像放大. 圖像放大采用的雙線性插值算法[17],雙線性插值算法原理: 首先在圖像x方向(水平方向)進(jìn)行線性插值,然后在圖像y方向(垂直方向)進(jìn)行線性插值,得到插值點(diǎn)f(x,y). 如果選擇一個(gè)坐標(biāo)系統(tǒng)使得的4個(gè)已知點(diǎn)坐標(biāo)分別為 (0, 0)、(0, 1)、(1, 0) 和 (1, 1)則插值公式可化簡(jiǎn)為:
f(x,y)=f(0,0)(1-x)(1-y)+f(0,1)(1-x)y+f(1,1)xy+f(1,0)x(1-y),
(5)
其中f(x,y)就是經(jīng)過插值之后的輸出信號(hào).
在FPGA中雙線性插值通過2個(gè)雙口RAM緩存2行圖像數(shù)據(jù)實(shí)現(xiàn),在1個(gè)時(shí)鐘周期內(nèi)同時(shí)在每一行提供2個(gè)輸入像素,從而提供了所有的4個(gè)像素. 將4個(gè)像素輸入到插值模塊,最終可以得到插值后的點(diǎn). 在本系統(tǒng)中,由于顯示器分辨率受限,如果需要顯示插值之后的1路視頻,則只能切換到1路視頻顯示模式.
1.4 視頻拼接和顯示
視頻拼接是將多路視頻采集的視頻顯示在同一畫面,拼接過程與不同畫面的時(shí)序同步,同步信號(hào)是由VGA控制器模塊產(chǎn)生,VGA控制器模塊根據(jù)時(shí)序讀取顯示所需的視頻信號(hào). 視頻拼接模塊根據(jù)地址選擇讀取其中一路信號(hào),所以每一路視頻的顯示順序是可以任意調(diào)整的,只需將VGA顯示的起始地址和其中的一路信號(hào)關(guān)聯(lián)起來. 圖4是多畫面視頻拼接模塊處理流程圖,其中VGA_X和VGA_Y是VGA控制器模塊顯示1個(gè)像素點(diǎn)的地址.
視頻拼接功能是該系統(tǒng)的重要模塊,在8端口SDRAM控制器中,每一路信號(hào)都設(shè)置了read data使能信號(hào),該讀使能信號(hào)是通過圖4判斷之后賦值的. 更多路信號(hào)的拼接可采用同樣的原理,只需將判斷地址做相應(yīng)的變化,同時(shí),增大視頻存儲(chǔ)器即可.
根據(jù)以上設(shè)計(jì),編寫相關(guān)的代碼模塊,采用DE2開發(fā)板作為驗(yàn)證平臺(tái),該開發(fā)板采用的是Altera公司的Cyclone II系列FPGA芯片EP2C35F672C6,使用開發(fā)軟件是Quartus II 9.0,通過VGA接口連接通用液晶顯示器顯示,TRDB-DC2攝像模塊攝像頭采用的是Micron公司推出的一款RGB三基色數(shù)字式130萬像素CMOS攝像頭MT9M011,原始分辨率是1 280×1 024. 編譯成功后下載至FPGA,系統(tǒng)4路視頻顯示效果如圖5A所示,系統(tǒng)將一路信號(hào)作為2路顯示畫面,視頻算法和視頻切換選擇通過開發(fā)平臺(tái)上的按鍵和開關(guān)確定. 圖5B是經(jīng)過算法處理模塊之后的多路視頻顯示,第一路視頻是彩色視頻,第二路視頻是灰度處理顯示,第三路是第一路視頻的二值化處理顯示,第四路視頻是第二路視頻的邊緣檢測(cè)處理顯示. 圖5C是圖5B的第一路視頻雙線性插值之后的顯示效果,如果要顯示插值之后的視頻,則只能顯示一路視頻. 可以看出雙線性插值具有較好的插值效果,但是放大后圖像相對(duì)于原始信號(hào)清晰度還需要進(jìn)一步優(yōu)化.
圖4 視頻拼接過程
圖5 多路視頻、算法處理和放大后的顯示效果
采用Altera公司的低成本Cyclone II系列FPGA設(shè)計(jì)了一個(gè)多路視頻實(shí)時(shí)處理系統(tǒng),系統(tǒng)設(shè)計(jì)全部采用FPGA硬件設(shè)計(jì),充分利用FPGA的并行處理能力,幀頻達(dá)到了15幀/s,算法中每一路視頻信號(hào)的處理時(shí)間不超過4 ms. 經(jīng)過系統(tǒng)長(zhǎng)時(shí)間運(yùn)行結(jié)果顯示,每一路視頻實(shí)時(shí)性良好,并且系統(tǒng)具有很好的穩(wěn)定性. 該系統(tǒng)采用的單片F(xiàn)PGA的實(shí)現(xiàn)方式是一種低成本、低功耗和易于集中到其他系統(tǒng)中的方案,有利于進(jìn)一步的應(yīng)用.
[1] OH K J,KIM M,YOON J S,et al. Multi-view video and multi-channel audio broadcasting system[C]∥3DTV Conference,2007. Kos Island:IEEE,2007:1-4.
[2] LOU J G,CAI H,LI J. A real-time interactive multi-view video system[C]∥Proceedings of the 13th annual ACM international conference on Multimedia. New York:ACM,2005:161-170.
[3] 王鵬,黃建,呂志剛. 基于ARM9的嵌入式多路視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 電視技術(shù),2008,32(7):84-86.
WANG P,HUANG J,Lü Z G. Design of embedded multi-channel video monitoring system based on Arm9[J]. Video Engineering,2008,32(7):84-86.
[4] ZHAO J,WANG Q,MEN G Z. The design of multi-channel video network transmission Embedded System based on DM642[C]∥Control and Decision Conference (CCDC). Xuzhou:IEEE,2010:3229-3232.
[5] ZHANG Z K,LIU Z H,JIAO J B. DSP implementation of a multi-channel video display system with image stitching[C]∥Information,Computing and Telecommunication. Beijing:IEEE,2009:204-207.
[6] XIA J B,ZHAO X H,GUO W W. Research on the method of multi-channel video acquisition and display based on FPGA[J]. International Journal of Computer Network and Information Security,2010,2(1):17-17.
[7] ZHOU Y B,YANG Y N. Real-time multi-channel vsion processing based on DSP&FPGA[C]∥AASRI Winter International Conference on Engineering and Technology.[S.l.]:Atlantis Press,2013:162-165.
[8] 胡健生,張倩,蔡艷軍. 基于ARM11+FPGA的多路視頻監(jiān)控系統(tǒng)關(guān)鍵技術(shù)研究[J]. 電視技術(shù),2011,35(21):120-123.
HU J S,ZHANG Q,CAI Y J. Research of Multi-channel video monitoring system based on ARM11&FPGA[J]. Video Engineering,2011,35(21):120-123.
[9] 李曉光,劉宏哲,袁家政. 基于GPU實(shí)時(shí)視頻處理的多投影融合系統(tǒng)研究[J]. 計(jì)算機(jī)科學(xué),2015,42(9):285-288.
LI X G,LIU H Z,YUAN J Z. Multi-projector displays system research based on GPU real-time video processing[J]. Computer Science,2015,42(9):285-288.
[10] 謝逸群,王慧雅,許華虎. 基于視頻實(shí)時(shí)處理的多投影曲面拼接系統(tǒng)的研究[J]. 中國(guó)圖象圖形學(xué)報(bào),2009,4(2):286-291.
XIE Y Q,WANG Y H,XU H H. Achievingmulti-projector displays stitching based on real-time video processing[J]. Journal of Image and Graphics,2009,4(2):286-291.
[11]朱美能,李德華,金良海,等. 基于多DSP的并行實(shí)時(shí)視頻處理系統(tǒng)[J]. 計(jì)算機(jī)與數(shù)字工程,2007,35(8):41-44.
[12] 周濱,謝曉霞,傅其祥,等. 基于多DSP的高速通用并行處理系統(tǒng)研究與設(shè)計(jì)[J]. 電子設(shè)計(jì)工程,2012,20(17):175-179.
ZHOU B,XIE X X,FU Q X,et al. Design of high-speed general parallel processing system based on multi-DSP[J]. Electronic Design Engineering,2012,20(17):175-179.
[13] 劉貴寶. 雙DSP的多路視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,11(1):58-61.
LIU G B. Multi-channel video surveillance system based on dual DSP[J]. Microcontrollers & Embedded Systems,2011,11(1):58-61.
[14]CROOKES D,BENKRID K,BOURIDANE A,et al. Design and implementation of a high level programming environment for FPGA-based image processing[C]∥Proceedings-vision Image and Signal Processing,[S.l.]:IET,2000,147(4):377-384.
[15]LIU X,SUN D J,TENG T T,et al. FPGA Implement of Multi-channel real-time correlation processing system[J]. Applied Mechanics and Materials,2013,303(306):1925-1929.
[16]BENKRID K,ALOTAIBI K,CROOKES D,et al. Image processing coprocessor implementation for Xilinx XC6000 series FPGAs[J]. Proceedings of SPIE,1999,3844(1):104-111.
[17]BAILEY D G. Design for embedded image processing on FPGAs[M].[S.l]:IEEE press,2011.
【中文責(zé)編:譚春林 英文審校:肖菁】
Multi-Channel Real-Time Video Processing System Based on FPGA
YI Zichuan1,3,4, LIN Yue1, WANG Li1,2,3, LIU Xianming2,3, Nicolaas Frans de ROOIJ3, ZHOU Guofu2,3,4*
(1. University of Electronic Science and Technology of China, Zhongshan Institute; 2. South China Academy of Advanced Optoelectronics, South China Normal University, Guangzhou 510006, China; 3. R&D Center, Shenzhen Guohua Optoelectronic Technology, Co., Ltd., Shenzhen 518051, China; 4. Academy of Shenzhen Guohua Optoelectronics, Shenzhen 518110, China)
Traditional video monitoring system control is not flexible; processing speed is slow, and video algorithms for each video signal cannot be supported in the system. A multi-channel real-time video processing and display system based on FPGA is proposed in this paper. A single chip FPGA hardware is used in the system to realize multi-channel video acquisition, video format conversion, video caching, algorithm processing, video splicing and information display. Video switching display and processing can be realized among multi-channel video, and the system supports different algorithms for each channel video at the same time. The parallel processing capabilities of the FPGA is used to realize real-time processing and display of 4-channel video, and the frame rate is up to 15 frames per second; processing time of each video signal is less than 4 ms. The proposed system has advantages of low cost, low power consumption, real-time, expansibility. And it is suitable for daily video monitoring application.
FPGA; multi-channel video processing; video stitching; video splicing
2016-11-21 《華南師范大學(xué)學(xué)報(bào)(自然科學(xué)版)》網(wǎng)址:http://journal.scnu.edu.cn/n
教育部長(zhǎng)江學(xué)者和創(chuàng)新團(tuán)隊(duì)發(fā)展計(jì)劃項(xiàng)目(IRT13064);國(guó)家高等學(xué)校學(xué)科創(chuàng)新引智計(jì)劃111引智基地-光信息引智基地項(xiàng)目;廣東省引進(jìn)創(chuàng)新科研團(tuán)隊(duì)計(jì)劃項(xiàng)目(2011D039);廣東省引進(jìn)第四批領(lǐng)軍人才專項(xiàng)資金項(xiàng)目(Nicolaas Frans de ROOIJ,2014年);廣東省科技計(jì)劃項(xiàng)目(2014A030308013,2014B090914004);2016年廣東大學(xué)生科技創(chuàng)新培育專項(xiàng)項(xiàng)目(pdjh2016a0906)
TN911.72
A
1000-5463(2017)01-0051-05
*通訊作者:周國(guó)富,教授,國(guó)家“千人計(jì)劃”入選者,廣東省領(lǐng)軍人才,Email: guofu.zhou@m.scnu.edu.cn.