《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Vivado HLS的邊緣檢測硬件加速應用
基于Vivado HLS的邊緣檢測硬件加速應用
2017年電子技術應用第5期
彭習武,,張 濤
武漢科技大學 信息科學與工程學院,,湖北 武漢430081
摘要: 針對計算機處理高清圖像或視頻的邊緣檢測時存在延時長和數(shù)據(jù)存儲帶寬受限的缺點,,提出了用Vivado HLS將邊緣檢測軟件代碼轉(zhuǎn)換成RTL級硬件電路的硬件加速方法。硬件加速是將運算量大的功能模塊由硬件電路實現(xiàn),,根據(jù)硬件電路工作頻率高和數(shù)據(jù)位寬自定義,,可以解決延時長和數(shù)據(jù)寬度受限的缺點。實驗結果表明,,邊緣檢測硬件加速方法不僅使延時和數(shù)據(jù)帶寬都得到了改善,,而且也縮短了邊緣檢測的開發(fā)周期。
中圖分類號: TN919.82
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.05.017
中文引用格式: 彭習武,,張濤. 基于Vivado HLS的邊緣檢測硬件加速應用[J].電子技術應用,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 引言

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

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

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

1 邊緣檢測算法設計

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

qrs4-t1.gif

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

    邊緣檢測的軟硬件協(xié)同設計主要包括軟件應用設計,、硬件加速設計和SoC應用設計。

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

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

qrs4-t2.gif

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

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

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

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

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

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

3.1 SoC系統(tǒng)設計

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

qrs4-t3.gif

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

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

3.2 HLS模塊優(yōu)化

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

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

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

qrs4-b1.gif

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

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

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

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

qrs4-b2.gif

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

4 結果分析

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

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

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

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

5 結論

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

參考文獻

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

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

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

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

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

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

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

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



作者信息:

彭習武,,張  濤

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

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