DSP實現快速Hough變換圓檢測算法

1 引言

  近年來,隨着集成電路和嵌入式技術的發展,特別是DSP集成度、穩定性、運算速度、數據吞吐量等性能的不斷提高,以DSP爲核心的實時圖像處理系統得到開發。採用DSP實現快速數字圖像處理可將算法嵌入到DSP中,充分利用DSP的高速性和並行性,提高系統的運行速度,達到數字圖像處理的實時性。相對於基於PC機的通用圖像處理系統,基於DSP的圖像處理系統具有體積小,功耗低等優點,適用於嵌入式系統領域。

  在圖像處理中檢測圓通常需要計算圓形度,半徑,圓心位置等圓參數。Hough變換是目前應用最廣泛的圓檢測方法,該方法可靠性高,在噪聲、變形、甚至部分區域丟失的狀態下仍然能取得理想效果。但其缺點是計算複雜,內存需求大。算法的實時性很差,不能滿足實時性的要求。

  根據某項工程的實際要求,對標準Hough變換檢測圓算法進行改進,並在TMS320DM642平臺上實現,取得較好的檢測效果,並達到實時性要求。

  2 算法運行平臺

  算法運行平臺採用北京合衆達公司的SEED-DTK-VPM642多媒體實驗平臺,該平臺採用TI公司的TMS320DM642作爲核心處理器。TMS320DM642是專用於數字媒體應用的高性能32位定點DSP,工作主頻最高達720 MHz,處理性能可達5 760 MI/s,強大的圖像處理能力爲實現算法實時性和可靠性提供保證。該實驗平臺的整體功能框圖如圖1所示。前端通過CCD攝像機獲得視頻圖像,經視頻解碼器TVP5150的數字化處理後,形成並行數字碼流以EDMA傳輸方式將數據傳送到TMS320DM642的數據輸入緩衝區,對圖像進行實時處理後的數據自動通過EDMA傳輸至數據輸出緩衝區,再通過視頻編碼器SAA7121形成碼流,傳送到顯示器顯示檢測結果。在整個算法的實現過程中,爲了滿足實時性的要求,都是以EDMA的傳輸方式傳輸數據。

  

SEED-DTK-VPM642多媒體實驗平臺結構圖

 

  3 Hongh變換圓檢測算法的實現

  3.1 Hough變換圓檢測算法的改進

  Hough變換的基本思想是將圖像從空間域變換到參數空間,用大多數邊界點滿足的某種參數形式來描述圖像中的曲線。假設在x-y平面檢測並確定一個圓的參數,圖像中待檢測圓周點的集合爲{(xi,yi),i=1,2,3,…,n},(x,y)爲該集合中的一點,其在參數座標系(a,b,r)中解析式爲:

  

 

  該解析式對應的曲面爲三維錐面。圖像中任意確定的一點均有參數空間的一個三維錐面與之對應。對於圓周上的任一點{(xi,yi),i=1,2,3,…,n},這些三維錐面構成圓錐面簇,如圖2所示。

  

 

  若集合中的點均在同一個圓周上,則這些圓錐面簇相交於參數空間上某一點,該點恰好對應於圖像平面的圓心座標及圓的半徑。Hough變換在計算上將參數空間進一步分割爲累加器單元A(i,j,k),並先使累加器單元置零。根據式(1)對參數作相應循環,如果一個a(i)值得到相應的b(j),r(k),就令A(i,j,k)=A(i,j,k)+1。最後對每個累加器進行比較,找到最大值累加器,該累加器所對應的參數值(a,b,r),就是在平面上所要檢測圓的圓心及半徑。

  標準Hough變換的計算非常複雜,在圓形檢測應用中隨着取值範圍的不斷擴大,在參數域的三維數組尺寸成正比例增加,需要佔用大量計算機內存,計算效率低下。因此,儘可能縮小參與Hough變換的參數域範圍是提高其效率的關鍵。對其改進的步驟如下:

  第一步:對圖像作canny邊緣檢測處理,得出圖像中待檢測圓的單像素寬的邊緣;

  第二步:求出圖像中待檢測圓邊緣在上,下,左,右4個方向上的極點,然後根據圓的幾何對稱性,採用“最小外接矩形法”估算待檢測圓的圓心及半徑,生成相應的子圖,並濾除圖像中的噪聲。“最小外接矩形法”估算圓參數方法如圖3所示,其中圓心O爲

 

  

 

  第三步:考慮到圖像可能存在缺陷和噪聲,對估算所得到的圓心及半徑進行適量縮放,從而縮小參與Hough變換的參數域範圍。

  第四步:在確定的圓心及半徑範圍內,根據圓的參數方程進行。Hough變換,從而檢測圓的參數。

3.2 基於DSP/BIOS和RF5架構的算法實現

  算法的實現是基於CCS和DSP/BIOS及TI倡導的DSP軟件架構RF5。該算法分爲輸入任務、處理任務、輸出任務3個任務,軟件框架如圖4所示。

  

基於DSP/BIOS和RF5架構的算法軟件框圖

 

  在初始化完成後,系統進入DSP/BIOS任務調度管理,3個任務通過RF5的SCOM模塊互相發送消息。

  這3個任務完成的工作是:

  (1)輸入任務從輸入設備驅動程序獲得視頻圖像。它使用驅動程序提供的FVID_exchange調用從輸入設備獲得一幀新視頻圖像。輸入任務接着發送消息到處理任務,消息中包含圖像數據指針,接着等待輸出任務發送來的消息以繼續運行。

  (2)處理任務一直等到接收輸入任務,包含圖像數據指針消息,纔開始激活運行。對接收到圖像數據進行預處理,得出圖像中待檢測圓的細邊緣,然後調用改進的Hough變換檢測圓的參數,接着發送消息到輸出任務,消息中包含經Hough變換檢測後生成的圖像數據指針,然後等待輸入任務發送來的消息以繼續運行。

  (3)輸出任務將圖像顯示在顯示設備上,使用驅動程序提供的FVID_exchange調用實現圖像的顯示,接着發送消息到輸入任務,然後等待處理任務發送來的消息以繼續運行。

  4 實驗結果

  採用某光纖插針內孔參數檢測項目中所獲取的內孔圓(如圖5a所示,實際圖像大小1 392×1 040像素,限於篇幅,縮小爲原圖的10%)來檢驗算法效果。原圖的實際圓心座標爲(678,503),半徑爲462。圖5b爲使用Canny算子檢測得到的邊緣圖像;圖5c爲採用本文算法得到的檢測結果。表1、表2分別列出了基於PC平臺和TMS320DM642平臺採用本文算法與採用標準Hough算法分別對圖5a進行圓參數檢測所得結果、佔有內存大小及耗時的對比。

  

 

  從實驗結果看出,經改進後的Hough變換圓檢測算法,無論是基於PC平臺還是TMS320DM642平臺,與傳統的Hough變換算法相比,算法的運算量、內存需求、耗時都有了大幅度的削減,因而有效地提高了圓的檢測效率,滿足實時性要求。

  5 結論

  通過對傳統的Hough變換檢測圓算法進行改進並運行驗證,證明了對於時間複雜度較大的圖像處理算法,在基於高端DSP的實時圖像處理系統上運行,圖像處理效果良好,能夠滿足實時性要求。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章