一种基于直线段的圆检测方法技术

技术编号:14234213 阅读:142 留言:0更新日期:2016-12-21 02:50
本发明专利技术提供了一种基于直线段的圆检测方法,该方法包括如下步骤:步骤S1,对输入图像进行预处理;步骤S2,提取图像中包含的直线段,获得由直线段组成的集合;步骤S3,在直线段集合中搜索,检测出候选圆,确定圆心和半径;步骤S4,验证候选圆,输出检测到的真实圆。本发明专利技术采用基于直线段的方法检测圆,避免直接利用边缘点进行检测,克服已有技术计算复杂度高、存储量大的缺点,具有检测速度快、准确性高等特点,可应用于对实时性要求较高的应用场景。

Circle detection method based on straight line segment

The present invention provides a method for circle detection based on straight-line segments, the method comprises the following steps: step S1, preprocessing the input image; step S2, including straight line segments are extracted from the image, get set consisting of straight line segments; step S3, the search in the line segment set, detect the candidate circle. Determine the center and radius; step S4, verify the candidate circle, real circle detected output. The invention adopts the method of straight line segments based on circle detection, avoid direct edge point detection, the high computational complexity and large memory capacity shortcomings, with high detection speed, high accuracy, can be used in the real-time application scenarios.

【技术实现步骤摘要】

本专利技术涉及计算机视觉与模式识别、移动机器人目标检测识别等,尤其涉及圆检测方法。
技术介绍
图像检测领域中,几何特征是重要的图像特征。其中圆形是在自然环境和人造环境中都极其常见的一种图像几何特征。圆检测广泛应用于计算机视觉与模式识别、物体检测、生物特征识别、道路标志检测等诸多领域。目前圆检测方法主要分为两类:确定性方法和随机性方法。其中,确定性方法大多是基于霍夫变换(HT,Hough Transform),利用边缘检测器获取边缘信息,再推断出圆心和半径。随机性方法主要有随机霍夫变换(RHT,Random Hough Transform)——对边缘图像中边缘点进行随机采样,采用多对一映射减少计算复杂度;基于遗传算法(GA,Genetic Algorithm)的圆检测——利用遗传算法对自然图像中多个圆(即使存在残缺)同时检测;基于随机抽样一致性(RANSAC,Random Sample Consensus)技术的圆检测等。传统圆霍夫变换(CHT,Circle Hough Transform)方法应用广泛,但主要缺点是计算复杂度随参数空间维数呈几何级数增长,计算量和存储量都较大,难以满足实时性。虽然出现基于模板法(TM,Template Matching)、最小二乘法(LS,Least Square)等方法克服霍夫变换法的缺点,但没有根本解决霍夫变换的重要缺陷。随机性圆检测方法增加了圆检测的鲁棒性,但复杂度仍然较大。
技术实现思路
为了解决现有技术中问题,本专利技术提供了一种。一种基于直线段的圆检测方法,该方法包括如下步骤:步骤S1,对输入图像进行预处理;步骤S2,提取图像中包含的直线段,获得由直线段组成的集合;步骤S3,在直线段集合中搜索,检测出候选圆,确定圆心和半径;步骤S4,验证候选圆,输出检测到的真实圆。作为本专利技术的进一步改进,所述步骤S1,对输入图像进行预处理的方法,具体包括:如果输入图像为三通道的RGB图像,将之转换成单通道的灰度图;对灰度图进行二维高斯滤波,滤除图像噪声;根据尺度因子λ缩小图像二维尺度,消除椒盐噪声引起的直线段误检,尺度因子λ为0.5~0.8。作为本专利技术的进一步改进,所述步骤S2,提取图像中的直线段方法,具体包括以下步骤:步骤S21,对图像中的每个像素计算梯度和梯度角,根据梯度值的大小,将像素点排列成包含梯度角信息的有序点集PointSets,其中根据梯度阈值ρ,去除梯度过小的像素点;步骤S22,对有序点集PointSets进行搜索,对某一个标记为未使用UNUSED的像素点,在其邻域内搜索将梯度角与主梯度角相差小于误差角τ的像素点添加到直线段可能域LineRegion中,并标记该点已经被使用USED,更新主梯度角;然后递归地,对LineRegion中的每一个点,在其领域中搜索梯度角与主梯度角相差小于误差角τ的像素点并加入到LineRegion中,直到无法再加入新的点到LineRegion中;步骤S23,直线段可能域LineRegion中的所有点代表了提取的一条直线段Line,利用LineRegion中的所有点计算出直线段Line的起点Start、终点End、宽度Width以及方向角θline,将具有上述参数的有向直线段Line加入到提取出的直线段集合LineSets中;步骤S24,重复步骤S22~S23,直到全部有序点集PointSets中都已搜索完毕,获得直线段集合LineSets。作为本专利技术的进一步改进,步骤S3,检测候选圆的方法,具体包括以下步骤:步骤S31,对直线段集合LineSets进行搜索,对某一个标记为未使用UNUSED的直线段Line[i],标记Line[i]已被使用USED,在其终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+1]:(1)该直线段Line[i+1]未被使用;(2)该直线段Line[i+1]的起点Start在直线段Line[i]的终点End的邻域内;(3)直线段Line[i+1]的方向角减去Line[i]的方向角小于一定阈值γ;若没有搜索到满足上述3条约束的直线段Line[i+1],返回重新开始搜索,若搜索到满足约束的直线段Line[i+1],开始步骤S32;步骤S32,在Line[i+1]的终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+2]:(1)该直线段Line[i+2]未被使用;(2)该直线段Line[i+2]的起点Start在直线段Line[i+1]的终点End的邻域内;(3)直线段Line[i+2]的方向角减去Line[i+1]的方向角的差值小于一定阈值AngleThresh;(4)直线段Line[i+2]的方向角减去Line[i+1]的方向角的差值的符号与直线段Line[i+1]的方向角减去Line[i]的方向角的差值的符号相同;若没有满足上述4条约束的直线段Line[i+2],返回重新开始搜索,若搜索到满足上述4条约束的直线段Line[i+2],开始步骤S33;步骤S33,类似步骤S32搜索Line[i+2]的方式,根据Line[i+2]找到第4条满足约束的的直线段Line[i+3];步骤S34,类似步骤S33搜索Line[i+3]的方式,根据Line[i+3]找到第5条满足约束的的直线段Line[i+4];步骤S35,利用5条直线段Line[i]~Line[i+4]的起点Start和终点End,共10个点,进行最小二乘圆拟合,求出圆心和半径,得到一个候选圆,标记直线段Line[i+1]~Line[i+4]已被使用USED;步骤S36,重新开始步骤S31~S35,直到直线段集合LineSets中的所有直线段都搜索完毕,标记为已被使用,获得候选圆的集合CircleSets。作为本专利技术的进一步改进,步骤S4,验证候选圆的方法,具体包括:步骤S41,对于候选圆集合CircleSets进行搜索,若某个候选圆的圆心与另一个候选圆的圆心的距离小于一个阈值CenterDistThresh,且它们的半径的差值小于一个阈值RadiusDistThresh,则表明检测到重复的圆,删掉一个候选圆,更新候选圆集合CircleSets;步骤S42,在更新的候选圆集合CircleSets中逐一进行搜索,对某个候选圆Circle[i],根据其圆心(Ai,Bi)和半径Ri大小,在半径均值为Ri的圆环区域内搜索,若在四个象限中的至少三个象限圆环区域内都搜索到存在直线段,则表明该候选圆是一个真实圆,而不是一个圆弧段;步骤S43,输出检测到的包含圆心位置和半径大小的真实圆。作为本专利技术的进一步改进,设像素点p(x,y)的灰度值为I(x,y),其梯度值G(x,y)和梯度角θ按如下公式计算:gx(x,y)=[I(x+1,y)-I(x,y)+I(x+1,y+1)-I(x,y+1)]/2,gy(x,y)=[I(x,y+1)-I(x,y)+I(x+1,y+1)-I(x+1,y)]/2,作为本专利技术的进一步改进,步骤S22,从有序的像素点集合PointSets中获取一个种子像素点p(x,y),将其加入到直线段可能域LineRegion中,并将种子像素点p(x,y)的梯度角作为LineRegion的角度θreg,然后对LineRegion中的每本文档来自技高网...
一种基于直线段的圆检测方法

【技术保护点】
一种基于直线段的圆检测方法,其特征在于,该方法包括如下步骤:步骤S1,对输入图像进行预处理;步骤S2,提取图像中包含的直线段,获得由直线段组成的集合;步骤S3,在直线段集合中搜索,检测出候选圆,确定圆心和半径;步骤S4,验证候选圆,输出检测到的真实圆。

【技术特征摘要】
1.一种基于直线段的圆检测方法,其特征在于,该方法包括如下步骤:步骤S1,对输入图像进行预处理;步骤S2,提取图像中包含的直线段,获得由直线段组成的集合;步骤S3,在直线段集合中搜索,检测出候选圆,确定圆心和半径;步骤S4,验证候选圆,输出检测到的真实圆。2.根据权利要求1所述的一种基于直线段的圆检测方法,其特征在于:所述步骤S1,对输入图像进行预处理的方法,具体包括:如果输入图像为三通道的RGB图像,将之转换成单通道的灰度图;对灰度图进行二维高斯滤波,滤除图像噪声;根据尺度因子λ缩小图像二维尺度,消除椒盐噪声引起的直线段误检,尺度因子λ为0.5~0.8。3.根据权利要求2所述的一种基于直线段的圆检测方法,其特征在于:所述步骤S2,提取图像中的直线段方法,具体包括以下步骤:步骤S21,对图像中的每个像素计算梯度和梯度角,根据梯度值的大小,将像素点排列成包含梯度角信息的有序点集PointSets,其中根据梯度阈值ρ,去除梯度过小的像素点;步骤S22,对有序点集PointSets进行搜索,对某一个标记为未使用UNUSED的像素点,在其邻域内搜索将梯度角与主梯度角相差小于误差角τ的像素点添加到直线段可能域LineRegion中,并标记该点已经被使用USED,更新主梯度角;然后递归地,对LineRegion中的每一个点,在其领域中搜索梯度角与主梯度角相差小于误差角τ的像素点并加入到LineRegion中,直到无法再加入新的点到LineRegion中;步骤S23,直线段可能域LineRegion中的所有点代表了提取的一条直线段Line,利用LineRegion中的所有点计算出直线段Line的起点Start、终点End、宽度Width以及方向角θline,将具有上述参数的有向直线段Line加入到提取出的直线段集合LineSets中;步骤S24,重复步骤S22~S23,直到全部有序点集PointSets中都已搜索完毕,获得直线段集合LineSets。4.根据权利要求3所述的一种基于直线段的圆检测方法,其特征在于:步骤S3,检测候选圆的方法,具体包括以下步骤:步骤S31,对直线段集合LineSets进行搜索,对某一个标记为未使用UNUSED的直线段Line[i],标记Line[i]已被使用USED,在其终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+1]:(1)该直线段Line[i+1]未被使用;(2)该直线段Line[i+1]的起点Start在直线段Line[i]的终点End的邻域内;(3)直线段Line[i+1]的方向角减去Line[i]的方向角小于一定阈值γ;若没有搜索到满足上述3条约束的直线段Line[i+1],返回重新开始搜索,若搜索到满足约束的直线段Line[i+1],开始步骤S32;步骤S32,在Line[i+1]的终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+2]:(1)该直线段Line[i+2]未被使用;(2)该直线段Line[i+2]的起点Start在直线段Line[i+1]的终点End的邻域内;(3)直线段Line[i+2]的方向角减去Line[i+1]的方向角的差值小于一定阈值AngleThresh;(4)直线段Line[i+2]的方向角减去Line[i+1]的方向角的差值的符号与直线段Line[i+1]的方向角减去Line[i]的方向角的差值的符号相同;若没有满足上述4条约束的直线段Line[i+2],返回重新开始搜索,若搜索到满足上述4条约束的直线段Line[i+2],开始步骤S33;步骤S33,类似步骤S32搜索Line[i+2]的方式,根据Line[i+2]找到第4条满足约束的的直线段Line[i+3];步骤S34,类似步骤S33搜索Line[i+3]的方式,根据Line[i+3]找到第5条满足约束的的直线段Line[i+4];步骤S35,利用5条直线段Line[i]~Line[i+4]的起点Start和终点End,共10个点,进行最小二乘圆拟合,求出圆心和半径,得到一个候选圆,标记直线段Line[i+1]~Line[i+4]已被使用USED;步骤S36,重新开始步骤S31~S35,直到直线段集合LineSets中的所有直线段都搜索完毕,标记为已被使用,获得候选圆的集合CircleSets。5.根据权利要求4所述的一种基于直线段的圆检测方法,其特征在于:步骤S4,验证候选圆的方法,具体包括:步骤S41,对于候选圆集合CircleSets进行搜索,若某个候选圆的圆心与另一个候选圆的圆心的距离小于一个阈值CenterDistThresh,且它们的半径的差值小于一个阈值RadiusDistThresh,则表明检测到重复的圆,删掉一个候选圆,更新候选圆集合CircleSets;步骤S42,在更新的候选圆集合CircleSets中逐一进行搜索,对某个候选圆Circle[i],根据其圆心(Ai,Bi)和半径Ri大小,在半径均值为Ri的圆环区域内搜索,若在四个象限中的至少三个象限圆环区域内都搜索到存在直线段,则表明该候选圆是一个真实圆,而不是一个圆弧段;步骤S43,输出检测到的包含圆心位置和半径大小的真实圆。6.根据权利要求3所述的一种基于直线段的圆检测方法,其特征在于:设像素点p(x,y)的灰度值为I(x,y),其梯度值G(x,y)和梯度角θ按如下公式计算: g x ( x , y ) = [ I ( x + 1 , y ) - I ( x , y ) + I ( x + 1 , y + 1 ) - I ( x , y + 1 ) ] / 2 , g y ( x , y ) = [ I ( x , y + 1 ) - I ( x , y ) + I ( x + 1 , y + 1 ) - I ( x + 1 , y ) ] / 2 , θ = arctan ( g x ( x , y ) - g y ( x , y ) ) , G ( x , y ) = g x 2 ( x , y ) + g y 2 ( x , y ) . - - - ( 0.1 ) . ]]>7.根据权利要求6所述的一种基于直线段的圆检测方法,其特征在于:步骤S22,从有序的像素点集合PointSets中获取一个种子像素点p(x,y),将其加入到直线段可能域LineRegion中,并将种子像素点p(x,y)的梯度角作为LineRegion的角度θreg,然后对LineRegion中的每个像素点,在其3×3邻域中搜索满足以下约束的点:(1)该点未被使用UNUSED,(2)该点的梯度角θi与θreg之差小于角度误差角τ,即|θreg-θi|<τ;将满足约束的点加入到LineRegion中,标记该点被使用USED,按下面公式更新θreg:angx=cos(θreg),angy=sin(θreg),angx=angx+cos(θi),angy=angy+sin(θi),θreg=arctan(angx/angy). (0.2)按上述方式搜索,直到没有新的点加入到LineRegion中,判断LineRegion中的点数,若点数小于阈值Nthresh则抛弃该LineRegion。8.根据权利要求7所述的一种基于直线段的圆检测方法,其特征在于:步骤S23,根据直线段可能域LineRegion计算直线段参数,包括中心位置、起点、终点、方向角度和宽度,由LineRegion代表的直线段具有一定宽度,可以看成是一个小矩形区域,其中心位置为rec(cx,cy),计算方法是利用LineRegion中的所有点,根据所有点的梯度值进行加权平均,如下公式: c x = Σ j ∈ L i n e Re g i o n G ( j ) x ( j ) Σ j ∈ L i ...

【专利技术属性】
技术研发人员:邓富城龚莉杰张猛
申请(专利权)人:深圳市寒武纪智能科技有限公司
类型:发明
国别省市:广东;44

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

1