《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DSP的實時圓檢測算法的設計實現與優化
基于DSP的實時圓檢測算法的設計實現與優化
2016年微型機與應用第11期
陳仁愛,凌強,徐駿,李峰
(中國科學技術大學 信息科學技術學院,安徽 合肥 230026)
摘要: 霍夫圓變換是圖像處理中人眼檢測的一種常見方法,但是其處理的數據量多,處理速度慢,在移植到DSP上后難以滿足實時性要求。對此,提出了一種將兩階段霍夫圓變換算法應用到 TMS320C6000系列 DSP上的實現與優化方法。首先,在算法上對霍夫圓變換使用MarrHildreth算子增強等方法進行改進以保證檢測的準確率;之后根據 DSP的特點,利用C代碼優化、浮點定點轉換和軟件流水等技術對算法進行深度優化。實驗結果表明,程序的運行時間明顯縮短,為視線檢測的實時性實現創造了良好的條件。
Abstract:
Key words :

  陳仁愛,凌強,徐駿,李峰

  (中國科學技術大學 信息科學技術學院,安徽 合肥 230026)

 摘要:霍夫圓變換是圖像處理中人眼檢測的一種常見方法,但是其處理的數據量多,處理速度慢,在移植到DSP上后難以滿足實時性要求。對此,提出了一種將兩階段霍夫圓變換算法應用到 TMS320C6000系列 DSP上的實現與優化方法。首先,在算法上對霍夫圓變換使用MarrHildreth算子增強等方法進行改進以保證檢測的準確率;之后根據 DSP的特點,利用C代碼優化、浮點定點轉換和軟件流水等技術對算法進行深度優化。實驗結果表明,程序的運行時間明顯縮短,為視線檢測的實時性實現創造了良好的條件。

關鍵詞C6000 DSP霍夫變換;程序優化

0引言

  在視頻圖像中快速地檢測出圓形是目標跟蹤、目標分類和行為理解等更高層次視頻圖像分析的重要基礎,比如人眼檢測、視線跟蹤和交通視頻分析等。霍夫圓變換是圖像處理中識別和定位圓形的常用方法,其準確率高且與圖中形狀的方向無關[12],被廣泛用于運動目標軌跡的檢測與識別。在視線檢測領域,也有眾多關于它的研究。MATHEWS R 提出了一種利用霍夫圓變換來設計鼠標的方法[3],ZIA M A等人嘗試利用眼球追蹤來為殘疾人設計輪椅[4]。

  標準霍夫變換雖然具有顯著的優勢,但其不足也不容忽視[56]。它需消耗大量的時空資源,對于在嵌入式平臺上進行視線檢測這樣的應用背景無法做到實時控制。目前有很多研究都僅針對算法上的改進,而沒有結合具體的實現平臺的特點來進行優化,不能充分利用硬件的性能優勢。本文擬在德州儀器的TMS320C6000系列DSP上使用兩階段霍夫變換算法來實現圓形檢測,并開展基于DSP平臺的程序優化研究。

1改進的兩階段霍夫圓變換算法

  參考文獻[2]提出將霍夫變換一般化的方法,對于任何曲線,只要給出了它的函數方程,就可以利用霍夫變換的方法,將圖像空間變換到霍夫參數空間,利用投票的方法求得曲線參數。對于檢測圓的情形,由于圓的方程有3個未知量,變換到霍夫空間中需要一個三維的累加器,對于高清圖片來說將耗費大量的內存,而且搜索極值時時間代價很大。這二者對于DSP平臺都是致命的,故在移植到DSP時本文采用了兩階段霍夫圓變換算法,并對其進行性能上的改進。本節闡述了基于兩階段霍夫圓變換算法的圓檢測方案設計。

  1.1兩階段霍夫圓變換算法

  兩階段霍夫圓變換是一種針對標準霍夫圓變換的參數空間分解的方法,主要目的是為了減少原算法的空間復雜度,其輸入是邊緣圖像[5]。

  考慮如下圓的參數方程:

  1.png

  其中(x0,y0,r)是一組圓心和坐標參數。兩階段霍夫圓變換的第一步是對圓心參數空間累加。根據圓的一階導數和二階導數的特性,過圓周上任意一點的圓切線的垂線經過圓心,如圖1所示。對已知邊緣上的任意點做垂線,這些垂線將會在(a, b)空間匯集,形成一個熱點,在(a, b)空間搜索極值即得圓心坐標。給定r的范圍,在邊緣點上做垂線段,得(a, b)空間。即:

  23.png

  

001.jpg

  其中,(minr,maxr)是給定的半徑的范圍,也是做出的垂線段的長度,A是(a, b)空間的累加器, E(i, j)是待檢測圖像的邊緣圖。在(a, b)空間搜索極值即得圓心坐標。

  求得圓心坐標之后,在此基礎上可以進行半徑參數空間的累加。對每一個檢測的圓,R 空間累加方式為:

  4.png

  其中,E是邊緣圖,r是給定的半徑范圍。在R空間搜索極值即可求得半徑。

002.jpg

  1.2圓形檢測整體方案設計

  1.1節描述了一種節省空間開銷的霍夫變換方法,基于此,本節設計了一套圓檢測方案,增加了預處理和利用MarrHildreth算子進行圖像增強等步驟,具體如圖2所示。

  由于形狀只與灰度值有關,故首先獲取灰度圖。之后,對于含噪聲的圖像,對其進行平滑處理,減少邊緣檢測的工作量和出錯率。平滑操作使用高斯平均算子,模板大小為5,方差為1,實現時采用空域卷積的方式。為了保存更多的邊緣信息,本文使用一階及二階邊緣檢測的方式來求取邊緣圖而不是直接對灰度圖進行二值化。一階邊緣提取使用Sobel算子,包括水平Sobel算子和垂直Sobel算子,最后取二者的幾何平均作為最終的Sobel圖像。在使用圓的方向導數縮減參數空間時需要使用邊緣圖像的方向信息,本文使用Sobel處理后的圖像來直接求得。

  對于每個被檢測到的邊緣點(i,j),計算其方向角度θ(i,j):

  5.png

  其中,f(i,j) 為邊緣圖像像素值,Sobel(i,j)為Sobel處理后的像素值,腳標v、h分別表示垂直和水平。C語言中atan2求得的角度值在 (-π, π) 間,由于θ 與θ±π的方向相同,可以將θ左右平移到區間 (-π2, π2)中。

  對于邊緣更復雜的圖像,當一階邊緣檢測過粗或者錯誤時,使用二階邊緣檢測能獲得更好的檢測效果。MarrHildreth算子是利用高斯濾波的一種二階濾波方式,它先對圖像進行高斯平滑,之后應用拉普拉斯運算,即:

  6.png

  其中P是待處理的圖像,g(x,y)是高斯平滑濾波器。此外,MarrHildreth算子還被用于圖像增強。

  在獲得邊緣圖像和邊緣方向信息之后使用1.1節中的方法就能求得圓心和半徑。

  1.3圓形檢測中的實現細節

  由于邊緣檢測的不精確性和待檢測圓的不確定性,兩階段霍夫圓變換方法在實現的過程中存在一些問題,本節將討論這些問題的解決方式。

  使用式(2)、(3)進行(a,b)空間累加時,會得到一些熱點,但是由于圓的形變等原因這些熱點常常是不清晰的或者彌漫開來的,故有必要將它們聚集成一個更集中的點。使用式(6)MarrHildreth算子進行圖像增強,將獲得更明亮的熱點。對增強后的(a, b)空間進行閾值化處理,得所求圓心。對于原圖中有多個圓的情形,不同的閾值將保留不同數量的圓心,數值越大,對所檢測圓的要求越高,得到的圓心越少。由于圓的大小不一,得到的熱點(即圓心)亮度不一:大的圓在(a, b)空間中比小的圓累積值更大。考慮在變換時添加衰減因子1k,累加公式(3)可變為:

  7.png

  實驗中發現大的圓由于邊緣方向估計誤差更大,在圓心區域的偏差會更大,這會使它的聚集程度下降,從而與由半徑大帶來的優勢相抵消,此時k可設為1。

  在R空間使用式(4)時,累加過程中只利用了垂線經過圓心的邊緣點,由于誤差的原因導致效果不太好。考慮使用所有的邊緣點進行累加。設圓心與邊緣點的連線夾角是ψ,則將垂線夾角在 (ψ-∈,ψ+∈) 間的邊緣點都加入計算,其中∈是允許誤差,一般取π4或π8都能有較好的效果。

  對于同心圓,在R空間累加后選擇合適的閾值以保留多個峰值,能獲得不同的半徑值。

  圖3是一組檢測結果示意圖。其中圖(c) 是將θ映射到(0,255) 得來。在采取合適的參數后能獲得較好的檢測結果。

003.jpg

2基于C6000 DSP的移植與優化

  2.1移植到DSP

  本文使用的硬件平臺是TI的TMS320C64x+TM定點型DSP核,使用的開發環境為CCSv4。使用C64x+ simulator進行軟件仿真,通過CCS的時鐘工具測得試運行時鐘周期,通過profile工具分析工程耗時分布[7]。

  2.2具體的優化步驟

  本文的優化基于所用DSP的結構特性,盡量充分利用DSP的計算資源來縮短檢測時間[89]。本節將介紹本文使用的優化方法。

  2.2.1基于編譯器的優化方法

  CCS的編譯器中設置了眾多參數,選擇合適的參數能減少檢測耗時。

  選擇優化級別。由于本文不考慮代碼體積,故使用-o3文件級優化。

  使用-mt。假設不存在多個指針對同一個內存(塊)進行讀寫操作。

  使用 -mh<num>。 允許編譯器取超過數組邊界num字節的值。該操作使編譯器在編排軟件流水時有額外的彈性,可提高流水性能。在CMD文件中定義大于num的緩存空間,避免 EDMA或其他cache沖突。

  不使用 -g、-ss等參數。這些參數對調試很有效,但是會造成性能下降,在最終發布產品時不應使用。

  CCS編譯器選項中有部分能減少手工整定時間但是對代碼性能沒有影響的參數,使用這些參數有助于程序優化。使用-s[-k|-al]-o[2|3]能生成優化后的類似于C的代碼,且優化器描述被嵌套在匯編代碼中,使用-mw或者-mw-al輸出額外的關于軟件流水的信息,包括單次循環的調度方式;使用-on2-o3生成*.nfo文件,以給出高級別的優化總結和可用的優化建議。

  2.2.2手工整定方法

  僅使用基于編譯器的優化所減少的程序耗時是有限的,本文對算法的實時性要求較高,需要在2.2.1節的基礎上進行手工整定。手工整定的方式很多,本文使用的幾種方法有基于編譯器和優化器描述、浮點定點轉換、不用除法等。

  根據優化器描述給所有安全的指針添加restrict關鍵字,消除循環間的依賴,使生成的匯編文件中循環依賴項值為零;根據匯編嵌入信息添加pragma 指令MUST_ITERATE和UNROLL,告訴編譯器循環的最大值、最小值、公約數和展開次數,并根據軟件流水信息中各資源的使用情況在循環前使用 _nassert() 告訴編譯器數據是64位對齊的,一次讀取多個對齊數據以減少D單元和T通道的使用數,以能較好地平衡資源。這些措施極大地提高了軟件流水的效率。

  由于算法涉及眾多的浮點運算,在定點型甚至浮點型DSP中效率都很低,故在精度允許的情況下,使用定點運算代替浮點型運算。浮點轉換為定點除了手動使用Qn定標外,對于C64x+ DSP還可以使用TI的C64x+ IQmath庫。IQmath集合了很多高精度且高度優化的數學函數,適合于將浮點的算法轉換成定點[10]。除了提供_iq數據類型及各類型互相轉換之外,IQmath還提供了各種高度優化的數學函數比如_IQcos(余弦函數),并且支持可調節精度,在不同地方可以選擇不同的定標Q值,即GLOBAL_Q可以在需要的地方指定0~31中的任意值。比如融合兩個Sobel算子時求兩個數的幾何平均:

  (*imageTot)[i][j]= pow( (*imageH)[i][j]*(*imageH)[i][j] +(*imageV)[i][j]*(*imageV)[i][j], 0.5f);

  可以修改為:

  tmp=_IQpow(*imageH[i][j],2) +_IQpow(*imageV[i][j],2);//sqrt(H^2+V^2)

  *imageTot[i][j] = _IQsqrt(tmp);//pow(tmp,0.5f)

  先將數據轉換成_iq類型,然后使用IQmath中的_IQpow和_IQsqrt來求冪和根號,之后再轉換回需要的float型。

  對于除法運算,DSP是利用函數調用來完成,耗費的時鐘周期比乘法高出2個數量級以上。為了消除除法,可以使用移位或者查找表(lookup table)來代替。比如:

  (int)(_abs(im[i][j] + shift) /maxval*255);

  其中maxval值在0~255之間,可以提前將255/maxval計算出來,計算時查表代替;或者使用8替代*255。另外,使用 _IQdiv( _iq A, _iq B) 函數可完成_iq類型的除法。

  對于DSP的優化方法還有很多,如使用內聯函數和線性匯編等,在進一步優化過程中可使用。

  2.3優化結果與分析

  在綜合了各種優化方式之后,重新使用profile測試各部分的時鐘周期,保持其他條件不變。程序優化前后所用的時間見表1。可見經過優化,耗時明顯減少。

004.jpg

3結論

  本文先在PC上實現了基于霍夫變換的圓形檢測算法,然后將它移植到了DSP上并進行了基于時間的優化分析,使得實時性有很大的提高。

  若要將此算法應用到人眼檢測,可以在前述的基礎上繼續改進,比如縮減霍夫變換中r的范圍,在R空間尋找峰值時指定目標是2個等。本文所完成的只是視線跟蹤中人眼檢測的一部分,離實際應用還很遠。本文設計還有很多不足,希望在未來的工作中繼續改進。

參考文獻

  [1] BALLARD D H. Generalizing the Hough transform to detect arbitraryshapes[J]. Pattern Recognition, 1981, 13(2): 111122.

  [2] YUEN H K, PRINCEN J, ILLINGWORTH J. Comparative study of Hough transform methods for circle finding[J]. Image and Vision Computing, 1990, 8(1): 7177.

  [3] MATHEWS R, CHANDRA N. Computer mouse using eyetracking system based on houghman circle detection algorithm with grid analysis[J]. International Journal of Computer Applications, 2012, 40(13): 1216.

  [4] ZIA M A, ANSARI U, JAMIL M, et al.Face and eye detection in images using skin color segmentation and circular Hough transform[C].Robotics and Emerging Allied Technologies in Engineering (iCREATE), 2014 International Conference on. IEEE, 2014: 211213.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品国产日韩| 国户精品久久久久久久久久久不卡 | 久久久www| 亚洲人成艺术| 亚洲欧美日本日韩| 日韩视频永久免费| 韩国亚洲精品| 国产模特精品视频久久久久| 性色av一区二区三区在线观看| 亚洲一二三四区| 亚洲电影欧美电影有声小说| 欧美精品v日韩精品v韩国精品v| 日韩视频二区| 亚洲第一在线| 羞羞视频在线观看欧美| 狠狠v欧美v日韩v亚洲ⅴ| 久久免费视频在线观看| 亚洲激情啪啪| 欧美一级久久| 午夜亚洲激情| 亚洲欧美日韩视频二区| 在线精品国产欧美| 国产日韩欧美精品综合| 免费不卡亚洲欧美| 久久国产色av| 久久成人羞羞网站| 欧美在线91| 午夜视频一区| 性做久久久久久久久| 久久精品1区| 亚洲永久字幕| 99国产精品国产精品毛片| 国产精品美女视频网站| 一区二区三区免费网站| 午夜在线观看免费一区| 亚洲二区在线| 亚洲第一福利视频| 亚洲丰满少妇videoshd| 国产欧美一区二区精品性色| 女女同性精品视频| 女人色偷偷aa久久天堂| 欧美亚洲视频在线看网址| 亚洲破处大片| 亚洲免费观看| 久久国产日韩欧美| 欧美专区在线观看| 亚洲国产91| 亚洲精品国产精品乱码不99| 亚洲欧美日韩国产一区二区三区 | 午夜在线播放视频欧美| 亚洲精品中文字幕女同| 国产精品99一区| 国产精品国产精品| 国产一区二区三区免费不卡| 国产精品婷婷| 加勒比av一区二区| 91久久久在线| 一区二区精品国产| 午夜欧美理论片| 亚洲国产欧美在线| 99这里只有精品| 亚洲欧美日本精品| 午夜在线观看欧美| 亚洲欧美国产日韩天堂区| 亚洲电影成人| 亚洲欧洲一区| 亚洲午夜激情在线| 午夜在线精品偷拍| 亚洲精品1区2区| 久久精品国产精品亚洲| 亚洲免费在线电影| 久久精品国产欧美亚洲人人爽| 亚洲午夜av电影| 欧美一级片在线播放| 亚洲天堂第二页| 欧美一级片久久久久久久| 在线午夜精品| 欧美一区二区女人| 亚洲精品国产精品国自产观看| 久久av一区二区三区漫画| 亚洲欧美在线高清| 亚洲国产精品一区二区第一页| 日韩亚洲精品视频| 影院欧美亚洲| 在线亚洲一区二区| 欧美亚洲在线观看| 亚洲伦理在线观看| 欧美一区二区三区视频在线 | 亚洲在线观看视频| 久久久国际精品| 欧美日韩免费观看一区| 99国产精品| 久久国产精品久久精品国产| 久久av在线| 欧美极品一区| 国产亚洲a∨片在线观看| 国产欧美日韩亚洲一区二区三区| 国产精品久久福利| 国产一区二区三区免费不卡 | 亚洲欧美在线网| 亚洲精品专区| 久久久久成人精品| 欧美午夜理伦三级在线观看| 欧美视频国产精品| 极品尤物av久久免费看| 国产欧美一二三区| 亚洲精品乱码久久久久久黑人| 亚洲伦理精品| 久久精品亚洲乱码伦伦中文 | 亚洲视频在线二区| 亚洲国产婷婷| 亚洲欧美久久久久一区二区三区| 亚欧成人在线| 欧美精品一区二区在线播放| 欧美日韩1区2区3区| 欧美另类69精品久久久久9999| 欧美精品一卡| 国产自产精品| 亚洲免费网址| 欧美一区二区三区四区夜夜大片| 欧美成人免费在线| 伊人精品视频| 亚洲激情视频网站| 欧美电影在线观看完整版| 国产三区二区一区久久| 亚洲精品日韩激情在线电影| 亚洲欧美在线网| 亚洲一区亚洲| 欧美精品成人在线| 在线观看欧美一区| 久久国产综合精品| 亚洲一区二区高清视频| 久久er精品视频| 国产精品亚洲片夜色在线| 今天的高清视频免费播放成人| 亚洲国产精品女人久久久| 一区二区三区四区国产| 午夜在线一区| 先锋影音一区二区三区| 欧美本精品男人aⅴ天堂| 欧美日韩一区高清| 亚洲精品久久久久久久久久久久| 亚洲深夜福利视频| 亚洲神马久久| 欧美性猛片xxxx免费看久爱| 国内精品视频久久| 亚洲视频免费观看| 亚洲免费视频一区二区| 久久久精品国产一区二区三区 | 亚洲福利久久| 久久亚洲不卡| 黄色成人在线网址| 亚洲国产精品第一区二区三区| 在线视频一区观看| 亚洲一二三区在线| 国产精品爽黄69| 亚洲欧美日韩国产另类专区| 欧美在线视频在线播放完整版免费观看 | 亚洲精品视频二区| 亚洲美女精品一区| 欧美精品免费在线观看| 国产主播一区| 亚洲国产精品美女| 欧美精品亚洲| 一区二区三区视频在线播放| 亚洲日本电影| 欧美成人精品激情在线观看| 国产女优一区| 欧美夜福利tv在线| 久久夜色精品亚洲噜噜国产mv| 国产精品久久久久久妇女6080| 国内精品一区二区三区| 亚洲最快最全在线视频| 最新日韩欧美| 欧美精品在线一区二区| 亚洲第一中文字幕| 99精品国产在热久久婷婷| 美日韩精品免费| 亚洲精品日韩在线| 亚洲综合视频在线| 国产综合久久久久影院| 亚洲一区网站| 久久精品中文| 亚洲国产精品久久久久婷婷老年| 欧美在线播放| 免费成人高清视频| 亚洲精品乱码久久久久| 91久久中文字幕| 久久久999成人| 亚洲欧洲精品一区二区三区不卡| 亚洲成色777777在线观看影院| 久久精品一二三区| 国产精品国产成人国产三级| 宅男噜噜噜66国产日韩在线观看| 一区二区三区日韩| 国模大胆一区二区三区| 91久久精品国产91性色| 男女av一区三区二区色多| 亚洲电影免费在线| 午夜久久美女|