CN106157298A - 一种基于直线段的圆检测方法 - Google Patents

一种基于直线段的圆检测方法 Download PDF

Info

Publication number
CN106157298A
CN106157298A CN201610369782.5A CN201610369782A CN106157298A CN 106157298 A CN106157298 A CN 106157298A CN 201610369782 A CN201610369782 A CN 201610369782A CN 106157298 A CN106157298 A CN 106157298A
Authority
CN
China
Prior art keywords
straightway
line
circle
sigma
lineregion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610369782.5A
Other languages
English (en)
Other versions
CN106157298B (zh
Inventor
邓富城
龚莉杰
张猛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Hanwuji Intelligent Technology Co Ltd
Original Assignee
Shenzhen Hanwuji Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Hanwuji Intelligent Technology Co Ltd filed Critical Shenzhen Hanwuji Intelligent Technology Co Ltd
Priority to CN201610369782.5A priority Critical patent/CN106157298B/zh
Publication of CN106157298A publication Critical patent/CN106157298A/zh
Application granted granted Critical
Publication of CN106157298B publication Critical patent/CN106157298B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)

Abstract

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

Description

一种基于直线段的圆检测方法
技术领域
本发明涉及计算机视觉与模式识别、移动机器人目标检测识别等,尤其涉及圆检测方法。
背景技术
图像检测领域中,几何特征是重要的图像特征。其中圆形是在自然环境和人造环境中都极其常见的一种图像几何特征。圆检测广泛应用于计算机视觉与模式识别、物体检测、生物特征识别、道路标志检测等诸多领域。
目前圆检测方法主要分为两类:确定性方法和随机性方法。其中,确定性方法大多是基于霍夫变换(HT,Hough Transform),利用边缘检测器获取边缘信息,再推断出圆心和半径。随机性方法主要有随机霍夫变换(RHT,Random Hough Transform)——对边缘图像中边缘点进行随机采样,采用多对一映射减少计算复杂度;基于遗传算法(GA,GeneticAlgorithm)的圆检测——利用遗传算法对自然图像中多个圆(即使存在残缺)同时检测;基于随机抽样一致性(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中的每个像素点,在其3×3邻域中搜索满足以下约束的点:(1)该点未被使用UNUSED,(2)该点的梯度角θi与θreg之差小于角度误差角τ,即|θregi|<τ;将满足约束的点加入到LineRegion中,标记该点被使用USED,按下面公式更新θreg
angx=cos(θreg),
angy=sin(θreg),
angx=angx+cos(θi),
angy=angy+sin(θi),
θreg=arctan(angx/angy). (0.13)
按上述方式搜索,直到没有新的点加入到LineRegion中,判断LineRegion中的点数,若点数小于阈值Nthresh则抛弃该LineRegion。
作为本发明的进一步改进,
步骤S23,根据直线段可能域LineRegion计算直线段参数,包括中心位置、起点、终点、方向角度和宽度,由LineRegion代表的直线段具有一定宽度,可以看成是一个小矩形区域,其中心位置为rec(cx,cy),计算方法是利用LineRegion中的所有点,根据所有点的梯度值进行加权平均,如下公式:
直线段方向角θline由如下矩阵的最小特征值有关的特征值计算出来:
假设上述公式中矩阵M的两个特征值为λ1≥λ2,则直线段方向角θline按一下公式计算:
θline=atan((λ2-mxx)/mxy) (0.16)
求得直线段方向角后,即知道直线段的方向,再对LineRegion中所有点遍历,计算该点到中心点沿直线段两个正交轴方向投影的距离,其中,最大距离lmax和最小的距离lmin的差即直线段的宽度width,起点Start和终点End的位置,通过如下公式计算:
xstart=cx+lmincos(θline),ystart=cy+lminsin(θline),
xend=cx+lmaxcos(θline),yend=cy+lmaxsin(θline). (0.17)。
作为本发明的进一步改进,步骤S35,利用5条直线段Line[i]~Line[i+4]的起点和终点,共10个点,记为(xi,yi),i=1,2,...10,采用最小二乘法拟合圆的参数,设圆的参数方程为:
(x-A)2+(y-B)2=R2 (0.18)
其中圆心(A,B),半径R,令:
可将公式(1.7)化为:
x2+y2+ax+by+c=0(0.20)
然后利用最小二乘法,可计算得到参数a、b和c:
其中,相关参数值为:
N=10;
D=N∑xiyi-∑xi∑yi,
进而可以拟合得到圆心和半径,然后求点(xi,yi),i=1,2,...10与拟合得到的圆心(A,B)的距离以及偏差δi=|di-R|,若偏差δi大于一定阈值μd,则表明拟合结果不理想,所选取的5条直线段不属于某个圆,返回步骤S34重新开始搜索,若偏差δi均小于一定阈值μd,则表明拟合结果合理,得到一个候选圆,标记直线段Line[i]~Line[i+4]已被使用USED,立即进入步骤S36。
本发明的有益效果是:
本发明采用基于直线段的方法检测圆,避免直接利用边缘点进行检测,克服已有技术计算复杂度高、存储量大的缺点,具有检测速度快、准确性高等特点,可应用于对实时性要求较高的应用场景。
与现有技术相比,本发明提出的基于直线段的圆检测方法的最大特点是不直接利用边缘点集合进行圆检测,而是利用直线段集合来进行圆检测。前者的重要缺点是边缘点的信息少,且边缘点数量很大(尤其是自然图像),对边缘点集合进行反复遍历,导致复杂度高。本发明提出的方法是首先采用一种快速高效的方法提取出包含更多信息的直线段,再利用直线段集合,根据圆的几何特性,通过最小二乘拟合得到圆的圆心和半径。该方法极大减小了圆检测的时间复杂度和空间复杂度,提高了检测速度和准确度,可应用于实时圆检测。
附图说明
图1是从圆形图中提取边缘直线段示例;
图2是本发明所述的快速圆检测方法的主要步骤;
图3是本发明所述直线段提取主要步骤;
图4是利用本发明的方法对示例图像提取直线段的结果;
图5是根据直线段集合检测候选圆的具体步骤;
图6是验证候选圆并输出候选圆的具体步骤;
图7是验证候选圆时直线段搜索域示意图;
图8是本发明对示例图像进行圆检测的结果。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明的基本前提是利用直线段来检测圆。利用本发明的直线段检测方法可将圆的边缘提取为一系列的直线段。众所周知,对于圆内接正多边形,当正多边形的边数足够大时,即可近似为该圆。因此,本发明对圆形物体图像进行直线段检测时,相当于是提取该圆的内接正多边形的各边,再通过这些边来恢复出圆。
下面结合一幅自然图像作为示例图像来进一步阐述。
步骤S1:输入图像预处理。首先判断输入图像是否为单通道的灰度图像,若不是,则将输入图像转换成单通道的灰度图像。输入图像为三通道的RGB图像,首先采用普通方法转换成单通道的灰度图像。然后,采用二维高斯滤波方法对灰度图像进行滤波,减小图像噪声。最后根据尺度因子λ(一般取0.5~0.8,大多数时候取0.8即可,无需调整此参数)对滤波后的图像进行尺度变换,最后得到尺度变化后的灰度图像。
步骤S2,提取图像中的直线段,具体步骤如图3所示。
步骤S21,对灰度图像的每一个像素值计算梯度值和梯度角,采用2×2掩模计算。设像素点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,
根据梯度值G(x,y)从大到小对像素点进行排序,其中,若G(x,y)<ρ,则将该像素点排除(ρ为梯度阈值),减少噪点和无意义的点。经过排序的像素点集合为PointSets。
步骤S22,从有序的像素点集合PointSets中获取一个种子像素点p(x,y),将其加入到直线段可能域LineRegion中,并将种子像素点p(x,y)的梯度角作为LineRegion的角度θreg,然后对LineRegion中的每个像素点,在其8邻域中搜索满足以下约束的点:(1)该点未被使用UNUSED,(2)该点的梯度角θi与θreg之差小于角度误差角τ,即|θregi|<τ。将满足约束的点加入到LineRegion中,标记该点被使用USED。按下面公式更新θreg
angx=cos(θreg),
angy=sin(θreg),
angx=angx+cos(θi), (0.24)
angy=angy+sin(θi),
θreg=arctan(angx/angy).
按上述方式搜索,直到没有新的点加入到LineRegion中。判断LineRegion中的点数,若点数小于阈值Nthresh则抛弃该LineRegion。
步骤S23,根据直线段可能域LineRegion计算直线段参数,包括中心位置、起点、终点、方向角度和宽度。由LineRegion代表的直线段具有一定宽度,可以看成是一个小矩形区域,其中心位置为rec(cx,cy),计算方法是利用LineRegion中的所有点,根据所有点的梯度值进行加权平均,如下公式:
直线段方向角θline由如下矩阵的最小特征值有关的特征值计算出来:
假设上述公式中矩阵M的两个特征值为λ1≥λ2,则直线段方向角θline按一下公式计算:
θline=atan((λ2-mxx)/mxy) (0.27)
求得直线段方向角后,即知道直线段的方向,再对LineRegion中所有点遍历,计算该点到中心点沿直线段两个正交轴方向投影的距离。其中,最大距离lmax和最小的距离lmin的差即直线段的宽度width,起点Start和终点End的位置,可通过如下公式计算:
步骤S24,重复步骤S22-S23,得到包含参数信息的直线段集合LineSets。利用本发明的方法对示例图像提取直线段的结果如图4所示。
步骤S3,根据直线段集合检测候选圆,具体步骤如图5所示。
步骤S31,从直线段集合LineSets中选取一条标记为未使用UNUSED的初始直线段Line[i],标记Line[i]已被使用USED,在其终点End附近邻域(如5×5)搜索是否存在一条直线段Line[i+1]满足以下约束条件:(1)该直线段Line[i+1]未被使用,即标记为UNUSED;(2)该直线段Line[i+1]的起点Start在直线段Line[i]的终点End的邻域内;(3)直线段Line[i+1]的方向角θline[i+1]减去Line[i]的方向角θline[i]小于一定阈值γ,即|θline[i+1]line[i]|<γ。若没有搜索到满足上述3条约束的直线段Line[i+1],返回重新选取一条标记为未使用UNUSED的初始直线段进行搜索。若搜索到满足约束的直线段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]的方向角的差值小于一定阈值,即|θline[i+2]line[i+1]|<γ;(4)sign(θline[i+2]line[i+1])与sign(θline[i+1]line[i])符号相同。
若没有满足上述4条约束的直线段Line[i+2],返回步骤S31重新开始搜索。若搜索到一条满足上述4条约束的直线段Line[i+2],立即开始步骤S33。
步骤S33,在Line[i+2]的终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+3]:(1)该直线段Line[i+3]未被使用;(2)该直线段Line[i+3]的起点Start在直线段Line[i+2]的终点End的邻域内;(3)直线段Line[i+3]的方向角减去Line[i+2]的方向角的差值小于一定阈值,即|θline[i+3]line[i+2]|<γ;(4)sign(θline[i+3]line[i+2])与sign(θline[i+2]line[i+1])符号相同。若没有满足上述4条约束的直线段Line[i+3],返回步骤S32重新开始搜索。若搜索到一条满足上述4条约束的直线段Line[i+2],立即开始步骤S34。
步骤S34,在Line[i+3]的终点End附近邻域搜索一条满足如下约束条件的直线段Line[i+4]:(1)该直线段Line[i+4]未被使用;(2)该直线段Line[i+4]的起点Start在直线段Line[i+2]的终点End的邻域内;(3)直线段Line[i+4]的方向角减去Line[i+3]的方向角的差值小于一定阈值,即|θline[i+4]line[i+3]|<γ;(4)sign(θline[i+4]line[i+3])与sign(θline[i+3]line[i+2])符号相同。
若没有满足上述4条约束的直线段Line[i+4],返回步骤S33重新开始搜索。若搜索到一条满足上述4条约束的直线段Line[i+4],立即开始步骤S35。
步骤S35,利用5条直线段Line[i]~Line[i+4]的起点和终点,共10个点,记为(xi,yi),i=1,2,...10,采用最小二乘法拟合圆的参数。设圆的参数方程为:
(x-A)2+(y-B)2=R2 (0.29)
其中圆心(A,B),半径R。令:
可将公式(1.7)化为:
x2+y2+ax+by+c=0(0.31)
然后利用最小二乘法,可计算得到参数a、b和c:
其中,相关参数值为:
N=10;
D=N∑xiyi-∑xi∑yi,
(0.33)
进而可以拟合得到圆心和半径。然后求点(xi,yi),i=1,2,...10与拟合得到的圆心(A,B)的距离以及偏差δi=|di-R|。若偏差δi大于一定阈值μd,则表明拟合结果不理想,所选取的5条直线段不属于某个圆,返回步骤S34重新开始搜索。若偏差δi均小于一定阈值μd,则表明拟合结果合理,得到一个候选圆,标记直线段Line[i]~Line[i+4]已被使用USED,立即进入步骤S36。
步骤S36,重新开始步骤S31~S35,直到直线段集合LineSets中的所有标记为UNUSED的直线段都搜索完毕。获得候选圆的集合CircleSets。
步骤S4,验证候选圆并输出候选圆,具体步骤如图6所示。
步骤S41,对候选圆集合CircleSets,选取一个候选圆,圆心(Ai,Bi)和半径Ri,搜索,若存在另一个候选圆,圆心(Aj,Bj)和半径Rj,满足以下关系:(1)两圆心距离小于一个阈值,dij<CenterDistThresh;(2)两圆半径之差小于一个阈值|Ri-Rj|<RadiusDistThresh;表明检测到重复的圆,应该删掉。最后得到更新后的候选圆集合CircleSets。
步骤S42,遍历更新后的候选圆集合CircleSets,对某个候选圆Circle[i],根据其圆心(Ai,Bi)和半径Ri大小,在半径均值为Ri的圆环区域内搜索,如图7所示,若在四个象限中的至少三个象限圆环区域内都搜索到存在直线段, 则表明该候选圆是一个真实圆,而不是一个圆弧段,否则删掉误检出的圆。更新候选圆集合CircleSets。
步骤S43,输出最后更新的候选圆集合CircleSets,即检测到的包含圆心位置和半径大小的真实圆。采用本发明对示例图像进行圆检测的结果如图8所示,正确检测出示例图中的两个圆,示例图大小271×240,检测运行时间为54ms(计算机内存2G,频率2.2GHz)。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (9)

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之差小于角度误差角τ,即|θregi|<τ;将满足约束的点加入到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 n e Re g i o n G ( j ) ,
c y = Σ j ∈ L i n e Re g i o n G ( j ) y ( j ) Σ j ∈ L i n e Re g i o n G ( j ) . - - - ( 0.3 )
直线段方向角θline由如下矩阵的最小特征值有关的特征值计算出来:
M = m x x m x y m x y m y y ,
m x x = Σ j ∈ L i n e Re g i o n G ( j ) ( x ( j ) - c x ) 2 Σ j ∈ L i n e Re g i o n G ( j ) ,
m y y = Σ j ∈ L i n e Re g i o n G ( j ) ( y ( j ) - c y ) 2 Σ j ∈ L i n e Re g i o n G ( j ) ,
m x y = Σ j ∈ L i n e Re g i o n G ( j ) ( ( j ) - c x ) ( y ( j ) - c y ) Σ j ∈ L i n e Re g i o n G ( j ) . - - - ( 0.4 )
假设上述公式中矩阵M的两个特征值为λ1≥λ2,则直线段方向角θline按一下公式计算:
θline=atan((λ2-mxx)/mxy) (0.5)
求得直线段方向角后,即知道直线段的方向,再对LineRegion中所有点遍历,计算该点到中心点沿直线段两个正交轴方向投影的距离,其中,最大距离lmax和最小的距离lmin的差即直线段的宽度width,起点Start和终点End的位置,通过如下公式计算:
xstart=cx+lmincos(θline),ystart=cy+lminsin(θline),
xend=cx+lmaxcos(θline),yend=cy+lmaxsin(θline). (0.6)。
9.根据权利要求8所述的一种基于直线段的圆检测方法,其特征在于:步骤S35,利用5条直线段Line[i]~Line[i+4]的起点和终点,共10个点,记为(xi,yi),i=1,2,...10,采用最小二乘法拟合圆的参数,设圆的参数方程为:
(x-A)2+(y-B)2=R2 (0.7)
其中圆心(A,B),半径R,令:
A = - a / 2 , B = - b / 2 , R = a 2 + b 2 - 4 c / 2 - - - ( 0.8 )
可将公式(1.7)化为:
x2+y2+ax+by+c=0(0.9)
然后利用最小二乘法,可计算得到参数a、b和c:
a = H D - E G C G - D 2 ,
b = H C - E D D 2 - G C ,
c = - Σ ( x i 2 + y i 2 ) + aΣx i + bΣy i N . - - - ( 0.10 )
其中,相关参数值为:
N=10;
C = NΣx i 2 - Σx i Σx i ,
D=NΣxiyi-ΣxiΣyi,
E = NΣx i 3 + NΣx i y i 2 - Σ ( x i 2 + y i 2 ) Σx i ,
G = NΣy i 2 - Σy i Σy i ,
H = NΣx i 2 y i + NΣy i 3 - Σ ( x i 2 + y i 2 ) Σy i . - - - ( 0.11 )
进而可以拟合得到圆心和半径,然后求点(xi,yi),i=1,2,...10与拟合得到的圆心(A,B)的距离以及偏差δi=|di-R|,若偏差δi大于一定阈值μd,则表明拟合结果不理想,所选取的5条直线段不属于某个圆,返回步骤S34重新开始搜索,若偏差δi均小于一定阈值μd,则表明拟合结果合理,得到一个候选圆,标记直线段Line[i]~Line[i+4]已被使用USED,立即进入步骤S36。
CN201610369782.5A 2016-05-27 2016-05-27 一种基于直线段的圆检测方法 Active CN106157298B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610369782.5A CN106157298B (zh) 2016-05-27 2016-05-27 一种基于直线段的圆检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610369782.5A CN106157298B (zh) 2016-05-27 2016-05-27 一种基于直线段的圆检测方法

Publications (2)

Publication Number Publication Date
CN106157298A true CN106157298A (zh) 2016-11-23
CN106157298B CN106157298B (zh) 2018-10-19

Family

ID=57353215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610369782.5A Active CN106157298B (zh) 2016-05-27 2016-05-27 一种基于直线段的圆检测方法

Country Status (1)

Country Link
CN (1) CN106157298B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016700A (zh) * 2017-04-14 2017-08-04 中国科学院合肥物质科学研究院 一种基于数字图像的圆形物体检测方法
CN108053442A (zh) * 2017-10-25 2018-05-18 华南农业大学 一种基于图像的药敏片抑菌圈大小测量方法
CN108256495A (zh) * 2018-01-31 2018-07-06 浙江工业大学 一种基于假定圆检测的汽车方向盘检测方法
CN108470144A (zh) * 2018-01-31 2018-08-31 浙江工业大学 一种基于曲线分段的汽车方向盘检测方法
CN109544461A (zh) * 2017-09-22 2019-03-29 高德软件有限公司 一种桶形畸变图像的校正方法及装置
CN110349199A (zh) * 2019-06-25 2019-10-18 杭州汇萃智能科技有限公司 一种物体圆度测量方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859555B1 (en) * 2000-09-19 2005-02-22 Siemens Corporate Research, Inc. Fast dominant circle detection through horizontal and vertical scanning
CN103927743A (zh) * 2014-03-27 2014-07-16 中国科学院长春光学精密机械与物理研究所 一种遥感成像中人造目标的检测方法
CN103971126A (zh) * 2014-05-12 2014-08-06 百度在线网络技术(北京)有限公司 一种交通标志识别方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859555B1 (en) * 2000-09-19 2005-02-22 Siemens Corporate Research, Inc. Fast dominant circle detection through horizontal and vertical scanning
CN103927743A (zh) * 2014-03-27 2014-07-16 中国科学院长春光学精密机械与物理研究所 一种遥感成像中人造目标的检测方法
CN103971126A (zh) * 2014-05-12 2014-08-06 百度在线网络技术(北京)有限公司 一种交通标志识别方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
方菲: "基于Hough变换运用形状角及梯度检测圆", 《机械工程与自动化》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016700A (zh) * 2017-04-14 2017-08-04 中国科学院合肥物质科学研究院 一种基于数字图像的圆形物体检测方法
CN107016700B (zh) * 2017-04-14 2019-06-25 中国科学院合肥物质科学研究院 一种基于数字图像的圆形物体检测方法
CN109544461A (zh) * 2017-09-22 2019-03-29 高德软件有限公司 一种桶形畸变图像的校正方法及装置
CN109544461B (zh) * 2017-09-22 2020-11-03 阿里巴巴(中国)有限公司 一种桶形畸变图像的校正方法及装置
CN108053442A (zh) * 2017-10-25 2018-05-18 华南农业大学 一种基于图像的药敏片抑菌圈大小测量方法
CN108256495A (zh) * 2018-01-31 2018-07-06 浙江工业大学 一种基于假定圆检测的汽车方向盘检测方法
CN108470144A (zh) * 2018-01-31 2018-08-31 浙江工业大学 一种基于曲线分段的汽车方向盘检测方法
CN108256495B (zh) * 2018-01-31 2020-05-19 浙江工业大学 一种基于假定圆检测的汽车方向盘检测方法
CN108470144B (zh) * 2018-01-31 2021-05-04 浙江工业大学 一种基于曲线分段的汽车方向盘检测方法
CN110349199A (zh) * 2019-06-25 2019-10-18 杭州汇萃智能科技有限公司 一种物体圆度测量方法
CN110349199B (zh) * 2019-06-25 2021-07-30 杭州汇萃智能科技有限公司 一种物体圆度测量方法

Also Published As

Publication number Publication date
CN106157298B (zh) 2018-10-19

Similar Documents

Publication Publication Date Title
CN106157298A (zh) 一种基于直线段的圆检测方法
Du et al. Fusion of difference images for change detection over urban areas
CN103077377B (zh) 基于方向场分布的指纹校正方法
Cheng et al. Accurate urban road centerline extraction from VHR imagery via multiscale segmentation and tensor voting
Li et al. Road network extraction via deep learning and line integral convolution
Zhang et al. Semi-automatic road tracking by template matching and distance transformation in urban areas
Hofmann et al. Quantifying the robustness of fuzzy rule sets in object-based image analysis
Lian et al. DeepWindow: Sliding window based on deep learning for road extraction from remote sensing images
CN109583324A (zh) 一种基于单点多盒检测器的指针仪表读数自动识别方法
CN103295239A (zh) 一种基于平面基准影像的激光点云数据的自动配准方法
Yuan et al. Learning to count buildings in diverse aerial scenes
CN109615604A (zh) 基于图像重构卷积神经网络的零件外观瑕疵检测方法
Zang et al. Road network extraction via aperiodic directional structure measurement
CN101533466A (zh) 一种眼睛定位图像处理方法
Guo et al. Exploring GIS knowledge to improve building extraction and change detection from VHR imagery in urban areas
Zhang et al. AG3line: Active grouping and geometry-gradient combined validation for fast line segment extraction
CN104282001A (zh) 增强图像特征二值描述子性能的方法
Othman et al. A smart school by using an embedded deep learning approach for preventing fake attendance
Sellaouti et al. Template-based hierarchical building extraction
CN106022348A (zh) 一种基于特定点方向场与指纹投影的指纹检索方法
CN104463896A (zh) 基于核相似区分布特性的图像角点检测方法及系统
Praptono et al. An automatic detection method for high density slums based on regularity pattern of housing using Gabor filter and GINI index
CN101894154B (zh) 一种图像文档关键图案的提取方法
Lin et al. Efficient approach for autonomous facility inspection using UAV images
Guo et al. River extraction method of remote sensing image based on edge feature fusion

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant