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