• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Vivado HLS的求取特征點(diǎn)圖像坐標(biāo)的設(shè)計(jì)

      2018-04-08 02:05:16楊發(fā)順
      電子科技 2018年4期
      關(guān)鍵詞:嵌入式軟件特征

      何 凱,梁 蓓,楊發(fā)順

      (貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025)

      視覺定位技術(shù)是機(jī)器視覺研究領(lǐng)域的一個(gè)分支,在工業(yè)、醫(yī)療等領(lǐng)域都有廣泛的應(yīng)用前景,光學(xué)定位是其中常見的一種定位技術(shù)。本文探討了一種以被動(dòng)式光學(xué)反射標(biāo)記物作為特征點(diǎn)的圖像坐標(biāo)求取方法,即以近紅外波長(zhǎng)反射材料制作靶點(diǎn),在相機(jī)上安裝特定的濾光片,以獲得特征點(diǎn)明顯的灰度圖像。此種方案具有魯棒性強(qiáng)、精度高、使用方便的特點(diǎn)。

      特征點(diǎn)圖像坐標(biāo)的獲取涉及高斯濾波、二值化、坐標(biāo)點(diǎn)求取等算法。借助于開源的OpenCV(Open Source Computer Vision)視覺庫(kù),在傳統(tǒng)串行架構(gòu)的嵌入式處理器上可以用軟件方式輕松實(shí)現(xiàn)特征點(diǎn)圖像坐標(biāo)的求取,但該方式存在功耗高、延時(shí)長(zhǎng)以及數(shù)據(jù)存儲(chǔ)帶寬受限等問題。而利用FPGA(Field-Programmable Gate Array)并行求取特征點(diǎn)圖像坐標(biāo)的方式則可以解決上述問題。采用HDL(Hardware Description Language)實(shí)現(xiàn)則面臨開發(fā)難度大、周期長(zhǎng)等問題,尤其是算法的時(shí)序問題,需要花費(fèi)大量的時(shí)間進(jìn)行分析、設(shè)計(jì)、仿真及優(yōu)化。Xilinx高層次綜合工具Vivado HLS(High Level Synthesis)利用有限狀態(tài)機(jī)原理控制算法進(jìn)程,通過調(diào)用與OpenCV視覺庫(kù)功能對(duì)應(yīng)的HLS視頻庫(kù),能夠快速地將含有OpenCV視覺庫(kù)的算法程序轉(zhuǎn)化為RTL(Register Transfer Level)硬件。結(jié)合Xilinx 高性能和低功耗的Zynq-7000 SoC(System on Chip)處理器平臺(tái),通過軟硬件協(xié)同設(shè)計(jì)實(shí)現(xiàn)對(duì)圖像處理軟件的硬件加速,不僅解決了傳統(tǒng)嵌入式處理器處理高清圖像時(shí)功耗高、延時(shí)長(zhǎng)、帶寬受限等問題,還提高了硬件的開發(fā)效率。

      1 軟件系統(tǒng)設(shè)計(jì)

      Xilinx Vivado HLS利用有限狀態(tài)機(jī)原理控制算法進(jìn)程,從求取特征點(diǎn)圖像坐標(biāo)的算法程序中提取控制和數(shù)據(jù)流,通過頂層函數(shù)控制流的一些節(jié)點(diǎn),將控制傳遞到各個(gè)子程序中,從而達(dá)到并行執(zhí)行子程序的目的。Vivado HLS本質(zhì)上是一款軟件編譯器,通過對(duì)算法進(jìn)行規(guī)范以及添加適當(dāng)?shù)募s束指令把相關(guān)的OpenCV視覺庫(kù)算法程序高層次地綜合成具有時(shí)序和并行性的RTL硬件。

      對(duì)求取特征點(diǎn)圖像坐標(biāo)進(jìn)行軟件算法設(shè)計(jì),首先通過高斯濾波算法對(duì)圖像進(jìn)行降噪處理,然后對(duì)圖像進(jìn)行二值化處理,以獲取該圖像的二值圖。上述預(yù)處理環(huán)節(jié)均是通過調(diào)用OpenCV視覺庫(kù)中的相關(guān)函數(shù)來完成的。介于硬件已經(jīng)對(duì)圖像背景做了很好的濾除,經(jīng)過簡(jiǎn)單的二值化處理,便能獲得圖像特征點(diǎn)與背景黑白分明的二值圖像,最后遍歷圖像矩陣數(shù)據(jù)累加大于閾值的像素點(diǎn)的坐標(biāo),將累加結(jié)果除以像素點(diǎn)數(shù)得到對(duì)應(yīng)的特征點(diǎn)圖像坐標(biāo)(x,y)。經(jīng)過仿真驗(yàn)證后在ARM處理器上實(shí)現(xiàn)求取特征點(diǎn)圖像坐標(biāo)的功能。求取特征點(diǎn)圖像坐標(biāo)算法結(jié)構(gòu)圖如圖1所示。

      圖1 求取特征點(diǎn)圖像坐標(biāo)算法結(jié)構(gòu)圖

      為了規(guī)劃算法在Zynq SoC架構(gòu)上的實(shí)現(xiàn),文中對(duì)ARM軟件實(shí)現(xiàn)方式進(jìn)行測(cè)試。當(dāng)系統(tǒng)工作在666.6 MHz頻率時(shí),處理像素為1 280×1 024的圖像。取20幀求平均時(shí)間,記錄主要處理步驟的執(zhí)行時(shí)間,記錄結(jié)果如表1所示。

      表1 ARM軟件實(shí)現(xiàn)主要處理步驟執(zhí)行時(shí)間

      由表1數(shù)據(jù)可以看出,在ARM平臺(tái)軟件實(shí)現(xiàn)中,高斯濾波、二值化處理、求取坐標(biāo)等過程共消耗337.2 ms,占據(jù)了系統(tǒng)大量的處理時(shí)間,導(dǎo)致整個(gè)系統(tǒng)的處理速率降低。本文提出的設(shè)計(jì)將對(duì)計(jì)算量較大的處理環(huán)節(jié)進(jìn)行硬件加速,從而達(dá)到提高系統(tǒng)的處理速率的目的。

      在Vivado HLS上對(duì)求取特征點(diǎn)圖像坐標(biāo)的算法程序進(jìn)行硬件加速,需對(duì)程序進(jìn)行算法規(guī)范。為了與HLS視頻庫(kù)處理機(jī)制相匹配,將原程序改寫成基于視頻數(shù)據(jù)流鏈的算法程序。在預(yù)處理環(huán)節(jié)中,OpenCV視覺庫(kù)函數(shù)中的高斯濾波和二值化程序包含了Vivado HLS 在編譯時(shí)不能綜合的動(dòng)態(tài)內(nèi)存分配、浮點(diǎn)運(yùn)算等,因此需要用功能相同的HLS視頻庫(kù)函數(shù)進(jìn)行替換。由于HLS視頻庫(kù)中的高斯濾波、二值化處理等函數(shù)與OpenCV視覺庫(kù)中相應(yīng)功能的函數(shù)具有相似的接口與算法,為適應(yīng)FPGA的并行架構(gòu),對(duì)HLS視頻庫(kù)函數(shù)進(jìn)行了浮點(diǎn)運(yùn)算轉(zhuǎn)化成定點(diǎn)運(yùn)算、片上行緩存、窗口緩存等優(yōu)化。預(yù)處理后的圖像交由求取特征點(diǎn)圖像坐標(biāo)環(huán)節(jié)進(jìn)行加速處理。需要注意的是,與ARM軟件實(shí)現(xiàn)代碼不同,編寫可加速代碼的過程中不能包含任何運(yùn)行時(shí)動(dòng)態(tài)存儲(chǔ)器分配,必須在代碼中明確描述算法使用的所有存儲(chǔ)器陣列,并通過手工添加約束優(yōu)化系統(tǒng)結(jié)構(gòu),使算法模塊符合AXI(Advanced eXtensible Interface)協(xié)議標(biāo)準(zhǔn)。在該設(shè)計(jì)中,定義了3個(gè)大小為1 280×1 024,HLS_8UC1的圖像內(nèi)存,將算法處理過程中的圖像映射到存儲(chǔ)單元,并將(x,y)坐標(biāo)及return的接口設(shè)置Saxi_AXILiteS模式,輸入圖像的接口設(shè)置為axis模式。坐標(biāo)求取環(huán)節(jié)主要實(shí)現(xiàn)遍歷累加大于閾值的像素點(diǎn)的坐標(biāo),并將累加結(jié)果除以像素點(diǎn)數(shù)以求取對(duì)應(yīng)的特征點(diǎn)圖像坐標(biāo)(x,y)的功能。將此環(huán)節(jié)放置于HLS視頻庫(kù)函數(shù)鏈之后,預(yù)處理后的圖像數(shù)據(jù)由求取坐標(biāo)環(huán)節(jié)消耗,并輸出特征點(diǎn)圖像坐標(biāo)(x,y)。求取特征點(diǎn)圖像坐標(biāo)算法硬件加速設(shè)計(jì)流程圖如圖2所示。

      圖2 求取特征點(diǎn)圖像坐標(biāo)算法硬件加速設(shè)計(jì)流程圖

      該設(shè)計(jì)通過dataflow指令對(duì)硬件加速模塊進(jìn)行優(yōu)化,主要指示Vivado HLS通過并行方式安排執(zhí)行該函數(shù)的所有子函數(shù),從而達(dá)到縮短延時(shí)、提高吞吐率的效果。利用編譯器對(duì)軟件進(jìn)行RTL實(shí)現(xiàn),在RTL/C++協(xié)同仿真驗(yàn)證階段,取20幀圖像并求取特征點(diǎn)圖像坐標(biāo)的結(jié)果進(jìn)行對(duì)比分析,圖像坐標(biāo)(x,y)的值精確到小數(shù)點(diǎn)后3位。試驗(yàn)驗(yàn)證表明,兩種實(shí)現(xiàn)方式的仿真結(jié)果相同。驗(yàn)證后編譯器以AXI兼容的方式對(duì)IP核進(jìn)行封裝,封裝過程中編譯器自動(dòng)生成IP核的軟件驅(qū)動(dòng),從而完成整個(gè)求取特征點(diǎn)圖像坐標(biāo)模塊(Coordinates)的IP核設(shè)計(jì)。整體求取特征點(diǎn)圖像坐標(biāo)算法硬件加速設(shè)計(jì)流程如圖3所示。

      圖3 整體求取特征點(diǎn)圖像坐標(biāo)硬件加速設(shè)計(jì)流程圖

      求取特征點(diǎn)圖像坐標(biāo)算法經(jīng)Vivado HLS綜合后,統(tǒng)計(jì)了其在XC7Z020-2CLG400I 器件FPGA部分的資源占用率,如表2所示。

      表2 PL部分的資源占用統(tǒng)計(jì)表

      2 硬件系統(tǒng)設(shè)計(jì)

      Zynq SoC融合了通用嵌入式單元(Processing System,PS)和可編程邏輯單元(Programmable Logic,PL)兩種架構(gòu)。PS包含雙核ARM Cortex A9處理器及一些關(guān)鍵外設(shè);而PL實(shí)際上是Xilinx 7系列的FPGA,可作為PS外設(shè)的一部分,用于擴(kuò)展處理平臺(tái)。Zynq SoC啟動(dòng)流程與FPGA不同,但與傳統(tǒng)ARM處理器類似,支持JTAG、NAND、parallel NOR、Serial NOR(Quad-SPI)以及SD卡等啟動(dòng)方式。該設(shè)計(jì)采用Basler GigE相機(jī),需要Linux系統(tǒng)作為裝載驅(qū)動(dòng)的平臺(tái),因此Zynq SoC采用SD卡啟動(dòng)方式:(1)將SD卡分為卷標(biāo)rootfs的EXT3格式與卷標(biāo)BOOT的FAT32格式的兩區(qū)并格式化,將Linaro Ubuntu文件系統(tǒng)放進(jìn)SD卡的rootfs分區(qū);(2)根據(jù)系統(tǒng)需求添加PS的SD卡千兆以太網(wǎng)等外設(shè)并完成系統(tǒng)的模塊設(shè)計(jì)(Block Design),將仿真綜合后生成的二進(jìn)制比特流文件(systerm.bit)導(dǎo)入Vivado SDK(Software Development Kit)與第一階段引導(dǎo)文件(fsbl.elf)、Linux系統(tǒng)的啟動(dòng)文件(u-boot.elf)合成加載啟動(dòng)任務(wù)的文件(Uboot.bin);(3)根據(jù)配置修改內(nèi)核文件并編譯生成二進(jìn)制的Linux內(nèi)核鏡像文件(uImage),依據(jù)內(nèi)核配置裁減設(shè)備樹文件生成二進(jìn)制設(shè)備樹文件(devicetree.dtb);(4)將Uboot.bin、uImage、devicetree.dtb3個(gè)文件放入BOOT分區(qū),構(gòu)建基于Zynq SoC的板載系統(tǒng)。在系統(tǒng)規(guī)劃中,PS主要負(fù)責(zé)抓取圖像與控制系統(tǒng)進(jìn)程;計(jì)算密集型數(shù)據(jù)則由PL加速處理。利用Zynq SoC完成求取特征點(diǎn)圖像坐標(biāo)系統(tǒng)的搭建,具體過程如圖4所示。

      圖4 特征點(diǎn)圖像坐標(biāo)求取系統(tǒng)

      2.1 PS部分實(shí)現(xiàn)的功能

      PS處理系統(tǒng)抓取圖像與控制系統(tǒng)進(jìn)程功能主要分為5個(gè)流程實(shí)現(xiàn),具體流程如下:

      (1)運(yùn)行Linaro Ubuntu板載系統(tǒng),為上層應(yīng)用提供Linux操作系統(tǒng)支持;

      (2)在PS中安裝Basler Pylon驅(qū)動(dòng)程序軟件包,從Basler相機(jī)中抓取圖像并存儲(chǔ)到PS和PL共用的DDR3存儲(chǔ)芯片中;

      (3)通過調(diào)用Vivado HLS 自帶的VDMA(Video Direct Memory Access)視頻存儲(chǔ)器直接訪問IP核驅(qū)動(dòng)程序?qū)崿F(xiàn)對(duì)讀寫過程中的通道控制;

      (4)裝載OpenCV視覺庫(kù),運(yùn)行OpenCV軟件算法程序;

      (5)運(yùn)行軟件控制整個(gè)系統(tǒng)的進(jìn)程。

      圖像采集使用的是Basler GigE千兆網(wǎng)工業(yè)相機(jī),該相機(jī)配有e2v EV76C661 CMOS 感光芯片,幀率可達(dá) 60 fps,130萬像素。該相機(jī)具有較低的延遲和抖動(dòng)時(shí)間,GigE每秒數(shù)據(jù)量超過100 MB,能夠快速傳輸高清圖片無需擔(dān)心帶寬問題。實(shí)際操作中,將相機(jī)與PS端的以太網(wǎng)口相連,在板載系統(tǒng)中安裝相機(jī)驅(qū)動(dòng)程序軟件包;設(shè)置板載系統(tǒng)的IP地址與相機(jī)IP在同一個(gè)網(wǎng)段,編寫并調(diào)試軟件抓取圖像,并將抓取的圖像存儲(chǔ)在PL、PS共享的DDR3內(nèi)存中。

      2.2 PL實(shí)現(xiàn)的功能

      PL加速處理密集型數(shù)據(jù)功能主要分為以下3個(gè)流程完成:

      (1)將生成的Coordinates IP核加入PL中,并與其他模塊相連接;

      (2)通過軟件調(diào)用VDMA從PL、PS共享DDR3存儲(chǔ)芯片中讀取圖像并傳輸至Coordinates IP核中進(jìn)行加速處理;

      (3)加速處理完成以后計(jì)算出特征點(diǎn)的圖像坐標(biāo),將坐標(biāo)(x,y)的輸出設(shè)定為S_axi_AXILiteS模式,與PS端的AXI互聯(lián)總線連接,則可用MMAP函數(shù)將設(shè)備映射到內(nèi)存,然后直接操作虛擬地址從Coordinates IP核的寄存器讀取(x,y)的像素值。

      在Zynq SOC內(nèi)部,PS和PL共享DDR3控制器。PS訪問DDR3內(nèi)存較為簡(jiǎn)單,只要操作DDR3內(nèi)存映射的虛擬地址即可。對(duì)于PL而言,要接入DDR3,必須通過遵循AXI協(xié)議AXI_HP端口。該設(shè)計(jì)采用Xilinx官方提供的VDMA IP核,VDMA是一種遵循AXI協(xié)議的軟核IP,可以實(shí)現(xiàn)雙緩沖和多緩沖機(jī)制,并且能夠直接與AXI_HP端口相連。VDMA數(shù)據(jù)接口可以分為讀、寫通道,使用時(shí)可以通過寫通道將AXI-Stream類型的數(shù)據(jù)流寫入DDR3,通過讀通道可以從DDR3讀取數(shù)據(jù),并以AXI-Stream類型的格式輸出。VDMA本質(zhì)上是一個(gè)數(shù)據(jù)搬運(yùn)IP,為數(shù)據(jù)進(jìn)出DDR3提供了一種便捷的方案。

      3 計(jì)算性能對(duì)比

      RTL/C++聯(lián)合仿真驗(yàn)證表明,經(jīng)算法規(guī)范加速后,兩種實(shí)現(xiàn)方式的仿真結(jié)果完全一致。為了直觀體現(xiàn)硬件加速的效果,文中對(duì)比兩種實(shí)現(xiàn)方法的執(zhí)行時(shí)間。系統(tǒng)中Basler 相機(jī)分辨率為1 280×1 024,幀率達(dá)到60 fps。取五幀圖像進(jìn)行對(duì)比,ARM 工作時(shí)鐘設(shè)置為666.6 MHz,F(xiàn)PGA工作時(shí)鐘設(shè)置為100 MHz,不同實(shí)現(xiàn)方式執(zhí)行時(shí)間如表3所示。

      表3 不同實(shí)現(xiàn)方式所需時(shí)間對(duì)比

      由表2可知,若將相機(jī)獲取圖片以及硬件加速時(shí)傳輸圖像的時(shí)間都計(jì)算在內(nèi),Zynq SOC硬件處理系統(tǒng)每幀的平均時(shí)間為33.1 ms,而ARM軟件處理系統(tǒng)每幀的平均時(shí)間為353.3 ms。整個(gè)系統(tǒng)用Zynq SOC硬件實(shí)現(xiàn)求取特征點(diǎn)圖像坐標(biāo)算法比ARM軟件實(shí)現(xiàn)要快9倍。若僅從算法的處理時(shí)間上看,包括高斯濾波、二值化、圖像坐標(biāo)求取步驟,硬件處理算法僅耗時(shí)10.2 ms,比軟件處理算法的335.8 ms要快33倍。

      4 結(jié)束語

      本文提出了一種基于Vivado HLS開發(fā)工具來對(duì)軟件程序進(jìn)行硬件加速的解決方案。借助于Xilinx的Vivado HLS 開發(fā)工具設(shè)計(jì)了求取特征點(diǎn)圖像坐標(biāo)的硬件加速單元,并在Zynq SOC上完成整個(gè)系統(tǒng)的設(shè)計(jì)。通過對(duì)比不同系統(tǒng)下軟硬件實(shí)現(xiàn)的執(zhí)行時(shí)間,可以看出硬件加速方案顯著提高了系統(tǒng)的計(jì)算性能,而通過采用軟硬協(xié)同設(shè)計(jì)的方法大大降低了系統(tǒng)硬件的開發(fā)時(shí)間。該方案對(duì)計(jì)算密集型軟件算法的優(yōu)化具有一定參考價(jià)值。

      [1]張展,崔晉偉,陸炯.基于Xilinx Vivado HLS的小型無人機(jī)平衡儀設(shè)計(jì)[J].電子科技,2015,28(7):151-154.

      [2]周體民,佐風(fēng)玲,吳宜軒,等. 基于Zedboard的便攜式頻譜儀的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2017,30(7):139-145.

      [3]彭習(xí)武,張濤. 基于Vivado HLS的邊緣檢測(cè)硬件加速應(yīng)用[J].電子應(yīng)用技術(shù),2017,43(5):70-73.

      [4]丁帥帥,柴志雷.基于HLS的SURF特征提取硬件加速單元設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2015,32(9):133-143.

      [5]郭豐收.Xilinx FPGA/Zynq設(shè)計(jì)中使用HLS實(shí)現(xiàn)OpenCV的開發(fā)流程[J].電子產(chǎn)品世界,2014(2-3):50-52.

      [6]李振宇.基于PL-PS架構(gòu)的圖像處理系統(tǒng)的實(shí)現(xiàn)與算法應(yīng)用[D].濟(jì)南:山東大學(xué),2016.

      [7]何賓.Xilinx FPGA設(shè)計(jì)權(quán)威指南[M].北京:清華大學(xué)出版社,2014.

      [8]黨宏社,王黎,王曉倩.基于Vivado HLS的FPGA開發(fā)與應(yīng)用研究[J].陜西科技大學(xué)學(xué)報(bào),2015,33(1):155-159.

      [9]張俊濤,王園偉,龐多.一種硬件加速OpenCV的圖像處理方法研究[J].微型機(jī)與應(yīng)用,2015,34(22):41-43.

      [10] 張艷輝,郭洺宇,何賓. Vivado HLS嵌入式實(shí)時(shí)圖像處理系統(tǒng)的構(gòu)建與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2015,34(22):115-121.

      [11] 焦再?gòu)?qiáng).基于Zynq-7000的嵌入式數(shù)字圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].太原:太原理工大學(xué),2015.

      [12] 陸佳華,江舟.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.

      [13] 陸啟帥,陸彥婷,王地.Xilinx Zynq SoC與Linux嵌入式設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:清華大學(xué)出版社,2014.

      [14] 郭暉,陳光.基于OpenCV的視頻圖像處理應(yīng)用研究[J].微機(jī)型與應(yīng)用,2010,29(21):14-20.

      [15] 姬生毅.基于Zynq的嵌入式數(shù)字圖像傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2014.

      [16] 楊曉安,羅杰,蘇豪,等.基于Zynq-7000高速圖像采集與實(shí)時(shí)處理系統(tǒng)[J].電子科技,2014,27(7):151-154.

      猜你喜歡
      嵌入式軟件特征
      禪宗軟件
      英語文摘(2021年10期)2021-11-22 08:02:26
      如何表達(dá)“特征”
      不忠誠(chéng)的四個(gè)特征
      軟件對(duì)對(duì)碰
      搭建基于Qt的嵌入式開發(fā)平臺(tái)
      抓住特征巧觀察
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      談軟件的破解與保護(hù)
      精品(2015年9期)2015-01-23 01:36:01
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      灵寿县| 延庆县| 榆树市| 锦州市| 廉江市| 闽侯县| 洪泽县| 甘孜| 大洼县| 石台县| 永康市| 左权县| 枣庄市| 古交市| 安阳市| 会昌县| 织金县| 东兰县| 老河口市| 福安市| 高邑县| 宁津县| 扬中市| 宁德市| 上虞市| 泰顺县| 余姚市| 佳木斯市| 集安市| 乡城县| 新沂市| 绵阳市| 平原县| 城步| 会同县| 前郭尔| 改则县| 罗甸县| 桃源县| 苗栗县| 新邵县|