黄捷
(福建星网锐捷通讯股份有限公司 福建省福州市 350000)
每个公司都需要对出厂的产品进行质量控制,出厂前需要进行产品外观及性能检查。特别是带按键的产品进行按键丝印的检测,如果按键位置装错或者丝印缺失等,都会引起客户的投诉,轻责需要批量返工,重则需要进行大额赔偿,进而客户对公司的品质失去信心。目前大多制造工厂依然使用人工目视检测的方法,这样不但效率底下,而且漏检、误判等现象时有发生。一方面人工成本不断提升,另一方面是对品质的高度要求,所以使用自动化设备替代人工目视检查的需求尤为突出[1]。
LabVIEW 是由美国NI 公司开发,专为工业生产中的测试、测量和控制应用而设计的图形化系统工程软件,可快速访问硬件和数据信息,使用内置控件可快速的制作出美观且实用的测试软件界面。
HALCON 是德国MVtec 公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了软件开发周期——HALCON 灵活的架构便于机器视觉的快速开发。
系统软件,使用LabVIEW 软件编写框架,核心的机器视觉及缺陷检测由Halcon 实现后被LabVIEW 调用。
系统硬件(如图1),主要包括升降系统,工业相机+镜头,LED 光源。
根据按键丝印可能出现的缺陷,例如缺失,按键装错,丝印被污染等,需要选择高分辨率工业相机,配合无畸变广角镜头,光源需要无频闪,亮度可调,关照均匀的白色LED 环形光源。
系统工作过程(焦距与光源已提前设置好):
(1)待测物放置于测试平台上。
(2)工业相机采集高清图像。
(3)计算机通过USB 接口读取时时图像。
(4)软件进行图像处理与缺陷检测,并对缺陷位置进行标注,同时后台进行数据统计[2]。
图形采集方式有两种方式,一是通过LabView 视觉模块的NIIMAQDx 模块中提供了获取图像的各种子VI,包括打开相机,配置相机,启动采集,获取图像,关闭相机等子VI 模块,通过对这些字VI 模块的调用及编程实现对图形进程采集。
另一种是调用相机公司提供的DLL 的动态链接库文件,使用LabView 提供的调用库函数节点(Call Library Function Node.CLFN)通过对该节点的配置实现DLL 的调用,调用时需根据该相机的SDK 文档正确调用相应的函数,并进行函数输入输出的参数配置,进而实现图像采集的功能。
在图像采集过程,由于各种原因总会引入一下干扰信息,而在图像分析中,图像信息的准确度直接影响识别算法的设计与检测效率,因此在图像分析(特征提取、分割、匹配和识别等)前,需要进行预处理。图像预处理的主要目的是去除图像中不关注的信息,重点关注有用的真实信息,增强目标信息的可检测性、最大限度地简化数据,从而提高图像分析(匹配,识别等)的可靠性和高效性[3]。
匹配模板的生产过程也就是图像特征值的提取过程。特征值提取是整个图像识别的重要环节。由于是配合生产使用,不但要求准确度,生产效率也是要重点考虑的。本系统检测重点是按键丝印,所以需要将感兴趣的区域(也就是ROI)确定出来,ROI 的确定,LABVIEW 提供了一个方便的VI(IMQA ConstrctROI),可以手动确定ROI 区域,然后使用IMAQ xtract 进行图像分割,分割后才能进行下一步模板的建立。
模板匹配[1]是一项用于图像中快速定位已知参量或基准模式,是一项关键技术[2]。以及其模板匹配可以提供一个图像中的特定特征值是否存在,以及数量和位置。通过使用图像的特征值与待测图像进行匹配,该部分的完成是整个系统核心部分[3]。
Halcon 中提供的匹配有基于组件匹配、基于灰度值匹配、基于形状匹配。这三种匹配的方法各具特点,分别适用于不同的图像特征,但都需要先创建模板,再寻找模板。在目标检测过程中,常用的方法就是设置一个模板,以窗口滑动的方式遍历整幅待检测的图像进行匹配。
创建模板的函数:create_shape_model(Template::NumLevels, AngleStart, AngleExtent,AngleStep,Optimization,Metric,Contrast, MinContrast : ModelID ) 。
Template:要建立模板原始图形,要使用图形特征鲜明的图形,但又不能太大。
NumLevels:金字塔的层数,金字塔分层法能有效的提高图像匹配效率,一般设为auto,算法会自动计算金字塔的层数。
AngleStart:匹配起始角度。
AngleExtent:匹配的角度范围。
AngleStep:配旋转角度的步长,一般设为auto,算法将会基于模板的大小自动定义一个合适的角度步长。
Optimization:创建模板的方法,一般设为auto,算法将会自动确定模型的点数。
Metric:匹配模板的条件, 设为 'use_polarity',图像中的目标必须和模型具有一样的对比度。
Contrast:对比度,测量目标与背景之间和目标不同部分之间局部的灰度值差异。
MinContrast:将模板从图像的噪声中分离出来。
ModelID:输出模板句柄。
模板创建好后,就可以用实时采集到的图像,来进行模板匹配。就是在时时图像中找出最佳匹配的模板,函数返回找到图像的位置和旋转角度。
模板匹配函数:find_shape_model(Image::ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle,Score) 。
Image:被搜索的图像。
ModelID:模板句柄,由create_shape_model()生成。
AngleStart:搜索起始角度。
AngleExtent:搜索角度范围,必须与创建模板时的有交集。
MinScore:最小匹配值,也就是相似度,当相似度大于此设置值时才会输出结果。
NumMatches:输出的匹配的最大个数。
MaxOverlap:目标存在重叠时设置,本系统不允许目标重叠,顾设置为0
SubPixel:计算精度的设置,决定是否精确到亚像素级,设为’interpolation’,这个模式速度较快,设为’least_square’,’ lease_square_high’,精度更高,但这样会增加额外的时间,因此,这需要在效率与精度进行妥协,本次由于图像特征明显,顾设为’interpolation’。
NumLevels:搜索时金字塔的层数,一般与create_shape_model()相一致。
Greediness:贪婪度,搜索启发式,0-1 之间,在大多数情况下,在能够匹配的情况下,尽可能的增大其值,本次设置为0.8。
Row, Column, Angle, Score:输出匹配位置的行和列坐标、角度、相似度得分。
本系统使用的是基于形状匹配,为了达到较好的效果,做了许多测试,根据实际情况做了一些设置加快搜索匹配:
1,MinScore 值可配置,在系统中实时设置,值越大,速度越快。
2,限定搜索ROI 的区域,限定允许的旋转范围和大小范围,本次图像的ROI 区域较多,但是相对位置与角度都不变,只要找到一个,其他图像可以根据坐标轴计算,确定其位置与角度。
通过研究,目前LabView 调用Halcon 的方法有两种,但都需要 调 用halcon.dll,halcondotnet.dll,hdevenginedotnet.dll,这 三 个DLL 文件。
图2:构建halcon 创建模板函数图
一种是labview 使用.Net 构造器节点,调用hal,依据已经写好的halcon 程序,依次构建相关的halcon 算子,达到调用halcon的目的,实现相关的halcon 功能,如图2,为构建halcon 的创建模板函数[4]。
另一种是labview 先构建halcon 运行环境,然后直接调用HDevEngine,也就是直接调用运行使用halcon 已经写好的程序,就不需要像第一种方法那样重复进行算子构建。
第一种方法过程相对复杂,无论是BUG 修改还是后续程序的升级都相对繁琐,但胜在程序的保密性好。
第二种方法过程简单,halcon 程序可以直接在文档修改,但是halcon 程序文档不是加密文件,故保密性较差,但由于是公司内部使用,本系统采用第二种方法。
本文介绍了利用LabView 软件平台,通过调用外部Halcon 的机器视觉功能,结合自带的VISION 实现对按键丝印的自动化检测,实际投入生产实践表明,此检测系统能满足公司按键丝印检测要求,有效的提升检测效率。