文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.06.016
中文引用格式: 韓德強(qiáng),楊利平,王宗俠. 基于Zynq-7000的寬幅視頻處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(6):59-62,66.
英文引用格式: Han Deqiang,Yang Liping,Wang Zongxia. Design and implementation of wide-field vision video processing system based on Zynq-7000[J].Application of Electronic Technique,2016,42(6):59-62,66.
0 引言
寬幅視頻拼接是基于計(jì)算機(jī)視覺(jué)和圖形處理技術(shù)的整合,其本質(zhì)就是圖像拼接技術(shù),必然與圖像傳感器技術(shù)及圖像算法研究密切相關(guān)[1],但其對(duì)于實(shí)時(shí)性的較高要求,使得在該領(lǐng)域的技術(shù)實(shí)踐同樣需要關(guān)注平臺(tái)的處理性能。目前市面上普遍采用的主要有通過(guò)單目魚(yú)眼鏡頭捕獲全景圖像的嵌入式平臺(tái)方案,以及多通道圖像采集拼接形成全景的通用計(jì)算機(jī)平臺(tái)方案。前者對(duì)于鏡頭工藝要求高且存在較大的畸變,而后者憑借性能優(yōu)勢(shì)獲得好的效果,但設(shè)備體積龐大且價(jià)格昂貴[2]。
針對(duì)以上情況,本文提出了一種基于AP SoC(All Programmable System on Chip,全可編程的片上系統(tǒng))多通道視頻無(wú)縫拼接的寬幅視頻處理解決方案。結(jié)合用戶場(chǎng)景分析,提出具有擴(kuò)展能力的寬幅視頻處理技術(shù),預(yù)置多路擴(kuò)展接口隨時(shí)增減攝像頭以調(diào)整視野寬度,滿足多種現(xiàn)場(chǎng)寬視角攝錄需求。
1 系統(tǒng)總體構(gòu)架
寬幅視頻處理系統(tǒng)由本地視頻處理系統(tǒng)端和遠(yuǎn)程攝錄客戶端兩部分組成,系統(tǒng)總體框圖如圖1所示。便攜式視頻處理系統(tǒng)根據(jù)監(jiān)控需求進(jìn)行配置與部署,遠(yuǎn)程客戶端進(jìn)行實(shí)時(shí)定制視野區(qū)域攝錄。
本地視頻處理系統(tǒng)作為設(shè)計(jì)的主體部分,由視頻采集、圖像處理、核心調(diào)度、用戶交互、本地顯示、網(wǎng)絡(luò)通信六個(gè)模塊組成。多通道視頻流采集模塊采用DMA方式將圖像數(shù)據(jù)送入內(nèi)存緩沖隊(duì)列;圖像處理模塊包含視頻處理的若干流程,在核心調(diào)度模塊控制下,借助可編程邏輯并行加速完成寬幅圖像的處理與存儲(chǔ);用戶交互模塊和本地顯示模塊協(xié)同完成設(shè)備配置與寬幅畫(huà)面預(yù)覽;網(wǎng)絡(luò)通信模塊作為視頻傳輸?shù)闹匾涌?,用于監(jiān)聽(tīng)網(wǎng)絡(luò)請(qǐng)求與寬幅視頻分發(fā)服務(wù)。
2 系統(tǒng)硬件設(shè)計(jì)
視頻處理核心板卡硬件系統(tǒng)結(jié)構(gòu)框圖如圖2所示。系統(tǒng)主要由存儲(chǔ)器模塊、網(wǎng)絡(luò)通信模塊、視頻采集接口模塊、本地顯示模塊、串行終端模塊、用戶交互模塊、時(shí)鐘模塊、電源模塊和JTAG調(diào)試模塊組成。
2.1 XC7Z020片上系統(tǒng)
XC7Z020芯片是Xilinx公司Zynq-7000系列AP SoC,在FPGA架構(gòu)中集成了雙核ARM Cotex-A9硬核處理器系統(tǒng),包含USB、SPI、SDIO等豐富的外設(shè)控制器,實(shí)現(xiàn)了PS(Processing System)硬核知識(shí)產(chǎn)權(quán)的性能和低功耗特性以及PL(Programmable Logic)可編程邏輯的靈活性[3]。借助AXI(Advanced eXtensible Interface,高級(jí)擴(kuò)展總線)互聯(lián)技術(shù)實(shí)現(xiàn)PS與PL之間的高性能的數(shù)據(jù)交換,為工程技術(shù)人員在圖像處理領(lǐng)域?qū)嵺`提供了全新的實(shí)現(xiàn)途徑。
2.2 存儲(chǔ)器模塊
存儲(chǔ)器模塊分為內(nèi)存和掉電存儲(chǔ)兩個(gè)部分。XC7Z020芯片內(nèi)置支持多協(xié)議標(biāo)準(zhǔn)的硬核內(nèi)存控制器,掛載兩片DDR3內(nèi)存芯片MT41K128M16,構(gòu)建起容量為512 MB、時(shí)鐘頻率為533 MHz的內(nèi)存儲(chǔ)器。選用飛索公司的32 MB QSPI Flash芯片S25FL256SAG以及SD閃存卡兩種掉電存儲(chǔ)方式,用于FPGA上電配置以及軟件系統(tǒng)的引導(dǎo)。
2.3 視頻采集模塊
選用三組OV5640攝像頭模塊圍繞單視點(diǎn)相背放置。攝像頭內(nèi)置白平衡、色彩校正、降噪等預(yù)處理功能,簡(jiǎn)化了后端FPGA系統(tǒng)的設(shè)計(jì)負(fù)擔(dān)。720P輸出模式下可達(dá)40 f/s以上幀率,其采用DVP(Digital Video Port,數(shù)字視頻接口)輸出,通過(guò)SCCB(Serial Camera Control Bus,串行攝像頭控制總線)進(jìn)行初始化配置。
2.4 本地顯示模塊
選用ADI公司的高清多媒體收發(fā)器ADV7511芯片,集成HDMI 1.4發(fā)送器,最大支持1080p@60Hz視頻傳輸。芯片集成I2C控制器用于管理接入的顯示設(shè)備信息。
2.5 網(wǎng)絡(luò)通信模塊
選用Marvell公司具有自適應(yīng)10/100/1 000 Mb/s傳輸速率的以太網(wǎng)物理層芯片88E1518,配合片內(nèi)吉比特MAC(Media Access Control,介質(zhì)訪問(wèn)控制)層控制器提供千兆以太網(wǎng)接入能力。
3 軟件系統(tǒng)架構(gòu)及核心算法的實(shí)現(xiàn)
本文使用Vivado2015.2設(shè)計(jì)套件完整的工具鏈協(xié)同完成軟件系統(tǒng)的構(gòu)建。圖像處理系統(tǒng)運(yùn)行流程如圖3所示,通過(guò)橫向的時(shí)域和縱向的空間域來(lái)說(shuō)明軟件與硬件協(xié)同實(shí)現(xiàn)圖像處理的工作流程。橫向的時(shí)間域即體現(xiàn)運(yùn)行于PS端的程序協(xié)調(diào)硬件系統(tǒng)推進(jìn)事務(wù)處理,組織整個(gè)系統(tǒng)的運(yùn)行流程;縱向的空間域是PL端圖像處理子系統(tǒng)在總線控制下,并行完成各自任務(wù)所經(jīng)歷數(shù)據(jù)遷移和操作。
按照模塊化軟硬件設(shè)計(jì)思路,將整個(gè)系統(tǒng)運(yùn)行劃分為五個(gè)運(yùn)行階段:系統(tǒng)初始化配置、視頻采集與預(yù)處理、柱面投影硬件加速、圖像接縫融合和多通道傳輸,其中視頻采集與預(yù)處理、柱面投影兩個(gè)階段以FPGA系統(tǒng)并行處理為核心,其他則以軟件調(diào)度執(zhí)行為主。
3.1 系統(tǒng)初始化配置
系統(tǒng)初始化配置階段是以硬核系統(tǒng)啟動(dòng)為主導(dǎo),從外部存儲(chǔ)器中讀取FPGA配置文件并部署到PL中,構(gòu)建起3個(gè)圖像處理子系統(tǒng),之后進(jìn)入操作系統(tǒng)引導(dǎo)和片內(nèi)外設(shè)備初始化過(guò)程。
3.2 視頻采集與預(yù)處理
采集預(yù)處理階段分為采集、預(yù)處理和存儲(chǔ)三個(gè)環(huán)節(jié)。視頻輸入端口捕獲的圖像數(shù)據(jù)流同步信息冗余且低效,不適合在片內(nèi)系統(tǒng)傳輸中使用,Xilinx公司提出了基于AXI標(biāo)準(zhǔn)協(xié)議框架的精簡(jiǎn)流傳輸AXI-Stream協(xié)議,使用Video In To AXI-Stream IP(Intellectual Property,知識(shí)產(chǎn)權(quán))核將DVP數(shù)據(jù)格式轉(zhuǎn)換為AXI-Stream協(xié)議數(shù)據(jù)流,實(shí)現(xiàn)片內(nèi)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化。
本設(shè)計(jì)所使用的攝像頭輸出圖像格式是Bayer色彩空間,為了獲得RGB色彩空間圖像,需要插值以獲取像素丟失的顏色信息。綜合考慮算法復(fù)雜度和圖像還原質(zhì)量,采用3×3鄰域雙線性插值法對(duì)圖像進(jìn)行色彩空間還原[4]?;贏XI-Stream協(xié)議接口的Color Filter Array IP核,進(jìn)行簡(jiǎn)單參數(shù)配置便能夠?qū)崿F(xiàn)Bayer向RGB色彩空間轉(zhuǎn)換,從而實(shí)現(xiàn)與視頻采集IP子系統(tǒng)無(wú)縫對(duì)接。
3個(gè)圖像采集與預(yù)處理通道工作均在FPGA內(nèi)異步完成,受限于FPGA存儲(chǔ)容量,需要將視頻幀緩存在DDR內(nèi)存中。PS端提供了四路高速AXI總線訪存接口,借助Video DMA IP核能夠?qū)崿F(xiàn)AXI-Stream協(xié)議數(shù)據(jù)流轉(zhuǎn)換為基于地址訪問(wèn)的標(biāo)準(zhǔn)AXI協(xié)議,從而實(shí)現(xiàn)訪存操作,PS端通過(guò)AXI-Lite控制總線實(shí)現(xiàn)IP核配置。
3.3 柱面投影硬件加速
如圖4所示的柱面投影透視模型,按照單視點(diǎn)模型擺放的攝像頭陣列位于O點(diǎn),待投影圖像ABCD在投影圓柱面上形成的映像為閉合曲面A′B′C′D′。在圖4(a)中觀測(cè)點(diǎn)O處所在的水平和豎直面投影,得到了截面圖4(b)和圖4(c),其中待投影圖像上P、Q兩點(diǎn)在投影柱面上形成P′和Q′兩投影點(diǎn),假設(shè)柱面的半徑為r,高度為H,單個(gè)攝像頭水平視野角度為θ,待投影圖像寬度為W,高度為H,則能夠得出像素P(x,y)向P′(x′,y′)的投影關(guān)系如式(1)所示,反投影變換如式(2)所示[5]。
其中:
投影柱面的半徑r就是攝像頭的焦距,焦距無(wú)法精確測(cè)量,但可以通過(guò)計(jì)算公式進(jìn)行估算:
在實(shí)際柱面投影過(guò)程中,通過(guò)計(jì)算柱面投影圖像指定像素點(diǎn)所對(duì)應(yīng)的原始像素坐標(biāo),將坐標(biāo)轉(zhuǎn)換成存儲(chǔ)器的地址,取出該像素并存入到所對(duì)應(yīng)的柱面投影圖像中,最終形成了完整的柱面投影圖像。
基于緩存策略的連續(xù)地址存儲(chǔ)器訪問(wèn),相對(duì)字節(jié)隨機(jī)訪問(wèn)具有更好的帶寬效能。在柱面圖像目標(biāo)存儲(chǔ)區(qū),按行、列依次將若干連續(xù)的像素組進(jìn)行反柱面投影求其所在原圖像坐標(biāo),逐個(gè)從原圖像坐標(biāo)取出其像素值存入緩沖區(qū),緩沖區(qū)滿后采用總線突發(fā)方式,一次放入目標(biāo)柱面位置,即概括為零取整存,功能框圖如圖5所示。
柱面投影主要涉及數(shù)學(xué)公式計(jì)算以及存儲(chǔ)器訪問(wèn)操作,基于硬件描述語(yǔ)言的FPGA設(shè)計(jì)對(duì)基于復(fù)雜總線的數(shù)據(jù)通信及數(shù)學(xué)計(jì)算編程實(shí)現(xiàn)較為復(fù)雜。Vivado HLS(High Level Synthesis,高級(jí)綜合)工具將C/C++等高級(jí)語(yǔ)言通過(guò)高層次功能綜合,快速實(shí)現(xiàn)IP核設(shè)計(jì)與開(kāi)發(fā),軟件提供了基于高級(jí)語(yǔ)言的圖像處理、數(shù)學(xué)函數(shù)、標(biāo)準(zhǔn)通信協(xié)議接口,得以使開(kāi)發(fā)人員更加專注于功能設(shè)計(jì),同時(shí)能夠獲得不錯(cuò)的硬件加速性能。
按照高級(jí)語(yǔ)言程序功能函數(shù)設(shè)計(jì),需要明確入口參數(shù)。實(shí)現(xiàn)柱面投影所需的關(guān)鍵參數(shù)如表1所示。
設(shè)計(jì)完成的功能函數(shù)通過(guò)C仿真以驗(yàn)證程序設(shè)計(jì)邏輯正確性。通過(guò)程序邏輯測(cè)試后,進(jìn)行高級(jí)語(yǔ)言向RTL(Register Transfer Level,寄存器傳輸級(jí))IP綜合。柱面投影IP核通過(guò)總線獲取參數(shù)及訪存。參數(shù)列表中兩個(gè)存儲(chǔ)器地址用于內(nèi)存數(shù)據(jù)訪問(wèn),故采用支持高帶寬的數(shù)據(jù)通信以及突發(fā)傳輸?shù)腁XI總線掛接,其他參數(shù)使用AXI4-Lite控制總線進(jìn)行配置。初步完成端口配置與綜合后,會(huì)針對(duì)選定平臺(tái)提供詳細(xì)的資源統(tǒng)計(jì)報(bào)告,如表2所示,產(chǎn)生的RTL電路同樣需要C/RTL協(xié)同仿真以驗(yàn)證時(shí)序邏輯正確性,完成仿真之后軟件會(huì)提供測(cè)試報(bào)告及信號(hào)時(shí)序圖。通過(guò)設(shè)計(jì)驗(yàn)證后,即可進(jìn)行IP核的打包并導(dǎo)入FPGA系統(tǒng)。
3.4 接縫融合與全景拼接
相鄰圖像重疊區(qū)域使用加權(quán)融合方式處理。實(shí)際拼接區(qū)域范圍較小,故采用軟件計(jì)算的方式實(shí)現(xiàn),加權(quán)融合通過(guò)緩慢改變權(quán)重系數(shù),使拼接圖像順滑過(guò)渡。加權(quán)融合原理示意如圖6所示。
設(shè)兩幅待拼接圖像F(x,y)和G(x,y),其對(duì)應(yīng)的權(quán)重函數(shù)分別為ω1和ω2,其數(shù)學(xué)表達(dá)式為:
3.5 多通道傳輸
多通道傳輸是指完成處理的寬幅圖像,通過(guò)本地端HDMI顯示以及遠(yuǎn)程客戶端請(qǐng)求攝錄兩種呈現(xiàn)方式。
應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)主要分為兩個(gè)功能模塊:視頻拼接處理和定制化網(wǎng)絡(luò)分發(fā)。借助雙核處理器的優(yōu)勢(shì)多線程編程調(diào)度來(lái)提升系統(tǒng)的整體執(zhí)行效率。系統(tǒng)服務(wù)軟件運(yùn)行流程如圖7所示,服務(wù)程序開(kāi)始運(yùn)行后,主線程申請(qǐng)綁定第一處理器核心運(yùn)行,啟動(dòng)系統(tǒng)設(shè)備初始化工作,之后創(chuàng)建子線程,并使其運(yùn)行在第二核心上?;诤诵慕壎ǖ亩嗑€程設(shè)計(jì),有利于手動(dòng)進(jìn)行負(fù)載均衡。主線程主要負(fù)責(zé)圖像處理服務(wù),循環(huán)控制整個(gè)視頻拼接的四個(gè)階段,而子線程主要負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求的監(jiān)聽(tīng)與定制化的分發(fā)服務(wù)。由于兩者都需要訪問(wèn)全景視頻緩沖區(qū),所以需要進(jìn)行緩沖區(qū)讀寫(xiě)訪問(wèn)控制。
4 系統(tǒng)測(cè)試與效果
系統(tǒng)服務(wù)程序HDMI顯示接口實(shí)時(shí)查看拼接效果,如圖8所示。遠(yuǎn)程客戶端進(jìn)行定制化分發(fā)攝錄,如圖9所示。嵌入式服務(wù)端實(shí)時(shí)形成的寬幅視頻畫(huà)面如圖10所示,畫(huà)面接縫部位拼接較為均勻且完整。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試及數(shù)據(jù)統(tǒng)計(jì),視頻處理系統(tǒng)在720 p模式下,寬幅分辨率為3 360×640,幀率5~10 f/s,480 p模式下分辨率為2 240×420,幀率15~18 f/s,基本實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。
隨著機(jī)器視覺(jué)、模式識(shí)別領(lǐng)域的飛速發(fā)展,基于寬幅實(shí)時(shí)視頻為基礎(chǔ)的自動(dòng)識(shí)別與檢測(cè)應(yīng)用在交通、安防等領(lǐng)域?qū)?huì)有更廣闊的發(fā)展前景。
參考文獻(xiàn)
[1] 趙有金.基于FPGA的高分辨率全景圖像處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2011.
[2] XU W,MULLIGAN J.Panoramic video stitching from commodity HDTV cameras[J].Multimedia Systems,2013,19(5):407-426.
[3] 陸佳華,潘祖龍,彭競(jìng)宇,等.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx ZYNQ(第2版)[M].北京:機(jī)械工業(yè)出版社,2014.
[4] 孫輝,柏旭光,孫麗娜,等.基于Bayer圖像色彩還原線性插值方法[J].液晶與顯示,2013,28(3):417-423.
[5] 武曉斌.基于FPGA的柱面投影算法的實(shí)現(xiàn)[J].電子科技,2015,28(5):9-12.