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