黄思博,蔡昭权,方晓彬,陈伽,蔡映雪
(惠州学院,惠州516007)
随着全球电子信息产业的快速发展,我国已成为全球线束及连接器增长最快和容量最大的市场[1],其中,汽车线束作为汽车电路的网络主体,其质量直接关系车辆的稳定性和安全性[2-3]。在线束生产和装配过程中,最常见的缺陷包括线束端子包胶不良[4]、铜线过长、过短,线束没有按照规定的颜色顺序接插或漏线等不良,当前仍有不少企业在生产过程中采取人工目检的方式对产品进行检测,该方式容易受到视觉疲劳等因素影响而出现漏检、误检,影响不良品的检出效率,影响线束产品的良品率,且成本较高,无法满足相关企业对线束产品质量的检测要求。本文研究通过机器视觉方法替代传统的人工检测,基于HALCON 算法包研究汽车线束端子及线束线序的检测方法,并通过C#和HALCON 联合编程实现相关功能。
线束端子及线序缺陷检测系统由工业相机、可调节实验工作台、光学镜头、照明光源、相应的数据线和PC 组成。其中,工业相机、工业镜头以及光源用于图像采集,实验工作台可对相机和光源夹具进行水平和竖直方向的拉伸和微调,适应各种测试环境,满足图像采集过程中对视野的要求。
系统通过工业相机采集汽车线束图像,针对单线端子和线束线材进行缺陷检测,主要通过图像预处理、Blob 分析、单线端子区域定位方法和孔洞铜线的特征分析、线束分割、线束颜色及混色线束特征提取分类等方法的研究,进行缺陷识别的算法设计和验证,并通过HALCON 与C#的联合编程实现。
对图像的预处理主要包括图像灰度化和均值滤波。
将彩色图像转化为灰度图像的过程称为图像的灰度化处理。对于灰度化的方式有分量法、最大值法、平均值法,加权平均法等。本文采用的灰度化方式是加权平均法,其定义为:
均值滤波器使用滤波器模板确定的邻域内像素的平均灰度值代替图像中的每个像素值,降低图像灰度的尖锐变化,即模糊图像的边缘和轮廓。最简单的均值滤波器是算术均值滤波器,定义为:
Sxy表示中心在点(x,y)处、大小为m×n 的矩形子图像邻域的一组坐标,算术均值滤波器在Sxy定义的区域内计算图像g( s,t )的平均值,将其作为邻域中心点的像素值f(x,y)。
在对汽车线束的端子和线材检测前,需要对端子和线材进行定位以及特征提取。为了实现线束端子和线束线序的检测,需要对端子和线束进行定位,并提取端子和线束的特征。对于线束端子,先通过Blob 分析方法,定位出感兴趣区域,再通过阈值分割铜线区域,提取区域高度特征;对于线束而言,先通过模板匹配方法,定位出感兴趣区域,再通过阈值分割出线束区域,提取颜色矩特征。
图像中具有相似颜色、纹理等特征的区域,所组成的一块连通区域,称作Blob。而Blob 分析[5]是对图像中相同像素的连通域进行分析和操作,从背景中分离出目标。
(1)单线端子Blob 分析定位方法研究
首先基于区域对图像分割,利用阈值分割方法分割出处在阈值范围内的图像,定义如式(2):
在HALCON 中,阈值分割的算子为:
threshold(GrayImage,Regions,80,255)
GrayImage 为输入的灰度图像,Regions 为阈值分割所获取的区域,阈值范围取80~255。如图1(a)所示,红色部分为分割出来的感兴趣区域。由于阈值分割出来的结果中包含有不需要的部分区域,因此,需要调整分割后的区域形状,调整区域的方法包括形态学处理、特征提取及筛选和区域形状变化等。
其中选择区域面积作为区域特征,区域的面积a就是区域内的点数 ||R ,定义如式(3):
首先对阈值分割后的区域进行连通,HALCON 中连通区域的算子为:
connection(Region,ConnectedRegions)
感兴趣区域Region 分散为连通域ConnectedRegions。如图1(b)所示;
接着通过连通域分析,区域面积取400 到2000 作为阈值,筛选出需要的区域,如图1(c)所示;
select_shape(ConnectedRegions,SelectedRegions,'area','and',400,2000)
最后改变区域形状,将筛选出的区域连接成一个包含铜线的大区域。HALCON 中区域形变的算子为:
shape_trans(SelectedRegions,RegionTrans,‘rectangle2')
取'rectangle2'最小外接矩形参数作为形变结果,将筛选区域SelectedRegions 形状改变为矩形区域RegionTrans,如图1(d)所示。至此,完成通过Blob 分析方法的区域定位。
图1 Blob分析定位
(2)单线端子特征提取研究
当端子中的铜线过长或者过短时,都会导致生产的汽车线束产品不良。因此,可在端子中的铜线部分提取特征,作为判断依据。首先按照Blob 分析定位的区域将原图像裁剪,如图2(a)所示;接着使用7×7 均值滤波器平滑裁剪图像,进行去噪处理和模糊边缘,方便后期处理,如图2(b)所示。
图2 均值滤波
在RGB 颜色空间中,铜线区域难以从背景中通过阈值分割出来,因此将图像转换到更接近人视觉特性的HSV 颜色空间。HSV 模型中,H 分量图像和S 分量图像均可通过阈值分割出铜线区域。
图3 HSV颜色空间
分割结果中往往包含干扰,通过区域形态学方法调整区域形状。两个区域R 和S 的交集是位于R 内且又位于S 内的所有点的集合,定义如式(4):
在H 分量图像中取10 至27 的阈值范围,在S 分量图像中取96 至172 的阈值范围,分割出的结果中包含有非铜线区域,为过滤掉这些干扰,可取两个分量图像各自分割出的区域的交集,以获取实际需要的区域。在HALCON 中利用以下阈值分割和区域交集的算子进行处理,效果如图4(a)所示。
threshold(Hue,HRegions,10,27)
threshold(Saturation,SRegions,96,172)
intersection(HRegions,SRegions,HSRegion)
接着对区域进行闭运算,即先膨胀处理再腐蚀处理,可有效弥补裂缝。HALCON 中闭运算的算子为:
closing_circle(HSRegion,RegionClosing,3)
取3×3 圆形模板对有裂缝的HSRegion 区域进行闭运算,弥补裂缝获取RegionClosing 区域;取500 到12000 的区域面积特征作为阈值范围,筛选出需要的区域,改变区域形状以方便处理,如图4(b)所示。
图4 形态学处理
最后,通过提取端子的上、下孔洞铜线区域的高度和数量,作为判断端子好坏依据的特征。
(1)线束定位方法研究
线束定位主要通过模板匹配实现,根据相似度的定义方式,可分为不同的模板匹配方式。基于灰度值的模板匹配[6]算法,是基于模板和图像中的灰度值计算相似度进行匹配。最简单的相似度量是计算模板与图像之间差值的绝对值的总和(SAD)或所有差值的平方和(SSD),但易受光照变化影响。为适应不同的光照环境,须计算另外一种不随光照变化而变化的相似度,即归一化互相关系数(NCC),定义如式(5):
NCC 通过计算图像的平均灰度值和方差来消除光照变化的影响,系数范围在-1 到1 之间,如果模板和图像完全相似,则NCC=±1,反之如果NCC 值越接近0,则表示模板和图像越不相似。在整个图像中计算相似度是非常耗时的过程,为了提高算法速度,设置一个适当层数的图像金字塔,减少需要检查的位姿数量以及模板中点的数量,提高匹配速度。由于检测的线束是双排线束,线束连接器的正反面的形状和细节不一致,因此,截取连接器的一部分和背景,作为基于灰度值的NCC 模板匹配的模板。
一般情况下,待测图像目标物体的位姿与参考图像目标物体的位姿往往是不同的,因此,需要对参考图像中的感兴趣区域的位姿进行适当调整。通过仿射变换[7]修正位姿。定义如式(6):
创建模板后,通过模板在待测图像中寻找目标物体,获取目标物体的位姿。计算出参考图像目标物体的位姿变化到待测图像目标物体的位姿所需要的变换矩阵;再利用参考图像感兴趣区域的位姿,通过变换矩阵计算出待测图像感兴趣区域的位姿,这样就获取了待测图像感兴趣区域,即完成线束定位。
图5 线束定位
(2)线束颜色特征提取方法研究
颜色矩[8]是一种非常简单而有效的颜色特征,由于颜色分布信息主要集中在低阶矩中,因此采用颜色的一阶矩、二阶矩和三阶矩就足以表达图像的颜色分布。定义如式(7)、(8)、(9):
式中,N 表示图像总像素数,Pi,j表示图像第i 个颜色通道第j 个像素值,μi表示第i 个颜色通道上所有像素的均值,σi表示第i 个颜色通道上所有像素的标准差,Si表示第i 个颜色通道上所有像素的斜度的3次方根。
由于线束中包含有混色线,直接用阈值分割难以识别出混色线,因此需要选用其他颜色特征,如颜色矩。提取线束的颜色矩,仅采用颜色矩的一阶矩和二阶矩。由于在RGB 颜色空间中,线束区域难以从背景中通过阈值分割出来,因此在HSV 颜色空间中提取三个通道的颜色矩特征。
在H 分量图像和S 分量图像中通过阈值分割出部分线束区域,分别取25~230 和107~205 的阈值范围,合并两个区域,在HALCON 中阈值分割和区域合并的算子为:
threshold(Hue,HRegions,23,230)
threshold(Saturation,SRegions,107,205)
union2(HRegions,SRegions,HSRegion)
最后通过区域面积特征和宽度特征过滤掉不需要的区域,HALCON 中对应筛选的算子为:
select_shape (ConnectedRegions, SelectedRegions,['width','area'],'and',[0,500],[60,3000])
这样就可以有效分割出线束区域,并从中提取颜色矩特征。
图6 线束特征提取
通过Blob 分析方法分割出端子的铜线区域之后,计算铜线区域的数量和高度,并判断端子好坏。在HALCON 中实现的关键代码为:
count_obj(HSRegionTrans,Number)
area_center(HSRegionTrans,Area,Row,Column)
smallest_rectangle2(ObjectSelected,Row1,Column1,Phi,Length1,Length2)
count_obj 获取铜线区域HSRegionTrans 的数量Number;area_center 主要获取铜线区域HSRegionTrans的区域面积Area,根据区域面积判断上、下孔洞铜线区域,上孔洞铜线区域面积一般大于下孔洞的;smallest_rectangle2 主要获取铜线区域的区域高度Length2,即铜线像素长度。如果铜线区域有两个,且上孔洞铜线区域高度在20 到24 范围内,下孔洞铜线区域高度在8 到12 范围内,则判断端子为良品。
图7 端子检测识别
如果铜线区域只有一个,则判断端子为不良品。铜线过长的不良品,端子上孔洞的铜线区域高度,一般要高于铜线过短的不良端子下孔洞的铜线区域高度。不良端子的识别结果如图8 所示。
图8 端子检测识别
采用BP 神经网络[9]构造MLP(多层感知器)分类器,层数为3 层,提取实验样品线束在HSV 三个通道的颜色矩(一阶矩和二阶矩)共6 个数据作为输入,即输入层有6 个节点;需要识别的颜色有12 种,即输出层有12 个节点;隐藏层节点个数一般在输入层节点个数和输出层节点个数之间,这里取8 个隐藏层节点。接着取一组不同线束的颜色矩作为训练数据,如表1所示。
表1 训练数据
MLP 分类器训练完成后即可检测是否存在漏线、误配线等缺陷。检测结果如图9 所示。
图9 线束检测识别
系统界面采用C#语言制作的图形化显示界面,其界面如图所示。主要功能包括读取采集图像,检测图像缺陷,显示检测区域,显示检测结果。对端子和线束线序的检测功能和结果如图10 所示。
本文通过研究基于机器视觉方法对汽车线束端子和线序进行自动检测,以提升检测精度和速度,改善现有人工目检易误检、漏检的缺陷,进而提升企业线束产品的良品率。本文基于HALCON 机器视觉算法包,设计了图像预处理方法和基于Blob 分析、模版匹配的定位方法,并提取区域特征实现对线束端子的缺陷检测,通过提取颜色特征结合BP 网络实现线束线序的检测,最后基于C#和HALCON 混合编程实现,具有较好的实用价值。
图10 线束端子及线束线序检测结果