本申请涉及机器人视觉技术领域,特别是涉及一种圆检测方法及其装置、计算机可读存储介质。
背景技术:
在实际生产应用中,需要利用机器视觉系统实现对圆特征(指工件/物品表面上的圆形结构,如圆孔、圆柱等)的信息提取,以此来指导生产测试,实现生产作业的自动化、智能化。
本申请的发明人发现,现有技术中的方法无法保障所找出圆的边缘对比度,在有干扰或噪点的时候,容易出现所找圆形与边缘不贴合的情况。
技术实现要素:
本申请主要解决的技术问题是提供一种圆检测方法及其装置,计算机可读存储介质,能够保证所检测到的圆的精度。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种圆检测方法,所述方法包括:对待检测图像进行边缘检测而得到多个边缘点;将多个所述边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个所述边缘点集进行圆拟合而得到多个拟合圆;根据多个所述拟合圆的对比度而对多个所述边缘点进行筛选;基于保留下来的所述边缘点所形成的组合进行圆拟合而得到所述待检测图像中的待检测圆。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种圆检测装置,包括处理器以及存储器,所述处理器耦接所述存储器,所述存储器中存储有程序数据,所述处理器通过执行所述存储器内的所述程序数据以实现上述方法中的步骤。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序能够被处理器执行以实现上述方法中的步骤。
本申请的有益效果是:本申请中的方法首先将多个边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个边缘点集进行圆拟合而得到多个拟合圆,而后根据多个拟合圆的对比度而对多个边缘点进行筛选,保留稳定性较高的边缘点,从而基于保留下来的边缘点所形成的组合进行圆拟合而得到的圆能够具有较高的边缘对比度以及精度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请圆检测方法一实施方式的流程示意图;
图2是图1中步骤s130的流程示意图;
图3是图2中步骤s131的流程示意图;
图4是一应用场景中感兴趣区域的示意图;
图5是图1中步骤s140的流程示意图;
图6是图1中步骤s110的流程示意图;
图7是另一应用场景中感兴趣区域的示意图;
图8是另一应用场景中感兴趣区域的示意图;
图9是本申请圆检测装置一实施方式的结构示意图;
图10是本申请计算机可读存储介质一实施方式的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参阅图1,图1是本申请圆检测方法一实施方式的流程示意图,该方法包括:
s110:对待检测图像进行边缘检测而得到多个边缘点。
具体地,待检测图像可以是灰度图像、彩色图像或深度图像,其中为了方便处理,若待检测图像是彩色图像或深度图像,在边缘检测之前均先转化为灰度图像,而后基于灰度图像执行后续步骤。
边缘是一组相连像素的几何特征,通常它们位于两个不同区域之间像素灰度跃变的地方;利用边缘检测算法对待检测图像进行边缘检测,可以获得待检测图像的多个边缘点,具体包括多个边缘点各自的位置以及对应的像素值。
在本实施方式中,为了减少处理量、计算时间以及增加精度,在对待检测图像进行边缘检测之前,还会提取待检测图像中的感兴趣区域(roi,regionofinterest),而后基于感兴趣区域进行边缘检测而得到多个边缘点。其中,感兴趣区域的形状是圆环形或者扇环形。
s120:将多个边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个边缘点集进行圆拟合而得到多个拟合圆。
具体地,由于最少三点确定一个圆,因此将多个边缘点中的任意至少三个边缘点进行组合,从而得到分别包括至少三个边缘点的多个边缘点集。
其中可以利用诸如平均值法、加权平均法或最小二乘法等算法分别对多个边缘点集进行拟合而得到多个拟合圆。
在一应用场景中,为了保证不漏掉所有可能的结果,步骤s120具体包括:将多个边缘点进行分组,使得每组包含相同数量的边缘点,且每组包含至少三个边缘点,从而得到多个边缘点集,并基于每个边缘点集进行圆拟合而得到多个所述拟合圆。也就是说,最终得到的多个边缘点集包括相同数量的边缘点,且假设有m个边缘点,那么得到的边缘点集的数量为
在一具体实例中,n为3,即此时将多个边缘点中的所有任意三个边缘点进行组合而得到多个边缘点集。例如,有7个边缘点,将任意3个边缘点进行组合,从而能够得到
当然在其他应用场景中,多个边缘点集中的边缘点的数量也可以不相等,以及n也可以为4、5甚至更多个,本申请均不做限制。
s130:根据多个拟合圆的对比度而对多个边缘点进行筛选。
具体地,在得到多个拟合圆后,分别计算多个拟合圆的对比度,其中拟合圆的对比度越高,说明拟合圆对应的边缘点越稳定,因此根据多个拟合圆的对比度能够舍弃掉部分不稳定的边缘点,也就是说,步骤s130能够把可能对最终检测结果造成波动的边缘点给舍弃掉。
s140:基于保留下来的边缘点所形成的组合进行圆拟合而得到待检测图像中的待检测圆。
具体地,经过上述步骤后,保留下来的边缘点稳定性较高,因此根据保留下来的边缘点所形成的组合进行圆拟合而得到的圆稳定性强,具有较高的边缘对比度以及较鲁棒的抗感兴趣区域移动的能力。
从上述内容可以看出,本实施方式中的方法首先将多个边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个边缘点集进行圆拟合而得到多个拟合圆,而后根据多个拟合圆的对比度而对多个边缘点进行筛选,保留稳定性较高的边缘点,从而基于保留下来的边缘点所形成的组合进行圆拟合而得到的圆能够具有较高的边缘对比度以及精度。
参阅图2,图2是图1中步骤s130的流程示意图,步骤s130具体包括:
s131:根据多个拟合圆的对比度对多个拟合圆进行筛选。
具体地,根据对比度舍弃掉部分不符合预设要求的拟合圆,以进一步保证最终保留下来的边缘点的稳定性。
参阅图3,在一应用场景中,步骤s131具体包括:
s1311:分别计算多个拟合圆的全局对比度和局部对比度。
s1312:保留全局对比度大于第一预设阈值以及局部对比度大于第二预设阈值的拟合圆。
具体地,拟合圆的全局对比度指的是整个拟合圆的对比度,拟合圆的局部对比度指的是拟合圆上的特定圆弧的对比度。
结合图4,下面对拟合圆的全局对比度以及局部对比度的计算方法进行介绍:
从待检测图像中提取包括拟合圆s的待计算区域q(图4中填充部分),然后计算待计算区域q的对比度,从而计算得到的对比度即为拟合圆s的全局对比度。
从待检测图像中提取包括拟合圆s上特定圆弧的待计算区域abcd,然后计算待计算区域abcd的对比度,从而计算得到的对比度即为拟合圆s的局部对比度。
其中,如何计算待计算区域q和待计算区域abcd的对比度属于现有技术,在此不做详细介绍。
在本应用场景中,只有全局对比度以及局部对比度均满足要求才会将对应的拟合圆保留下来,否则舍弃对应的拟合圆。
在其他应用场景中,步骤s131具体还可以是保留局部对比度符合要求的拟合圆,在此不做限制。
s132:按照对比度从高到低的顺序对保留的多个拟合圆进行排序。
具体地,可以是按照全局对比度从高到低的顺序对保留的多个拟合圆进行排序,也可以是按照局部对比度从高到低的顺序对保留的多个拟合圆进行排序,在此不做限制。
在一应用场景中,为了提高计算速度,步骤s132具体可以是:
s1321:对保留的多个拟合圆的对比度进行归一化处理而得到多个拟合圆的得分。
s1322:按照得分从高到低的顺序对保留的多个拟合圆进行排序。
具体地,在进行归一化处理时,可以将多个拟合圆的对比度分别与一预设值(例如255)相除,也可以是将多个拟合圆的对比度分别与所有对比度中最大的值相除,在此不做限制。
s133:保留排列在前的若干个拟合圆所对应的边缘点。
具体地,可以是保留排列在固定前几位(例如前10位)的拟合圆所对应的边缘点,也可以是保留与排列在第一位的拟合圆的差值在预设范围内的拟合圆所对应的边缘点。
上述实施方式中,先对拟合圆进行筛选,舍弃掉部分不符合要求的拟合圆,然后对保留的拟合圆进行排序,最后保留排列在前的若干个拟合圆所对应的边缘点,保证最终保留下来的边缘点的稳定性。
需要说明的是,在其他实施方式中,在对拟合圆进行排序之前也可以不对多个拟合圆进行筛选,而是直接按照对比度从高到低的顺序对所有的拟合圆进行排序,而后保留保留排列在前的若干个拟合圆所对应的边缘点。
参阅图5,图5是图1中步骤s140的流程示意图,步骤s140具体包括:
s141:基于保留下来的边缘点所形成的组合进行圆拟合而得到一拟合圆。
具体地,将保留下来的所有边缘点形成一个组合,然后基于该组合运用诸如平均值法、加权平均法或最小二乘法等算法进行拟合而得到一个拟合圆。
s142:判断拟合圆的对比度是否满足预设要求。
若判定结果为是,则进入步骤s143,若判断结果为否,则进入步骤s144。
具体地,可以是判断步骤s141得到的拟合圆的全局对比度是否满足预设要求,也可以是判断步骤s141得到的拟合圆的局部对比度是否满足预设要求,还可以是判断步骤s141得到的拟合圆的全局对比度和局部对比度是否都满足预设要求。
例如,在一应用场景中,判定拟合圆的全局对比度是否达到一预设阈值,若是,则判定拟合圆的对比度满足预设要求,否则,则判定拟合圆的对比度不满足预设要求。
s143:将拟合圆确定为待检测图像中的待检测圆。
s144:判定检测失败。
具体地,若拟合圆的对比度是否满足预设要求,则判定检测成功,将拟合得到的圆确定为待检测图像中的待检测圆,即所需要找出的圆,否则判定检测失败。
在本实施方式中,在基于保留下来的边缘点所形成的组合进行圆拟合而得到一拟合圆后,还会对该拟合圆的对比度进行判定,进一步保证所找圆的边缘对比度以及精度。
当然在其他实施方式中,在步骤s141得到拟合圆后,也可以不对该拟合圆的对比度进行判断,而是直接将该拟合圆确定为待检测图像中的待检测圆。
参阅图6,图6是图1中步骤s110的流程示意图,步骤s110具体包括:
s111:提取待检测图像中的感兴趣区域。
s112:以位于感兴趣区域之外的一点为端点向外辐射形成经过感兴趣区域的多个扫描线。
s113:在感兴趣区域中,计算扫描线上的像素点与相邻像素点的像素值的差值,其中相邻像素点为扫描线上的像素点,并将差值超过预设阈值的扫描线上的像素点确定为边缘点。
具体地,在感兴趣区域内,对于每一个像素点而言,均计算其与相邻像素点(该相邻像素点也位于扫描线上)的像素值的差值,而后在计算完毕后,将差值超过预设阈值所对应的像素点确定为边缘点(在一应用场景中,也可以是将差值最大所对应的像素点确定为边缘点)。
结合图7,图7中扇环形区域即为从待检测图像中提取出来的感兴趣区域。经感兴趣区域之外的一点o为端点向外辐射形成经过感兴趣区域的8条扫描线oa~oh,其中相邻两个扫描线之间的角度相等(也可以不等)。然后在感兴趣区域中分别提取多个扫描线上的像素值,即分别提取线段oa’~oh’上的像素值,然后根据提取的像素值,分别确定线段oa’~oh’上与相邻像素点(该相邻像素点也位于扫描线上)的像素值的差值超过预设阈值的点(也可以是差值最大的像素点),然后将确定的像素点确定为边缘点。
在本实施方式中,步骤s120之前还包括:
s150:根据多个边缘点的极性、多个边缘点在扫描线上的位置顺序中的至少一个对多个边缘点进行分组而得到多组边缘点,以分别基于多组边缘点执行后续步骤。
具体地,边缘点的极性分为正极和负极:沿着同一方向,靠近正极的边缘点的像素值和靠近负极的边缘点的像素值变化相反,具体为一个变大,一个变小。
多个边缘点在扫描线上的位置顺序指的是,在靠近端点或远离端点的方向上,边缘点是扫描线上的第几个点,例如,如图8所示,在远离端点o的方向上,a1、b1、c1均为扫描线上的第一个点,a2、b2、c2均为扫描线上的第二个点,a3、b3、c3均为扫描线上的第三个点。
可以理解的是,在扫描线上的位置顺序相同的边缘点对应同一个待检测对象,例如,a1、b1、c1对应同一个待检测圆,a2、b2、c2对应同一个待检测圆。
当根据多个边缘点的极性对多个边缘点进行分组时,将极性为正极的边缘点分为一组,极性为负极的边缘点分为一组。
当根据多个边缘点在扫描线上的位置顺序对多个边缘点进行分组时,将在扫描线上的位置顺序相同的边缘点分为一组。
当根据多个边缘点的极性以及多个边缘点在扫描线上的位置顺序对多个边缘点进行分组时,可以先根据极性将多个边缘点分为两组,然后再针对每组根据边缘点在扫描线上的位置顺序进行再一步的分组。
同时在分组完成后,可以针对所有组的边缘点分别执行后续步骤,即针对每组边缘点分别执行步骤s120~s140,也可以仅针对其中一组的边缘点执行后续步骤。
当然在其他实施方式中,在步骤s110之后可以直接执行步骤s120,而不执行步骤s150。
为了更好地理解本申请的圆检测方法,下面结合具体实例对上述方法进行进一步地说明。
结合图8,图8中有3个待检测圆,首先从待检测图像中提取感兴趣区域(图8中填充部分),接着经感兴趣区域之外的一点o为端点向外辐射形成经过感兴趣区域的8条扫描线oa~oh,接着在感兴趣区域中,将8条扫描线上与相邻像素点的像素值的差值最大的像素点确定为边缘点,这样总共得到24个边缘点。
然后根据边缘点在扫描线上的位置顺序对这24个边缘点进行分组,总共得到3组,分别是第一组:边缘点a1、边缘点b1、边缘点c1、边缘点d1、边缘点e1、边缘点f1、边缘点g1、边缘点h1;第二组:边缘点a2、边缘点b2、边缘点c2、边缘点d2、边缘点e2、边缘点f2、边缘点g2、边缘点h2;第三组:边缘点a3、边缘点b3、边缘点c3、边缘点d3、边缘点e3、边缘点f3、边缘点g3以及边缘点h3。
然后针对上述3组分别执行相同的步骤,其中以第一组进行说明。
针对第一组任意三个边缘点进行组合,从而得到
假设在经过筛选(具体筛选过程可参见上述相关内容)后,只留下其中20个拟合圆,而后保留该20个拟合圆所对应的边缘点,接着基于剩下的边缘点所形成的组合进行圆拟合而得到一拟合圆。
而后判断该拟合圆的对比度是否满足要求,若满足,则该拟合圆为最终检测到的圆,若不满足,则判定检测失败。
参阅图9,图9是本申请圆检测装置一实施方式的结构示意图,该圆检测装置200包括处理器210以及存储器220,处理器210耦接存储器220,处理器210在工作时控制自身以及存储器220以实现上述任一项方法中的步骤,其中详细的步骤可参见上述实施方式,在此不再赘述。
参阅图10,图10是本申请计算机可读存储介质一实施方式的结构示意图。该计算机可读存储介质300存储有计算机程序310,计算机程序310能够被处理器执行以实现上述任一项方法中的步骤。
其中,计算机可读存储介质300具体可以为u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等可以存储计算机程序310的装置,或者也可以为存储有该计算机程序310的服务器,该服务器可将存储的计算机程序310发送给其他设备运行,或者也可以自运行该存储的计算机程序310。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
1.一种圆检测方法,其特征在于,所述方法包括:
对待检测图像进行边缘检测而得到多个边缘点;
将多个所述边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个所述边缘点集进行圆拟合而得到多个拟合圆;
根据多个所述拟合圆的对比度而对多个所述边缘点进行筛选;
基于保留下来的所述边缘点所形成的组合进行圆拟合而得到所述待检测图像中的待检测圆。
2.根据权利要求1所述的方法,其特征在于,所述将多个所述边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个所述边缘点集进行圆拟合而得到多个拟合圆的步骤,包括:
将多个所述边缘点进行分组,使得每组包含相同数量的所述边缘点,且每组包含至少三个所述边缘点,从而得到多个所述边缘点集,并基于每个所述边缘点集进行圆拟合而得到多个所述拟合圆。
3.根据权利要求1所述的方法,其特征在于,所述根据多个所述拟合圆的对比度而对多个所述边缘点进行筛选的步骤,包括:
按照对比度从高到低的顺序对多个所述拟合圆进行排序;
保留排列在前的若干个所述拟合圆所对应的所述边缘点。
4.根据权利要求3所述的方法,其特征在于,在所述按照对比度从高到低的顺序对多个所述拟合圆进行排序之前,还包括:
根据多个所述拟合圆的对比度对多个所述拟合圆进行筛选,以基于保留下来的所述拟合圆执行后续步骤。
5.根据权利要求4所述的方法,其特征在于,所述根据多个所述拟合圆的对比度对多个所述拟合圆进行筛选的步骤,包括:
分别计算多个所述拟合圆的全局对比度和局部对比度;
保留所述全局对比度大于第一预设阈值以及所述局部对比度大于第二预设阈值的所述拟合圆。
6.根据权利要求1所述的方法,其特征在于,所述基于保留下来的所述边缘点所形成的组合进行圆拟合而得到所述待检测图像中的待检测圆的步骤,包括:
基于保留下来的所述边缘点所形成的组合进行圆拟合而得到一拟合圆;
判断所述拟合圆的对比度是否满足预设要求;
若满足,则将所述拟合圆确定为所述待检测图像中的待检测圆;
否则,则判定检测失败。
7.根据权利要求1所述的方法,其特征在于,所述对待检测图像进行边缘检测而得到多个边缘点的步骤,包括:
提取所述待检测图像中的感兴趣区域;
以位于所述感兴趣区域之外的一点为端点向外辐射形成经过所述感兴趣区域的多个扫描线;
在所述感兴趣区域中,计算所述扫描线上的像素点与相邻像素点的像素值的差值,其中所述相邻像素点为所述扫描线上的像素点,并将所述差值超过预设阈值的所述扫描线上的像素点确定为所述边缘点。
8.根据权利要求7所述的方法,其特征在于,在所述将多个所述边缘点中的任意至少三个边缘点进行组合而得到多个边缘点集,并基于每个所述边缘点集进行圆拟合而得到多个拟合圆之前,还包括:
根据多个所述边缘点的极性、多个所述边缘点在所述扫描线上的位置顺序中的至少一个对多个所述边缘点进行分组而得到多组边缘点,以分别基于所述多组边缘点执行后续步骤。
9.一种圆检测装置,其特征在于,包括处理器以及存储器,所述处理器耦接所述存储器,所述存储器中存储有程序数据,所述处理器通过执行所述存储器内的所述程序数据以实现如权利要求1-8任一项所述方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序能够被处理器执行以实现如权利要求1-8任一项所述方法中的步骤。
技术总结