-
大小: 3KB文件類型: .m金幣: 1下載: 0 次發(fā)布日期: 2021-06-08
- 語言: Matlab
- 標(biāo)簽:
資源簡介
把圖像信息轉(zhuǎn)移到參數(shù)空間,設(shè)置一些參數(shù),就能得到圖像的圓心坐標(biāo)和半徑
代碼片段和文件信息
function???[hough_spacehough_circlepara]=hough_circle(BWstep_rstep_angler_minr_maxp)?
%?input
%?BW:二值圖像;
%?step_r:檢測的圓半徑步長
%?step_angle:角度步長,單位為弧度
%?r_min:最小圓半徑
%?r_max:最大圓半徑
%p:以p*hough_space的最大值為閾值,p取0,1之間的數(shù)
%
%?output
%?hough_space:參數(shù)空間,h(abr)表示圓心在(ab)半徑為r的圓上的點數(shù)
%?hough_circl:二值圖像,檢測到的圓
%?para:檢測到的圓的圓心、半徑
[mn]?=?size(BW);
size_r?=?round((r_max-r_min)/step_r)+1;
size_angle?=?round(2*pi/step_angle);
hough_space?=?zeros(mnsize_r);
[rowscols]?=?find(BW)
ecount?=?size(rows);
%?Hough變換
%?將圖像空間(xy)對應(yīng)到參數(shù)空間(abr)
%?a?=?x-r*cos(angle)
%?b?=?y-r*sin(angle)
for?i=1:ecount
????for?r=1:size_r
????????for?k=1:size_angle
????????????a?=?round(rows(i)-(r_min+(r-1)*step_r)*cos(k*step_angle));
????????????b?=?round(cols(i)-(r_min+(r-1)*step_r)*sin(k*step_angle));
????????????if(a>0&a<=m&b>0&b<=n)
????????????????hough_space(abr)?=?hough_space(abr)+1;
????????????end
????????end
????end
end
%?搜索超過閾值的聚集點
max_para?=?max(max(max(hough_space)));
index?=?find(hough_space>=max_para*p);
length?=?size(index);
hough_circle?=?false(mn);
for?i=1:ecount
????for?k=1:length
????????par3?=?floor(index(k)/(m*n))+1;
????????par2?=?floor((index(k)-(par3-1)*(m*n))/m)+1;??
????????par1?=?index(k)-(
評論
共有 條評論