一种快速的多圆检测方法
技术领域
本发明涉及计算机视觉、模式识别技术领域,尤其涉及一种快速的多圆检测方法。
背景技术
圆的检测是计算机视觉、模式识别中的一个重要研究内容。由于圆检测能应用于许多工业应用中的圆形目标定位,因此从数字图像中检测出圆,最近几十年已得到了研究人员的广泛关注。众所周知,Hough变换是圆检测的常用方法,主要优点表现为:能较好地适用于具有噪声的图像中,以及容易实现并行计算。由于Hough变换用于圆检测时,所需的计算时间和存储空间过大,多年来许多改进的Hough变换已被提出。
Xu等提出的随机Hough变换(randomized Hough transform,RHT)是对Hough变换的重大改进。该方法首先从边缘点集中随机选取3点,通过这3点确定一个圆参数;判断这个圆参数是否与链表中某个参数单元的值近似相等,如果均不近似相等则新建该圆参数单元并插入到链表中的适当位置,否则将该参数单元的计数加1;若计数不小于事先规定的阈值nt则找到了一个候选圆,然后通过证据积累进一步判断该候选圆是否为真圆。与Hough变换相比,RHT具有存储空间需求小、快速、无限的参数空间和任意高的检测精度的优点。尽管对于简单图像的检测,RHT有着非常高的检测效率;但是,对于较为复杂的图像,RHT的效率也会受到很大影响,因为在图像中的随机采样导致了采样有效率的明显偏低。于是,一些RHT的改进与扩展算法被提出。如黎自强等在寻找用于计算候选圆的圆参数的3个点时,先随机采样2点,然后在这2点的中垂线上寻找第3点,以提高采样有效率;此外,在选择这3个采样点时,通过淘汰掉两种噪声点,进一步提高了有效采样率。蒋联源在选择3个采样点时,利用概率采样来提高采样有效率;在寻找候选圆时,通过定义相关特征点,快速排除大量假圆,从而有效提高检测速度。
为了避免RHT中因参数累积所花费的大量内存空间与计算时间,Chen等[12]提出了随机圆检测算法(randomized circle detection,RCD)。对于从图像空间中随机采样的4个点,其中相互距离均大于阈值ε的任意3点均能确定一个圆参数,若另外1点也在该圆上则进行证据积累以判断是否为真圆。
对于RHT和RCD,这两种算法都大致可以分为如下三个阶段:(1)获取用于计算圆参数的3个采样点;(2)通过某种方法得到一个候选圆;(3)判断候选圆是否为真圆。为了能得到更优的圆检测算法,本文对这三个阶段的优化进行有效融合,提出一种结合多阶段优化的圆检测算法。该算法的检测速度快于其他算法,相应的实验结果验证了算法的有效性。
发明内容
为解决现有技术和实际情况中存在的上述问题,本发明提供了一种快速的多圆检测方法,包括以下步骤:
(1)将所有边缘点依次存储到P中,令k=0;
(2从P中获取3个采样点,由这3点计算得到一个圆参数;
(3)统计该圆参数所对应圆上的特征点个数,若特征点个数大于阈值t,则认为该圆为候选圆,转向步骤(4);否则认为该圆为假圆,转向步骤(5);
(4)判断这个候选圆是否为真圆,如果是,转向步骤(6),否则转向步骤(5);
(5)k=k+1,如果k>Kmax成立,则认为图像中已不存在圆,结束;否则,转向(2);
(6)检查当前已被检测出的圆个数是否等于预设的个数;若是,则检测完成;否则,从P中删除位于该真圆上的点,重置k=0,转向(2)。
优选地,所述步骤(2)中从P中获取3个采样点的方法是:通过1个随机采样点P1(x1,y1)按水平向右方向搜索到的图像点作为第2点P2(x2,y2),从这两点间的某点处以竖直方向搜索到的图像点作为第3点P3(x3,y3),其中x3=int(x1+(x2-x1)/n),这里的n是一个位于(1,2)∪(2,x2-x1]中的实数。
优选地,所述步骤(3)中候选圆的确定方法如下:
①对于给定的一个圆参数所对应的圆,统计该圆上极值点个数和关于第1个采样点以及第3个采样点的对称点个数,即得到特征点的总个数。
②若特征点的总个数大于给定的阈值t,则认为该圆为候选圆;否则认为该圆为假圆。
为了能更好地提高圆检测的效率,本发明提出了一种结合多阶段优化的圆检测算法,该算法从获取采样点的方法、寻找候选圆的方法、确认真圆的方法等三方面进行分析,结合目前已被优化的这些阶段,实现了更快的圆检测速度。本发明算法的优势为:在具备较好的检测鲁棒性和精度的前提下,本发明快速的多圆检测方法的检测速度快于其他圆检测算法。
附图说明
图1是本发明一种快速的多圆检测方法的采样点的选取图。
图2是本发明一种快速的多圆检测方法的候选圆的确定方法极值点与对称点选取图。
图3是本发明一种快速的多圆检测方法的检测图。
具体实施方式
本发明快速的多圆检测方法的基本框架与RHT、RCD相似,都是存在如下三个基本阶段。
(1)选取采样点。从边缘图像中选取3个采样点的目的,是为了计算得到一个圆参数。这样的圆参数所对应的圆恰好为真圆的概率非常低。
(2)寻找候选圆。由于3点所计算得到的圆参数所对应的圆,是真圆的概率非常低。因此,为了减少后续工作的计算量,可以通过某种方法,筛选出较大概率上能成为真圆的圆参数。这样的圆参数所对应的圆,被称为候选圆。
(3)得到真圆。对于每一个候选圆,都需要对其进行确认,以判断其是否为真圆。
为了能得到检测速度更快的圆检测算法,本发明对如上三个基本阶段进行分析,融合优化了的各阶段,提出一种结合多阶段优化的圆检测算法。下面详细介绍优化了的三个阶段。
1.1采样点的选取方法
3个采样点的选取方法如下:通过1个随机采样点P1(x1,y1)按水平向右方向搜索到的图像点作为第2点P2(x2,y2),从这两点间的某点处以竖直方向搜索到的图像点作为第3点P3(x3,y3)。为了确定搜索第3点时P3的横坐标,令x3=int(x1+(x2-x1)/n)。这里的n是一个位于(1,2)∪(2,x2-x1]中的实数。
为了更加具体地阐述采样点的选取方法,此处用一实例进行介绍。假定图1中不存在噪声,对于存在噪声的情况,将噪声视为图像点,搜索方法与下述方法相同。如图1所示,图中存在3个圆,假设由随机采样得到的点A(P1(x1,y1))为圆O上的点,则从点A处以水平向右的方向搜索到的图像点B作为P2(x2,y2);令x3=int(x1+(x2-x1)/n),以横坐标为x3在竖直方向搜索到的图像点C作为P3(x3,y3);待判定由A(P1)、B(P2)、C(P3)这3点不能得到真圆后,继续以横坐标为x3在竖直方向搜索下一图像点D作为点P3;待判定由A(P1)、B(P2)、D(P3)不能得到真圆后,同样将图像点E作为点P3;待判定由A(P1)、B(P2)、E(P3)不能得到真圆后,将图像点F作为点P3;待判定由A(P1)、B(P2)、F(P3)也不能得到真圆后,此时已搜索完横坐标为x3的竖直方向上的所有图像点。于是从点B处以水平向右的方向搜索到的图像点G作为P2(x2,y2),令x3=int(x1+(x2-x1)/n),以横坐标为x3在竖直方向搜索到的图像点H作为P3,此时可判定由A(P1)、G(P2)、H(P3)这3点能计算得到一个真圆。若找到的真圆个数达到预设要求,则检测结束;否则重新随机采样一图像点,开始下一个圆的检测。
考虑到3个采样点间的相互距离,均应大于某一阈值,因此在首次搜索第2点P2(x2,y2)时,令x2=x1+ε。同样的,在首次向上搜索第3点P3(x3,y3)时,令y3=y1+ε;在首次向下搜索第3点P3(x3,y3)时,令y3=y1-ε。
1.2候选圆的确定方法
特征点包括极值点和对称点,下面将分别给出极值点和对称点的定义。
对于理想圆上,横坐标最小的点、横坐标最大的点、纵坐标最小的点和纵坐标最大的点,这4个点统称为该圆的极值点。分别如图2中的点A、B、C、D所示。
如图2所示。对于理想圆O(a,b,r)上的任意一点p(px,py),点pl(2a-px,py)、pu(px,2b-py)和pc(2a-px,2b-py)分别称为圆O上关于点p(px,py)的水平、垂直和中心对称点。
为了阐述寻找对称点和极值点的方法,这里以寻找图2中纵坐标最大的极值点为例进行介绍,其他极值点以及对称点的寻找方法与此相同。很明显,在理想情况下,图2中纵坐标最大的极值点D的横纵坐标为(a,b+r)。但是,由于现实中的图像被数字化后,图像中像素点的坐标均为整型,因此需要对极值点D的坐标进行处理。处理方法如下:①确定包围坐标(a,b+r)的能构成最小正方形的4个像素点,即坐标分别为(intx,inty)、(intx+1,inty)、(intx,inty+1)和(intx+1,inty+1)的4个像素点,这里的intx=int(a),inty=int(b+r)。②在这4个像素点中,若存在位于圆O上的图像点,则这样的图像点都被认为是纵坐标最大的极值点;否则,认为不存在纵坐标最大的极值点。
候选圆的确定方法如下:①对于给定的一个圆参数所对应的圆,统计该圆上极值点个数和关于第1个采样点以及第3个采样点的对称点个数(相同坐标的点只统计一次,与此处的2个采样点中的某点坐标相同的点不进行统计),即得到特征点的总个数。②若特征点的总个数大于给定的阈值t,则认为该圆为候选圆;否则认为该圆为假圆。
1.3判断候选圆是否为真圆的方法
在RHT、RCD中,判断一个候选圆是否为真圆的方法如下:对于边缘点集中的任意一个点p(px,py),若式(1)成立,则认为点p位于候选圆O(a,b,r)上;否则,认为点p不在该候选圆上。其中,式(1)中的δ,是由于图像离散化等原因而定义的一个距离阈值。如果边缘点集中所有位于候选圆O上的点数比Mmin大,则该候选圆被认为是一个真圆;否则,该候选圆被认为是一个假圆。这里的阈值Mmin=λ×2πr,其中λ为一个比例系数。
关于判断候选圆是否为真圆的方法,可从以下三方面进行优化。
(1)在证据积累过程中,对于任意的一个点,若该点不是位于边长分别为2(r+δ)与中心均为候选圆圆心的两个正方形的差中,则认为该点不是候选圆上的点。即只需通过简单的比较操作,就可以排除大部分非候选圆上的点,从而提高运算速度。
(2)对于式(1),可通过平方等运算来对该公式进行化简,以避开开方运算和求绝对值运算,从而提高计算速度。
(3)证据积累时,若边缘点集中仍未进行计算的点的个数与已被确定落在候选圆上的点数之和,小于阈值Mmin,则可直接判定该候选圆是一个假圆,从而减少了证据积累的计算量。
实验例
实验方法
本发明所述方法与RHT、RCD、文献1{Jiang L Y.Fast detection of multi-circle with randomized Hough transform[J].Optoelectronics Letters,2009,5(5):397-400}和文献2{Jiang L Y.Efficient randomized Hough transform for circledetection using novel probability sampling and feature points[J].Optik,2012,123(20):1834-1840}中所述方法比较:
为了验证本发明算法的快速和高精度性能,大量的人工图像和实际图像被用于实验。这里给出一个实验例,与RHT、RCD、文献[1]、文献[2]进行实验对比。为了实验的公平比较,各算法只要检测到规定的圆个数,检测即结束。所有算法都采用C++语言编程实现,文中所有实验均在Core 2双核处理器(2.93GHz)、2G内存的计算机上进行。在实验1中,RHT的λ、δ、nt分别取0.7、0.5、2,RCD的λ、δ、ε分别取0.7、0.5、6,文献[1]的λ、δ、ε、n分别取0.7、0.5、4、2,文献[2]的λ、δ、ε、m、t分别取0.7、0.5、10、3、9,本文算法的λ、δ、ε、n、t分别取0.7、0.5、4、1.4、9;在实验2、3中,除了参数λ的取值为0.6,其他参数都不变。
图3(a)是一幅大小为256×256(单位:像素,下同)的图像,该图像中共有6个圆、1037个图像点。为了比较RHT、RCD、文献[1]、文献[2]以及本文算法的性能,向图3(a)中增加比例范围为30%到180%的噪声。增加1867个噪声点后的图像如图3(b)所示。表1是这5个算法执行50次的平均时间。用本发明算法对图3(b)的检测结果如图3(c)和表2所示。
表1 5种算法执行时间比较
表2应用本发明算法检测图(b)的结果(单位:像素)
结论:为了能更好地提高圆检测的效率,本发明提出了一种结合多阶段优化的圆检测算法。该算法从获取采样点的方法、寻找候选圆的方法、确认真圆的方法等三方面进行分析,结合目前已被优化的这些阶段,实现了更快的圆检测速度。本发明算法的优势为:在具备较好的检测鲁棒性和精度的前提下,文中算法的检测速度快于其他圆检测算法。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。