作者簡介
陳星(1988-),女,湖北仙桃人,碩士,中共黨員,現(xiàn)就讀于廈門大學(xué) 控制理論與控制工程研究所,主要研究方向?yàn)閳D像識別。曾參與過工業(yè)控制參數(shù)優(yōu)化項(xiàng)目及項(xiàng)目茶杯茶壺識別項(xiàng)目的研究。
摘要:目前檢測圓的方法很多,最常用的為Hough變換,另外還有一些改進(jìn)的Hough變換和圓的快速檢測方法,但是這些方法如果直接運(yùn)用于存在同心圓的圖像中,就不能檢測出同心圓。目前對同心圓檢測的算法較少,而且存在一定局限性,這里提出一種結(jié)合圓梯度信息和二次檢測圓的新的檢測同心圓的算法,改善了檢測的局限性,不需要事先確定圓的一些參數(shù)仍然能準(zhǔn)確檢測同心圓,具有一定抗干擾性,且檢測速度較快。本文通過實(shí)驗(yàn)仿真和應(yīng)用實(shí)例,證明了該算法簡單、準(zhǔn)確,有效。
關(guān)鍵詞: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
一些常見的平面規(guī)則圖形,如直線、圓形、橢圓形、三角形、正方形等在工業(yè)產(chǎn)品檢測、生物信息提取、集成電路板在線質(zhì)量檢測、交通標(biāo)志識別等領(lǐng)域等有著廣泛的應(yīng)用[1]。對于直線、圓形等檢測問題,已經(jīng)提出了大量實(shí)用的檢測方法,但對于同心圓檢測問題,目前沒有專門的檢測算法,部分學(xué)者在這一方面做了一定的研究,如文獻(xiàn)[2]提出的基于弦中點(diǎn)Hough變換的同心圓檢測方法,這種方法雖然能比較好地檢測出同心圓,但每次都要重復(fù)遍歷邊緣特征點(diǎn)找到弦中點(diǎn),當(dāng)圖中同心圓每增加一個,算法復(fù)雜度會劇烈增大,這樣就不利于對存在很多同心圓的圖像進(jìn)行檢測。文獻(xiàn)[3]給出了一種同心圓檢測中的區(qū)域劃分算法,在圓心已知情況下用最小二乘法擬合圓,但沒有給出具體的圓心計(jì)算方法,且僅適合于固定區(qū)域劃分層次。
目前,有許多檢測圓的算法,Hough變換是檢測圓的一種常用方法,由Paul Hough 在1962年提出[4],它的突出優(yōu)點(diǎn)是可以將圖像中較為困難的全局檢測問題轉(zhuǎn)換為參數(shù)空間中相對容易解決的局部峰值檢測問題[5]。本文將提出一種基于改進(jìn)的Hough變換的二次檢測同心圓的算法,先用一種改進(jìn)的Hough變換算法檢測圓,再將檢測到的圓進(jìn)行破壞后,進(jìn)行第二次圓檢測,最后判斷前后檢測到的圓的圓心和半徑的關(guān)系來判斷其是否為同心圓。這種算法克服了以前同心圓檢測算法缺點(diǎn),一方面縮小了檢測同心圓的局限性,另一方面提高了檢測效率,并用仿真和應(yīng)用實(shí)例證明了算法的高效和準(zhǔn)確性。
1 改進(jìn)的梯度Hough變換檢測圓(IGHT)
圓的一般方程為:
(1)
在對圓進(jìn)行檢測的時候,往往只需要得到該圓的邊界信息,這就要用到邊緣檢測,一階導(dǎo)數(shù)可以用于檢測圖像中的一個點(diǎn)是否是邊緣點(diǎn)。
圖像 f(x,y)在 (x,y)的梯度定為如下方向:
(2)
梯度向量指向在坐標(biāo) 的 的最大變化率方向。由向量分析得:
(3 )
其中 表示向量 在 處的方向角,角度以 軸為基準(zhǔn)度量,邊緣在 處的方向與此點(diǎn)的梯度向量的方向垂直[6]。文獻(xiàn)[7]提出了一種梯度Hough變換來檢測圓方法,用極坐標(biāo)方程表示圓:
(4)
在事先知道半徑情況下,用求圓邊緣上每一點(diǎn)的梯度方向角 和根據(jù)邊緣點(diǎn)的坐標(biāo) 來求圓心坐標(biāo) ,這樣必須預(yù)先知道所求圓的半徑范圍,有較大局限性,所以在此基礎(chǔ)上對GHT方法進(jìn)行改進(jìn)。
如圖1,圓上所有點(diǎn)的梯度方向都是指向圓心的,圓邊緣上所有的法線必相交于圓心。
傳統(tǒng)的Hough變換用三維累加器 累加來求得圓心和半徑[8], 圖像平面的方程轉(zhuǎn)化為參數(shù)平面上的示意圖如圖2,這樣每次檢測圓都要遍歷整個三維參數(shù)空間,耗費(fèi)大量內(nèi)存,計(jì)算量巨大。為了降低HT方法累加器維數(shù),累加過程分兩階段進(jìn)行: 第一階段,遍歷圖像,求邊緣梯度,通過Hough變換在參數(shù)空間的二維累加器A累加,通過累加的局部峰值確定圓心,第二階段,再遍歷圖像邊緣點(diǎn),用一個一維累加器B累加半徑,出現(xiàn)頻率最高的半徑作為此圓心對應(yīng)半徑。
圖1 圓心位于圓邊緣點(diǎn)法線交點(diǎn)
圖2 圓的Hough參數(shù)空間
2 基于IGHT的二次檢測的同心圓檢測算法
改進(jìn)的梯度Hough(IGHT)變換方法的優(yōu)點(diǎn)是圖像中存在圓交叉、圓互相包含等情況時,仍能檢測出圓,但是當(dāng)有同心圓時,只能檢測出同心圓中最小的一個。如圖3所示。
(a)原圖 (b)檢測結(jié)果
圖3 IGHT檢測到的同心圓中的小圓
基于此,本文提出先用IGHT方法進(jìn)行第一次圓檢測檢測到小圓,記錄圓心(x1,y1 ),和半徑r1 。對此圓進(jìn)行破壞,分割出外圓,再使用IGHT進(jìn)行第二次Hough圓檢測,再次記錄圓心 和半徑 。定義距離:
(5)
根據(jù)圓與圓的位置關(guān)系,當(dāng)d