基于机器视觉的金属罐内壁缺陷检测
2014-05-08胡晓彤董莹莹
胡晓彤,董莹莹
(天津科技大学计算机科学与信息工程学院,天津 300222)
对于高速自动化生产线来说,金属罐内壁要经过焊接、冲压和镀膜等工艺,在此期间可能造成金属罐内壁的质量缺陷,因此,在出厂前必须进行金属罐内壁的质量检测.传统检测多采用人工方法,效率和精度较低,且存在人工污染.采用机器视觉技术可以避免人工检测的不足.采用机器视觉方法对金属罐内壁进行质量检测与常规的机器视觉检测系统相比,存在成像较常规透明材料困难、罐内壁质量检测对象为多个区域,不同于常规的对象整体检测等问题[1–2].
基于机器视觉的缺陷检测技术已经成为生产线上质量控制的主要手段[3–5].内壁检测是生产线上重要的环节,能够及时地反映出生产设备或者其他原因造成的内壁缺陷,从而解决相应问题,具有较高的研究价值.本文研究金属罐内壁的缺陷检测,包括罐口、焊缝及内壁 3部分的缺陷,主要有罐口的变形,焊缝是否只有两条并在规定的区域,罐内壁存在划痕、污点等.文献[2]和文献[6]实现了对罐内壁的缺陷检测,其中文献[6]的检测速度为 2个/s,已无法满足高速生产线的速度需求.本系统结合生产实际,提出了对金属罐内壁具体的检测方法,并运用4线程对划分的区域进行瑕疵点检测,能够大大缩短时间,提高检测速度.
1 系统设计
在现有自动化生产线上基于机器视觉的金属罐内壁缺陷检测中,因铝制罐容易反光,容易让大多数的相机和传感器失灵[3].在解决这个问题上,本设计采用了圆顶光源.圆顶光源是一种漫反射无影光源,结构优化后排列的LED发出的光线经球面漫反射之后,平滑、均匀地照射在被测物体表面,该系列光源具有较大的光扩散面,能够全方位均匀照射在被测物体上,适用于表面有起伏、反光的物体,即使是弯曲的金属表面也能够被均匀地照射到.以王老吉易拉罐作为被检测对象,采集的金属罐内壁图像如图 1所示.
图1 金属罐内壁图像Fig.1 Images of metal cans’ inner wall
将被检测的金属罐放在传送装置上,该传送装置上设有传感器、摄像机、光源等装置.当金属罐到达放置传感器的检测工位时,成像系统对金属罐内壁进行高速成像,将采集的金属罐内壁图像传输到工业计算机,工业计算机对其进行处理和多区域检测,并进行质量判别.摄像机采用大恒图像研发的具有USB2.0接口的数字摄像机 MER–125–30,UM/UC,采集图像大小为1,176像素×964像素.图2为检测系统装置简图.
图2 检测系统装置简图Fig.2 Schema of the detection system
结果判别主要通过对采集的图像进行分析,包括对图像进行边缘检测,采用最小二乘法对采集的图像拟合,找出圆心和半径,对图像检测区域进行定位,最后进行各区域的检测.图 3为基于机器视觉的金属罐内壁缺陷检测系统功能简图.
图3 金属罐内壁缺陷检测系统功能简图Fig.3 Function diagram of the defect detecting system of metal cans’ inner wall
2 图像预处理
2.1 边缘检测
边缘检测是图像处理和机器视觉中,尤其是特征提取中的一个重要研究领域.本文对比几种边缘检测算子,最终采用 Canny算子提取金属罐内壁图像的边缘.
2.1.1 对原始图像进行灰度化
Canny算法通常处理的图像为灰度图像,因此首先要对采集的彩色图像进行灰度化处理.使用OpenCV库的转换函数可实现快速准确的转换.
因为图像是在红色圆顶光源下拍摄,因此程序采用cvSplit中输出红色通道的方式进行灰度转换.
2.1.2 Canny算法
在实现 Canny算法中所采用的卷积算子的表达式为
Canny算子用于寻找图像的局部极大值.本文采用双阈值方法[5].由图 4可以看出,经过 Canny算子检测后的图像边缘是连续的,且内壁划痕图像清晰,效果较好.
图4 canny边缘检测结果Fig.4 Result of canny edge detection
2.2 最小二乘法原理
设要拟合的圆的方程为
可将此不易拟合的二次非线性方程整理成如下形式:
残差平方和为
使残差平方和取最小值时求出的参数A、B、C即为在最小二乘圆拟合意义上的最优解.由上述公式可求得最小二乘圆心坐标及半径:
最小二乘算法的程序简单,具有较快的运行速度.根据得到的圆心和半径可对金属罐内壁检测区域进行定位.
2.3 霍夫直线检测
霍夫变换(Hough transform)是数字图像处理中重要算法之一,主要用于在图像中检测几何图案,包括在二值图像中检测直线、圆等.在系统中运用霍夫直线检测,通过对点的采集查找出直线,对焊缝部分进行检测.图 5所示为霍夫直线检测原理中由点到直线的变换.
图5 霍夫变换检测,直线坐标系变换Fig.5 Detecting by Hough transform,the rectangular coordinates transformed
3 金属罐内壁检测区域的定位及检测
3.1 金属罐内壁检测区域定位
通过最小二乘法找出外圆半径 R1和内圆半径R2,设定定位参数 a、b,则罐口部分为所组成的圆环区域,金属罐内壁部分为组成的圆环区域[6–9].根据霍夫直线检测确定焊缝区域.图6所示是对3个区域的定位实例.
图6 检测区域定位Fig.6 Position of the detecting area
3.2 缺陷检测算法
3.2.1 罐口部分缺陷检测
确定检测范围之后,首先对金属罐顶部边缘,即图像的外圆进行检测.外圆变形大多是生产运输过程中因碰撞、挤压造成的表面凹陷.图 7为罐口部分存在凹槽时的检测图像.
图7 边缘检测后的凹槽Fig.7 A groove after edge detection
(1)定义一个整型数组 x[n],并初始化数组的初值等于数组的下标.伪代码如下:
Def.x[n]
Repeat{
x[n]《←i
}
(2)对位于顶部边缘检测范围内的白色像素点,如果像素点 x[i]=1(白色),取这个像素点的极坐标角度值,并把数组中下标等于该角度值的元素赋值为1.重复循环此过程.伪代码如下:
(3)对整型数组重新进行循环扫描,判断是否依然存在数值不为 1的元素.如果存在则说明外圆在此位置存在凹槽,该位置的元素的值即为残缺点的极坐标角度.如果数组中的元素全部赋值为 1,则说明数组中的元素已覆盖外圆,罐口不存在凹槽缺陷.伪代码如下:
Repeat{
If(x[i]≠1)
Exist physical defects
Else
Not Exist physical defects
}
3.2.2 金属罐焊缝检测
首先创建 1个内存存储器 storage和 1个可增长序列 lines,然后调用 CvHoughLines2对焊缝图像进行直线检测.将检测到的直线保存,为之后对直线的处理作准备.
检测出焊缝直线后,首先判断直线的条数,如果直线条数大于 2,则认为存在直线划痕,金属罐不合格;如果直线条数等于2,则判断直线之间的夹角,夹角范围在m1至m2间即视直线为封口直线,在本设计中 m1=16°,m2=17°.图 8 所示为焊缝检测实例,在焊缝部分有两条白色线,能够准确定位焊缝位置.
在对焊缝检测完成之后,需要把该焊缝区域剔除,以便于后续检测.剔除分 2步进行:(1)把确定 2条直线的4个点按极坐标角度排序,求出最大和最小角度;(2)扫描数组,将所有在最大和最小角度间的点全部剔除.
图8 焊缝的霍夫直线检测Fig.8 Hough line detection of the welding parts
3.2.3 金属罐内壁缺陷检测
确定内壁检测范围和霍夫直线检测剔除焊缝区域后,得到内壁的待检测图像,主要用于检测内壁划痕.对划痕的检测方法为:
(1)将图中所有的白色像素点(已保存在数组x[n]中)按其极坐标角度由小到大排序.因为数据量不大,采用冒泡法进行排序处理.由极坐标的定义可知,图像中连通域的极坐标角度一定是连续的.所以将所有白色像素排序,为划痕检测作准备.
(2)对排序后的数组元素进行逐个扫描,判断每个元素之后一定范围内的元素,是否有和该元素连续的点.通常是通过两点间的距离来判断是否连通,为了简化运算,采用式(8)来衡量两点间的距离.
式中:r1、r2、θ1、θ2分别为两点的极坐标半径和极坐标角度.
因为图像在经过灰度化和边缘检测之后,可能造成小部分像素信息丢失,为了不使丢失的像素影响对连续区域的判断,设定了阈值T.即由式(8)得到的数值小于T,则认为两数组元素为连续点.
在找到当前点的连续点之后,跳过2个元素之间的数组元素,从找到的元素开始新的扫描,继续查找其连续点.
(3)图像中所有的连通域并不一定都是划痕,也可能是在采集过程中因光照等因素影响形成的杂点.因此找到一组连续点之后,需判断该组连续点是否为内壁划痕.按照系统需求设定阈值 k,如果该组连续点的像素点个数大于 k则认为其为待检测的内壁划痕;反之则认为该组连续点为图像处理过程中的误差点.
图9所示为金属罐内壁缺陷检测的实际效果,其中图 9(c)为经上述过程检测出金属罐内壁中存在的划痕,划痕的首尾已经圈出.
图9 金属罐内壁检测效果Fig.9 Effect of the metal can’s inner wall detection
4 实验及改进
以 Visual Studio 2010为开发平台,设计了基于机器视觉的金属罐内壁缺陷检测系统,对金属罐内壁缺陷进行检测.检测系统的计算机配置为:CPU Intel(R)Core(TM)i7–3770,8,MB 三级缓存,内存4,GB,四核心/八线程.
对金属罐内壁分 3部分进行检测,分别为罐口、焊缝和内壁,总检测时间为 165,ms,无法达到生产线的速度要求.因此通过 4线程进行优化,方法为:在金属罐内壁扫描瑕疵点时,以原点为中心,按照角度将图像平均分成4个象限,用4个线程同时对瑕疵点扫描并存储.优化后减少了检测时间,总用时55,ms,加上图像采集及图像处理时间,对一个金属罐的检测时间为101,ms.
采用4线程优化前后检测时间的对比见表1.从表中可以看出,采用4线程优化后3个部分的运行时间均有明显缩短.表 2所示为本文方法与 Blob算法的检测结果对比,可以看出,本文的优化检测算法能够更好地提高检测速度.
表1 优化前后的运行时间对比Tab.1 Contrast of optimized running time and the original time
表2 两种方法检测结果对比Tab.2 Results of the two methods in contrast
5 结 语
本文结合生产实际设计了基于机器视觉的金属罐内壁缺陷检测系统,使用4线程后比传统方法缩短了检测时间,能够准确地检测金属罐内壁缺陷,并满足检测速度要求,检测速度达到 600个/min,可检测瑕疵最小面积为0.2,mm×0.2,mm.
今后还需在减小检测误差和检测更多种类的缺陷特征方面进行完善,进一步提高金属罐内壁缺陷检测系统的可扩展性和稳定性,使其应用范围更广.
[1] 贺超英,张辉. 基于机器视觉的罐盖质量检测系统设计[J]. 仪表技术与传感器,2011(2):85–90.
[2] 王宣银,梁冬泰. 基于多元图像分析的包装罐内壁缺陷检测[J]. 农业机械学报,2009,40(6):222–226.
[3] 李炜,黄心汉,王敏,等. 基于机器视觉的带钢表面缺陷检测系统[J]. 华中科技大学学报:自然科学版,2003,31(2):72–74.
[4] 廖水碧,肖明富. 金属制品表面质量缺陷无损检测的研究现状与展望[J]. 中国冶金,2007,17(3):48–51.
[5] 沈昱明,杨征兵. 机器视觉在铜带表面缺陷检测系统中的应用[J]. 电子测量技术,2010,33(4):65–67.
[6] 朱明,曾其勇,洪涛,等. 基于机器视觉技术的奶粉罐内壁缺陷检测系统设计[J]. 制造业自动化,2012,34(12):37–40.
[7] Malamas E,Petrakis G M,Zervakis M,et al. A survey on industrial vision system,applications and tools [J]. Image and Vision Computing,2003,21(2):171–188.
[8] 程转伟,颉谭成,刘岳林,等. 图像处理技术在表面缺陷检测中的应用[J]. 微计算机信息,2008,24(15):312–314.
[9] 易爱春,龙永红,黄晓清. 一种基于视觉的表面质量检测方法[J]. 湖南工业大学学报,2008,22(6):46–54.