《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > 基于CORDIC的高速Sobel算法實(shí)現(xiàn)
基于CORDIC的高速Sobel算法實(shí)現(xiàn)
2018年電子技術(shù)應(yīng)用第9期
黃 虎,,楊 丁,雷宇輝,,謝佳訊,,陳詩瑤,鄒 瑜
成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,,四川 成都610059
摘要: 為提高圖像邊緣檢測的處理速度,,提出一種基于CORDIC的高速Sobel算法實(shí)現(xiàn)。在FPGA平臺上,,在并行處理數(shù)據(jù)和流水線操作的基礎(chǔ)上,,使用擴(kuò)展數(shù)據(jù)位和覆蓋所有角度的流水線型CORDIC,提高Sobel的運(yùn)算效率,。實(shí)驗(yàn)結(jié)果表明,,在保證運(yùn)算精度的前提下,該算法相比傳統(tǒng)加速方法可提速63.53%,。
中圖分類號: TN911.73
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.180634
中文引用格式: 黃虎,,楊丁,雷宇輝,,等. 基于CORDIC的高速Sobel算法實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2018,44(9):87-90.
英文引用格式: Huang Hu,,Yang Ding,,Lei Yuhui,et al. An implementation of high speed Sobel based on CORDIC[J]. Application of Electronic Technique,,2018,,44(9):87-90.
An implementation of high speed Sobel based on CORDIC
Huang Hu,Yang Ding,Lei Yuhui,,Xie Jiaxun,,Cheng Shiyao,Zou Yu
College of Information Science and Technology,,Chengdu University of Technology,,Chengdu 610059,China
Abstract: The acceleration method proposed in this paper aims to improve the processing speed of image edge detection. On the basis of parallelism and pipeline technique,, it works in the FPGA platform and uses extended data bits and the pipelined CORDIC algorithm covering all angles so that the efficiency of Sobel algorithm can be improved. The experimental results show that compared with the traditional acceleration method,, under the premise of ensuring the operation precision, this method can speed up the efficiency by 63.53 percent.
Key words : edge detection; CORDIC algorithm,;hardware accelerator,;programmable device

0 引言

    圖像邊緣檢測是數(shù)字圖像處理領(lǐng)域中的一項(xiàng)關(guān)鍵技術(shù)[1-3],廣泛運(yùn)用在軍事,、農(nóng)業(yè),、工業(yè)、醫(yī)學(xué),、航天等領(lǐng)域[4-6],。隨著電子信息技術(shù)的快速發(fā)展,各大相關(guān)領(lǐng)域?qū)D像邊緣檢測技術(shù)提出更高的要求,,即:在保證精度的前提下,,即時處理大規(guī)模數(shù)據(jù)。

    文獻(xiàn)[6],、[7]使用硬件并行技術(shù)和流水線技術(shù),大幅增加了數(shù)據(jù)的吞吐量,,但在計算Sobel的梯度值時速度較慢,限制了系統(tǒng)的整體處理速度[6-7]。文獻(xiàn)[8]在文獻(xiàn)[6],、[7]的基礎(chǔ)上,,解決了Sobel梯度值計算速度較慢的問題,使系統(tǒng)的整體處理速度提升[6-8],,但該方法犧牲了精度,,導(dǎo)致邊緣檢測的效果較差。

    針對上述問題,,本文采用優(yōu)化的CORDIC算法,將Sobel梯度計算公式轉(zhuǎn)換成數(shù)據(jù)的移位和相加的流水線操作,,在保證運(yùn)算精確度的前提下,,大幅提高整體運(yùn)算速度。

1 Sobel邊緣檢測算法

    Sobel算子是一階導(dǎo)數(shù)的邊緣檢測算子,,具有2組3×3的矩陣,。圖像中的像素點(diǎn)分別和這兩個矩陣做卷積后,即可得到圖像的水平、垂直梯度,。根據(jù)式(1)和式(2)得到圖像梯度值后,,將該值和預(yù)設(shè)的閾值進(jìn)行比較,即可判斷該點(diǎn)是不是圖像的邊緣部分,。

    圖1(a)為待處理的圖像數(shù)據(jù),,圖1(b)、圖1(c)為用于計算x和y方向梯度值的卷積表,。

ck3-t1.gif

    水平梯度Px,、垂直梯度Py的計算公式如式(1)所示:

    ck3-gs1.gif

    式(1)可以利用兩個行緩沖器(Line_buffer)和流水線型的乘加器完成。如圖2所示,,當(dāng)預(yù)存滿兩個行緩沖器后,,再等2個時鐘,系統(tǒng)即可實(shí)時地得到待處理的圖像數(shù)據(jù),。

ck3-t2.gif

    如圖3所示,,得到待處理的圖像數(shù)據(jù)后,P02和P22直接進(jìn)行加法運(yùn)算,,P12通過移位操作實(shí)現(xiàn)乘2效果,。為降低D觸發(fā)器(Reg)之間的邏輯時延,增加系統(tǒng)的工作頻率,,本文將P02和P22相加的結(jié)果,、P12移位的結(jié)果寄存了一拍后,再進(jìn)行加法運(yùn)算,。依據(jù)上述原理,,對P02、P20和P10進(jìn)行了類似操作,。最后將兩組數(shù)據(jù)做減法,,再取一個絕對值即可得到x方向的Sobel計算結(jié)果。y方向的Sobel計算方法如圖4所示,,與圖3的原理類似,。

ck3-t3.gif

ck3-t4.gif

    最終梯度值可以根據(jù)梯度計算公式算出:

    ck3-gs2.gif

    依據(jù)式(2),即可得到最終梯度的模值|G|,,將梯度的模值和閾值進(jìn)行比較,,就可以判斷出該點(diǎn)是否為邊緣點(diǎn)。關(guān)于梯度模值計算公式,,文獻(xiàn)[6]和文獻(xiàn)[7]選擇調(diào)用IP核實(shí)現(xiàn)平方根運(yùn)算,,該方法在一定程度上保證了計算精度,但是運(yùn)算速度受限,。文獻(xiàn)[8]為解決這個問題,,選擇將式(2)等效為|G|=|Px|+|Py|,,較好地提高了運(yùn)算速度,但是運(yùn)算精度大幅度降低,。

    為解決上述問題,,本文選擇用優(yōu)化的流水線型的CORDIC算法,實(shí)現(xiàn)式(2)的運(yùn)算,。該方法既保證了精度,,又提高了運(yùn)算速度。

2 CORDIC算法原理

2.1 圓周系統(tǒng)下的CORDIC算法

    為在保證運(yùn)算精度的前提下,,提高Sobel 算法的即時處理速度和數(shù)據(jù)吞吐量,,本文選擇使用CORDIC算法對其進(jìn)行優(yōu)化。CORDIC是將復(fù)雜的計算轉(zhuǎn)換成移位和加法的迭代操作,。CORDIC算法有旋轉(zhuǎn)模式和向量模式,。在不同的坐標(biāo)系下使用,可以實(shí)現(xiàn)不同的功能,。因需要實(shí)現(xiàn)式(2),,本文選用圓周坐標(biāo)系下的向量模式。

2.2 向量模式

    向量模式下通過一系列的角度逼近,,可以進(jìn)行反正切和平方根的計算,。旋轉(zhuǎn)模式的完整迭代公式如式(3)所示。其中xi為當(dāng)前的橫坐標(biāo)值,,yi為當(dāng)前的縱坐標(biāo)值,,zi為當(dāng)前的角度累加值。其中yi控制著判決算子δi的值,,yi的值為正時,,δi為負(fù);yi的值為負(fù)時,,δi為正,。

ck3-gs3-5.gif

3 向量模式下CORDIC算法的優(yōu)化

    為提高系統(tǒng)的總體性能,本文對CORDIC算法進(jìn)行了一定優(yōu)化,,最終提高了CORDIC算法的精度和速度,。

3.1 覆蓋角度的擴(kuò)展

    如式(6)所示,CORDIC算法的旋轉(zhuǎn)角度有固定的規(guī)律,,角度為2-i的反正切,。當(dāng)?shù)螖?shù)趨于無窮時,所有角度值之和約等于99.827°,。由此可知,,覆蓋角的度數(shù)為[-99.827°,99.827°],,不能覆蓋圓周上的所有角度,。

    ck3-gs6.gif

    考慮到只需求解式(2),輸入數(shù)據(jù)的符號變化不影響最終計算結(jié)果,。因此在式(1)處,,直接求取了|Px|、|Py|,,通過該操作將所有數(shù)據(jù)計算限制在了第一象限,。為減少迭代次數(shù),還可將輸入數(shù)據(jù)進(jìn)行進(jìn)一步的處理,。將|Px|和|Py|進(jìn)行比較,,如果|Py|大于|Px|,則將|Py|和|Px|的值互換,;如果|Px|的值大于|Py|,,則|Py|和|Px|的值保持不變。預(yù)處理后,,數(shù)據(jù)的象限限制在[0°,,45°]。因此可以減少一級迭代,,收斂域也因此變?yōu)閇-57.827°,,54.827°]。經(jīng)過上述處理后,,式(5)變化成式(7),。

    ck3-gs7.gif

3.2 數(shù)據(jù)位擴(kuò)展

    CORDIC算法的迭代次數(shù)和運(yùn)算數(shù)據(jù)的位寬對運(yùn)算結(jié)果的精度有很大的影響。YU Y H在文獻(xiàn)[9]中提出了解決量化誤差(OQE)的方法,。

    YU Y H指出OQE由近似誤差和舍入誤差組成,。近似誤差是由有限個確定旋轉(zhuǎn)角度量化CORDIC旋轉(zhuǎn)角度帶來的量化誤差,由最大向量模值和迭代次數(shù)決定,。舍入誤差是因?yàn)橛嬎銜r數(shù)據(jù)位不夠帶來的誤差,,由數(shù)據(jù)的位寬決定。

    增加數(shù)據(jù)位寬和迭代的次數(shù)都可以提高運(yùn)算結(jié)果的精度,。但是,,當(dāng)?shù)螖?shù)達(dá)到一定值后,迭代次數(shù)的增加對運(yùn)算精度的影響變得很小,。而增加運(yùn)算數(shù)據(jù)的位寬將帶來較好的效果,,大幅度降低舍入誤差。每增加一位數(shù)據(jù)位寬,,舍入誤差將變小1/2[9],。本文在用CORDIC算法實(shí)現(xiàn)式(2)時,在保證較大的迭代次數(shù)的前提下,,將運(yùn)算數(shù)據(jù)位擴(kuò)展3位,,大幅度降低了舍入誤差,。

    在進(jìn)行數(shù)據(jù)迭代運(yùn)算時,考慮到采用浮點(diǎn)數(shù)可以降低工作頻率,,因此采用了定點(diǎn)數(shù),。如圖5所示,定點(diǎn)數(shù)由符號位(S),、整數(shù)位(I),、小數(shù)位(D)構(gòu)成。

ck3-t5.gif

3.3 優(yōu)化后CORDIC算法的實(shí)現(xiàn)

    圓周模式下的向量模式可以根據(jù)輸入的|Px|和|Py|,,直接求解出最終梯度的模值,。梯度模值運(yùn)算模塊的硬件結(jié)構(gòu)圖如圖6所示,由預(yù)處理,、CORDIC迭代流水線,、后級處理3部分組成。預(yù)處理部分中,,將判斷|Px|和|Py|的值是否需要互換,。因?yàn)榈螖?shù)已經(jīng)提前確定,縮放因子已知,,在預(yù)處理階段的數(shù)值修正部分可以提前對最終結(jié)果進(jìn)行補(bǔ)償,。補(bǔ)償后,將數(shù)據(jù)位數(shù)從24位擴(kuò)展成27位,。擴(kuò)展后,,舍入誤差將降低為之前的1/8,提高了運(yùn)算的精確度,。

ck3-t6.gif

    預(yù)處理后進(jìn)入CORDIC迭代部分,,迭代部分采用15級的流水線模式。根據(jù)式(3)可知,,在求解式(2)時只需要知道|Px|和|Py|的值,,因此可舍棄zi的計算,以此節(jié)約一些資源,。如圖7所示,,迭代部分的每行存在兩個移位寄存器和兩個加/減法器。符號控制信號為Sign,,由yi決定,。通過式(3)可知,當(dāng)yi為正時,,xi處選用加法器,,yi處選用減法器;當(dāng)yi為負(fù)時,,xi處選用減法器,,yi處選用加法器,。

ck3-t7.gif

    數(shù)據(jù)通過迭代部分后,進(jìn)入后級處理部分,。后級處理部分將信號緩存一拍后,,進(jìn)行截位處理,然后就可得到x15[26:3]的值,,即最終梯度的模值。此外,,該設(shè)計采用了流水線結(jié)構(gòu),,提高了吞吐量和最大工作頻率。

4 系統(tǒng)仿真及性能分析

    本設(shè)計在ISE14.7軟件下,,用Verilog HDL語言進(jìn)行了實(shí)現(xiàn),。此外,使用MATLAB,、Modelsim SE 10.1c進(jìn)行了本設(shè)計的測試,。

    本文在Xilinx ISE編譯器中編譯好代碼后,通過Modelsim進(jìn)行了軟件仿真,。圖8為本設(shè)計關(guān)鍵路徑的仿真:CORDIC迭代運(yùn)算的仿真,。修正后的|Px|和|Py|采用定點(diǎn)數(shù)的方法進(jìn)行表示,總計24位,,0~12位為小數(shù)位,,13~22位為整數(shù)位,23位為符號位,。|Px[26:0]|和|Py[26:0]|為|Px|,、|Py|擴(kuò)展3位后的值,分別用x,、y進(jìn)行表示,。Kn為最終梯度模值的計算結(jié)果。為了更直觀地表示,,輸入值,、中間值和輸出結(jié)果均用有符號十進(jìn)制數(shù)進(jìn)行表示。根據(jù)仿真結(jié)果可知,,采用優(yōu)化后的CORDIC進(jìn)行式(2)的運(yùn)算,,精確度約為10-4,遠(yuǎn)大于文獻(xiàn)[8]的精確度,。

ck3-t8.gif

    仿真后,,將文獻(xiàn)[8]的算法和本文的算法進(jìn)行了對比測試,結(jié)果如圖9所示,。通過圖9(b)可以觀察到,,使用文獻(xiàn)[8]的加速算法后,,因?yàn)榫_度較低的緣故,不能較好地檢測到邊緣,,人像左下方,、右上方處的頭發(fā)邊緣和背景混雜在了一起,人像面部左下方,、右上方的邊緣檢測效果較差,。使用本文的改進(jìn)算法后,如圖9(c)所示,,在保證運(yùn)算速度的前提下,,較好地識別出了圖像的邊緣,較好地檢測出了頭發(fā)和面部的邊緣,,與圖9(d)使用MATLAB實(shí)現(xiàn)Sobel算法的效果近似,。

ck3-t9.gif

    本文也嘗試使用Xilinx ISE自帶的平方根IP核實(shí)現(xiàn)關(guān)鍵路徑的計算。選用Spartan6 XC6SLX16 2CSG324C芯片在Xilinx ISE14.7軟件平臺下,,對平方根IP核進(jìn)行編譯綜合,。編譯綜合后,得到ISE計算出的最高工作頻率信息,。為測試本文使用算法的性能,,在同樣的條件下,對本文的算法也進(jìn)行了編譯,,得到了最高工作頻率信息,。最終結(jié)果如表1所示。采用IP核進(jìn)行關(guān)鍵路徑的計算,,最高工作頻率為114.745 MHz,。采用優(yōu)化后的CORDIC算法進(jìn)行關(guān)鍵路徑的計算,最高頻率為187.652 MHz,。相比使用IP核的方法,,采用優(yōu)化后的CORDIC算法實(shí)現(xiàn)關(guān)鍵路徑的計算可以提速63.53%。

ck3-b1.gif

5 結(jié)論

    本文在傳統(tǒng)Sobel加速算法的基礎(chǔ)上,,在FPGA平臺上使用優(yōu)化的CORDIC算法實(shí)現(xiàn)了Sobel算法加速,。通過圖9可知,該方法的邊緣檢測效果良好,,較好地檢測出了圖像的邊緣,。通過表1可知,該方法與調(diào)用IP核相比提高了百分之63.53%的工作頻率,。實(shí)驗(yàn)結(jié)果表明,,本設(shè)計進(jìn)一步提高了系統(tǒng)的運(yùn)算速度,適合在對速度有較高要求的系統(tǒng)中使用。

參考文獻(xiàn)

[1] AGGARWAL S,,MEHER P K,,KHARE K.Concept,design,,and implementation of reconfigurable CORDIC[J].IEEE Transactions on Very Large Scale Integration Systems,,2016,24(4):1588-1592.

[2] PRASAD N,,TRIPATHY M R,,DAS D S,et al.Efficient VLSI implementation of CORDIC-based direct digital synthesizer[M].Intelligent Computting,,Communication and Devices.Springer India,,2015.

[3] 于莉潔,孫瑜亮,,繆永偉.基于深度信息局部二值模式特征的室內(nèi)場景邊緣檢測[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2017,,29(12):2162-2170.

[4] 劉小寧,,謝宜壯,陳禾,,等.CORDIC算法的優(yōu)化及實(shí)現(xiàn)[J].北京理工大學(xué)學(xué)報,,2015,35(11):1164-1170.

[5] SHUKLA R,,RAY K C.Low latency hybrid CORDIC algorithm[J].IEEE Transactions on Computers,,2013,63(12):3066-3078.

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

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

[8] 杜正聰,,寧龍飛.基于Sobel算法圖像邊緣檢測的FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,,42(10):89-91.

[9] HU Y H.The quantization effects of the CORDIC algorithm[J].IEEE Transactions on Signal Processing,,1992,40(4):834-844.



作者信息:

黃  虎,,楊  丁,,雷宇輝,謝佳訊,陳詩瑤,,鄒  瑜

(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,,四川 成都610059)


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