发明内容
本发明解决了锂电池焊缝检测受人为因素影响较大的问题,提出一种基于视觉识别的圆形焊缝缺陷检测方法,使用面阵相机采集焊缝的二维图像,使用三维线阵相机采集焊缝的三维图像,分别对二维图像和三维图像进行算法处理,得到对应的缺陷检测结果,代替了人工检测,检测速度快,精度高,同时检测数据稳定性强,数据保存简单,便于追溯。
为实现上述目的,提出以下技术方案:
一种基于视觉识别的圆形焊缝缺陷检测方法,包括以下步骤:
S1,获取圆形焊缝的二维图像和三维图像;
S2,基于二维视觉识别算法根据二维图像判断是否存在第一类缺陷,若是则进行S4,若否则进行S3;
S3,基于三维视觉识别算法根据三维图像判断是否存在第二类缺陷,若是则进行S4,若否则判定圆形焊缝合格;
S4,判定圆形焊缝存在缺陷,并输出对应的缺陷类型。
通过本发明的方法来检测圆形焊缝缺陷,每个焊缝检测节拍能控制在0.5秒以内,检测速度快;相机通过标定板标定后,很好的满足了检测精度0.1mm的要求,检测精度高;本方法通过电脑来执行,电脑可以不眠不休不知疲倦的工作,不存在人为因素的影响,检测数据稳定性好;通过本方法检测,图片数据能够保存到电脑中,数据保存简单,方便后期数据追溯。焊缝机器视觉检测很好的代替了人工,降低用工成本。
作为优选,所述第一类缺陷包括未焊缺陷、变色缺陷、焊偏缺陷和宽度缺陷,所述第二类缺陷包括间隙缺陷、凸点缺陷、余高缺陷和凹坑孔洞缺陷。本发明结合人工目测的缺点,针对八类缺陷进行检测,分别应对八个检测要求,检测结果互不影响,保证了检测数据的稳定性。
作为优选,所述S2具体包括以下步骤:
S201,对圆形焊缝的二维图像进行预处理,根据预处理后的二维图像获取焊缝外轮廓线;
S202,判断是否能获取到焊缝外轮廓线,若否,进行S4,判断并输出圆形焊缝存在未焊缺陷;若是,所述焊缝外轮廓线围成焊缝外轮廓区域,从焊缝外轮廓区域内获取焊缝内轮廓区域,并从焊缝内轮廓区域中提取出中心孔区域,将焊缝外轮廓区域减去焊缝内轮廓区域得到焊缝区域,进行S203;
S203,对焊缝区域进行变色检测,判断是否存在变色缺陷,若否,进行S204,若是,进行S4,判断并输出圆形焊缝存在变色缺陷;
S204,判断焊缝外轮廓线的圆心与中心孔区域的中心之间的距离是否大于设定值,若否,进行S205,若是,进行S4,判断并输出圆形焊缝存在焊偏缺陷;
S205,使用区域的极坐标变换方法,将焊缝区域展开成矩形区域,并获取矩形区域的最大宽度,判断最大宽度是否大于上限值,若是,进行S4,判断并输出圆形焊缝存在宽度缺陷,若否,进行S3。
作为优选,所述S201具体包括以下步骤:
步骤211、利用动态阈值算法计算二维图像中的亮区,并选择亮区的最大区域,对最大区域进行凸性变换,得到巴片区域;
步骤212、截取巴片区域内的黑色圆环,通过黑色圆环定位到内圆环区域和外圆环区域,将内圆环区域的轮廓线转换为区域类型;
步骤213、使用动态阈值分割,获取内圆环内的暗区,对获得的暗区取边界,并对边界区域做圆拟合变换,生成的拟合圆作为焊缝外轮廓线,焊缝外轮廓线围成的区域为焊缝外轮廓区域;
步骤214、先对圆形焊缝的二维图像取动态阈值分割,取最大的亮区域,得到部分内轮廓区域;对二维图像进行中心孔的模版匹配,获得圆形焊缝的中心孔区域;最后将部分内轮廓区域和中心孔区域取并集,得到焊缝内轮廓区域;
步骤215、将步骤213获得的焊缝外轮廓区域减去步骤214获得的焊缝内轮廓区域相减,从而得到焊缝区域。
作为优选,所述S203具体包括以下步骤:
截取焊缝区域的原始彩色图片,分解出RGB三通道图像,分别对RGB三通道的图像阈值分割,设定发黑的阈值范围和面积范围,当RGB三通道图像同时包含在同一个区域内且其区域面积满足设定范围时,对应区域认定为发黑区域;对发黑区域进行计数,判断发黑区域数量是否大于等于1,若是,进行S4,判断并输出存在变色缺陷,若否,进行S204。
作为优选,所述S3具体包括以下步骤:
S301,对圆形焊缝的三维图像进行预处理,根据预处理后的三维图像得到巴片区域,根据巴片区域确定焊缝初步位置和焊缝外部的平面位置,再对三维图像进行调平,得到调平后的图像;
S302,计算巴片区域内中心孔周围的巴片高度及中心孔内部极板平面的极板高度,巴片高度减去极板高度,再减去巴片厚度,得到间隙数据,判断间隙数据是否大于设定值,若是,进行S4,判断并输出存在间隙缺陷,若否进入S303;
S303,计算外部的平面位置内是否存在高于设定值的凸点,若是,进行S4,判断并输出存在凸点缺陷,若否,进行S304;
S304,计算在焊缝初步位置内是否存在高度大于巴片平面1mm的区域,若是,进行S4,判断并输出存在余高缺陷,若否,进行S305;
S305,计算在焊缝初步位置内是否存在低于巴片平面设定深度阈值的区域,若是,进行S4,判断并输出存在凹坑孔洞缺陷,若否,表示则判定圆形焊缝合格。
作为优选,所述S301具体包括以下步骤:
S311,利用动态阈值算法计算三维图像中的亮区,定位巴片区域;
S312,在巴片区域通过对图形求取导数,获取图像高度变化数据,通过阈值分割定位到巴片中的圆环区域;
S313,获取巴片孔位置信息和孔内部平面的高度信息,定位到巴片中心孔位置;
S314,通过巴片孔位置信息和圆环区域,初步定位到焊缝位置和焊缝外部的平面位置;
S315、将倾斜的三维图像调整到水平位置,得到调平后的图像。
本发明的有益效果是:
1、本发明结合人工目测的缺点,针对八类缺陷进行检测,分别应对八个检测要求,检测结果互不影响,保证了检测数据的稳定性;
2、焊缝的宽度测量间隙测量、余高测量、凹坑孔洞测量、焊偏测量、变色测量,这些检测项目并没有明确的检测边界,人工很难精确测量这些检测项目的边缘;像最简单的焊偏测量,起点终点都是轮廓圆的圆心,人工目测很难精确定位圆心位置,只能大概估计一个圆心位置,偏心数据的精确性无法保证。本发明利用视觉识别算法定量进行测量,保证了其宽度测量、间隙测量、余高测量、凹坑孔洞测量、焊偏测量、变色测量的精确性;
3、数据保存方面,电脑存储数据比人工保存有着天然优势,从数据的完整性来看,人工记录只会记录缺陷测量数据,合格品数据由于太多没必要记录,也没时间去记录。而电脑记录直接将所有的数据全部记录下来,包括初始图像、计算图像、计算数据、生产模组编码、生产时间等,数据的可追溯性得到很大提高。
具体实施方式
实施例:
本实施例提出一种基于视觉识别的圆形焊缝缺陷检测方法,参考图1,包括以下步骤:
S1,获取圆形焊缝的二维图像和三维图像;2D相机拍摄焊缝的2D图像,3D相机拍摄焊缝的3D图像,算法程序读取2D图像和3D图像;
S2,基于二维视觉识别算法根据二维图像判断是否存在第一类缺陷,若是则进行S4,若否则进行S3;第一类缺陷包括未焊缺陷、变色缺陷、焊偏缺陷和宽度缺陷。
S2具体包括以下步骤:
S201,对圆形焊缝的二维图像进行预处理,根据预处理后的二维图像获取焊缝外轮廓线,焊缝外轮廓线围成焊缝外轮廓区域,从焊缝外轮廓区域内获取焊缝内轮廓区域,并从焊缝内轮廓区域中提取出中心孔区域,将焊缝外轮廓区域减去焊缝内轮廓区域得到焊缝区域;S201具体包括以下步骤:
S211、利用动态阈值算法计算二维图像中的亮区,并选择亮区的最大区域,对最大区域进行凸性变换,得到巴片区域;使用Halcon中的动态阈值计算2D图像中的亮区,并选择最大区域,对得到的最大区域进行凸性变换,从而得到巴片所在的区域,参考图2中A框所框选的区域;
S212、截取巴片区域内的黑色圆环,通过黑色圆环定位到内圆环区域和外圆环区域,将内圆环区域的轮廓线转换为区域类型;
S213、使用动态阈值分割,获取内圆环内的暗区,对获得的暗区取边界,并对边界区域做圆拟合变换,生成的拟合圆作为焊缝外轮廓线,参考图4中C所示为焊缝外轮廓线,焊缝外轮廓线围成的区域为焊缝外轮廓区域;具体为:利用S212获得的巴片区域,截取图像,并使用模版匹配功能,匹配到图片中的黑色圆环,从而定位到圆环区域,将内圆环的轮廓线转换为区域类型。利用获得的内圆环区域,截取图像,并使用动态阈值方法,获取内圆环内的暗区,对获得的暗区取边界,并对边界区域做圆拟合变换,生成的拟合圆就是焊缝外轮廓线,拟合圆的圆心就是外轮廓的圆心。
S214、先对圆形焊缝的二维图像取动态阈值分割,取最大的亮区域,得到部分内轮廓区域;对二维图像进行中心孔的模版匹配,获得圆形焊缝的中心孔区域;最后将部分内轮廓区域和中心孔区域取并集,得到焊缝内轮廓区域,参考图5中D所示围成的是焊缝内轮廓区域。具体为:利用外轮廓圆截取图像,获得焊缝图像;先对焊缝取动态阈值分割,取最大的亮区域,这样得到部分内轮廓;然后对焊缝图像进行中心孔的模版匹配,获得焊缝的中心孔区域;最后将部分内轮廓区域和中心孔区域取并集,从而得到焊缝内轮廓区域。获得极柱孔的中心坐标:
利用S214获得的中心孔区域,将中心孔区域腐蚀10个像素后截取图像,获得中心孔内图像。对中心孔内图形进行模版匹配,匹配中心孔图像中的极柱孔区域,极柱孔是个倒扣的圆台孔,圆台侧壁呈斜面,在图像中显示为黑色圆环,该极柱孔外圆环直径比中心孔略小,有时候极柱孔与中心孔还会有偏心,因此,利用模版匹配来获得极柱孔以后,需要根据匹配结果做二次匹配,如果通过模版匹配获得了极柱孔外轮廓线,对极柱孔外轮廓线进行拟合圆,从而得到极柱孔的中心坐标;如果极柱孔的模版匹配没有结果,在对极柱孔图像进行亚像素轮廓提取操作,选择长度在60像素~500像素之间的第一轮廓线,然后对第一轮廓线进行拟合圆操作,选取圆半径在50~100之间的第二轮廓线,最后对第二轮廓线的内边缘区域与外边缘区域取平均灰度,选取内边缘平均灰度小于外边缘平均灰度的第三轮廓线,第三轮廓线就是极柱孔的外轮廓线。对第三轮廓线拟合圆,获得第三轮廓线的中心坐标,即极柱孔的中心坐标。
步骤215、将步骤213获得的焊缝外轮廓区域减去步骤214获得的焊缝内轮廓区域相减,从而得到焊缝区域,参考图7中G围成的区域为焊缝区域。
S202,判断是否能获取到焊缝外轮廓线,若否,进行S4,判断并输出圆形焊缝存在未焊缺陷;若是,所述焊缝外轮廓线围成焊缝外轮廓区域,从焊缝外轮廓区域内获取焊缝内轮廓区域,并从焊缝内轮廓区域中提取出中心孔区域,将焊缝外轮廓区域减去焊缝内轮廓区域得到焊缝区域,进行S203;具体为:根据S213获得的焊缝外轮廓线进行计数,如果焊缝外轮廓线数量为0,则未焊检测报不通过,二维图像检测从S213处直接退出,如果焊缝外轮廓线数量为1,则表示找到了合适的焊缝外轮廓线,未焊检测结果通过,检测继续执行;
S203,对焊缝区域进行变色检测,判断是否存在变色缺陷,若否,进行S204,若是,进行S4,判断并输出圆形焊缝存在变色缺陷;S203具体包括以下步骤:
截取焊缝区域的原始彩色图片,分解出RGB三通道图像,分别对RGB三通道的图像阈值分割,设定发黑的阈值范围和面积范围,当RGB三通道图像同时包含在同一个区域内且其区域面积满足设定范围时,对应区域认定为发黑区域;对发黑区域进行计数,判断发黑区域数量是否大于等于1,若是,进行S4,判断并输出存在变色缺陷,若否,进行S204。具体为:
截取焊缝区域的原始彩色图片,分解三通道,获得三个通道的图像。分别对3个通道的图像阈值分割,取灰度在0~20之间的区域,红色通道获得的区域为RB,绿色通道获得的是GB,蓝色通道获得的区域是BB,然后对获得的3个区域取交集,交集区域定义为BlackRegions,对BlackRegions进行分解连通域,对分解后得到的区域进行面积分割,选择面积大于500像素的区域,选择后得到的区域就是变色区域。对变色区域计数,如果变色区域数量大于等于1,则表示存在变色缺陷。
S204,S204,判断焊缝外轮廓线的圆心与中心孔区域的中心之间的距离是否大于设定值,若否,进行S205,若是,进行S4,判断并输出圆形焊缝存在焊偏缺陷;具体为:
参考图6,利用获得的外轮廓线的圆心坐标F和极柱孔的中心坐标E,计算两点之间的距离,从而得到偏心像素距离;偏心像素距离乘以像素当量(0.02)得到了两个圆心之间的真实距离即偏心距离。如果偏心距离大于2mm,则存在焊偏缺陷。
S205,使用区域的极坐标变换方法,将焊缝区域展开成矩形区域,并获取矩形区域的最大宽度,判断最大宽度是否大于上限值,若是,进行S4,判断并输出圆形焊缝存在宽度缺陷,若否,进行S3。具体为:对获得的焊缝区域,进行极坐标变换,圆环形状的焊缝区域沿着外轮廓线展开成矩形区域,使用仿射变换,将矩形区域调整下位置,将矩形的长轴方向转动到行增加的方向,对转向后的焊缝区域使用行程逐行计算宽度,得到宽度数组。对宽度数组取最大值,这个最大值就是焊缝的最大值。如果最大值超过宽度上限,则存在宽度缺陷。
S3,基于三维视觉识别算法根据三维图像判断是否存在第二类缺陷,若是则进行S4,若否则判定圆形焊缝合格;第二类缺陷包括间隙缺陷、凸点缺陷、余高缺陷和凹坑孔洞缺陷。S3具体包括以下步骤:
S301,对圆形焊缝的三维图像进行预处理,根据预处理后的三维图像得到巴片区域,根据巴片区域确定焊缝初步位置和焊缝外部的平面位置,再对三维图像进行调平,得到调平后的图像;S301具体包括以下步骤:
S311,利用动态阈值算法计算三维图像中的亮区,定位巴片区域;参考图8中H框所示区域。
S312,在巴片区域通过对图形求取导数,获取图像高度变化数据,通过阈值分割定位到巴片中的圆环区域,参考图9中I圆环外廓线所示;巴片区域的最大最小灰度,得到巴片区域的最大高度和。最大高度就是巴片圆环外部的高度平均数值,最小高度就是焊缝区域的平均高度,利用焊缝区域与巴片外部平面区域的高度差,使用阈值分割,得到焊缝外圆环。
S313,获取巴片孔位置信息和孔内部平面的高度信息,定位到巴片中心孔位置;对焊缝外圆环区域进行内接圆变换,获得内接圆的圆心和半径,然后根据内接圆的圆心和半径重新生成内孔粗定位圆C1,圆心就是内接圆的圆心,半径就是内接圆半径的一半。使用C1截去深度图像,获得内孔粗定位图像Image1,计算Image1的最大高度Max1和最小高度Min1。我们使用阈值分割Image1,阈值范围设置为Max1-12000~Max1-3000。焊缝中心孔区域一般在焊缝平面以下7000的位置;对阈值分割后得到的区域分解连通域,然后选择面积最大的区域,得到的区域就是巴片的内孔区域,参考图10中J所示。
S314,通过巴片孔位置信息和圆环区域,圆环区域参考图11中K所示,初步定位到焊缝位置和焊缝外部的平面位置;利用获得的内孔区域,取最小外接圆,获得外接圆的圆心坐标(RC,CC)和半径RadiusHole,以(RC,CC)为圆心坐标,RadiusHole+200为半径,重新生成圆区域,这个圆定位为RegionHF,这个RegionHF就是初定位焊缝区域。然后对RegionHF进行膨胀操作,往外膨胀20像素,获得区域定义为RegionHFDilation,区域相减,RegionHFDilation减去RegionHF,即得到平面区域,这个平面区域也是后面凸点的计算区域,定义为RegionPlane;
S315、将倾斜的三维图像调整到水平位置,得到调平后的图像。3D图像拍摄时,并不能保证巴片处于水平位置,由于后面需要精确计算焊缝的高度,凸点高度和凹坑孔洞深度,这里就需要先将巴片平面校正到水平方向,方便后面计算;根据获得的平面区域RegionPlane,使用计算灰度值矩的方法获得3D图像行方向的梯度值Alpha,和列方向的梯度值Beta,结合3D图像的高度和宽度,使用一阶多项式创建倾斜的曲面图像,倾斜角度就是Alpha,Beta;最后使用图像相减,使用3D原始图像减去刚刚创建的曲面图像,得到的结果就是调平后的焊缝图像ImagePlane。
S302,计算巴片区域内中心孔周围的巴片高度及中心孔内部极板平面的极板高度,巴片高度减去极板高度,再减去巴片厚度,得到间隙数据,判断间隙数据是否大于设定值,若是,进行S4,判断并输出存在间隙缺陷,若否进入S303;具体为:使用平面区域RegionPlane和调平后的图像ImagePlane计算平面的平均高度MeanHeight。然后使用获得的巴片内孔区域,和调平后的图像,重新计算内孔区域的平均高度HoleHeight。间隙=(MeanHeight-HoleHeight)*hv_z-巴片厚度。巴片厚度为定制1mm。hv_z为高度方向的像素当量。通过以上计算公式,可以计算出间隙厚度。如果间隙超过了间隙最大上限,则认定存在间隙缺陷。
S303,计算外部的平面位置内是否存在高于设定值的凸点,若是,进行S4,判断并输出存在凸点缺陷,若否,进行S304;具体为:根据平面区域RegionPlane,结合调平后的图像ImagePlane,截取获得平面区域的调平图像ImageTuPoint,对调平图像ImageTuPoint进行阈值分割操作,选取高度大于凸点阈值的区域,然后对该区域分解连通域,选择区域面积在200像素以上的区域RegionConvex,计算RegionConvex的个数,如果这个数量大于1,表示有凸点,凸点检测结果为存在凸点缺陷。
S304,计算在焊缝初步位置内是否存在高度大于巴片平面1mm的区域,若是,进行S4,判断并输出存在余高缺陷,若否,进行S305;余高描述的是焊缝高度,如果焊缝高度范围设定为0~1mm,那么焊缝超过1mm高度,表示余高存在。本实施例根据初定位焊缝区域和调平后的图像ImagePlane,截取图片,该图片定义为ImageHF,然后对ImageHF图像进行阈值分割,截取高度大于1mm的区域。对获得的区域进行分解连通域,然后选择面积大于200像素的区域RegionYugao,计算RegionYugao的数量,如果这个数量大于等于1,表示存在余高缺陷。
S305,计算在焊缝初步位置内是否存在低于巴片平面设定深度阈值的区域,若是,进行S4,判断并输出存在凹坑孔洞缺陷,若否,表示则判定圆形焊缝合格。具体为:凹坑孔洞描述的是焊缝上是否存在低于焊缝平面阈值下限的区域。根据焊缝区域ImageHF,对ImageHF进行阈值分割,计算焊缝高度低于1mm的区域RegionAokeng,对RegionAokeng取消连通域,然后对取消连通域之后的区域,进行面积分选,选择面积大于200像素的区域,对该区域进行计数,如果数量大于等于1,表示存在凹坑孔洞缺陷。
S4,判定圆形焊缝存在缺陷,并输出对应的缺陷类型。综合以上步骤的结果,如果以上任何步骤检测出缺陷,则总结果为存在缺陷,表示该焊缝不合格,如果以上检测结果都是没有缺陷,则总结果为没有缺陷,表示焊缝合格。
本发明使用面阵相机采集焊缝的二维图像,使用三维线阵相机采集焊缝的三维图像;分别对二维图像和三维图像进行算法处理,通过对二维图像处理,能够得到焊缝宽度不良检测结果,变色检测结果,未焊和焊偏检测结果;通过对三维图像进行算法处理,能够得到凹坑孔洞检测结果,余高检测结果,凸点检测结果和间隙检测结果;最后将二维图像检测结果和三维图像检测结果综合起来,只有所有检测结果都是合格的情况下,焊缝的检测结果才是合格的,否则就判定焊缝结果存在缺陷。