当前位置: 首页 > 专利查询>福州大学专利>正文

一种基于Hough变换的圆检测方法技术

技术编号:10905508 阅读:119 留言:0更新日期:2015-01-14 14:40
本发明专利技术涉及一种基于Hough变换的圆检测方法,其特征在于,先提取图像中8连通的边缘点链;然后对满足点数条件的边缘链进行多次取点,计算其对应的圆参数;对得到的圆参数集,筛选出出现次数较高者,再利用梯度信息在一定范围内的半径对圆心进行投票;对得到的圆心累加器,筛选出符合条件的候选圆心,计算所有边缘点到其的距离,取其中出现次数最多且满足条件的半径作为该圆的半径。本发明专利技术所提出的一种基于Hough变换的圆检测方法,先用取样到的点估计圆的半径值,再在所得的半径值的小邻域范围内用梯度信息加速投票过程,有效地减小了运算量,提高检测出真圆的概率。

【技术实现步骤摘要】
一种基于Hough变换的圆检测方法
本专利技术涉及数字图像处理、模式识别领域,特别是一种基于Hough变换的圆检测方法。
技术介绍
在模式识别、计算机视觉和逆向工程等众多领域中,常常需要将场景或图像中的圆形图形检测出来,以达到识别定位目标和矢量化等目的。快速而准确地检测出圆及其参数是计算机视觉和模式识别中的一项重要研究内容。目前常见的圆检测方法有基于环路积分的圆检测算法、基于遗传算法的圆检测方法、基于存在概率的圆检测方法和基于Hough变换的圆检测方法等。其中,标准Hough变换(SHT)检测圆是一种最传统的检测算法。它的最大优点是:对噪声不敏感,检测后可有效去噪;而且在圆变形,甚至部分区域丢失的情况下仍然可以得到比较理想的结果。Hough变换的基本思想是将图像空间中具有一定关系的像元进行聚类.寻找能把这些像元用某一解析形式联系起来的参数空间累积对应点。但由于圆有3个自由参数,需在三维参数空间中进行累积,使得这种做法因计算量和内存需求量过大而不合实际。为了减小内存和消耗时间,尽可能的减小参与Hough变换的点数和降低累加器的维数是关键。如有学者提出随机Hough变换法,利用随机采样到的不共线的三点来计算圆的参数,可以很大程度地减小内存消耗,这种算法在处理简单图像时性能很好,但是在处理复杂图像时随机采样引入大量的无效采样和累积,使算法的性能下降。再有利用边界像素的灰度梯度信息,估计出边缘点的角度,利用角度信息约束投票的方向,从而降低运算量。这种算法与标准Hough变换相比,抗干扰能力有所下降,待求的目标圆在累加器中的目标累加和大大降低,容易造成与干扰点形成的极大值接近,甚至被超越,从而造成错误的判断。
技术实现思路
本专利技术的目的在于提供一种利用Hough变换投票机制来检测图像中的圆的方法,以解决常规图像中圆的检测识别存在的问题。为实现上述目的,本专利技术的技术方案是:一种基于Hough变换的圆检测方法,其特征在于,按如下步骤实现:S1:对输入的灰度图像进行滤波去噪后,用Canny算子提取该灰度图像的边缘,并计算边缘点的梯度向量,然后对边缘进行8连通的轮廓跟踪,得到n条8连通边缘链C[n],n为大于或等于1的正整数;同时,构建一个与输入的灰度图像大小相同的二维圆心坐标累加器矩阵,且该二维圆心坐标累加器矩阵的元素均初始化为0;S2:构建圆链表;所述圆链表的链表节点包括:圆心坐标(x,y)、圆心半径r以及圆累加值a,且所述圆链表初始化时为空;取所述边缘链C[n]中的一条边缘链C[k],且1≤k≤n,k为正整数;若该边缘链C[k]包含的点数小于阈值Tl,则该边缘链不作处理,继续取下一条边缘;否则作如下处理:计算该边缘链C[k]的取点步长范围[Dkmin,Dkmax],Dkmin、Dkmax均为正整数;然后从Dkmin开始,令变量D依次取[Dkmin,Dkmax]中的每一个整数值,对每次变量D的对应值,从边缘链C[k]中的第一个点Pk1开始,以该次变量D的对应值为步长在边缘链C[k]中连续取样三点,得到四个点,其中前三点用于计算圆心坐标(x,y)和半径r,在有解的情况计算第四点到圆心的距离d与半径r的差值Δd;如果|Δd|小于等于阈值ΔD,则在圆链表中查找与此圆相近的圆,若找到则将圆链表中的对应的圆累加值a增1,否则将该圆插入圆链表中;从边缘链C[k]的第二个点Pk2开始以该次取值后的变量D为步长重复以上过程,直至所取的点达到边缘链C[k]的尾部;然后以变量D取[Dkmin,Dkmax]的下一个值,并以该次变量D的对应值为步长重复上述处理,直至步长取到Dkmax;S3:对步骤S2中与边缘链C[k]对应的圆链表,对其节点按圆心半径r大小进行升序排列;然后从第一个节点开始,如果该节点中圆的累加值a大于整数阈值M,则对步骤S1中所构建的圆心坐标累加器矩阵中的每一个元素,如果其与边缘链C[k]中的某个边缘点的距离处于[r-2,r+2]范围内,且位于该边缘点的梯度方向或梯度负方向,则对该元素的累加器值进行加1操作。然后取下一条边缘链重复步骤S2和步骤S3,直至处理完全部边缘链;S4:遍历圆心累加器矩阵,进行4邻域的非极大值抑制,然后选择圆心累加器中累加器值大于阈值TM的圆心作为候选圆心,存入候选圆心链表,并根据该候选圆心链表中候选圆心累加器,对该候选圆心链表按累加器值进行降序排列;S5:对步骤S4中得到的降序排列的候选圆心链表,依次取每一个候选圆心,并对应构建半径累加器,半径累加器所有元素初始化为0;对边缘链C[n]中的每一个点,计算其与候选圆心的距离l,并将与l最接近的正整数为表示为dl,若dl不大于半径累加器的长度R,则将半径累加器中第dl个累加器,即第dl个元素的值加1,否则不作处理,直至处理完边缘链C[n]中所有点;然后遍历半径累加器,若其第r个元素的值大于阈值TACCM,则认为找到了一个真圆,其圆心坐标等于对应候选圆心坐标且半径等于r,将该圆存入真圆链表中,并将属于该圆的边缘点全部去除;若不存在符合条件的半径,则取下一个候选圆心重复以上过程,直到处理完候选圆心链表中的所有圆心。在本专利技术一实施例中,在所述步骤S2中,取点步长范围额计算方法为:设边缘链点数为Nk,则Dkmin取为Nk/T1和N1中的较大者,Dkmax取为Nk/T2和N2中的较小者,如果Dkmin>Dkmax,则交换两者的值,其中T1、N1、T2、N2均是预先设定的阈值;且在所述步骤S2中,仅保留第四点到圆心的距离d与半径r的差值Δd小于等于阈值ΔD的圆参数。在本专利技术一实施例中,在步骤S5中,半径累加器的长度R为原图像高、宽中的较大者,且所构建的半径累加器是包含R个元素的一维矩阵,其第i个元素就是半径为i的累加器,其中,1≤i≤R;且阈值TACCM的计算方法为TACCM≥k*r,r为对应候选圆心的半径,k为预设常系数。相较于现有技术,本专利技术具有以下有益效果:本专利技术所提出的一种基于Hough变换的圆检测方法,通过利用Hough变换投票机制来检测图像中的圆,先通过取样到的点估计圆的半径值,以确定可能存在的圆的半径,然后根据梯度信息仅对这些半径投票,即在所得的半径值的小邻域范围内用梯度信息加速投票过程,以减小运算量,有效地减小了投票范围和噪声的影响,使得真圆更容易被检测出来,提高了圆检测的正确性。附图说明图1为本专利技术中一种基于Hough变换的圆检测方法的流程图。图2为本专利技术中输入欲提取圆的灰度图像。图3为本专利技术中经过Canny算子提取的边缘图像。图4为本专利技术中提取出的圆。具体实施方式下面结合附图,对本专利技术的技术方案进行具体说明。本专利技术提供一种基于Hough变换的圆检测方法,其特征在于,如图1所示,按如下步骤实现:S1:对输入的灰度图像进行滤波去噪后,用Canny算子提取该灰度图像的边缘,并计算边缘点的梯度向量,然后对边缘进行8连通的轮廓跟踪,得到n条8连通边缘链C[n],n为大于或等于1的正整数;同时,构建一个与输入的灰度图像大小相同的二维圆心坐标累加器矩阵,且该二维圆心坐标累加器矩阵的元素均初始化为0;S2:构建圆链表;所述圆链表的链表节点包括:圆心坐标(x,y)、圆心半径r以及圆累加值a,且所述圆链表初始化时为空;取所述边缘链C[n]中的一条边缘本文档来自技高网
...
一种基于Hough变换的圆检测方法

【技术保护点】
一种基于Hough变换的圆检测方法,其特征在于,按如下步骤实现:S1:对输入的灰度图像进行滤波去噪后,用Canny算子提取该灰度图像的边缘,并计算边缘点的梯度向量,然后对边缘进行8连通的轮廓跟踪,得到n条8连通边缘链C[n],n为大于或等于1的正整数;同时,构建一个与输入的灰度图像大小相同的二维圆心坐标累加器矩阵,且该二维圆心坐标累加器矩阵的元素均初始化为0;S2:构建圆链表;所述圆链表的链表节点包括:圆心坐标(x,y)、圆心半径r以及圆累加值a,且所述圆链表初始化时为空;取所述边缘链C[n]中的一条边缘链C[k],且1≤k≤n,k为正整数;若该边缘链C[k]包含的点数小于阈值Tl,则该边缘链不作处理,继续取下一条边缘;否则作如下处理:计算该边缘链C[k]的取点步长范围[Dk min,Dk max],Dk min、Dk max均为正整数;然后从Dk min开始,令变量D依次取[Dk min,Dk max]中的每一个整数值,对每次变量D的对应值,从边缘链C[k]中的第一个点Pk1开始,以该次变量D的对应值为步长在边缘链C[k]中连续取样三点,得到四个点,其中前三点用于计算圆心坐标(x,y)和半径r,在有解的情况计算第四点到圆心的距离d与半径r的差值Δd;如果|Δd|小于等于阈值ΔD,则在圆链表中查找与此圆相近的圆,若找到则将圆链表中的对应的圆累加值a增1,否则将该圆插入圆链表中;从边缘链C[k]的第二个点Pk2开始以该次取值后的变量D为步长重复以上过程,直至所取的点达到边缘链C[k]的尾部;然后以变量D取[Dk min,Dk max]的下一个值,并以该次变量D的对应值为步长重复上述处理,直至步长取到Dk max;S3:对步骤S2中与边缘链C[k]对应的圆链表,对其节点按圆心半径r大小进行升序排列;然后从第一个节点开始,如果该节点中圆的累加值a大于整数阈值M,则对步骤S1中所构建的圆心坐标累加器矩阵中的每一个元素,如果其与边缘链C[k]中的某个边缘点的距离处于[r‑2,r+2]范围内,且位于该边缘点的梯度方向或梯度负方向,则对该元素的累加器值进行加1操作;然后取下一条边缘链重复步骤S2和步骤S3,直至处理完全部边缘链;S4:遍历圆心累加器矩阵,进行4邻域的非极大值抑制,然后选择圆心累加器中累加器值大于阈值TM的圆心作为候选圆心,存入候选圆心链表,并根据该候选圆心链表中候选圆心累加器,对该候选圆心链表按累加器值进行降序排列;S5:对步骤S4中得到的降序排列的候选圆心链表,依次取每一个候选圆心,并对应构建半径累加器,半径累加器所有元素初始化为0;对边缘链C[n]中的每一个点,计算其与候选圆心的距离l,并将与l最接近的正整数为表示为dl,若dl不大于半径累加器的长度R,则将半径累加器中第dl个累加器,即第dl个元素的值加1,否则不作处理,直至处理完边缘链C[n]中所有点;然后遍历半径累加器,若其第r个元素的值大于阈值TACCM,则认为找到了一个真圆,其圆心坐标等于对应候选圆心坐标且半径等于r,将该圆存入真圆链表中,并将属于该圆的边缘点全部去除;若不存在符合条件的半径,则取下一个候选圆心重复以上过程,直到处理完候选圆心链表中的所有圆心。...

【技术特征摘要】
1.一种基于Hough变换的圆检测方法,其特征在于,按如下步骤实现:S1:对输入的灰度图像进行滤波去噪后,用Canny算子提取该灰度图像的边缘,并计算边缘点的梯度向量,然后对边缘进行8连通的轮廓跟踪,得到n条8连通边缘链C[n],n为大于或等于1的正整数;同时,构建一个与输入的灰度图像大小相同的二维圆心坐标累加器矩阵,且该二维圆心坐标累加器矩阵的元素均初始化为0;S2:构建圆链表;所述圆链表的链表节点包括:圆心坐标(x,y)、圆心半径r以及圆累加值a,且所述圆链表初始化时为空;取所述边缘链C[n]中的一条边缘链C[k],且1≤k≤n,k为正整数;若该边缘链C[k]包含的点数小于阈值Tl,则该边缘链不作处理,继续取下一条边缘;否则作如下处理:计算该边缘链C[k]的取点步长范围[Dkmin,Dkmax],Dkmin、Dkmax均为正整数;然后从Dkmin开始,令变量D依次取[Dkmin,Dkmax]中的每一个整数值,对每次变量D的对应值,从边缘链C[k]中的第一个点Pk1开始,以该次变量D的对应值为步长在边缘链C[k]中连续取样三点,得到四个点,其中前三点用于计算圆心坐标(x,y)和半径r,在有解的情况计算第四点到圆心的距离d与半径r的差值Δd;如果|Δd|小于等于阈值ΔD,则在圆链表中查找与此圆相近的圆,若找到则将圆链表中的对应的圆累加值a增1,否则将该圆插入圆链表中;从边缘链C[k]的第二个点Pk2开始以该次取值后的变量D为步长重复以上过程,直至所取的点达到边缘链C[k]的尾部;然后以变量D取[Dkmin,Dkmax]的下一个值,并以该次变量D的对应值为步长重复上述处理,直至步长取到Dkmax;S3:对步骤S2中与边缘链C[k]对应的圆链表,对其节点按圆心半径r大小进行升序排列;然后从第一个节点开始,如果该节点中圆的累加值a大于整数阈值M,则对步骤S1中所构建的圆心坐标累加器矩阵中的每一个元素,如果其与边缘链C[k]中的某个边缘点的距离处于[r-2,r+2]范围内...

【专利技术属性】
技术研发人员:郭太良林志贤林金堂李福山叶芸郭明勇李滨
申请(专利权)人:福州大学
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1