侯占林,赵 京
(北京工业大学 机械工程与应用电子技术学院,北京 100124)
当前机电一体化生产线的自动化程度逐步提高,人工检测难以满足稳定性和实时性需求,而机器视觉检测技术具有非接触、速度快、精度合适、现场抗干扰能力强等突出的优点[1],适合在多数环境中替代人工检测,以高效完成自动化检测。现在机器视觉已广泛用于各生产线上,如电子元件缺陷检测[2]、农产品检测[3]、工业产品缺陷检测[4]和参数测量[5]。
中小型生产线对机器视觉检测系统同样有很大需求,其中大部分零件产品仅根据外形特征即可判断出存在何种缺陷,而且这类生产线由于自身成本、工业环境、工人知识水平等原因,需要机器视觉系统在稳定运行和实时检测的基础上,有更低的价格、简单的安装配置方式、较好的抗工业环境干扰能力(例如震动、重复定位误差、光干扰等)。为大幅降低机器视觉硬件成本,必须使用价格很低的通用相机和嵌入式设备。通用相机图像质量相对较差,嵌入式设备的CPU主频较低,所以图像处理算法需要有更强的抗图像噪声能力和更少的计算量,同时需要能适应零件位置的小幅度偏移。此条件下,传统零件外形缺陷检测方法有一定局限。模板匹配算法[6-7]计算量大,适用于零件定位准确、搜索范围较小的场合。而一般生产线重复定位精度较低,需要扩大搜索范围,大量计算在低主频的嵌入式CPU上运行需要时间长。基于机器学习[8-9]和神经网络[10-11]的分类算法功能强大,但需要配置的参数较多,样本训练时对工人知识水平要求较高。
本文针对零件外形缺陷检测,提出基于统计图特征的零件分类方式,首先使用两次动态提取零件区域的定位方法,然后依据零件外形生成几种统计图,针对特定零件检测需求,得到多个特征的数值化描述。最后,使用级联分类器在每一级使用一个特征做分类,确定零件是否存在缺陷。检测分类算法将分别从动态提取和基于统计图分类两部分介绍,随后将通过实验验证算法的性能。
零件外形缺陷检测适合使用背光照明的方式,以提高零件外轮廓和背景的对比度,相机图像如图1所示,白色光源上的零件为汽车拉线生产线“打花”工序后的零件。图中高亮白色部分除了大面积的背光光源,还有少量自然光,以及生产线金属机构表面的反光。本节将介绍动态提取零件区域的方法,分两个步骤,先提取背光照明区域,再提取零件区域。此方法的优点是能在相机相对零件有小幅相对位置变化时,准确提取零件区域。对工业生产环境下的检测系统而言有三点好处:①降低了相机安装精度要求;②减少生产线震动对检测的影响;③消除零件夹持器重复定位误差对零件分类的干扰。
图1 背光照明零件图像
首先使用高斯滤波对原始相机图像预处理,然后转为灰度图像,接着采用最大类间方差(OTSU[16])二值化方法计算阈值并将图像转为黑白图像。以图1为例,其经过二值化的结果如图2所示,背光区域为大面积白色,周围的金属反光或自然光反映为分散的小面积白色。所以需提取面积最大的前景区域即可,分3个步骤完成。第1步找到每个白色区域的轮廓;第2步求每个轮廓的面积并找到其中面积最大的一个;第3步计算该轮廓的最小包围矩形。最后求得的矩形区域即为背光区域。
图2 二值化零件图像
背光区域的大小通常会远大于零件分类特征所在区域的大小,提取其全部区域将增加后续提取和分类过程中无意义的计算量。所以依据零件自身体积,由用户在配置阶段设置提取区域的宽度和高度参数,在动态提取到的背光区域上剪裁这一部分,传入后续计算过程。以图1“打花”零件为例,由于伞状的花头为特征所在区域,所以提取如图3所示的背光区域足以满足后续分类过程。考虑到重复生产线定位误差等原因,零件位置相对相机有偏移,故背光区域不宜过小,以保证零件特征区域被完整保留。
图3 提取出的背光区域
接下来将从背光照明区域提取零件,这一步仍需采用动态提取的方式。首先,再次使用OTSU[16]二值化方法,同时反转前景和背景色,得到二值图像,其中零件呈白色,而背光光源呈黑色。
在生产线长时间工作后,光源上可能存在分散的杂质(如金属碎屑),二值图上呈现分散的白色区域。所以采用与上一小节提取背光区域类似的步骤,先提取二值图中各白色区域的轮廓,然后求每个轮廓面积并找到最大的轮廓,最后计算该轮廓的最小包围矩形区域,即动态得到了零件区域。如图4所示。
图4 零件最小包围区域
从上一步得到的零件区域生成几种统计图,从中易于得到区分度高的外形特征,常用的外形特征能通过统计图高效数值化,如宽度、厚度、分散度、偏转程度等。该算法仅在生成统计图时扫描图像,故计算量相对较小,适合CPU运算能力较低的平台使用,以保证实时性。另一个优点是配置过程简单,生成分类标准时,通过现场采集几次合格零件的图像,以相同流程生成统计图,然后生成各特征的数值表示,即可得到标准参数。本节将介绍三种统计图,以及配合使用的级联分类器。
针对“宽度”、“高度”、“厚度”等外形特征,“按列统计像素和”生成的统计图,能得到有明显区分度的特征。按列统计意为遍历二值图像的列,求每一列中前景色的数量作为该行的统计值,生成过程如式(1)、式(2)所示:
s= [s1,s2, ...,sn]
(1)
(2)
式中,s为按列统计的“像素和”矢量,n为零件区域高度,f(i,j)为二值图像函数,值取1时为零件区域,值取0时为背景区域。
以“打花”零件为例说明特征提取和缺陷判别过程,正常零件的样本如图5所示,不合格形式为“宽度不足”的零件样本如图6所示,两者的“像素和”统计图对比如图7所示。
图5 正常的打花零件
图6 “宽度不足”的打花零件
图7 两零件像素和统计图对比
正常零件加工结果呈现伞状,统计图有单个波峰,且高度明显高出钢丝绳部分。而宽度不足的零件图中单个波峰的高度明显不足。所以零件“花头宽度”是否存在缺陷,可以通过“像素和统计图”中单波峰高度得到数值化的体现。图中“花头宽度”合格零件值为27,缺陷零件值为21,例如将标准宽度设为了24,检测时小于该宽度的零件视为存在“花头宽度不足”缺陷。该标准宽度在配置时生成,软件采集标准的合格零件,生成统计图,再乘权重值后计算得到。如标准零件“花头宽度”为27,用户要求达到它的90%可视为合格,得到标准参数为24。
金钻明就读的高中——洋泾高级中学也非常注重对学生综合素质和学习兴趣的培养。当时,浦东新区物理教研室组织安排了跨校的物理辅导班,这个辅导班选用新区的物理“尖子老师”来给学生授课,并且不以考试、竞赛为目的,只是为了培养学生的兴趣、开拓视野。因此很多学生都喜欢这个辅导班,金钻明也是受惠者之一。至今让金钻明难忘的是他参加过的一个激光兴趣班,在那里,他参与了激光全息照相,粗略地知道了信息如何能立体地存储下来。在初步感受到激光魅力的同时也埋下了科学的种子,他最终如愿收到了上海大学电子信息科学与技术专业的录取通知书。
当生产线震动较大时,相机和零件的距离变化将干扰计算得到的数值,此时可将零件非加工位置作为基准,计算宽度的相对比例,以减少相机相对位置变化对检测的影响。在上例中,钢丝绳为非加工位置,宽度为常量,所以可依据“花头宽度”和钢丝绳宽度的比例为判别是否存在“花头宽度不足”缺陷的标准。
针对零件外形的“分散度”检测标准,按列统计“跳动数”并生成统计图,可得到有明显区分度的分类特征。“跳动数”意为二值图像中黑白阶跃的数目,但考虑到相机成像质量的问题,当有噪声时,对该统计有明显干扰,所以统计时,利用零件外形连续的特性,当某一位置发现跳动时,考察相邻区域内是否同时有跳动,若有则此跳动记为有效,若没有则不计入。跳动统计图生成过程如公式(3)、式(4)所示:
s=[s1,s2, ...,sn-1]
(3)
(4)
式中,s为跳动统计向量,n为零件区域高度,f(i,j)为二值图像函数,值取1时为零件区域,值取0时为背景区域,σ为考察相邻区域的大小,一般取2或3。
以“打花”零件为例,图5所示为合格零件,图8为存在“散丝”缺陷的零件,图9为两零件的跳动统计图对比。
合格零件的跳动数在整个区域上都很小且平稳,而散丝零件纹理杂乱,反映在统计图上为大量锯齿,且每个波峰的高度较高。所以通过统计跳动数目,可得到分散度的数值描述。此处仅依据单个波峰判定缺陷时稳定性不足,故统计跳动数量大于阈值的列,列数量多于标准参数时视为散丝零件,即用整体趋势作为分类标准,提高算法克服干扰的能力。例如阈值设为3,标准列数设为5。合格零件跳动数大于3的列数为0,小于标准列数,判定为合格;散丝零件跳动数大于3的列数为23,大于标准列数,判定为存在“散丝”缺陷。该标准的生成过程与2.1小节类似,由配置时软件采集标准零件的参数,乘一定权重得到,这里不再赘述。
图8 “散丝”的打花零件
图9 两零件跳动统计图对比
大多数零件加工工序进行前,要检测零件偏转程度是否在可加工范围内,“偏转程度”也是常用的外形特征,针对轴对称的零件,该特征可使用“列中心位置统计图”得到数值化的描述。零件的上边界和下边界的中心,定义为这一列的中心点,首先根据每个中心点的纵向位置生成统计图,然后通过计算方差反映中心点的离散程度,得到零件偏转程度的数值描述特征。最后将该数值与标准参数值比较,判别出此零件是否存在偏转程度过大的缺陷。列中心点统计图计算过程如式(5)、式(6)所示:
m=[m1,m2, ... ,mn]
(5)
(6)
式中,m表示中心位置向量,n表示图像列数,hmax为第i列最大面积区域的边界点向量,其中两元素分别是上边界和下边界的纵坐标。
以“打花”零件为例,如图5所示为正常零件,图10为偏转程度过大的零件,图11为两零件列中心位置统计图,正常零件中心点位置平稳集中,偏转程度过大的零件中心点位置趋势陡峭、离散程度大。缺陷零件计算得到的方差数值为27.593,远大于正常零件的方差数值2.477。用于分类的标准参数值的生成过程与2.1小节类似,由配置时软件采集标准零件生成其方差值,乘一定权重得到。
图10 “定位偏转”的打花零件
图11 两零件列中心位置统计图对比
多数情况下,被检测零件要同时满足多个条件才视为合格,所以按级联分类器的思路,每一级使用一个特征检验其是否满足条件,串联各级分类器,根据各级的检测结果得到不同缺陷形式,以供生产线分拣存放,全部通过的视为合格品。级联分类器的示意图如图12所示。
图12 级联分类示意图
本文的实验验证部分将使用“打花”和“压铸”零件,它们是汽车拉线生产线两道工序的产品。实验数据和图片来自已部署在该生产线的机器视觉检测系统,嵌入式硬件为树莓派3B,其CPU频率1.2GHz,内存1GB,操作系统为Raspbian Jessie,相机型号锐尔威视USBFHD01M,背光光源为普通白光源,这些硬件是常见的通用设备,价格很低,以验证算法的稳定性、实时性和抗干扰能力。此检测系统使用MySQL数据库记录每次检测结果,方便用户查看生产线运行情况,3.1小节和3.2小节表格中的统计数据来自数据库的记录。
为了方便理解表格1中的“打花”检测结果统计数据,首先图示“打花”零件加工工序结果形式,它的合格形式和5种缺陷形式如图13所示。
(a) 合格零件 (b) 宽度不足零件 (c) 散丝零件
(d) 厚度不足零件 (e) 花头倾斜零件 (f) 偏转程度过大零件 图13 打花合格零件和各缺陷形式
生产线运行的一段时间内的打花检测结果统计表如表1所示。其中“合格”即为检测通过的零件,第2行至第4行的三种缺陷形式,对应第2节分类算法中的缺陷形式。“花头厚度不足”和“花头倾斜”这两种缺陷的特征描述也是通过“像素和”统计图计算得到,类似于“花头宽度不足”,故没有在算法介绍中赘述。而“未找到零件”是由于生产线发出检测信号时,零件加持装置异常,并没有零件放在背光光源上,第1节介绍的零件区域提取算法直接反馈该结果,不再调用分类算法。
表1 打花检测结果统计表
运行这一段时间内,视觉系统能将“打花”缺陷零件全部检测出来,但同时存在约1%的虚警率(即合格零件被判定为有缺陷的零件),这和配置阶段设置的权重有关,权重接近1时标准参数会更靠近标准零件生成的参数,稍差的零件将无法通过这样严格的条件。生产环境中一定的虚警率是可接受的,可以根据实际应用对象调整权重值。其检测时间约300ms,能满足该生产线的检测实时性需求。
首先图示“压铸”加工工序的结果形式,以方便理解表格2中的检测结果统计数据。合格的零件结果和4种缺陷形式如图14所示。
生产线运行一段时间内的“压铸”零件检测结果如表2所示,其中“合格”即检测通过的零件,各缺陷形式对应图示。其检测算法类似于“打花”零件,首先动态提取零件区域,然后生成几种统计图,计算特征的数值描述,最后通过级联分类器得到零件检测结果。
(a) 合格零件 (b) 压铸头宽度不足零件
(c) 压铸头宽度不足零件 (d) 散丝零件
(e) 钢丝绳损伤零件 图14 压铸合格零件和各缺陷形式
检测结果数量所占比例合格236387.454%压铸头宽度不足572.110%散丝1435.292%钢丝绳损伤1395.144%
这段时间内系统能将全部“压铸”缺陷零件检测出来,但也存在约2%的虚警率,略高于“打花”零件,其原因与3.1小节叙述的“打花”检测中的原因相同,实际生产环境中该数值在可接受范围内。其检测时间约380ms,能满足该生产线的检测实时性要求。
在系统参数配置阶段,可通过软件采集合格零件的图像,生成分类使用的标准参数,以降低配置复杂度。以“打花”零件为例,其参数有花头宽度、厚度等14个,配置时直接通过表格在软件上列出当前零件的相关信息,其中多数参数较为直观,用户可根据经验做调整。与生产线定位精度相关的参数,例如打花零件的“定位偏转”检测,生产线的4个零件夹持器位置不完全重合,可多次采集,覆盖定位时多个可能的情况,计算标准参数值时,将综合这几次零件的参数生成,增强分类算法的稳定性。采集次数可针对特定应用场景增减。
针对零件外形缺陷检测,文章提出的算法有较好的稳定性、较少的计算量和较强的抗干扰能力。其中,两次动态提取零件区域的算法在工业环境存在光干扰,以及生产线重复定位精度较低的情况下,能正常提取零件。与其它分类算法相比,统计图分类算法计算量较小、抗图像噪声能力较强,易于在低成本的通用嵌入式设备上保证检测的实时性和稳定性。其配置操作相对简单,分类使用的标准参数可自动生成,方便现场使用和调整。