《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Vivado HLS的Canny算法實時加速設計
基于Vivado HLS的Canny算法實時加速設計
2018年電子技術應用第9期
譚檢成1,2,吳定祥2,3,李明鑫1,2,唐立軍1,2
1.長沙理工大學 物理與電子科學學院,湖南 長沙410114; 2.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點實驗室,湖南 長沙 410114; 3.長沙億旭智能科技有限公司,湖南 長沙410004
摘要: 針對Canny邊緣檢測算法在實時圖像處理過程中運算耗時長、數(shù)據(jù)運算量大的缺點,研究了利用Vivado HLS實現(xiàn)Canny邊緣檢測算法的硬件加速方法。該方法由FPGA的邏輯資源生成算法對應的RTL級硬件電路,實現(xiàn)算法硬件加速。實驗結果表明,該方法能快速實時檢測圖像邊緣,有效降低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 引言

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

1 Canny算法基本原理

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

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

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

     qrs1-gs1-4.gif

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

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

2 Vivado HLS實現(xiàn)方式

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

2.1 Vivado HLS設計流程

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

qrs1-t1.gif

2.2 Vivado HLS圖像實時加速

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

qrs1-t2.gif

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

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

qrs1-t3.gif

3 Vivado HLS實現(xiàn)Canny邊緣檢測

    根據(jù)Vivado HLS設計流程,Canny邊緣檢測的硬件加速實現(xiàn)流程如圖4所示。

qrs1-t4.gif

3.1 圖像數(shù)據(jù)流輸入

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

3.2 圖像計算內核創(chuàng)建

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

3.3 圖像濾波

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

     qrs1-t4-x1.gif

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

3.4 梯度計算

    創(chuàng)建3×3濾波后的圖像計算內核窗口,將計算內核分別與Sobel的水平與垂直方向3×3窗口算子卷積,求得水平、垂直方向梯度偏導數(shù)Gx和Gy大小,由于硬件實現(xiàn)平方根需要的資源較多,故通過Gx和Gy的絕對值之和求梯度G的幅值。對于梯度的方向θ=arctan(Gy/Gx),硬件實現(xiàn)較為困難,需要消耗很多硬件資源,一般是比較像素領域窗口,對于3×3窗口而言,求其領域8個方向,由于對稱性,只需要求得4個方向,0°、45°、90°和135°,即把梯度Gy的值與Gxtan22.5°和Gxtan67.5°比較,同時判斷GyGx乘積的正負性,可求得梯度的方向θ值的大小。為節(jié)約硬件資源可以采取對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寄存器組合輸出到新創(chuàng)建的圖像行緩存,并創(chuàng)建新的3×3計算內核,通過計算內核窗口判斷圖像數(shù)據(jù)的方向,進行極大值抑制。計算內核中心點與對應梯度方向的像素點、高閾值Th、低閾值Tl進行比較,若計算內核中心點最大則為圖像強邊緣點;若計算內核中心點大于梯度方向,處于Tl和Th之間,為弱邊緣點;其他情況均不是圖像的邊緣點。

    創(chuàng)建新的行緩存寫入上述圖像邊緣數(shù)據(jù),由新的3×3計算內核做進一步處理:若計算內核中心點是強邊緣點輸出255;若計算內核是弱邊緣點,判斷其八鄰域是否存在強邊緣點,不存在強邊緣點則輸出0,存在則輸出255,同時把中心點值改變?yōu)閺娺吘夵c值;其他情況直接輸出0。

3.6 圖像數(shù)據(jù)流輸出

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

3.7 指令優(yōu)化迭代

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

qrs1-b1.gif

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

    以Zedboard開發(fā)板為算法驗證平臺,開發(fā)板FPGA芯片型號為xc7z020484-1,圖像由開發(fā)板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]中可知,在相同系統(tǒng)時鐘下處理512×512的圖像,時間約為20 ms,遠小于圖5(c)的處理速度。因此,Vivado HLS實現(xiàn)的Canny邊緣檢測算法能在較復雜的情況下檢測到圖像邊緣,且運算速度快。

5 結論

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

參考文獻

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

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

[3] 韋海萍,趙保軍,唐林波,等.Canny算法的改進及其硬件的實現(xiàn)[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.近地空間電磁環(huán)境監(jiān)測與建模湖南省普通高校重點實驗室,湖南 長沙 410114;

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

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
主站蜘蛛池模板: 韩国午夜理伦三级在线观看仙踪林 | 羞羞视频免费网站欧美 | 小明www永久免费播放平台 | 操欧美美女 | 一 级 黄 色 片生活片 | 欧美爽爽爽爽爽爽视频 | 黑人又大又粗又长又深受不了 | 69堂午夜精品视频在线 | 高清中国一级毛片免费 | 天天色天天色 | 国产精品国内免费一区二区三区 | 成人免费观看在线视频 | 久久久午夜精品理论片 | 中文字幕精品在线观看 | 国产看片网站 | 欧美综合自拍亚洲综合图自拍 | 99中文字幕在线 | 久久精品免看国产 | 波多野结衣中文字幕视频 | 国产真实伦偷精品 | 亚洲影视网 | 成人午夜毛片在线看 | 亚洲精品高清国产一线久久97 | 天天摸天天干天天操 | 亚洲区 欧美区 | 福利精品一区 | 日韩精品一区二区三区高清 | 天天射天天操天天干 | 污黄视频在线观看 | 九九影院韩国理伦片 | 国产精品久久一区 | 久久精品视频6 | 欧美日本一道高清免费3区 欧美日本一二三区 | 性xxxxx外性hd | 一区二区不卡免费视频 | 国产精品青草久久 | 人人人干 | 热99re久久精品2久久久 | 亚洲天堂ww | 在线成人毛片 | 久久亚洲国产视频 |