作者簡介
陳星(1988-),女,湖北仙桃人,碩士,中共黨員,現就讀于廈門大學 控制理論與控制工程研究所,主要研究方向為圖像識別。曾參與過工業控制參數優化項目及項目茶杯茶壺識別項目的研究。
摘要:目前檢測圓的方法很多,最常用的為Hough變換,另外還有一些改進的Hough變換和圓的快速檢測方法,但是這些方法如果直接運用于存在同心圓的圖像中,就不能檢測出同心圓。目前對同心圓檢測的算法較少,而且存在一定局限性,這里提出一種結合圓梯度信息和二次檢測圓的新的檢測同心圓的算法,改善了檢測的局限性,不需要事先確定圓的一些參數仍然能準確檢測同心圓,具有一定抗干擾性,且檢測速度較快。本文通過實驗仿真和應用實例,證明了該算法簡單、準確,有效。
關鍵詞:Hough變換;圓;同心圓;二次檢測;梯度
Abstract: There are several methods to detect circles and Hough transformation is the mainstream method. Besides, Hough transformation has been improved and many rapid detection algorithms have been developed. However, these algorithms cannot detect concentric circles if applied directly. Existing concentric circles detection algorithms are rare and with certain limitations. This paper proposes a novel concentric circles detection algorithm based on circle gradients and secondary circle detection, which improves the limitation and complexity. This algorithm performs some robustness and has certain capability of interference rejection. It can detect concentric circles accurately without requiring apriori knowledge about the circles. Experiments and some applied examples in this paper show that this algorithm is accurate, quick and efficient detecting concentric circles.
Key words: Hough Transform; Circle; Concentric Circles; Secondary Detection; Gradient
一些常見的平面規則圖形,如直線、圓形、橢圓形、三角形、正方形等在工業產品檢測、生物信息提取、集成電路板在線質量檢測、交通標志識別等領域等有著廣泛的應用[1]。對于直線、圓形等檢測問題,已經提出了大量實用的檢測方法,但對于同心圓檢測問題,目前沒有專門的檢測算法,部分學者在這一方面做了一定的研究,如文獻[2]提出的基于弦中點Hough變換的同心圓檢測方法,這種方法雖然能比較好地檢測出同心圓,但每次都要重復遍歷邊緣特征點找到弦中點,當圖中同心圓每增加一個,算法復雜度會劇烈增大,這樣就不利于對存在很多同心圓的圖像進行檢測。文獻[3]給出了一種同心圓檢測中的區域劃分算法,在圓心已知情況下用最小二乘法擬合圓,但沒有給出具體的圓心計算方法,且僅適合于固定區域劃分層次。
目前,有許多檢測圓的算法,Hough變換是檢測圓的一種常用方法,由Paul Hough 在1962年提出[4],它的突出優點是可以將圖像中較為困難的全局檢測問題轉換為參數空間中相對容易解決的局部峰值檢測問題[5]。本文將提出一種基于改進的Hough變換的二次檢測同心圓的算法,先用一種改進的Hough變換算法檢測圓,再將檢測到的圓進行破壞后,進行第二次圓檢測,最后判斷前后檢測到的圓的圓心和半徑的關系來判斷其是否為同心圓。這種算法克服了以前同心圓檢測算法缺點,一方面縮小了檢測同心圓的局限性,另一方面提高了檢測效率,并用仿真和應用實例證明了算法的高效和準確性。
1 改進的梯度Hough變換檢測圓(IGHT)
圓的一般方程為:
(1)
在對圓進行檢測的時候,往往只需要得到該圓的邊界信息,這就要用到邊緣檢測,一階導數可以用于檢測圖像中的一個點是否是邊緣點。
圖像 f(x,y)在 (x,y)的梯度定為如下方向:
(2)
梯度向量指向在坐標 的 的最大變化率方向。由向量分析得:
(3 )
其中 表示向量 在 處的方向角,角度以 軸為基準度量,邊緣在 處的方向與此點的梯度向量的方向垂直[6]。文獻[7]提出了一種梯度Hough變換來檢測圓方法,用極坐標方程表示圓:
(4)
在事先知道半徑情況下,用求圓邊緣上每一點的梯度方向角 和根據邊緣點的坐標 來求圓心坐標 ,這樣必須預先知道所求圓的半徑范圍,有較大局限性,所以在此基礎上對GHT方法進行改進。
如圖1,圓上所有點的梯度方向都是指向圓心的,圓邊緣上所有的法線必相交于圓心。
傳統的Hough變換用三維累加器 累加來求得圓心和半徑[8], 圖像平面的方程轉化為參數平面上的示意圖如圖2,這樣每次檢測圓都要遍歷整個三維參數空間,耗費大量內存,計算量巨大。為了降低HT方法累加器維數,累加過程分兩階段進行: 第一階段,遍歷圖像,求邊緣梯度,通過Hough變換在參數空間的二維累加器A累加,通過累加的局部峰值確定圓心,第二階段,再遍歷圖像邊緣點,用一個一維累加器B累加半徑,出現頻率最高的半徑作為此圓心對應半徑。
圖1 圓心位于圓邊緣點法線交點
圖2 圓的Hough參數空間
2 基于IGHT的二次檢測的同心圓檢測算法
改進的梯度Hough(IGHT)變換方法的優點是圖像中存在圓交叉、圓互相包含等情況時,仍能檢測出圓,但是當有同心圓時,只能檢測出同心圓中最小的一個。如圖3所示。
(a)原圖 (b)檢測結果
圖3 IGHT檢測到的同心圓中的小圓
基于此,本文提出先用IGHT方法進行第一次圓檢測檢測到小圓,記錄圓心(x1,y1 ),和半徑r1 。對此圓進行破壞,分割出外圓,再使用IGHT進行第二次Hough圓檢測,再次記錄圓心 和半徑 。定義距離:
(5)
根據圓與圓的位置關系,當d