李博學(xué) 李鶴沈陽(yáng)工學(xué)院
?
基于Hough變換圓檢測(cè)的方法研究
李博學(xué) 李鶴
沈陽(yáng)工學(xué)院
摘要:本文研究一種基于MATLAB仿真平臺(tái)的圓檢測(cè)算法。在對(duì)圖像進(jìn)行降噪濾波、邊緣檢測(cè)等預(yù)處理后,利用Hough變換檢測(cè)前景圖像中的圓心位置,然后以圓心為起點(diǎn),設(shè)定的半徑步長(zhǎng)與角度步長(zhǎng)為度量單位,檢測(cè)圓形的具體位置。
關(guān)于圓形的檢測(cè)方法目前已有很多文獻(xiàn)進(jìn)行了相關(guān)論述。最常見的算法還是利用Hough變換來(lái)實(shí)現(xiàn)檢測(cè),主要是因?yàn)镠ough變換具有對(duì)圓度誤差靈活的處理能力,以及對(duì)類圓強(qiáng)大的近似識(shí)別能力。Hough變換利用點(diǎn)與線的對(duì)偶性,將圖像空間給定的曲線表達(dá)形式變成參數(shù)空間的一個(gè)點(diǎn)。這樣就把原始圖像中給定曲線的檢測(cè)問題轉(zhuǎn)換為尋找參數(shù)坐標(biāo)中的峰值問題。本文需要研究的內(nèi)容就是如何在matlab平臺(tái)上實(shí)現(xiàn)這一圓檢測(cè)算法。
2.1 Hough變換的數(shù)學(xué)解釋
需引入直線表達(dá)式:y=kx+b,其中k和b是參數(shù),分別是斜率和截距。過某一點(diǎn)(x0,y0)的所有直線的參數(shù)都會(huì)滿足方程y0=kx0+b。即點(diǎn)(x0,y0)確定了一組直線。方程y0=kx0+b在參數(shù)k--b平面上是一條直線。這樣,圖像x--y平面上的一個(gè)前景像素點(diǎn)就對(duì)應(yīng)到了參數(shù)平面上的一條直線。
以上解釋可舉例分析:已知y=x,取點(diǎn)A(0,0)、B(1,1)、C(2,2)。易解于A點(diǎn),b=0。B點(diǎn),1=k+b。C點(diǎn),2=2k+b。三函數(shù)在參數(shù)坐標(biāo)空間(k,b)交點(diǎn)(1,0),即峰值為(1,0)。
2.2 軟件實(shí)現(xiàn)可行性分析
(1)需初始化一塊緩沖區(qū)作為參數(shù)空間,對(duì)應(yīng)參面的所有點(diǎn)數(shù)據(jù)為0。(2)對(duì)于前景像素點(diǎn)在參面所對(duì)應(yīng)的直線所有點(diǎn)+1。(3)利用統(tǒng)計(jì)特性找到峰值,確定前景圖像中的直線,峰值并不唯一,對(duì)應(yīng)的是前景圖像的個(gè)數(shù)。
由于Y=kx+b無(wú)法表示y=c(k=inf)所以,采用參數(shù)方程,既可以表示簡(jiǎn)單,又可以簡(jiǎn)化計(jì)算。P=xcos(theta)+ysin (theta),參數(shù)空間變量為(p,theta)。
基于以上分析解釋得到Hough變換的具體函數(shù)表達(dá)式:
Xcos(θ)+ycos(θ)=ρ
3.1 算法概述
該算法通過a = x-r*cos(angle),b = y-r*sin(angle)將圓圖像中的邊緣點(diǎn)映射到參數(shù)空間(a,b,r)中,由于是數(shù)字圖像且采取極坐標(biāo),angle和r都取一定的范圍和步長(zhǎng),這樣通過兩重循環(huán)(angle循環(huán)和r循環(huán))即可將原圖像空間的點(diǎn)映射到參數(shù)空間中,再在參數(shù)空間(即一個(gè)由許多小立方體組成的大立方體)中尋找圓心,然后求出半徑坐標(biāo)。
3.2 算法實(shí)現(xiàn)步驟:
Step1.圖像灰度化,利用sobel算子實(shí)現(xiàn)二值化。
Step2.檢測(cè)邊緣點(diǎn),保存位置。設(shè)置角度theta、半徑r變換范圍步長(zhǎng)。
Step3.X=a+rcos(theta) Y=b+rsin(theta)求a,b。
說明:(x、y)圖像空間邊緣點(diǎn)坐標(biāo),(a、b)為參數(shù)空間的變量,a、b為可加量。
4.1 實(shí)驗(yàn)步驟
Step 1:首先使用中值濾波器降噪,再自動(dòng)閾值分割粒子,canny算子提取邊緣,并骨架化至二值圖像,平滑濾波。
Step 2:輸入?yún)?shù)。最大圓半徑r_max;最小圓半徑r_min;半徑步長(zhǎng)step_r;角度步長(zhǎng)step_angle;以參數(shù)空間p*hough_ space的最大值為閾值p(0,1之間)
Step 3:插入算法實(shí)現(xiàn)。
Step 4:顯示變換后圖形。
4.2檢測(cè)結(jié)果
待檢測(cè)圖片如圖1所示,包括3個(gè)白球和1個(gè)黑球,檢測(cè)后的結(jié)果如圖4所示,能夠檢測(cè)出4個(gè)球的位置,多次檢測(cè)證明,檢測(cè)誤差在3%之內(nèi)。
圖1 待檢測(cè)圖像
圖2 檢測(cè)結(jié)果
參考文獻(xiàn)
[1]楊丹,趙海濱,龍哲等.MATLAB圖像處理實(shí)例詳解[M].北京:清華大學(xué)出版社,2013.
[2]薛山.MATLAB基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2011.
[3]王耀南.計(jì)算機(jī)圖像處理與識(shí)別技術(shù)[M].北京:高等教育出版社,2001:11-281.
作者簡(jiǎn)介
李博學(xué)(1997—),男,遼寧沈陽(yáng)人,在讀本科生,研究方向:圖像處理與識(shí)別。
李鶴(通訊作者),男,遼寧省沈陽(yáng)人,講師,就職于沈陽(yáng)工學(xué)院信息與控制學(xué)院。研究方向:人工智能算法。