基于halcon的字符缺陷检测系统
2018-10-11汪成龙黄余凤陈铭泉陈泽涛
汪成龙,黄余凤,陈铭泉,陈泽涛,何 宣
(惠州学院 电子信息与电气工程学院,惠州 516015)
0 引言
在日常生活和工业生产中,大部分产品都印刷有各种字符,利用字符识别产品已成为主要途径。字符可以代表产品的品牌、型号、生产日期、长度和重量等,这些信息反映了产品的状况,因此字符印刷的正确性影响人类对产品的认识度和产品及质量。工业生产中,字符由机器印刷,由于产品漏放,偏放或机器误操作,都会导致产品字符缺陷。字符缺陷主要包括:字符印刷不清晰,字符相对位置不合格,字符漏印。这将导致产品信息的不完全甚至错误,因此在生产制造中,产品的字符检测尤为重要。
传统的质量检测主要依靠人眼检测,而在嘈杂的工厂环境中,大量的检测工作以及质量检测的高要求,单纯依靠人眼是难以满足。这使得以机器视觉代替人眼实现字符缺陷检测成为必然的发展趋势。
鉴于目前我国产品字符检测技术还不够成熟,而人工检测效率低、主观性强,国内字符缺陷检测多采用人工方式,缺乏客观性和科学性,劳动强度大,效率低[1],因此有必要研究一种速度快,准确率高的自动检测方法。
基于机器视觉的字符缺陷检测需要对字符用相机进行采集,然后运用图像处理的算法进行识别判断,最后控制电机进行相应操作。
本文首先对产品的字符图像进行采集,然后对采集到的图像进行预处理,将图片中的噪音消除并且将杂质过滤掉;接着设定字符检测区域,再选取7~10个正常样本进行训练,查看均值图像和标准差图像,并设定最小绝对阈值和基本阈值。最后对系统进行运行检测和数据分析实验表明,该方法能精准稳定地检测产品字符是否缺陷,且检测速度快,准确率高。
1 图像获取
在halcon中,获取图像有两种方法,一是通过摄像头实时采集,二是读取磁盘中的图片。halcon为百余种工业相机和图像采集卡提供接口,包括GenlCam,GigE和IIDC1394[2]。通过halcon自带的图像获取助手能快速的进行实时采集,步骤如下:
1)点击打开新的Image Acquisition;
2)选择图像获取接口;
3)点击自动检测接口;
4)实时连续采集;
5)代码生成;
6)插入代码。
由于已有相机采集的字符图片,本文直接采用第二种方法,即从磁盘中读取图片。利用halcon自带的算子read_image(:Image:FileName:)获取图片。
2 图像预处理
2.1 图像灰度化
图1 图像获取助手
图像的每个像素的颜色由R、G和B三个分量决定,每个分量有256种取值,如果直接进行处理,信息计算量非常大,因此对图像进行灰度化处理可降低图像处理时间。Halcon的rgb1_to_gray算子能够进行灰度化操作,其灰度图像根据下面公式所得[3]:
Red,Green,Blue分别表示红绿蓝三个通道,它们占的比例分别为29.9%,58.7%和11.4%。
图2 原始图像
图3 灰度图像
2.2 高斯滤波
滤波是图像处理中常用的一种算法,其主要原理是在指定图像上给定一个模板,该模板包括了目标像素及其周围的像素(一般模板的大小为3×3),而目标像素的灰度值由其他像素和自身像素的灰度值确定。均值滤波里的模板核中所有的系数都为1,虽然能够很好的取出图片中的噪点,但它却使图像变得模糊,并且破坏了图像中应有的结构特征[4]。相比于均值滤波,高斯滤波的模板核中的系数发生了变化,高斯滤波中的系数是根据式(2)得到的,其原型是二维高斯函数。
图4 均值滤波核结构
图5 高斯滤波核结构(σ=0.8)
经过高斯滤波的图像,不仅去除了图像中的高斯噪声,而且保持了图像中的细节部分和轮廓特征,但其所得效果也与系数有关,过小平滑效果不明显,达到1.8时其效果基本和平滑滤波相近,因此需要调好高斯滤波的系数。由于本文中所采取的图像打光效果好,图像噪声少,故采用σ=0.8的高斯滤波即可。
图6 原始图像
图7 高斯滤波图像
图8 均值滤波图像
3 基于halcon的字符缺陷检测方法
变化模型是halcon中检测字符缺陷常用的一种算法,用于区分好的对象和坏的对象,它仅仅依靠对象的灰度值进行判别。主要原理是对比字符上每个像素点的灰度值。不同位置上点的判断标准不一样,字符内部的点要求较高,允许范围较小,字符边缘部分的点允许范围较大。由于每个样本的灰度值都存在着些许差异,所以变化模型要用到不止一个好的样本,它有一个训练的过程,一般需要用到8~10好的样本,因此变化模型匹配的通用性好,稳定性高[5]。
固定字符的区域,根据以下公式设定需要得到的字符区域灰度值范围:
部分检测结果如图9所示。
图9 部分样品检测结果
4 基于halcon与C#软件设计
Create _ variation _model (::Width ,Height ,Type,Mode : ModelID )[6]
Width:输入需要对比图像的宽度;
Height:输入需要对比图像的高度;
Type:输入要对比图像的类型,默认:’byte’参考:’byte’,’int2’,’unit2’ ;
Mode:输入变换模型的计算方法,默认:’standard’,参 考:’standard’,’robust’,’direct’;
ModelID:输出变换模型的句柄。
在可变模型中,存在着理想图像和变换图像的概念。在创建对象时,需要注意Mode这个参数。当Mode=’standard’,将对象的理想图像表示为所有训练图像的平均值,相应的变化图像表示为所有训练图像的标准偏差。要确保只有良好对象的图像被训练,因为平均值和标准偏差对于异常值是不稳定的,如果不良对象的图像被无意地训练,则理想对象的精度可能会受到影响。其优点是可以迭代地对变化模型进行训练。
当Mode=’robust’,将对象的理想图像表示为所有训练图像的中值,相应的变化图像表示为所有训练图像的中值绝对偏差。这种模式的优点在于容错性较大,不会因为加入不良对象导致模型的不稳定。缺点在于不能进行迭代训练,所有的训练都是累积的。
4.1 训练过程
在创建变换模型对象中,选择’standard’模式,在下面的训练过程中加入的都是良好对象的图像,这里采用了10张图像进行训练。训练中特别需要注意的是,由于变换模型对灰度值要求很高,而每张图像中字符位置总有偏差,为了确保字符都在同一个区域,有必要进行匹配定位和放射变换,以矫正字符的位置。
4.2 查看训练结果并设定标准
训练完毕后,通过get_variation_model(:image Image,image VarImage:
Variation_model ModelID:)查找变化模型的理想图像和变换图像,结果如图11~图13所示。
图10 理想图像
图11 变换图像
图12 最暗灰度图像图
图13 最亮灰度图像
由于设定的模式为standard,理想图像即为均值图像,变化图像即为标准偏差图像。从图9(b)中可看出,理想图像基本上与良好对象的图像相同。从图9(c)中可看出,变换图像中字符边缘部分亮度较高,字符内部区域亮度较低,背景部分亮度最低,即反应了字符边缘灰度值变化较大,而其他地方灰度值变换较小或不变。上面两图符合预先设想的结果,表明加入训练的样本都为良好样本。接着要进行标准设定,即设定每个像素点灰度值的波动范围为多少,超过波动范围即算缺失。
根据多次实验结果表明,当AbsThreshold=20,VarThreshold=3时正确率最高。
5 结论
以60张产品字符图片为样本,利用halcon编写检测软件,软件界面如图10所示。
图14 字符缺陷检测系统
表1表明,该系统对四种缺陷类型和完整样本测试正确率均为100%。
表1 运行结果数据表
得到结论如下:
1)检测精度高,可检测细小的瑕疵。
2)检测速度快,检测时间一般在几百毫秒内。
3)稳定性高,对相似产品有一样的判断。
4)满足工业二十四小时生产的需求。