本发明涉及图像处理技术领域,特别涉及一种图像外轮廓中凹包络的检测方法、系统及其计算机存储介质。
背景技术:
喷涂机器人是一种重要的涂装生产设备,主要用于金属和非金属表面涂覆工作,是机器人技术和表面涂装工艺有机结合的产物。喷涂机器人不仅安全环保,而且能够高效、高质量的完成喷涂任务。
喷涂机器人的喷涂轨迹决定着工件的喷涂质量以及效率。在对目标物体进行喷涂轨迹自动规划前,需通过摄像机或者光幕等传感器采集目标物体的图像信息。由于目标物体的种类繁多,采集的图像中不乏凹图像。凹图像为特殊工件图像,需单独进行喷涂轨迹规划。因此,在图像分类时,所有图像需经过凹包络检测,凹包络为图像中凹陷区域的外轮廓。若图像检测结果为凹图像,则将其凹包络填充后再做轨迹规划。
技术实现要素:
为解决凹图像喷涂轨迹规划的问题,本发明提供了一种图像外轮廓中凹包络的检测方法、系统及计算机可读存储介质,该检测方法具有精度高、鲁棒性强等特点,可以有效地实现图像外轮廓中凹包络的检测。
本发明的第一方面提供了一种图像外轮廓中凹包络的检测方法,包括以下步骤:
输入图像;
提取输入图像的外轮廓;
对输入图像进行腐蚀处理得到腐蚀图像;
提取腐蚀图像的外轮廓;
将输入图像的外轮廓与腐蚀图像的外轮廓相叠加,即两幅图像的外轮廓对应位置的像素值相加;
对腐蚀图像外轮廓上的像素点按预设间隔采样,采样点两两相连构成线段后与输入图像的外轮廓求交集,记录相交的外轮廓;
如果没有交集,则所述输入图像不包括凹包络的外轮廓,返回所述输入图像;如果有交集,则调整每段相交的外轮廓的开始位置和结束位置,使得外轮廓与开始位置和结束位置连接线构成的封闭区域的面积最大;
判断所述封闭区域的面积是否大于一预设值,如果是,则所述封闭区域的面积对应的外轮廓为图像的凹包络。
在一些具体的实施例中,所述输入图像的步骤包括输入图像为二值化的二维图像。
在一些具体的实施例中,在提取输入图像的外轮廓之前,还包括判断输入图像中是否有镂空区域的步骤,如果有,则填充所述镂空区域。
在一些具体的实施例中,所述对腐蚀图像外轮廓上的像素点按预设间隔采样,采样点两两相连构成线段后与输入图像的外轮廓求交集,记录相交的外轮廓的步骤包括:
令采样的所述预设间隔为l,设腐蚀图像外轮廓上的所有像素点个数为n,当n/l有余数m时,则最后一段的间隔为m,采样点个数n=fix(n/l)+1,其中fix表示朝零方向取整;当n/l的余数为0时,采样点个数n=n/l,其中,l、n、m、n都为自然数;
从采样点h1开始遍历,将采样点h1与之后的采样点h2、……hn分别相连构成线段与输入图像的外轮廓求交集并记录交集点;然后从采样点h2开始遍历,将采样点h2与之后的采样点h3、……hn分别相连构成线段与输入图像的外轮廓求交集并记录交集点;依次遍历,直到所有采样点分别两两相连构成线段与输入图像的外轮廓求交集,记录所有交集点;
判断相邻的交集点之间的像素点是否小于一预定值,如果是,则相邻的交集点所在的外轮廓属于同一段外轮廓;如果否,则相邻的交集点所在的外轮廓属于不同段的外轮廓;
记录所有具有交集点的外轮廓。
在一些具体的实施例中,所述采样点两两相连构成线段后,对所述线段进行膨胀处理,然后与所述输入图像的外轮廓求交集。
在一些具体的实施例中,所述调整每段相交的外轮廓的开始位置和结束位置,使得外轮廓与开始位置和结束位置连接线构成的封闭区域的面积最大的步骤包括:
设每段相交的外轮廓上的像素点个数为r,每个像素点依次表示为i1,i2,…,ir-1,ir,i1为轮廓的开始位置,ir为轮廓的结束位置;
修正外轮廓的开始位置i1:保持外轮廓的结束位置ir不变,连接外轮廓的开始位置和结束位置,计算外轮廓与开始位置和结束位置连线构成的封闭区域的面积,向左右移动开始位置,直到封闭区域的面积最大,并更新开始位置为ib;
修正外轮廓的结束位置ir:保持外轮廓开始位置ib不变,连接外轮廓的开始位置和结束位置,计算外轮廓与开始位置和结束位置连线构成的封闭区域的面积,向左右移动结束位置,直到封闭区域的面积最大,并更新结束位置为ie。
在一些具体的实施例中,还包括再次修正外轮廓的开始位置ib:保持外轮廓结束位置ie不变,连接外轮廓的开始位置和结束位置,计算外轮廓与开始位置和结束位置连线构成的封闭区域的面积,左右移动开始位置,直到封闭区域的面积最大,并更新开始位置为ib’,则开始位置ib’和结束位置ie之间的外轮廓为图像的凹包络。
在一些具体的实施例中,还包括对所述凹包络所在的区域进行填充步骤:根据所述凹包络上的开始位置和结束位置画矩形框,将凹包络所在的区域封闭,并填充所述凹包络和矩形框围成的封闭区域。
本发明的第二方面提供了一种图像外轮廓中凹包络的检测系统,该系统包括:
存储器以及一个或多个处理器;
其中,所述存储器与所述一个或多个处理器通信连接,所述存储器中存储有可被所述一个或多个处理器执行的指令,所述指令被所述一个或多个处理器执行,以使所述一个或多个处理器用于执行前述的方法。
本发明的第三方面提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可操作来执行前述的方法。
本发明提供了一种图像外轮廓中凹包络检测方法、系统及其计算机存储介质。所述检测方法包括:对腐蚀图像的外轮廓上的像素点进行采样,并将采样点两两相连构成线段,经膨胀后与输入图像外轮廓求交集得到相交轮廓;然后,将相交轮廓分组并进行位置修正,连接每段轮廓修正后的开始结束位置,构成封闭区域,计算封闭区域面积,并找出面积大于某一阈值的封闭区域,则该封闭区域对应的轮廓即为图像的凹包络;最后将输入图像凹包络的凹陷区域封闭以及填充。该方法具有精度高、鲁棒性强等特点,可以有效地实现图像外轮廓中凹包络的检测与填充。
附图说明
图1为本发明的一种图像外轮廓中凹包络的检测方法的流程图;
图2为输入图像的示意图;
图3为输入图像的外轮廓示意图;
图4为输入图像腐蚀结果示意图;
图5为腐蚀图像的外轮廓示意图;
图6为图像腐蚀示意图;
图7为图像膨胀示意图;
图8为输入图像的外轮廓与腐蚀图像的外轮廓相加结果示意图;
图9为腐蚀图像外轮廓上的像素点采样示意图;
图10(a)、(b)、(c)为采样点两两相连构成线段示意图;
图11为膨胀的线段与输入图像外轮廓的交集示意图;
图12(a)、(b)、(c)为轮廓开始位置修正前示意图;
图13(a)、(b)为轮廓开始位置修正结果示意图;
图14(a)、(b)为轮廓结束位置修正结果示意图;
图15(a)、(b)为轮廓开始位置修正结果(再次修正)示意图;
图16为矩形框示意图;
图17为封闭图像的凹包络示意图;
图18为图像凹包络填充图像示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下将结合附图及实施例,对本发明做进一步详细说明。
本发明的第一方面提供了一种图像外轮廓中凹包络的检测方法100,如图1所示,包括以下步骤:
步骤110:输入图像;具体的,输入图像可为二值化的二维图像inputimage,如图2所示。除了二值化的图像,输入图像还可为其他形式的数字图像。
步骤120:提取输入图像的外轮廓。
提取输入图像外轮廓boundry,如图3所示。由sobel算子提取输入图像的工件外轮廓:sobel算子包含两个3x3的卷积核gx与gy,其中gx=[-1,0,1;-2,0,2;-1,0,1]、gy=[1,2,1;0,0,0;-1,-2,-1],图像中的每一个像素点都与这两个卷积核进行卷积运算,取其最大值输出即得到输入图像的工件外轮廓。
如果输入图像有镂空区域,需先将镂空区域填充,二值图像中即可将镂空区域的像素值置为1。
步骤130:对输入图像进行腐蚀处理得到腐蚀图像。
对输入图像inputimage进行腐蚀处理得到腐蚀图像img_erode,如图4所示。
图像腐蚀是一种消除图像边界点,使图像边界向内部收缩的过程,可用来消除小且无意义的物体。如图6所示,b对a的腐蚀可表示为aθb,图像a经结构元素b腐蚀后,图像a缩小了一圈,其腐蚀宽度由结构元素决定。结构元素se由shape和parameters两个参数决定,其中形状参数shape可以是矩形、圆形等任意形状,parameters则控制形状参数shape的大小方向,通常结构元素要小于待处理的图像。二维结构元素可以理解成一个二维矩阵,矩阵元素的值为0或者1。
所述图像腐蚀的具体步骤为:
用结构元素扫描图像的每一个像素;
结构元素与其覆盖的二值图像做“与”操作(对应位置的像素值点乘);
如果全为1,结果图像的该像素为1,否则为0。
设结构元素为3*3的矩阵se=[1,1,1;1,1,1;1,1,1],二值图像上的某点p,其周围的像素点为p0,p1,p2,p3,p4,p5,p6,p7,构成矩阵m=[p0,p1,p2;p3,p,p4;p5,p6,p7]。矩阵se与矩阵m点乘得到矩阵q=[p0,p1,p2;p3,p,p4;p5,p6,p7]。当矩阵q中的所有元素都为1时,p点才为1,否则为0。
步骤140:提取腐蚀图像的外轮廓。
提取腐蚀图像img_erode的外轮廓boundry1,如图5所示。由sobel算子提取腐蚀图像img_erode的外轮廓。
步骤150:将输入图像的外轮廓与腐蚀图像的外轮廓相叠加,即两幅图像的外轮廓对应位置的像素值相加,如图8所示。
步骤160:对腐蚀图像外轮廓上的像素点按预设间隔采样,采样点两两相连构成线段后与输入图像的外轮廓求交集,记录相交的外轮廓,如图9和10(a)、(b)、(c)所示。
具体的,对腐蚀图像外轮廓上的像素点采样,采样间隔为l。设腐蚀图像外轮廓上的所有像素点个数为n,当n/l有余数m时,则最后一段的间隔为m,采样点个数n=fix(n/l)+1,其中fix表示朝零方向取整;当n/l的余数为0时,采样点个数n=n/l。
采样点两两相连构成线段并进行膨胀处理后与输入图像的外轮廓boundry求交集,所有交集点再求并集。
在一个具体的实施例中,设采样点个数为n,采样点的序号为1,2,3,…,n-1,n。从采样点h1开始,将采样点h1与采样点h2相连构成线段h1h2并进行膨胀处理后,将膨胀后的线段h1’h2’与输入图像的外轮廓boundry求交集,得到交集点矩阵v=h1’h2’∩boundry,交集点表示h1’h2’与boundry中坐标相同的点,可能不止一个;接着采样点h1与采样点h3相连构成线段h1h3并进行膨胀处理后,将膨胀后的线段h1’h3’与输入图像的外轮廓boundry求交集,得到的交集点矩阵v1=h1’h3’∩boundry,并入矩阵v;依次下去…;最后采样点h1与采样点hn相连构成线段h1hn并进行膨胀处理后,将膨胀后的线段h1’hn’与输入图像的外轮廓boundry求交集,得到的交集点矩阵vn-2=h1’hn’∩boundry,并入矩阵v。当采样点h1遍历所有采样点(除自身外)后,接着从采样点h2开始遍历,依次循环,直到采样点hn遍历所有采样点(除自身外),最终所有的交集点都存放于矩阵v中。
判断相邻的交集点之间的像素点是否小于一预定值,如果是,则相邻的交集点所在的外轮廓属于同一段外轮廓;如果否,则相邻的交集点所在的外轮廓属于不同段的外轮廓;记录所有相交的外轮廓。
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。如图7所示,b对a的膨胀可表示为
所述步骤中对图像进行膨胀处理具体包括:
用结构元素扫描图像的每一个像素;
结构元素与其覆盖的二值图像做“与”操作(对应位置的像素值点乘);
如果全为0,结果图像的该像素为0,否则为1。
设结构元素为3*3的矩阵se=[1,1,1;1,1,1;1,1,1],二值图像上的某点p,其周围的像素点为p0,p1,p2,p3,p4,p5,p6,p7,构成矩阵m=[p0,p1,p2;p3,p,p4;p5,p6,p7]。矩阵se与矩阵m点乘得到矩阵q=[p0,p1,p2;p3,p,p4;p5,p6,p7]。当矩阵q中的所有元素都为0时,p点才为0,否则为1。
步骤170:判断是否具有相交的外轮廓。
查找矩阵v中各交集点的坐标位置,并对应找到其在图像外轮廓boundry上的位置序号,将位置序号按升序排列,当位置序号之间相差小于某一阈值时,则将其划归为同一组。
如果距阵v为空集,表示没有交集点,则所述输入图像不包括凹包络的外轮廓,返回所述输入图像,如图3所示。
如果距阵v为非空集,表示存在交集点,则调整每段相交的外轮廓的开始位置和结束位置,使得外轮廓与开始位置和结束位置连接线构成的封闭区域的面积最大。因为通过上述步骤检测出来的外轮廓的凹包络可能跟实际的凹包络有一定偏差,如图12(b)可知,检测出的凹包络仅为实际凹包络的一部分,因此需要微调开始和结束位置找到实际的凹包络的开始和结束位置。具体的调整过程将每段相交的外轮廓放到原输入图像的外轮廓中进行,如图12—15所示,具体步骤如下:
设每段相交的外轮廓上的像素点个数为r,每个像素点依次表示为i1,i2,…,ir-1,ir;i1为外轮廓的开始位置,ir为外轮廓的结束位置;
修正外轮廓的开始位置i1:保持外轮廓的结束位置ir不变,连接外轮廓的开始位置和结束位置,计算外轮廓与开始位置和结束位置连线构成的封闭区域的面积,向左右移动开始位置,直到封闭区域的面积最大,并更新开始位置为ib;
修正外轮廓的结束位置ir:保持外轮廓开始位置ib不变,连接外轮廓的开始位置和结束位置,计算外轮廓与开始位置和结束位置连线构成的封闭区域的面积,向左右移动结束位置,直到封闭区域的面积最大,并更新结束位置为ie。
在一个具体的实施例中,设每段相交的外轮廓上的像素点个数为r,每个像素点依次表示为i1,i2,…,ir-1,ir(i1为轮廓的开始位置,ir为轮廓的结束位置)。
首先,修正外轮廓的开始位置i1:保持轮廓结束位置ir不变,左右移动开始位置(例如间隔2个位置序号的i-1与i3,i-1为原输入图像的外轮廓上的像素点),连接外轮廓上的开始和结束位置,得到由弦i-1ir与外轮廓i-1ir构成的封闭区域s-1,由弦i1ir与外轮廓i1ir构成的封闭区域s1,由弦i3ir与外轮廓i3ir构成的封闭区域s3,比较封闭区域s-1、s1、s3的面积大小,如图12(a)所示;
(a)若封闭区域s1的面积最大,则将序号间隔缩小为1,开始位置变为i0与i2,连接外轮廓的开始和结束位置,得到由弦i0ir与外轮廓i0ir构成的封闭区域s0,由弦i2ir与外轮廓i2ir构成的封闭区域s2,再次比较封闭区域s0、s1、s2的面积大小,找到面积最大的封闭区域,并更新开始位置为ib;
(b)若封闭区域s-1的面积最大,则继续向后(或向左)移动两个序号位置,开始位置变为i-3,连接外轮廓的开始和结束位置,得到由弦i-3ir与外轮廓i-3ir构成的封闭区域s-3;
(b1)当封闭区域s-1的面积大于封闭区域s-3的面积时,将位置序号间隔缩小为1,重复(a)的操作;
(b2)当封闭区域s-3的面积大于封闭区域s-1的面积时,继续向后移动两个序号位置,直到找到面积最大的开始位置,然后将序号间隔缩小为1,重复(a)的操作。
接着修正轮廓的结束位置ir:保持外轮廓开始位置ib不变,连接外轮廓开始和结束位置,左右移动结束位置,直到封闭区域的面积最大,并更新结束位置为ie,相关流程参照(a)(b)。
最后再次修正轮廓的开始位置ib:保持外轮廓结束位置ie不变,连接外轮廓开始和结束位置,左右移动开始位置,直到封闭区域的面积最大,并更新开始位置为ib’,相关流程参照(a)(b)。则开始位置ib’和结束位置ie之间的外轮廓为图像的凹包络。
步骤180:判断所述封闭区域的面积是否大于一预设值,如果是,则所述封闭区域的面积对应的外轮廓为图像的凹包络,如果否,则所述封闭区域的面积对应的外轮廓并非图像的凹包络。
具体的,连接每段轮廓修正后的开始结束位置,构成封闭区域,计算封闭区域面积,并找出面积大于某一阈值的封闭区域。那么该封闭区域对应的轮廓即为图像的凹包络line。如图11所示,共有4条轮廓线。设由弦ib’ie与轮廓ib’ie构成的封闭区域为c0,由弦ib1’ie1与轮廓ib1’ie1构成的封闭区域为c1,由弦ib2’ie2与轮廓ib2’ie2构成的封闭区域为c2,由弦ib3’ie3与轮廓ib3’ie3构成的封闭区域为c3,找出面积大于某一阈值的封闭区域ci(i=0,1,2,3),即可得到该图像的凹包络以及凹陷区域。
进一步的,所述检测方法还包括对所述凹包络所在的区域进行填充步骤:根据所述凹包络上修正后的开始结束和结束位置画矩形框将凹包络所在的区域封闭,并填充所述凹包络所在的区域。
在一些具体的实施例中,根据凹包络上修正后的开始结束位置画矩形框将凹区域封闭,如图16、17所示。连接凹包络的开始和结束位置,并以此为基础沿法向量方向画矩形框将凹区域封闭,如图17所示;接着将图像的镂空区域填充(镂空区域全部置1)使得图像成为全封闭图像,如图18所示;最后再进行轨迹规划。
本发明的第二方面提供了一种图像外轮廓中凹包络的检测系统,该系统包括:
存储器以及一个或多个处理器;
其中,所述存储器与所述一个或多个处理器通信连接,所述存储器中存储有可被所述一个或多个处理器执行的指令,所述指令被所述一个或多个处理器执行,以使所述一个或多个处理器用于执行前述的方法。
本发明的第三方面提供了一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令被计算装置执行时,可操作来执行前述的方法。
综上所述,本发明提供了一种图像外轮廓中凹包络检测方法、系统及其计算机存储介质。所述检测方法包括:对腐蚀图像的外轮廓上的像素点进行采样,并将采样点两两相连构成线段,经膨胀后与输入图像外轮廓求交集得到相交轮廓;然后,将相交轮廓分组并进行位置修正,连接每段轮廓修正后的开始结束位置,构成封闭区域,计算封闭区域面积,并找出面积大于某一阈值的封闭区域,则该封闭区域对应的轮廓即为图像的凹包络;最后将输入图像凹包络的凹陷区域封闭以及填充。该方法具有精度高、鲁棒性强等特点,可以有效地实现图像外轮廓中凹包络的检测与填充。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。