《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Vivado HLS的Canny算法實時加速設計
基于Vivado HLS的Canny算法實時加速設計
2018年電子技術應用第9期
譚檢成1,2,吳定祥2,3,李明鑫1,2,唐立軍1,2
1.長沙理工大學 物理與電子科學學院,湖南 長沙410114; 2.近地空間電磁環境監測與建模湖南省普通高校重點實驗室,湖南 長沙 410114; 3.長沙億旭智能科技有限公司,湖南 長沙410004
摘要: 針對Canny邊緣檢測算法在實時圖像處理過程中運算耗時長、數據運算量大的缺點,研究了利用Vivado HLS實現Canny邊緣檢測算法的硬件加速方法。該方法由FPGA的邏輯資源生成算法對應的RTL級硬件電路,實現算法硬件加速。實驗結果表明,該方法能快速實時檢測圖像邊緣,有效降低FPGA設計圖像算法的難度,可以應用到實時視頻圖像處理中。
中圖分類號: TN911.73
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180429
中文引用格式: 譚檢成,吳定祥,李明鑫,等. 基于Vivado HLS的Canny算法實時加速設計[J].電子技術應用,2018,44(9):59-62,66.
英文引用格式: Tan Jiancheng,Wu Dingxiang,Li Mingxin,et al. Real-time acceleration design of Canny algorithm based on Vivado HLS[J]. Application of Electronic Technique,2018,44(9):59-62,66.
Real-time acceleration design of Canny algorithm based on Vivado HLS
Tan Jiancheng1,2,Wu Dingxiang2,3,Li Mingxin1,2,Tang Lijun1,2
1.School of Physics and Electronic Sciences,Changsha University of Science & Technology,Changsha 410114,China; 2.Hunan Province Higher Education Key Laboratory of Modeling and Monitoring on the Near-Earth Electromagnetic Environments, Changsha 410114,China; 3.Changsha Billion Set Intelligent Technology Co.,Ltd.,Changsha 410004,China
Abstract: On the shortcomings of Canny edge detection algorithm in the real-time image processing time-consuming and large amount of data for computation, the hardware acceleration method of Canny edge detection algorithm using Vivado HLS is proposed. The method, implemented hardware acceleration, generates the RTL level hardware circuit corresponding to the algorithm of the FPGA logic resources. The results show that the method can quickly detect the edge of the image and effectively reduce the difficulty of FPGA design image algorithm, which can be applied to the real-time video image processing.
Key words : image processing;Vivado HLS;edge detection; hardware acceleration

0 引言

    邊緣檢測是圖像特征提取、目標識別的基礎,圖像邊緣提取的好壞直接影響后續處理的難易度和準確度。在眾多邊緣提取算法中,Canny邊緣提取算法由于其良好的檢測效果在圖像處理中得到廣泛應用。而現階段的工業視覺檢測中,圖像處理多為PC平臺或者ARM平臺,在這些平臺下,Canny邊緣檢測由于計算量大、耗時長,對平臺本身性能要求也很高。FPGA憑借高速并行性的特性,在進行圖像處理時能很好地保證系統的實時性,因此越來越多開發人員使用FPGA進行圖像處理[1-3]。但在現有的文獻中,有些受FPGA的歷史功能設計局限,過多地關注FPGA底層設計,有些采用中值濾波、改進高斯濾波模板進行Canny邊緣檢測,設計周期較長,硬件加速效果不明顯。武漢科技大學彭習武等采用了Xilinx公司的Vivado HLS(高層次綜合)實現改進的Sobel邊緣檢測[4],取得了較好的實時檢測效果,但需選擇不同的結構元素對不同的目標圖像進行膨脹腐蝕,算法占用硬件資源較多。本文采用Vivado HLS實現Canny邊緣檢測硬件加速實現方法,研究通用性好、設計周期短、硬件資源消耗少的FPGA加速算法。

1 Canny算法基本原理

    Canny邊緣檢測[5]算法是CANNY J于1986年提出的,算法目標是在圖像中找到最佳邊緣。其主要步驟為:

    (1)圖像高斯濾波:對原始圖像進行高斯濾波,降低輸入圖像中的噪聲對后續圖像處理的干擾,有效提升算法抗噪能力。

    (2)梯度計算:選擇Sobel的水平與垂直方向3×3窗口模板算子與圖像陣列進行計算,原始圖像為I(i,j),得到水平與垂直方向的偏導數,水平、垂直方向梯度偏導數分別為Gx和Gy

     qrs1-gs1-4.gif

    (3)非極大值抑制:遍歷圖像,若像素點的幅值大于其梯度方向的幅值,則可能為邊緣點;否則不是邊緣,對其進行抑制。

    (4)雙閾值處理:通過設定閾值Th、Tl(一般情況下Tl=0.4Th),抑制后的圖像像素梯度值大于Th的是邊緣點,小于Tl的一定不是邊緣點,如果處于兩者之間,判斷當前像素的鄰域像素中是否有邊緣點,若有,則為邊緣點,否則就不是邊緣。

2 Vivado HLS實現方式

    Vivado HLS是Xilinx公司推出的加速數字系統設計開發工具,直接使用C、C++或SystemC開發的高層描述來綜合數字硬件,替代用VHDL或Verilog實現FPGA硬件設計[6],實現設計的功能和硬件分離,不需要關心低層次具體細節,具有很強的靈活性,有效降低數字系統設計開發周期。Vivado HLS在算法優化指標和FPGA硬件設計方式指標是一致的:(1)面積,算法硬件資源使用的數量;(2)速度,硬件電路處理數據的速率。一般的設計是對兩者之間的特殊需求進行優化,得到合理的方案。

2.1 Vivado HLS設計流程

    Vivado HLS設計流程如圖1所示。C代碼設計和C測試集設計是HLS設計流程的輸入;C功能性驗證能確保代碼功能的完整性;高層綜合能產生所需的各個設計文件;C/RTL協同仿真可以進行預期值與輸出的對比;設計迭代是通過不斷地調整指令得到預期需要的優化設計,在不改變C代碼的情況下,由優化指令轉化成小面積高吞吐率的RTL電路[7];最后RTL電路被綜合成FPGA邏輯模塊。 

qrs1-t1.gif

2.2 Vivado HLS圖像實時加速

    Vivado HLS圖像實時加速設計的方式如圖2所示。

qrs1-t2.gif

    視頻流進入FPGA后,由AXI4-Stream協議將數據流轉換為HLS視頻庫下的hls::Mat格式,在進行對應的圖像FPGA加速處理后,將hls::Mat格式重新轉換為AXI4-Stream數據流。

    Vivado HLS提供了以下幾個方面功能對圖像視頻處理建模[8]:(1)內存行緩存(Memory Line Buffer);(2)內存窗口緩存(Memory Window Buffer);(3)視頻數據支持格式類型;(4)視頻函數庫。HLS內存行緩存實質是能存儲多行像素數據的多維移位寄存器[9],而窗口緩存是行緩存的一個子集,這兩種存儲結構一般被綜合為Block RAM,并且行緩存的寬度決定了圖像算法能進行硬件加速的最大圖像寬度。Vivado HLS對一幀圖像像素的遍歷是通過創建上述兩種緩存實現的,圖3是遍歷圖像像素的計算內核路徑。Vivado HLS下圖像處理基于視頻流訪問,因此,基于隨機存儲訪問的圖像處理方式需要進行轉換,綜合為FPGA處理下的圖像數據流處理方式,實現圖像算法的硬件加速。

qrs1-t3.gif

3 Vivado HLS實現Canny邊緣檢測

    根據Vivado HLS設計流程,Canny邊緣檢測的硬件加速實現流程如圖4所示。

qrs1-t4.gif

3.1 圖像數據流輸入

    圖像數據通過AXI4-Stream輸入到Canny邊緣檢測IP,由AXIvideo2Mat將數據流轉換為hls::Mat類型,完成Canny邊緣檢測IP的硬件加速設計。

3.2 圖像計算內核創建

    創建類型為hls::Window、大小為1×3和3×3的窗口緩存,以及類型為hls::LineBuffer、大小為3×1 920的行緩存。將圖像像素寫入第一行行緩存,每寫入一次新的圖像數據,讀出對應行緩存的數據到1×3的窗口緩存,同時3×3的窗口緩存右移,把1×3的窗口緩存數據寫入3×3的窗口緩存的第一列,每一行行緩存寫滿時,當前行緩存數據移位寫入下一行。通過上述方式,由3×3窗口緩存構成的計算內核完成圖像的遍歷。

3.3 圖像濾波

    考慮到濾波器窗口太大圖像邊緣會被過度平滑,選擇高斯濾波器為3×3的濾波窗口,σ值為1.5,由于模版系數歸一化后均為小數,對于FPGA而言,需要增加硬件資源消耗實現浮點類型,因此,將模板系數全部乘以256后取整,對于實際處理而言,這種近似值產生的誤差不會對濾波效果產生很大影響,實際模板系數為:

     qrs1-t4-x1.gif

    將濾波模板GuassBlur與計算內核進行卷積,卷積后的結果右移8位(除以256),移位操作不會消耗FPGA的DSP資源,節約了FPGA資源,由上述的移位運算后,完成圖像數據的高斯濾波。

3.4 梯度計算

    創建3×3濾波后的圖像計算內核窗口,將計算內核分別與Sobel的水平與垂直方向3×3窗口算子卷積,求得水平、垂直方向梯度偏導數Gx和Gy大小,由于硬件實現平方根需要的資源較多,故通過Gx和Gy的絕對值之和求梯度G的幅值。對于梯度的方向θ=arctan(Gy/Gx),硬件實現較為困難,需要消耗很多硬件資源,一般是比較像素領域窗口,對于3×3窗口而言,求其領域8個方向,由于對稱性,只需要求得4個方向,0°、45°、90°和135°,即把梯度Gy的值與Gxtan22.5°和Gxtan67.5°比較,同時判斷GyGx乘積的正負性,可求得梯度的方向θ值的大小。為節約硬件資源可以采取對Gy左移4位,Gxtan22.5°左移4位,取值約為6.625Gx,Gxtan67.5°左移4位,約為38.625Gx,即:

     qrs1-gs5-6.gif

    通過簡單移位判斷大小和正負性,得到梯度方向θ的近似值。

3.5 非極大值抑制和雙閾值處理

    定義位寬為2位的寄存器,4個方向對應寄存器值0,1,2,3,將該寄存器與存儲梯度值G寄存器組合輸出到新創建的圖像行緩存,并創建新的3×3計算內核,通過計算內核窗口判斷圖像數據的方向,進行極大值抑制。計算內核中心點與對應梯度方向的像素點、高閾值Th、低閾值Tl進行比較,若計算內核中心點最大則為圖像強邊緣點;若計算內核中心點大于梯度方向,處于Tl和Th之間,為弱邊緣點;其他情況均不是圖像的邊緣點。

    創建新的行緩存寫入上述圖像邊緣數據,由新的3×3計算內核做進一步處理:若計算內核中心點是強邊緣點輸出255;若計算內核是弱邊緣點,判斷其八鄰域是否存在強邊緣點,不存在強邊緣點則輸出0,存在則輸出255,同時把中心點值改變為強邊緣點值;其他情況直接輸出0。

3.6 圖像數據流輸出

    處理后的數據通過AXIvideo2Mat將hls::Mat格式重新轉為AXI4-Stream數據流,圖像數據通過上述的處理完成Canny邊緣檢測的硬件加速。

3.7 指令優化迭代

    采用Vivado HLS提供的模塊優化指令如inline、pipeline、dataflow以及對循環展開的unroll等,完成算法硬件加速的優化,達到硬件資源消耗和算法處理速度之間的平衡。一般的優化為串行方式和并行方式兩種,串行優化方式使用硬件資源少,并行優化方式處理速率高[4]。為獲得良好的硬件加速效果,選擇并行優化方式,具體措施為:(1)對模塊內部循環展開;(2)循環、模塊內部流水化處理;(3)模塊之間流水化處理。為驗證本方案的資源占用情況,選取文獻[4]進行對比分析,在保證運算速度基本相同的情況下,選取并行方案對硬件資源使用情況列于表1。從表1可以看出,本文邊緣檢測算法的硬件資源使用少。

qrs1-b1.gif

4 邊緣檢測效果與速度驗證

    以Zedboard開發板為算法驗證平臺,開發板FPGA芯片型號為xc7z020484-1,圖像由開發板PS端輸入到FPGA算法IP中,通過HDMI將原始圖像和處理后圖像輸出到顯示屏。

    圖5(a)為512×512測試圖像;圖5(b)為PC進行的Canny邊緣檢測圖像;圖5(c)為FPGA驗證的圖像;PC的主頻為2.3 GHz,對應的圖5(b)處理時間約為10 ms左右;FPGA的時鐘頻率為100 MHz,圖5(c)處理時間約為3 ms。

qrs1-t5.gif

    由圖5(c)和圖5(b)處理時間的對比可知,圖5(c)算法處理時間不到圖5(b)的1/3,說明加速效果明顯。從文獻[1]中可知,在相同系統時鐘下處理512×512的圖像,時間約為20 ms,遠小于圖5(c)的處理速度。因此,Vivado HLS實現的Canny邊緣檢測算法能在較復雜的情況下檢測到圖像邊緣,且運算速度快。

5 結論

    由Vivado HLS進行FPGA圖像算法硬件加速設計方式,既避免了傳統FPGA圖像算法開發中過于關注底層細節,又能有效地縮短開發周期。通過仿真與FPGA驗證,采用Vivado HLS實現的Canny邊緣檢測算法能在較復雜的情況下檢測到圖像邊緣,運算速度快,資源消耗少,可以應用到實時視覺檢測中。

參考文獻

[1] 肖國堯,曲仕茹.基于FPGA視頻圖像的Canny算法加速器設計[J].現代電子技術,2012(9):91-94.

[2] 張素文,陳志星,蘇義鑫.Canny邊緣檢測算法的改進及FPGA實現[J].紅外技術,2010,32(2):93-96.

[3] 韋海萍,趙保軍,唐林波,等.Canny算法的改進及其硬件的實現[J].光學技術,2006(2):263-266.

[4] 彭習武,張濤.基于Vivado HLS的邊緣檢測硬件加速應用[J].電子技術應用,2017,43(5):70-73.

[5] CANNY J.A computational approach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986(6):679-698.

[6] CROCKETT L H,ELLIOT R A,ENDERWITZ M A,et al.The Zynq book:embedded processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 all programmable SoC[M].Strathclyde Academic Media,2016.

[7] Xilinx,Inc/Vivado design suite tutorial: high-level synthe-sis[Z].UG871,2015.

[8] Xilinx,Inc.Vivado design suite user guide: high-level synthesis[Z].UG902,2015.

[9] Xilinx,Inc.Implementing memory structures for video processing in the Vivado HLS tool[Z].XAPP793,2012.



作者信息:

譚檢成1,2,吳定祥2,3,李明鑫1,2,唐立軍1,2

(1.長沙理工大學 物理與電子科學學院,湖南 長沙410114;

2.近地空間電磁環境監測與建模湖南省普通高校重點實驗室,湖南 長沙 410114;

3.長沙億旭智能科技有限公司,湖南 長沙410004)

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲视频电影图片偷拍一区| 亚洲精品无人区| 1024欧美极品| 国产伪娘ts一区| 国产精品xvideos88| 欧美精品一线| 蜜桃久久av| 久久午夜精品一区二区| 欧美伊人影院| 欧美一区免费视频| 午夜老司机精品| 先锋影音久久| 欧美一区二区三区四区视频| 午夜国产精品视频| 亚洲欧美在线播放| 亚洲欧美日韩国产另类专区| 亚洲欧美网站| 欧美一区二区黄| 久久精品成人一区二区三区 | 香蕉久久国产| 亚洲欧美综合国产精品一区| 香港久久久电影| 久久精品人人爽| 久久一区二区三区av| 久久综合伊人77777| 牛夜精品久久久久久久99黑人| 欧美xart系列在线观看| 欧美激情黄色片| 欧美日韩国产精品一区二区亚洲| 欧美日韩国产综合网| 国产精品s色| 国产欧美一区二区精品性色| 国产日韩欧美自拍| 一区二区视频在线观看| 91久久在线| 中国成人黄色视屏| 性18欧美另类| 亚洲国产清纯| 日韩一级片网址| 亚洲在线不卡| 免费在线看成人av| 午夜欧美理论片| 久久天天躁夜夜躁狠狠躁2022 | 亚洲精品资源| 亚洲综合国产| 久久亚洲综合网| 欧美精品一区二区三区视频| 欧美亚韩一区| 韩日在线一区| 亚洲免费大片| 亚洲欧美视频在线| 亚洲区国产区| 午夜影院日韩| 欧美高清在线精品一区| 国产精品乱人伦一区二区 | 亚洲一区二区网站| 久久久久久久久一区二区| 欧美韩日视频| 国产精品一区毛片| 亚洲国产导航| 亚洲午夜在线视频| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产精品99久久久久久久久久久久| 亚洲欧美视频在线观看| 亚洲美女精品久久| 欧美在线1区| 欧美久久99| 国产日韩精品一区| 亚洲三级电影全部在线观看高清| 亚洲自拍偷拍视频| 亚洲精品乱码视频| 欧美中文字幕在线播放| 欧美激情按摩| 国产亚洲一区二区三区在线观看| 亚洲三级免费电影| 性高湖久久久久久久久| 亚洲视频网在线直播| 狂野欧美激情性xxxx欧美| 国产精品欧美风情| 亚洲精品永久免费| 亚洲电影中文字幕| 欧美一区二区三区在线免费观看 | 黑人极品videos精品欧美裸| 亚洲图片你懂的| 亚洲精品视频中文字幕| 久久久久久久尹人综合网亚洲| 国产精品v亚洲精品v日韩精品 | 久久激情久久| 国产精品久久久久久超碰| 亚洲国产欧美一区二区三区同亚洲 | 欧美主播一区二区三区| 亚洲在线观看视频网站| 欧美丰满少妇xxxbbb| 一区二区三区欧美在线观看| 亚洲精品视频在线观看免费| 久久精品国产清自在天天线| 新狼窝色av性久久久久久| 欧美区二区三区| 亚洲成人在线观看视频| 久久aⅴ国产欧美74aaa| 久久riav二区三区| 国产精品普通话对白| 亚洲精品乱码久久久久久蜜桃91| 亚洲二区在线视频| 久久久99精品免费观看不卡| 国产精品一区二区在线| 亚洲视频在线观看三级| 亚洲深夜福利视频| 欧美精品在线看| 亚洲人成在线观看一区二区| 亚洲精品欧美激情| 欧美.www| 在线欧美小视频| 亚洲第一精品电影| 久久久av毛片精品| 国产又爽又黄的激情精品视频| 亚洲欧美清纯在线制服| 午夜在线一区二区| 国产精品永久免费| 午夜在线观看欧美| 久久爱另类一区二区小说| 国产精品资源在线观看| 欧美一级二区| 久久久久久网址| 狠狠久久五月精品中文字幕| 欧美中文字幕| 美女视频一区免费观看| 在线观看日韩精品| 亚洲欧洲另类国产综合| 欧美大片国产精品| 亚洲精品乱码久久久久久黑人| 99精品久久| 欧美午夜不卡在线观看免费 | 国产精品免费在线| 亚洲一二三区在线| 午夜久久影院| 国产一区在线观看视频| 亚洲国产另类久久精品| 欧美国产精品一区| 日韩视频中文字幕| 亚洲欧美日韩爽爽影院| 国产精品资源| 亚洲电影免费在线观看| 欧美肥婆在线| 一本色道**综合亚洲精品蜜桃冫| 夜夜嗨av一区二区三区免费区| 欧美日韩中国免费专区在线看| 亚洲四色影视在线观看| 久久精品国产一区二区电影| 伊人狠狠色丁香综合尤物| 亚洲精品久久久久久久久久久久 | 亚洲四色影视在线观看| 国产女精品视频网站免费| 久久国产乱子精品免费女| 欧美精品v日韩精品v韩国精品v | 亚洲精品欧美日韩专区| 欧美午夜片在线观看| 午夜精品久久久久| 另类酷文…触手系列精品集v1小说| 亚洲激情另类| 午夜精品久久久久久久99黑人| 国产有码在线一区二区视频| 9色国产精品| 国产欧美日韩在线| 亚洲精品久久久久久久久久久 | 国产精品一卡二| 久久国产精品电影| 欧美女同视频| 午夜精品免费视频| 欧美电影在线免费观看网站| 亚洲直播在线一区| 女主播福利一区| 亚洲午夜精品久久久久久浪潮| 葵司免费一区二区三区四区五区| 一区二区国产在线观看| 久久久一本精品99久久精品66| 日韩一级免费| 久久综合九九| 在线一区二区三区四区| 美女尤物久久精品| 亚洲欧美国产日韩中文字幕| 欧美成人午夜剧场免费观看| 亚洲尤物视频网| 欧美—级高清免费播放| 性视频1819p久久| 欧美日韩三级| 亚洲国产精品成人综合| 国产精品va在线播放| 亚洲精品国产精品国自产在线| 国产精品视频大全| 9人人澡人人爽人人精品| 狠狠色伊人亚洲综合成人| 亚洲在线电影| 亚洲精品国产精品国自产观看浪潮 | 一区二区三区在线视频播放| 亚洲欧美国产精品va在线观看| 亚洲国产经典视频| 欧美自拍偷拍午夜视频| 中日韩午夜理伦电影免费| 欧美国产91|