霍夫变换检测直线圆流程+

霍夫变换检测直线圆流程+

ID:5513712

大小:101.00 KB

页数:3页

时间:2017-12-16

霍夫变换检测直线圆流程+_第1页
霍夫变换检测直线圆流程+_第2页
霍夫变换检测直线圆流程+_第3页
资源描述:

《霍夫变换检测直线圆流程+》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Hough变换直线检测是直接按照hough变换的定义来进行的,算法如下:1)对原始的图像进行二值化,假设0代表背景,1代表物体特征点;2)在参数空间,里建立一个累加的数组,并且置数组中的每一个元素的初值都为零;对于二值图像中每个以1表示的点,我们让取遍轴上所有可能的值,并根据式(3-3)计算对应的;再根据与的值(假设都已经取整)对数组进行累加计算();3)然后对数组进行局部的峰值检测,得到被检测直线的参数和。上述的算法受直线中的间隙与噪声的影响较小,鲁棒性比较强,但其具有运算量太大的缺点,极端情况下,它的运算复杂度为。传统随机hough变换的具体算法如下:

2、(a)构造一个边缘点集,然后初始化参数单元集,循环的次数K=0;(b)从D中随机的选取3个点;(c)由这3个点解特征的参数;(d)在中寻找一个,使它满足,如果找到则转(f);否则就转(e);(e)将插入到中,其对应的计数值变为1,转(g);(f)将所对应的计数的值加1,如果小于指定阈值,转(g);否则就转(h);(g);如果,则结束;否则,转(b);(h)是候选圆的特征参数,如果该参数对应圆上的边缘的点数,转(i);(i)是真实的圆参数,把落在参数对应的特征上的点从中去除,然后判断已经检测到的圆的数目是否已达到规定的数目,若是就结束,否则的话重置,,转(b

3、)。其中是规定的检测一个圆的过程中所允许采样的最大的循环次数。为圆所必需的最小的点数,通常设为,其中λ是一个固定系数,是候选圆的半径。是参数空间中的参数单元的集合,它是一个动态的链表结构。是图像空间中落到了候选圆上的点数。%p:阈值,0,1之间的数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%output%hough_space:参数空间,h(a,b,r)表示圆心在(a,b)半径为r的圆上的点数%hough_circl:二值图像,检测到的圆%para:检测到的圆的圆心、半径[m,n]=size(BW);size_r=round((r

4、_max-r_min)/step_r)+1;size_angle=round(2*pi/step_angle);hough_space=zeros(m,n,size_r);[rows,cols]=find(BW);ecount=size(rows);%Hough变换%将图像空间(x,y)对应到参数空间(a,b,r)%a=x-r*cos(angle)%b=y-r*sin(angle)fori=1:ecount   forr=1:size_r       fork=1:size_angle           a=round(rows(i)-(r_min+(r

5、-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(a,b,r)=hough_space(a,b,r)+1;           end       end   endend%搜索超过阈值的聚集点max_para=max(max(max(hough_space)));index=find(hough

6、_space>=max_para*p);length=size(index);hough_circle=false(m,n);fori=1:ecount   fork=1:length       par3=floor(index(k)/(m*n))+1;       par2=floor((index(k)-(par3-1)*(m*n))/m)+1;       par1=index(k)-(par3-1)*(m*n)-(par2-1)*m;       if((rows(i)-par1)^2+(cols(i)-par2)^2<(r_min+(par3-

7、1)*step_r)^2+5&...               (rows(i)-par1)^2+(cols(i)-par2)^2>(r_min+(par3-1)*step_r)^2-5)           hough_circle(rows(i),cols(i))=true;       end   endend%打印检测结果fork=1:length   par3=floor(index(k)/(m*n))+1;   par2=floor((index(k)-(par3-1)*(m*n))/m)+1;   par1=index(k)-(par3-1

8、)*(m*n)-(par2-1)*m;   par3=r_min+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。