文獻標識碼: 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.
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所示,。在圖像輸入后,,首先中值濾波器對輸入圖像進行平滑圖像噪聲處理,然后由膨脹濾波器求出圖像的局部最大值,,再由邊緣檢測模塊來提取圖像的邊緣信息,,最后由腐蝕濾波器消除圖像中的“斑點”噪聲,從而得到最佳的圖像邊緣,。
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是邊緣檢測硬件加速流程圖,。
如圖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所示,。
在圖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,。
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)策略所需要的硬件資源,。
在資源使用方面,,并行比串行實現(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)為硬件加速邊緣檢測結果。
對圖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)