《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于Vivado HLS的邊緣檢測硬件加速應(yīng)用
基于Vivado HLS的邊緣檢測硬件加速應(yīng)用
2017年電子技術(shù)應(yīng)用第5期
彭習(xí)武,張 濤
武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢430081
摘要: 針對(duì)計(jì)算機(jī)處理高清圖像或視頻的邊緣檢測時(shí)存在延時(shí)長和數(shù)據(jù)存儲(chǔ)帶寬受限的缺點(diǎn),提出了用Vivado HLS將邊緣檢測軟件代碼轉(zhuǎn)換成RTL級(jí)硬件電路的硬件加速方法。硬件加速是將運(yùn)算量大的功能模塊由硬件電路實(shí)現(xiàn),根據(jù)硬件電路工作頻率高和數(shù)據(jù)位寬自定義,可以解決延時(shí)長和數(shù)據(jù)寬度受限的缺點(diǎn)。實(shí)驗(yàn)結(jié)果表明,邊緣檢測硬件加速方法不僅使延時(shí)和數(shù)據(jù)帶寬都得到了改善,而且也縮短了邊緣檢測的開發(fā)周期。
中圖分類號(hào): TN919.82
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.05.017
中文引用格式: 彭習(xí)武,張濤. 基于Vivado HLS的邊緣檢測硬件加速應(yīng)用[J].電子技術(shù)應(yīng)用,2017,43(5):70-73.
英文引用格式: Peng Xiwu,Zhang Tao. Edge detection hardware acceleration based on Vivado HLS[J].Application of Electronic Technique,2017,43(5):70-73.
Edge detection hardware acceleration based on Vivado HLS
Peng Xiwu,Zhang Tao
Institute of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan 430081,China
Abstract: For the issues of large delay and data storage limited by the bandwidth in the handling of high-definition images and video edge detection by computer,an optimized hardware acceleration design scheme using Vivado HLS transform edge detection software code into the RTL hardware circuit is proposed. Hardware acceleration is the computation of function module by the hardware circuit implementation,which is to solve the delay and data bandwidth constrained defect based on the hardware circuit with high working frequency and the custom data width. The results prove that the edge detection hardware acceleration method not only improved in both time delay and data bandwidth, but also shorten the development cycle of the edge detection.
Key words : HLS;edge detection module;hardware acceleration;SoC

0 引言

    在計(jì)算機(jī)視覺和圖像處理領(lǐng)域中,圖像邊緣檢測技術(shù)起著重要的作用,其效果好壞直接影響整個(gè)系統(tǒng)的性能。由于圖像的邊緣蘊(yùn)含了豐富的內(nèi)在信息,是進(jìn)行圖像分割、特征值提取的重要依據(jù)。邊緣檢測不僅能減少處理數(shù)據(jù),又能保留圖像中物體的形狀信息,是實(shí)時(shí)圖像處理中的重要內(nèi)容之一[1]。

    在現(xiàn)階段,主要采用軟件方式或者FPGA硬件方式來實(shí)現(xiàn)邊緣檢測。文獻(xiàn)[2]-[4]采用軟件方法實(shí)現(xiàn)圖像的邊緣檢測,雖然邊緣檢測的效果得到了改善,但是不能在延時(shí)和數(shù)據(jù)帶寬方面做出改善。文獻(xiàn)[5]-[7]采用FPGA方法實(shí)現(xiàn)圖像的邊緣檢測,此硬件方法雖然改善了邊緣檢測的延時(shí)長和數(shù)據(jù)帶寬受限的不足,但是由于FPGA硬件設(shè)計(jì)的復(fù)雜性會(huì)導(dǎo)致整個(gè)電路開發(fā)周期變長。

    本文采用Xilinx公司的Vivado HLS將邊緣檢測的軟件代碼轉(zhuǎn)化為RTL硬件電路。這樣不僅解決了軟件方法所帶給系統(tǒng)延時(shí)長和數(shù)據(jù)帶寬窄的缺點(diǎn),而且避免了FPGA硬件電路設(shè)計(jì)周期長的不足。

1 邊緣檢測算法設(shè)計(jì)

    基于Sobel算子的邊緣檢測具有算法簡單、實(shí)現(xiàn)方便等優(yōu)勢(shì),但在處理圖像時(shí)會(huì)存在對(duì)噪聲敏感和邊緣界限模糊等不足,所以需要在Sobel算法的基礎(chǔ)上進(jìn)行優(yōu)化。優(yōu)化后的邊緣檢測由中值濾波、膨脹濾波、邊緣檢測模塊和腐蝕濾波模塊構(gòu)成,如圖1所示。在圖像輸入后,首先中值濾波器對(duì)輸入圖像進(jìn)行平滑圖像噪聲處理,然后由膨脹濾波器求出圖像的局部最大值,再由邊緣檢測模塊來提取圖像的邊緣信息,最后由腐蝕濾波器消除圖像中的“斑點(diǎn)”噪聲,從而得到最佳的圖像邊緣。

qrs4-t1.gif

2 邊緣檢測軟硬件協(xié)同設(shè)計(jì)

    邊緣檢測的軟硬件協(xié)同設(shè)計(jì)主要包括軟件應(yīng)用設(shè)計(jì)、硬件加速設(shè)計(jì)和SoC應(yīng)用設(shè)計(jì)。

2.1 軟硬件協(xié)作開發(fā)流程

    軟件應(yīng)用設(shè)計(jì)是將邊緣檢測的功能用OpenCV函數(shù)或者自定義功能函數(shù)實(shí)現(xiàn);硬件加速設(shè)計(jì)將軟件代碼轉(zhuǎn)換為RTL電路,其中不可綜合的函數(shù)或者語句需用Vivado HLS支持的函數(shù)替換;SoC應(yīng)用設(shè)計(jì)將Vivado HLS輸出的RTL電路應(yīng)用到實(shí)際的SoC系統(tǒng)[8]。圖2是邊緣檢測硬件加速流程圖。

qrs4-t2.gif

    如圖2所示,首先完成軟件應(yīng)用的開發(fā),然后將Vivado HLS不能綜合的OpenCV函數(shù)鏈替換成HLS視頻庫函數(shù)鏈,最后封裝成IP在FPGA中調(diào)用。

2.2 邊緣檢測軟硬件協(xié)作實(shí)現(xiàn)

    在軟件實(shí)現(xiàn)階段使用OpenCV函數(shù)庫或者自定義的C語言函數(shù)實(shí)現(xiàn)邊緣檢測算法,但Vivado HLS不能綜合所有的軟件代碼。當(dāng)軟件代碼中存在Vivado HLS不能綜合的函數(shù)時(shí)就需要將這些函數(shù)展開或者替換,如定點(diǎn)運(yùn)算、片上的行緩存和窗口緩存來完成動(dòng)態(tài)的內(nèi)存分配、浮點(diǎn)和圖像在外部存儲(chǔ)器中存放和修改的操作。

    硬件加速方案是在軟件應(yīng)用的基礎(chǔ)上實(shí)現(xiàn)的。在搭建SoC時(shí),使用的是芯片內(nèi)部的AXI互聯(lián)總線,其所支持的數(shù)據(jù)類型是AXI4 video stream。在設(shè)計(jì)邊緣檢測IP接口時(shí)需要將AXI4 video stream與Vivado HLS所支持的hls::Mat類型進(jìn)行相互轉(zhuǎn)換。數(shù)據(jù)的轉(zhuǎn)換模塊見圖2中AXIvideo2Mat和Mat2AXIvideo模塊。Vivado HLS將OpenCV函數(shù)鏈轉(zhuǎn)換成HLS視頻庫函數(shù)鏈。硬件加速階段包括邊緣檢測的仿真與優(yōu)化,只有在優(yōu)化和仿真通過之后才將RTL級(jí)電路封裝成IP核輸出。

3 系統(tǒng)搭建與IP核優(yōu)化

    邊緣檢測的軟硬件協(xié)作應(yīng)用具有一定的局限性,只能在具備處理器和可編程邏輯陣列的SoC中應(yīng)用。本文是在Xilinx公司的zc7z020clg484-1系列芯片中進(jìn)行邊緣檢測的系統(tǒng)搭建與功能驗(yàn)證。

3.1 SoC系統(tǒng)設(shè)計(jì)

    Vivado HLS將邊緣檢測IP輸出到Vivado的IP catalog,在SoC系統(tǒng)設(shè)計(jì)時(shí)調(diào)用邊緣檢測IP核即可。搭建的邊緣檢測SoC系統(tǒng)如圖3所示。

qrs4-t3.gif

    在圖3中,粗箭頭表示圖像數(shù)據(jù)流的路徑,細(xì)箭頭表示控制信號(hào)的方向。圖3所示的陰影部分為可裁剪系統(tǒng)(PS),白色區(qū)域?yàn)榭删幊踢壿?PL)。由于Vivado HLS不支持指針訪問幀緩存,需要用AXI VDMA來訪問幀數(shù)據(jù)。

    視頻流經(jīng)過HDMI輸入到視頻輸入控制器,數(shù)據(jù)流通過AXI互聯(lián)總線存入到DDR3存儲(chǔ)器中,Cortex-A9通過AXI互聯(lián)總線控制AXI VDMA和邊緣檢測IP去存取圖像數(shù)據(jù),處理完的數(shù)據(jù)緩存到DDR3,最后 Cortex-A9將處理好的數(shù)據(jù)輸出到視頻顯示控制器。硬件加速是將Cortex-A9處理的運(yùn)算轉(zhuǎn)移到PL去完成,這樣會(huì)減少處理器的負(fù)載。

3.2 HLS模塊優(yōu)化

    Vivado HLS有兩種優(yōu)化方式,一種是在Directive控制欄設(shè)置優(yōu)化變量和參數(shù),另一種方法是在代碼中使用#pragma命令來定義變量實(shí)現(xiàn)類型和結(jié)構(gòu)。根據(jù)系統(tǒng)的需求對(duì)邊緣檢測進(jìn)行串行和并行實(shí)現(xiàn)策略。

3.2.1 串行實(shí)現(xiàn)方案

    串行實(shí)現(xiàn)是保持軟件代碼的順序執(zhí)行結(jié)構(gòu),邊緣檢測模塊按照順序串行執(zhí)行。當(dāng)硬件電路工作在100 MHz頻率時(shí),處理像素為(1 080×1 092)的圖像速率為0.7幀/s。通過表1可知Sobel子模塊消耗了1 142 ms,導(dǎo)致了整個(gè)邊緣檢測功能塊的速率降低。當(dāng)邊緣檢測IP的數(shù)據(jù)的寬度為16 bit、像素深度為8 bit時(shí),邊緣檢測的處理速率為825.5 KB/s。

qrs4-b1.gif

3.2.2 并行實(shí)現(xiàn)方案

    并行實(shí)現(xiàn)是將for循環(huán)打平、替換數(shù)組和增加流水線操作來實(shí)現(xiàn)并行執(zhí)行。與串行實(shí)現(xiàn)對(duì)比可知,在速率方面提高68.5倍左右,在100 MHz的頻率下,處理像素為(1 080×1 092)的圖像速率為48幀/s。當(dāng)邊緣檢測IP的數(shù)據(jù)的寬度為16 bit、像素深度為8 bit時(shí),邊緣檢測的處理速率為56 609.28 KB/s。

    通過以上兩種實(shí)現(xiàn)可知,并行比串行實(shí)現(xiàn)的處理速率速度提高了68.5倍左右,與處理時(shí)間相對(duì)應(yīng)的數(shù)據(jù)吞吐率也提高了68.5倍。當(dāng)數(shù)據(jù)帶寬不滿足要求時(shí),可以通過修改軟件代碼中變量的位寬來增加IP數(shù)據(jù)端口的寬度,從而提高數(shù)據(jù)吞吐量。

    硬件電路所使用的資源往往也是算法考慮的因素之一。表2是兩種實(shí)現(xiàn)策略所需要的硬件資源。

qrs4-b2.gif

    在資源使用方面,并行比串行實(shí)現(xiàn)所使用的資源多,占整個(gè)芯片的資源分別為BRAM_18K為10%,DSP48E為0,F(xiàn)F為3%,LUT為10%??芍Y源滿足設(shè)計(jì)要求。

4 結(jié)果分析

    通過三組公路真實(shí)場景來驗(yàn)證本文邊緣檢測的效果。第一組是在白天拍攝的公路場景,見圖4,圖4(a)為輸入的原始圖像,圖4(b)為OpenCV邊緣檢測的結(jié)果,圖4(c)為硬件加速邊緣檢測結(jié)果。第二組是在晚間拍攝的公路場景(曝光效果差),見圖5,圖5(a)為輸入的原始圖像,圖5(b)為OpenCV邊緣檢測的結(jié)果,圖5(c)為硬件加速邊緣檢測結(jié)果。第三組是在晚間拍攝的公路場景,見圖6,圖6(a)為輸入的原始圖像,圖6(b)為OpenCV邊緣檢測的結(jié)果,圖6(c)為硬件加速邊緣檢測結(jié)果。

qrs4-t4.gifqrs4-t5.gifqrs4-t6.gif

    對(duì)圖4、圖5和圖6從橫縱兩個(gè)角度來分析硬件加速邊緣檢測的效果。橫向分析,與OpenCV邊緣檢測結(jié)果比較可知,硬件加速方案輸出邊緣圖像線條更加的明顯,在圖5曝光效果差的情況下OpenCV存在邊緣漏檢測的情形,而硬件加速方案則不存在漏檢的情況;縱向分析,在白天拍攝的場景邊緣檢測的結(jié)果要比晚上輸出的效果好些,在晚上拍攝的場景曝光好的邊緣檢測效果要比曝光差輸出的效果好。

    對(duì)三組場景下的硬件加速邊緣檢測效果分析可知,硬件加速邊緣檢測明效果顯優(yōu)于OpenCV邊緣檢測,同時(shí)在相機(jī)曝光效果差或者外界環(huán)境復(fù)雜的情況下,硬件加速邊緣檢測都能進(jìn)行有效邊緣檢測。

5 結(jié)論

    針對(duì)傳統(tǒng)OpenCV圖像處理存在延時(shí)長和數(shù)據(jù)帶寬受限的缺點(diǎn),采用硬件加速可以彌此不足。采用Vivado HLS在軟件應(yīng)用的基礎(chǔ)上進(jìn)一步實(shí)現(xiàn)硬件電路設(shè)計(jì),大大縮短了系統(tǒng)的開發(fā)周期。本文不僅提出邊緣檢測的硬件加速方案,同時(shí)提出了在數(shù)據(jù)處理量大和處理速度快的應(yīng)用中可以通過軟硬件結(jié)合來提供系統(tǒng)設(shè)計(jì)的方案。

參考文獻(xiàn)

[1] 關(guān)新平,趙立興,唐英干.圖像去噪混合濾波方法[J].中國圖象圖形學(xué)報(bào),2005,10(3):332-337.

[2] 蔣婷,譚躍剛,劉泉.基于SOBEL算子的圖像清晰度評(píng)價(jià)函數(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2008(8):129-131,191.

[3] 靳鵬飛.一種改進(jìn)的Sobel圖像邊緣檢測算法[J].應(yīng)用光學(xué),2008(4):625-628.

[4] 白俊江,洪春勇.基于Sobel的邊緣檢測方法[J].電腦知識(shí)與技術(shù),2009(21):5847-5849.

[5] 李錦明,閆曉俊,江旭東,等.Sobel圖像邊沿檢測算法的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(3):71-73.

[6] 楊新華,寇為剛.基于FPGA的Sobel算子圖像邊緣檢測算法[J].儀表技術(shù)與傳感器,2013(1):102-104.

[7] 寧賽男,朱明,孫宏海,等.一種改進(jìn)的Sobel自適應(yīng)邊緣檢測的FPGA實(shí)現(xiàn)[J].液晶與顯示,2014(3):395-402.

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



作者信息:

彭習(xí)武,張  濤

(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢430081)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。