本发明涉及机器视觉技术领域,具体为一种栅格背景下板材视觉检测边缘精修算法。
背景技术
随着社会经济的发展,人民也越来越多的追求使用产品的美观,而对产品上漆可以大大增加产品的美观程度,所以越来越多的产品进行喷漆,而且对设施和装备进行喷漆可以保护内部的产品,防止了产品的氧化,也方便对设备的清洁,喷漆装置就是将漆分散成雾状喷涂在被涂物表面的一种装置,在板材自动喷漆等板材自动处理工程中,往往将板材放置于格栅板上,通过机器视觉方法从格栅上准确的检测出板材区域对后续的处理十分重要。目前机器视觉的相关算法可以从图片中提取梯度信息,并可通过形态学操作改变图像,但只能进行允许误差存在的矩形板材位置检测,检测精确不够,为此,我们提出一种栅格背景下板材视觉检测边缘精修算法。
技术实现要素:
本发明的目的在于提供一种栅格背景下板材视觉检测边缘精修算法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种栅格背景下板材视觉检测边缘精修算法,包括如下步骤:
(1)读取各初始的板材包围矩形获得图片i;
(2)计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;
(3)针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;
(4)根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;
(5)计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;
(6)重复步骤(3)、(4)和(5),直到处理完全部初始板材包围矩形,得到矩形板材边缘。
优选的,所述步骤(1)中,初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息。
优选的,所述步骤(2)中,横向闭运算的内核行数为1、列数在格栅每个单元的横向像素数的一半至两倍之间;纵向闭运算内核列数为1、行数在格栅每个单元的纵向像素数的一半至两倍之间。
优选的,所述步骤(2)中,获取横向梯度值图后,在进行横向闭运算前可进行一次纵向闭运算将梯度连通,该纵向闭运算的内核列数为1、行数大于图像i中栅格横向线条的最小像素宽度。
优选的,所述步骤(3)中,横向roi范围为在初始板材包围矩形的基础上分别向左和向右扩大矩形范围得到,需保证其中包含了板材的左右实际边缘,纵向roi范围为在初始板材包围矩形的基础上分别向上和向下扩大矩形范围得到得到,需保证其中包含了板材的上下实际边缘,roi范围仅标识了该范围的位置和大小,未包含该范围内实际的像素信息。
与现有技术相比,本发明的有益效果是:本发明可以在已经粗略知道板材区域信息的基础上,精确地调整检测的矩形板材边缘,从而获得更加精确的矩形板材检测效果,可以应用于各类需要矩形板材的精确位置与尺寸信息的场合,解决了目前机器视觉的相关算法可以从图片中提取梯度信息,并可通过形态学操作改变图像,但只能进行允许误差存在的矩形板材位置检测,检测精确不够的问题。
附图说明
图1为本发明方法流程图;
图2为本发明横向梯度纵向闭运算后示意图;
图3为本发明纵向梯度横向闭运算后示意图;
图4为本发明在图2基础上横向闭运算后结果ih示意图;
图5为本发明在图3基础上纵向闭运算后结果iv示意图;
图6为本发明根据纵向roi截取ih形成的关键区域rh示意图;
图7为初始板材包围矩形图;
图8为关键区域rh计算每行均值的结果示例,其中横坐标为行数,纵坐标为像素均值;
图9为边缘精修后的效果图。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:一种栅格背景下板材视觉检测边缘精修算法,包括如下步骤:
(1)读取各初始的板材包围矩形获得图片i;
(2)计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;
(3)针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;
(4)根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;
(5)计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;
(6)重复步骤(3)、(4)和(5),直到处理完全部初始板材包围矩形,得到矩形板材边缘。
实施例一:
首先读取各初始的板材包围矩形获得图片i;然后计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;然后针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;然后根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;然后计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
实施例二:
在实施例一中,再加上下述工序:
步骤(1)中,初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息。
首先读取各初始的板材包围矩形获得图片i,其中初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息;然后计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;然后针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;然后根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;然后计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
实施例三:
在实施例二中,再加上下述工序:
步骤(2)中,横向闭运算的内核行数为1、列数在格栅每个单元的横向像素数的一半至两倍之间;纵向闭运算内核列数为1、行数在格栅每个单元的纵向像素数的一半至两倍之间。
首先读取各初始的板材包围矩形获得图片i,其中初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息;然后计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;横向闭运算的内核行数为1、列数在格栅每个单元的横向像素数的一半至两倍之间;纵向闭运算内核列数为1、行数在格栅每个单元的纵向像素数的一半至两倍之间;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;然后针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;然后根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;然后计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
实施例四:
在实施例三中,再加上下述工序:
步骤(2)中,获取横向梯度值图后,在进行横向闭运算前可进行一次纵向闭运算将梯度连通,该纵向闭运算的内核列数为1、行数大于图像i中栅格横向线条的最小像素宽度。
首先读取各初始的板材包围矩形获得图片i,其中初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息;然后计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;横向闭运算的内核行数为1、列数在格栅每个单元的横向像素数的一半至两倍之间;纵向闭运算内核列数为1、行数在格栅每个单元的纵向像素数的一半至两倍之间;获取横向梯度值图后,在进行横向闭运算前可进行一次纵向闭运算将梯度连通,该纵向闭运算的内核列数为1、行数大于图像i中栅格横向线条的最小像素宽度;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;然后针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;然后根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;然后计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
实施例五:
在实施例四中,再加上下述工序:
步骤(3)中,横向roi范围为在初始板材包围矩形的基础上分别向左和向右扩大矩形范围得到,需保证其中包含了板材的左右实际边缘,纵向roi范围为在初始板材包围矩形的基础上分别向上和向下扩大矩形范围得到得到,需保证其中包含了板材的上下实际边缘,roi范围仅标识了该范围的位置和大小,未包含该范围内实际的像素信息。
首先读取各初始的板材包围矩形获得图片i,其中初始的板材包围矩形指使用其他方法获取的允许误差存在的板材区域信息,包含位置与尺寸信息;然后计算图像i的横向梯度值图,并对横向梯度值图进行横向闭运算,得到进行横向闭运算后的图片ih;横向闭运算的内核行数为1、列数在格栅每个单元的横向像素数的一半至两倍之间;纵向闭运算内核列数为1、行数在格栅每个单元的纵向像素数的一半至两倍之间;获取横向梯度值图后,在进行横向闭运算前可进行一次纵向闭运算将梯度连通,该纵向闭运算的内核列数为1、行数大于图像i中栅格横向线条的最小像素宽度;计算图像i的纵向梯度值图,并对纵向梯度值图进行纵向闭运算,得到进行纵向闭运算后的图片iv;然后针对一个初始板材包围矩形ri,获取其横向roi范围和纵向roi范围;横向roi范围为在初始板材包围矩形的基础上分别向左和向右扩大矩形范围得到,需保证其中包含了板材的左右实际边缘,纵向roi范围为在初始板材包围矩形的基础上分别向上和向下扩大矩形范围得到得到,需保证其中包含了板材的上下实际边缘,roi范围仅标识了该范围的位置和大小,未包含该范围内实际的像素信息;然后根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh;然后计算rv中每列的均值,据此确定板材的左右边缘;计算rh中每行的均值,据此判断板材的上下边缘;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
使用时,读取图片i与各初始的板材包围矩形,使用3*3的横向sobel算子计算i的横向梯度值,再对其进行横向闭运算得到ih,闭运算内核行数为1、列数为格栅每个单元的横向像素数;使用3*3的纵向sobel算子计算i的纵向梯度值,再对其进行纵向闭运算得到iv,闭运算内核列数为1、行数为格栅每个单元的纵向像素数,针对一个初始板材包围矩形ri,左右各扩展20像素作为其横向roi范围,上下各扩展20像素作为纵向roi范围,根据横向roi范围在图片iv截取关键区域rv,根据纵向roi范围在图片ih中截取关键区域rh,计算rv中每列的均值,把从中心到左侧的第一个超过最大值的1/2的列作为左侧边界,把从中心到右侧的第一个超过最大值的1/2的列作为右侧边界;计算rh中每行的均值,把从中心到上侧的第一个超过最大值的1/2的行作为上侧边界,把从中心到下侧的第一个超过最大值的1/2的行作为下侧边界;重复截取关键区域rv和截取关键区域rh,并据此确定板材的上下左右边缘,直到处理完全部初始板材包围矩形,得到矩形板材边缘。
本发明可以在已经粗略知道板材区域信息的基础上,精确地调整检测的矩形板材边缘,从而获得更加精确的矩形板材检测效果,可以应用于各类需要矩形板材的精确位置与尺寸信息的场合,解决了目前机器视觉的相关算法可以从图片中提取梯度信息,并可通过形态学操作改变图像,但只能进行允许误差存在的矩形板材位置检测,检测精确不够的问题。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。