曹 瑞,史程程,朱肖谣
(1.中车青岛四方机车车辆股份有限公司,青岛 266000;2.青岛大学 自动化学院,青岛 266071)
动车组配电盘在运行使用一定时间之后或者高级检修过程中需要对其状态进行检查,判断零部件是否缺失、零部件安装是否正确、配电盘有无异物遮挡或遗留等情况。通过人工目视检查的方式,存在对人员经验的依赖性和检查结果的不确定性。尤其是数量众多的开关组配电盘人工目检的误检的几率更高,若异常状态不能被及时发现,将造成安全隐患。模板匹配是机器视觉中比较常用的方法[1],通常用于缺陷检测、目标识别等领域。例如孙炼杰,樊臻在光纤收发PCB板目标检测[2]中采用了基于灰度值模板匹配的方式;陈广锋,管观洋,魏鑫在冲压件表面缺陷在线检测研究[3]中采用了基于形状的匹配方式。
动车配电盘开关组的打开状态和闭合状态分别对应红色和绿色颜色标识,如图3所示,因此识别颜色即可对开关状态进行判断。如何判断开关是否是应有的状态,如(影视控制开关应打开),则通过与良品配电盘建立的模板进行灰度值模板匹配。匹配前需将检测图像进行校准使其与基准图像重合。
由于动车空间配电盘处空间狭窄,且一节车厢中仅有几处配电盘,不方便机械定位结构的架设,所以采取操作人员人手持相机进行拍摄的方法。拍摄完成后的照片通过无线通信传输到车外的工控机进行图像处理。人手持拍摄角度高度带有很大的不确定性,与基准图像存在位置上的差异,所以首先应进行校准,使待检图像和基准图像相对位置的重合,这样,基本保证两幅图像相同像素的坐标在一个误差范围内,后续可以通过扩大搜索范围来寻找目标点。关于仿射变换,Halcon里提供了一种叫做affine_trans_image的算子[4]即affine_trans_image(Image:ImageAffinTrans:HomMat2D,Interpolation,AdaptImageDize:)
在确定好校正点之后,该算子通过平移,缩放,旋转,待检图像的校正点与基准图像的校正点重合[5]。校正点的选取可以有多个,数量增加会提高校正的准确度,但相应的校准速度会降低。该算子的参数,其中Image是原始图像,即原始的待检图像,ImageAffinTrans是仿射变换后的图像,HomMat2D是仿射变换矩阵,Interpolation为灰度插值函数,AsaptImageSize设置为true,则自动调整输出图像大小使图像右下角对齐[6]。如图1所示,图1(a)是待检图像,图1(b)是经过仿射变换校准后的图像。
图1 仿射变换校准待检图像
模板匹配的基本含义是通过已有的一幅图像或某个区域作为模板图像,根据一定的算法模式在另一幅图像中(通常是待检图像)寻找该模板的一种方法。其有三种基本匹配方式:即Component-Based、Shaped_based、Gray-Value-Based,分别是基于组件,基于形状和基于灰度值的匹配[7]。本文利用基于灰度值的模板匹配方式,其同基于形状、特征的匹配流程是一样的,主要分为两步—创建模板和模板匹配。创建模板就是以整体的原始图像或者是选定的感兴趣区域(ROI)作为模板,一般需要有鲜明的特征,如形状或特定范围内的灰度;模板匹配就是根据创建好的感兴趣区域,在待检图像中设定好的搜索范围内寻找一定相似度的特征[8]。
选定搜索区域后,模板在该区域做相似度匹配,相似度D(I,j)是衡量搜索精确度的重要参数,算法有多种,最常用的是平均绝对差算法(简称MAD算法)[9]。计算公式如下:
式中,S(x,y)是搜索图SearchImage,T(x,y)是A×B的模板图ModelImage,i,j是大小为A×B的子图的左上角像素坐标。遍历整幅搜索图像,在所有子图中,与模板图像相似度最高(D(x,y)值最大)的即为匹配结果。该算法运算过程简单,匹配精确度高,但对光线要求较高,如果待检图像的光照条件与基准图像相差过大,会造成噪声干扰,影响匹配效果。
Halcon是德国MVtec公司开发的一款机器视觉软件,拥有集成度较高的开发包,广泛应用于工业领域[4]。利用Halcon进行模板匹配编程步骤如图2所示。
图2 软件设计流程
1)将采集图像序列放入指定文件夹;
2)分别获取待检和模板图像数据的地址、图像的高度和宽度;
3)建立一个目标对象指针到指定内存,用以存储完成匹配后的结果图像,将待检图像复制到目标对象;
4)选择一定算法进行创建模板和模板匹配。
创建模板的算子是:
参数中,Template是输入模板图像,NumLevel表示图像金字塔等级的最大数量。Optimize优化方式,这里我们选择none,GrayValues表示灰度值来源的方式,包括梯度','归一化','原始','sobel ';TemplateID是软件分配给建立好的模板一个标识号。利用”gen_rectangle2(:Rectangle :Row,Column,Phi,Length1,Length2 :)”框选出每一个开关下的色块,在确定好ROI的同时,利用gen_rectangle2确定一个搜索区域,该区域要大于ROI,但是不能将周围开关框选,保证每个搜索区域内只有一个开关色块。搜索模板和图像最佳匹配,模板匹配的算子:
Image为打开的检测图像;TemplateID在create_template中分配的ID号,MaxError灰度值的最大平均差,SubPixel是否采用亚像素,Row和Column分别是匹配的行坐标、列坐标,Error最佳匹配的灰度值的平均发散度。关键Halcon代码如下:
在基准图中,建立的开关端子的ROI和搜索区域,当在搜索区域中成功匹配到与基准图像同样位置的色块,则说明该开关正常,若不能寻找到该色块,说明该开关存在异常状态。图3中分别进行了良品图像和模拟故障的匹配测试,开关状态正常时,结果用绿框标出,如图3(b)所示;开关状态异常时,结果用红框标出,如图3(c)所示。
图3 匹配测试
在实际现场测试中,每列车共计8个此种型号的开关型配电盘,每个盘64个开关。车厢断电情况下接近全暗环境,相机必须加装光源。由于基于灰度值的模板匹配,灰度的变化受光线的影响较大,为保证良好的匹配效果,拍照检测时的的光照度和色温应与基准图像光源的相等,试验中统一采用4000K色温,50lux光照度的光源。64个开关全部正确识别出,识别时间在1s以内,达到了系统检测的实时性要求。
本文运用机器视觉的方法,考虑到开关形状特征不明显,且形状特征受拍摄角度的影响较大,故采用基于灰度值得模板匹配方法。在Halcon开发环境中进行编程,经过创建基准图像模板,校准检测图像,搜索模板进行模板匹配完成了对大量开关的状态校测。从测试结果来看,在同等光线条件下,64个开关均能准确地判断出正确状态,模拟故障的检测成功率也达到了100%。该方法也存在一些不足,例如,基准图像的制作,检测目标点的选取效率较低,对光线条件要求高等,后续通过增加目标检测点的相似性查找,研究算法使相等灰度值的区域自动完成框选,改进匹配算法,减小对噪声干扰的影响。