專利名稱:一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置的制作方法
一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Hough運(yùn)算裝置,特別涉及一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置。背景技術(shù):
條碼技術(shù)是在計(jì)算機(jī)技術(shù)與信息技術(shù)基礎(chǔ)上發(fā)展起來的一門容編碼、印刷、識(shí)別、 數(shù)據(jù)采集和處理于一身的新興技術(shù)。條碼技術(shù)由于其識(shí)別快速、準(zhǔn)確、可靠以及成本低等優(yōu) 點(diǎn),被廣泛應(yīng)用于商業(yè)、圖書管理、倉儲(chǔ)、郵電、交通和工業(yè)控制等領(lǐng)域,并且勢必在逐漸興 起的“物聯(lián)網(wǎng)”應(yīng)用中發(fā)揮重大的作用。目前被廣泛使用的條碼包括一維條碼及二維條碼。一維條碼又稱線形條碼是由平 行排列的多個(gè)“條”和“空”單元組成,條形碼信息靠條和空的不同寬度和位置來表達(dá)。一 維條碼只是在一個(gè)方向(一般是水平方向)表達(dá)信息,而在垂直方向則不表達(dá)任何信息,因 此信息容量及空間利用率較低,并且在條碼損壞后即無法識(shí)別。二維條碼是由按一定規(guī)律在二維方向上分布的黑白相間的特定幾何圖形組成,其 可以在二維方向上表達(dá)信息,因此信息容量及空間利用率較低,并具有一定的校驗(yàn)功能。二 維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼是由多行短截的一 維條碼堆疊而成,代表性的堆疊式二維條碼包括PDF417、Code 49、Code 16K等。矩陣式 二維條碼是由按預(yù)定規(guī)則分布于矩陣中的黑、白模塊組成,代表性的矩陣式二維條碼包括 Codeone、Aztec、Date MatriX、QR 碼等。在現(xiàn)有技術(shù)的條碼解碼過程中往往需要通過Hough運(yùn)算對條碼邊界進(jìn)行搜索,例 如PDF417條碼的層邊界。如圖1所示,Hough運(yùn)算的基本原理為假設(shè)在直角坐標(biāo)系中存在 一條原點(diǎn)距離為P,方位角為θ的直線,則直線上每一點(diǎn)滿足公式P = xcos θ +ysin θ 0 在條碼邊界搜索過程中,對于每一個(gè)采樣像素點(diǎn)的圖像空間坐標(biāo)x、y,需要利用不同的θ 離散值通過上述運(yùn)算公式計(jì)算對應(yīng)的P值。然而,在利用硬件邏輯實(shí)現(xiàn)條碼解碼流程時(shí), 由于Hough運(yùn)算過程中存在三角函數(shù)運(yùn)算,因此需要占用大量的運(yùn)算時(shí)間及系統(tǒng)資源,甚 至是難以實(shí)現(xiàn)。
發(fā)明內(nèi)容為了克服現(xiàn)有技術(shù)利用硬件邏輯進(jìn)行hough運(yùn)算時(shí)需要占用大量的運(yùn)算時(shí)間及 系統(tǒng)資源的技術(shù)問題,本發(fā)明提供了一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置,其利用多個(gè) cordic迭代運(yùn)算單元來實(shí)現(xiàn)Hough運(yùn)算,提高了系統(tǒng)的運(yùn)算速度。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案是提供一種Hough運(yùn)算的硬件邏輯 實(shí)現(xiàn)裝置,該硬件邏輯實(shí)現(xiàn)裝置包括N個(gè)串行連接的cordic迭代運(yùn)算單元,其中第i個(gè) cordic迭代運(yùn)算單元包括寄存單元,用于寄存輸入?yún)?shù)θ η,Xi^1, Yi^1 ;檢測單元,用于檢 測θ η的正負(fù)屬性;第一運(yùn)算單元,用于基于檢測單元的檢測結(jié)果對θ Η進(jìn)行加法或減法 運(yùn)算,以獲得輸出參數(shù)θ i ;第二運(yùn)算單元,用于基于檢測單元的檢測結(jié)果對進(jìn)行加法或 減法運(yùn)算,以獲得輸出參數(shù)Xi ;第三運(yùn)算單元,用于基于檢測單元的檢測結(jié)果對yg進(jìn)行加法或減法運(yùn)算,以獲得輸出參數(shù)其中,i為1至N,以步長1遞增,i = 1時(shí),θ ^,X(l及yQ 為輸入到硬件邏輯實(shí)現(xiàn)裝置的用于進(jìn)行Hough運(yùn)算的初始參數(shù),i > 1時(shí),θ η,Xi^1及 為前一 cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,Xtl及%為用于進(jìn)行Hough運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行 用于Hough運(yùn)算的方位角,第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)yN為經(jīng)Hough運(yùn) 算獲得的原點(diǎn)距離P。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,第一運(yùn)算單元對θ η進(jìn)行如下運(yùn)算當(dāng)θ η ≤ 0時(shí), θ i = θ i_1+arctan(l/2i_1),當(dāng) θ > 0 時(shí),Qi= θ ^-arctan (l/2i_1)。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,arctand^")存儲(chǔ)于查詢表內(nèi),并通過查詢查詢表獲 得,硬件邏輯實(shí)現(xiàn)裝置進(jìn)一步包括用于存儲(chǔ)查詢表的存儲(chǔ)單元。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,第二運(yùn)算單元對進(jìn)行如下運(yùn)算當(dāng)θ H ≤ ο時(shí),Xi =Xi-^yi-! χ 1/2",當(dāng) θ H > ο 時(shí),Xi = XhIh X 1/2"。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,第三運(yùn)算單元對進(jìn)行如下運(yùn)算當(dāng)θ η ≤ 0時(shí),yi =Yi-!-Xi-! X 1/2",當(dāng) θ H > 0 時(shí),yi = Yh+Xh X 1/2"。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,N = 16。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,在時(shí)鐘控制下依次輸入多組初始參數(shù)到N個(gè)cordic迭 代運(yùn)算單元的串連結(jié)構(gòu),其中每一個(gè)時(shí)鐘輸入一組初始參數(shù),同時(shí)該N個(gè)cordic迭代運(yùn)算 單元在每個(gè)時(shí)鐘內(nèi)執(zhí)行一次迭代運(yùn)算。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案是提供一種Hough運(yùn)算的硬件邏輯 實(shí)現(xiàn)裝置,該硬件邏輯實(shí)現(xiàn)裝置包括N個(gè)串行連接的cordic迭代運(yùn)算單元,其中第i個(gè) cordic迭代運(yùn)算單元運(yùn)行如下運(yùn)算當(dāng)θ H 谷氨酸棒桿菌 0 時(shí) 當(dāng)Θ H > 0 時(shí) 其中,i為1至N,以步長1遞增,i = 1時(shí),θ。,Xq及yQ為輸入到硬件邏輯實(shí)現(xiàn)裝 置的用于進(jìn)行Hough運(yùn)算的初始參數(shù),i > 1時(shí),θ η,Xi^1及為前一 cordic迭代運(yùn)算 單元產(chǎn)生的輸出參數(shù)。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,Xtl及J0為用于進(jìn)行Hough運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行 Hough運(yùn)算的方位角,第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)yN為經(jīng)Hough運(yùn)算獲得 的原點(diǎn)距離P。根據(jù)本發(fā)明一優(yōu)選實(shí)施例,arctand^")存儲(chǔ)于查詢表內(nèi),并通過查詢查詢表獲 得,硬件邏輯實(shí)現(xiàn)裝置進(jìn)一步包括用于存儲(chǔ)查詢表的存儲(chǔ)單元。通過上述裝置,利用多個(gè)cordic迭代運(yùn)算單元來實(shí)現(xiàn)Hough運(yùn)算,避免了進(jìn)行三 角函數(shù)運(yùn)算,提高了系統(tǒng)的運(yùn)算速度。
圖1是現(xiàn)有技術(shù)hough運(yùn)算原理的示意圖;圖2是根據(jù)本發(fā)明的Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置的示意框圖;圖3是根據(jù)本發(fā)明的一 cordic迭代單元的示意框圖。
具體實(shí)施方式如圖2所示,圖2是根據(jù)本發(fā)明的Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置的示意框圖。 本發(fā)明提供了一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置,該硬件邏輯實(shí)現(xiàn)裝置包括N個(gè)cordic
迭代運(yùn)算單元1、2......N,該N個(gè)cordic迭代運(yùn)算單元串行連接。在本實(shí)施例中,第1個(gè)
cordic迭代運(yùn)算單元1接收輸入到該硬件邏輯實(shí)現(xiàn)裝置的用于進(jìn)行Hough運(yùn)算的初始參數(shù) 9。,&及%。其中,Xtl及L為用于進(jìn)行Hough運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行用于Hough運(yùn)算
的方位角。其他cordic迭代運(yùn)算單元2......N則接收前一迭代運(yùn)算單元的輸出結(jié)果,由
此通過迭代方式實(shí)現(xiàn)Hough運(yùn)算P = xcos θ +ysin θ,進(jìn)而得到原點(diǎn)坐標(biāo)P。如圖3所示,圖3是根據(jù)本發(fā)明的第i個(gè)cordic迭代單元的示意框圖。在本實(shí)施 例中,第i個(gè)cordic迭代運(yùn)算單元包括寄存單元101、檢測單元102、第一至第三運(yùn)算單元 103-105,上述裝置均由硬件邏輯實(shí)現(xiàn)。寄存單元101用于寄存輸入?yún)?shù)θ η,Xi^y^。其中,i為1至N,以步長1遞增, i = 1時(shí),θ 0,X。及y。為輸入到硬件邏輯實(shí)現(xiàn)裝置的用于進(jìn)行Hough運(yùn)算的初始參數(shù)。具 體來說,X0及I0為用于進(jìn)行Hough運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行用于Hough運(yùn)算的方位角。 i > 1時(shí),θ η,Xi^1及為前一 cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)。檢測單元102用于檢測θ η的正負(fù)屬性,也就是判斷θ Η是大于0還是小于0。第一運(yùn)算單元103則基于檢測單元102的檢測結(jié)果對θ 進(jìn)行加法或減法運(yùn)算, 以獲得輸出參數(shù)θ。具體來說,第一運(yùn)算單元對θ η進(jìn)行如下運(yùn)算當(dāng)時(shí),Qi =θ i_1+arctan(l/2i"1),當(dāng) θ 卜丨 > 0 時(shí),Qi= θ ^-arctan (1/2")。在優(yōu)選實(shí)施例中,各 arctand^")值存儲(chǔ)于查詢表內(nèi),并通過查詢查詢表獲得。此時(shí),硬件邏輯實(shí)現(xiàn)裝置進(jìn)一 步包括用于存儲(chǔ)查詢表的存儲(chǔ)單元(未圖示)。該存儲(chǔ)單元可以是針對N個(gè)cordic迭代運(yùn)
算單元1、2......N的一個(gè)公用存儲(chǔ)單元,也可以是分布于各cordic迭代運(yùn)算單元內(nèi)的多
個(gè)分布式存儲(chǔ)單元。第二運(yùn)算單元104則基于檢測單元102的檢測結(jié)果對Xp1進(jìn)行加法或減法運(yùn)算, 以獲得輸出參數(shù)Xi。具體來說,第二運(yùn)算單元104對進(jìn)行如下運(yùn)算當(dāng)時(shí),Xi =Xi-^yi-! χ 1/2",當(dāng) θ H > ο 時(shí),Xi = XhIh X 1/2"。第三運(yùn)算單元105基于檢測單元102的檢測結(jié)果對y^進(jìn)行加法或減法運(yùn)算,以 獲得輸出參數(shù)yi。具體來說,第三運(yùn)算單元105對進(jìn)行如下運(yùn)算當(dāng)時(shí),yi = Yh-XhX 1/2、當(dāng) θ > 0 時(shí),= y^+χ^ X 1/2^ 0通過上述迭代運(yùn)算后,第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)yN即為經(jīng) Hough運(yùn)算獲得的原點(diǎn)距離P。在本發(fā)明中,可通過適當(dāng)?shù)倪x擇N值來獲得所需的運(yùn)算精 度,并且在本實(shí)施例中,N= 16。上述實(shí)施例僅為本發(fā)明的一優(yōu)選實(shí)施例,其中的cordic迭代運(yùn)算單元完全可以 采用以其他方式設(shè)計(jì)的cordic迭代運(yùn)算單元來代替,只要將N個(gè)cordic迭代運(yùn)算單元串 行連接,并且由每一 cordic迭代運(yùn)算單元運(yùn)行上述迭代運(yùn)算即可將第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)71<作為經(jīng)Hough運(yùn)算獲得的原點(diǎn)距離P,由此實(shí)現(xiàn)本發(fā)明的目的。其中,第i個(gè)cordic迭代運(yùn)算單元的運(yùn)算公式為
AGi 二 θ — + arctan(l/2i"1)當(dāng)Θ H ≤0 時(shí) 當(dāng)θ η > 0 時(shí) 其中,i為1至N,以步長1遞增,i = 1時(shí),θ。,X。及yQ為輸入到硬件邏輯實(shí)現(xiàn)裝 置的用于進(jìn)行Hough運(yùn)算的初始參數(shù)。具體來說,Xtl及L為用于進(jìn)行Hough運(yùn)算的直角坐 標(biāo),θ ^為進(jìn)行Hough運(yùn)算的方位角。i>l時(shí),θ η,Xp1及為前一 cordic迭代運(yùn)算單 元產(chǎn)生的輸出參數(shù)。優(yōu)選實(shí)施例中,arctand/^—1)存儲(chǔ)于查詢表內(nèi),并通過查詢查詢表獲 得。此時(shí),硬件邏輯實(shí)現(xiàn)裝置進(jìn)一步包括用于存儲(chǔ)查詢表的存儲(chǔ)單元。通過上述裝置,利用多個(gè)cordic迭代運(yùn)算單元通過簡單的加法、減法以及移位操 作來實(shí)現(xiàn)Hough運(yùn)算,避免了進(jìn)行三角函數(shù)運(yùn)算,提高了系統(tǒng)的運(yùn)算速度。在本發(fā)明中,N個(gè) cordic迭代運(yùn)算單元串行連接,并可在每個(gè)時(shí)鐘周期內(nèi)執(zhí)行一次迭代運(yùn)算,由此構(gòu)成一流 水線設(shè)計(jì)。此時(shí),M組初始參數(shù)θ ^,X(l及%可在時(shí)鐘控制下依次輸入到該N個(gè)cordic迭代 運(yùn)算單元的串連結(jié)構(gòu)中,并進(jìn)行流水式運(yùn)算。具體來說,每一個(gè)時(shí)鐘輸入一組初始參數(shù),同 時(shí)第1至N個(gè)cordic迭代運(yùn)算單元在每個(gè)時(shí)鐘內(nèi)執(zhí)行一次迭代運(yùn)算。通過上述方式,對M 組初始參數(shù)進(jìn)行運(yùn)算并獲得Hough運(yùn)算結(jié)果的時(shí)間僅是M+N個(gè)時(shí)鐘。然而,如果對M組初 始參數(shù)進(jìn)行分開運(yùn)算的時(shí)間則需要MXN個(gè)時(shí)鐘。由此可知,上述流水線設(shè)計(jì)可大大降低運(yùn) 算的時(shí)間。在上述實(shí)施例中,僅對本發(fā)明進(jìn)行了示范性描述,但是本領(lǐng)域技術(shù)人員在閱讀本 專利申請后可以在不脫離本發(fā)明的精神和范圍的情況下對本發(fā)明進(jìn)行各種修改。
權(quán)利要求
一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,所述硬件邏輯實(shí)現(xiàn)裝置包括N個(gè)串行連接的cordic迭代運(yùn)算單元,其中第i個(gè)cordic迭代運(yùn)算單元包括寄存單元,用于寄存輸入?yún)?shù)θi 1,xi 1,yi 1;檢測單元,用于檢測θi 1的正負(fù)屬性;第一運(yùn)算單元,用于基于所述檢測單元的檢測結(jié)果對θi 1進(jìn)行加法或減法運(yùn)算,以獲得輸出參數(shù)θi;第二運(yùn)算單元,用于基于所述檢測單元的檢測結(jié)果對xi 1進(jìn)行加法或減法運(yùn)算,以獲得輸出參數(shù)xi;第三運(yùn)算單元,用于基于所述檢測單元的檢測結(jié)果對yi 1進(jìn)行加法或減法運(yùn)算,以獲得輸出參數(shù)yi,其中,i為1至N,以步長1遞增,i=1時(shí),θ0,x0及y0為輸入到所述硬件邏輯實(shí)現(xiàn)裝置的用于進(jìn)行Hough運(yùn)算的初始參數(shù),i>1時(shí),θi 1,xi 1及yi 1為前一cordic迭代運(yùn)算單元產(chǎn)生的輸出參數(shù)。
2.根據(jù)權(quán)利要求1所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,Xtl及%為用于進(jìn)行Hough 運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行用于Hough運(yùn)算的方位角,第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的 輸出參數(shù)yN為經(jīng)Hough運(yùn)算獲得的原點(diǎn)距離P。
3.根據(jù)權(quán)利要求2所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,所述第一運(yùn)算單元對 θ η進(jìn)行如下運(yùn)算當(dāng)θ η彡0時(shí),θ j = θ H+arctand/^—1),當(dāng)θ卜丨> 0時(shí),Qi = θ i_1-arctan(l/2")。
4.根據(jù)權(quán)利要求3所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,arctand/^—1)存儲(chǔ)于查詢 表內(nèi),并通過查詢所述查詢表獲得,所述硬件邏輯實(shí)現(xiàn)裝置進(jìn)一步包括用于存儲(chǔ)所述查詢 表的存儲(chǔ)單元。
5.根據(jù)權(quán)利要求3所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,所述第二運(yùn)算單元對Xp1進(jìn) 行如下運(yùn)算當(dāng) θ η 彡 0 時(shí),Xi = Χη+ΥηΧ 1/2",當(dāng) θ η > 0 時(shí),Xi = XhIhX 1/2"。
6.根據(jù)權(quán)利要求5所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,所述第三運(yùn)算單元對進(jìn) 行如下運(yùn)算當(dāng) θ η 彡 時(shí),yi =1/2",當(dāng) θ ^ > 0 時(shí),= y^+x^X 1/2^0
7.根據(jù)權(quán)利要求6所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,N=16。
8.根據(jù)權(quán)利要求1所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,在時(shí)鐘控制下依次輸入多 組所述初始參數(shù)到所述N個(gè)cordic迭代運(yùn)算單元的串連結(jié)構(gòu),其中每一個(gè)時(shí)鐘輸入一組初 始參數(shù),同時(shí)所述N個(gè)cordic迭代運(yùn)算單元在每個(gè)時(shí)鐘內(nèi)執(zhí)行一次迭代運(yùn)算。
9.一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,所述硬件邏輯實(shí)現(xiàn)裝置包括N個(gè) 串行連接的cordic迭代運(yùn)算單元,其中第i個(gè)cordic迭代運(yùn)算單元運(yùn)行如下運(yùn)算Γθ = Gi^1 +arctan(l/2i-1) 當(dāng) θ H 彡 0 時(shí)j Xi = Xi_! + yi_! χ 1/2i~1I一丄 _ Ji一上.’一L yi = yi-i - Xi-i χ “ 21"1f0i = Gi^1 一 arctan(l/ Zi"1)當(dāng) θ H > 0 時(shí)j Xi 二 Xh1 - yi_x X 1/ 2i_1,Yi 二 + Xi-I χ V 2i_1其中,i為1至N,以步長1遞增,i = 1時(shí),θ ^,X(l及y(l為輸入到所述硬件邏輯實(shí)現(xiàn)裝 置的用于進(jìn)行Hough運(yùn)算的初始參數(shù),i > 1時(shí),θ η,Xi^1及為前一 cordic迭代運(yùn)算 單元產(chǎn)生的輸出參數(shù)。
10.根據(jù)權(quán)利要求9所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,Xtl及l(fā)o為用于進(jìn)行Hough 運(yùn)算的直角坐標(biāo),θ ^為進(jìn)行Hough運(yùn)算的方位角,第N個(gè)cordic迭代運(yùn)算單元產(chǎn)生的輸出 參數(shù)yN為經(jīng)Hough運(yùn)算獲得的原點(diǎn)距離P。
11.根據(jù)權(quán)利要求9所述的硬件邏輯實(shí)現(xiàn)裝置,其特征在于,arctand^1-1)存儲(chǔ)于查 詢表內(nèi),并通過查詢所述查詢表獲得,所述硬件邏輯實(shí)現(xiàn)裝置進(jìn)一步包括用于存儲(chǔ)所述查 詢表的存儲(chǔ)單元。
全文摘要
本發(fā)明公開了一種Hough運(yùn)算的硬件邏輯實(shí)現(xiàn)裝置,該硬件邏輯實(shí)現(xiàn)裝置包括N個(gè)串行連接的cordic迭代運(yùn)算單元,其中每一cordic迭代運(yùn)算單元包括用于寄存輸入?yún)?shù)θi-1,xi-1,yi-1的寄存單元,用于檢測θi-1的正負(fù)屬性的檢測單元;以及用于基于檢測單元的檢測結(jié)果對θi-1、xi-1、yi-1分別進(jìn)行加法或減法運(yùn)算的多個(gè)運(yùn)算單元。通過上述裝置,利用多個(gè)cordic迭代運(yùn)算單元來實(shí)現(xiàn)Hough運(yùn)算,避免了進(jìn)行三角函數(shù)運(yùn)算,提高了系統(tǒng)的運(yùn)算速度。
文檔編號(hào)G06K7/10GK101908123SQ20101018978
公開日2010年12月8日 申請日期2010年6月1日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者王賢福, 胡倫育, 蔡強(qiáng), 陳永長 申請人:福建新大陸電腦股份有限公司