基于HALCON的喷码字符识别技术的研究与实现

  • 投稿Su S
  • 更新时间2015-09-11
  • 阅读量616次
  • 评分4
  • 67
  • 0

肖海俊1,2,葛广英1,2,姚坤1,2,尹红敏1,2

(1.聊城大学物理科学与信息工程学院,山东聊城252059;2.山东省光通信科学与技术重点实验室,山东聊城252059)

摘要:为了实现产品包装上喷码字符高效、快速、准确地识别,设计了一种基于HALCON的喷码字符识别系统。首先采用四次不同结构元素的闭运算准确提取字符,然后再采用BP网络训练样本,根据字符的特征对样本进行分类,生成相应的字符库,并调用该字符库读取字符,进而识别出字符符号。实验结果表明,这种方法运算速度快、准确性高。

教育期刊网 http://www.jyqkw.com
关键词 :喷码字符;HALCON;闭运算;BP网络

中图分类号:TN911.73?34 文献标识码:A 文章编号:1004?373X(2015)15?0095?04

收稿日期:2015?03?20

基金项目:国家自然科学基金项目(10874063)

0 引言

随着科学技术的发展,在大规模的产品包装流水线生产中,要进行喷码操作,喷码印刷是饮料、食品、烟酒、化妆品、药品、电缆等包装印刷企业使用比较普遍的一种方法。操作的不稳定性往往会产生漏喷和错喷等现象,所以需要在喷码之后进行喷码质量的检测。传统的方式为人工检测,由于人工检测需要大量人工,成本高,人眼易疲劳,稳定性差,速度慢,而自动化、集成化生产是现代工业生产的趋势,所以需要一种新的方式替代人工,进行产品质量无接触自动检测[1?2],实现高速度、高精度、实时性、自动化的生产。

HALCON 是德国MVtec 公司开发的具有强大功能的图像处理软件,它拥有应用广泛的机器视觉集成开发环境,并且含有一个非常完善的函数库,包含定位、匹配、识别等高级算法,能够进行图像获取、模板匹配、Blob分析、边缘提取、测量、识别等,HALCON是世界公认的具有最佳效果的机器视觉处理软件[3]。

本文使用HALCON软件进行喷码字符识别,在获取图像之后进行图像预处理、获取感兴趣区域、字符提取、字符识别。在字符提取时采用数学形态学滤波,与以往不同的是采用四次不同结构元素的形态学操作,将每个字符独立的点阵连在一起以便于提取,此方法能够快速、准确地提取字符。目前常用的字符识别方法有模板匹配法[4?5]和基于人工神经网络算法[6?7],本文采用基于人工神经网络算法进行字符识别,首先由BP神经网络训练样本,根据字符的特征对样本进行分类,生成相应的字符库,然后调用该字符库读取字符,进而识别出字符符号。

1 系统组成框架

系统硬件结构图如图1所示,整个系统主要由产品运送模块、图像采集模块、软件处理模块组成。产品运送模块主要是利用传送带将待检测产品运送到特定的检测区域;图像采集模块包括相机和光源,为了达到更加精确地检测结果这一目的,在选择合适的相机和光源之后,还要对相机和光源进行位置和角度的调整,从而保证采集到高质量的图像;软件处理模块主要是采用HALCON图像处理软件,对采集到的图像首先进行预处理,然后进行形态学滤波[8?9],获取字符,最后进行字符识别,字符识别前需要进行字符训练,建立相应的字符库,用该库读取字符。

2 图像处理

本文采用HALCON 软件进行图像处理,首先通过相机采集到待检测产品的图像,并将采集到的图像传送到计算机;然后对采集到的图像进行预处理,包括彩色图像灰度变换,字符角度调整;由于相机视野较大,而字符只占一部分区域,整幅图像处理起来耗时较长,所以要获取感兴趣区域[10];在提取字符时,由于字符为点阵字符,要进行形态学处理以方便字符的提取;最后采集样本训练光学字符识别(Optical Character Recognition,OCR),生成相应的字符库,并用该库读取字符。图像处理的流程图如图2所示。

2.1 图像获取

由于光源对图像的质量影响非常大,为了减小误差,在选择好光源和相机的同时还要调整好相机和光源的位置以及角度,然后调用HALCON中的read_image()算子读取相机采集到的图像。采集到的图像如图3(a)所示。

2.2 图像预处理

采集到的图像一般为彩色图像,在图像处理之前要先调用rgb1_to_gray()算子对彩色图像进行灰度变换,处理后的图像如图3(b)所示。灰度变换的公式如下:

f (x,y) = 0.299R(x,y) + 0.587G(x,y) + 0.114B(x,y) (1)

式中:f (x,y) 表示彩色图像转换为灰度图像之后的像素灰度值;R(x,y) 表示彩色图像每个像素红色分度值;G(x,y)表示彩色图像每个像素的绿色分度值;B(x,y)表示彩色图像每个像素的蓝色分度值。

在喷吗的过程中,由于物体的角度、物体的运行速度等因素影响,喷码字符有可能会发生歪斜、不整齐等情况,为了更精确地识别喷码字符,首先要将字符调整为水平。操作过程为:首先调用HALCON中的text_line_orientation()算子计算出图像中喷码字符的角度,然后利用rotate_image()算子按照上一步计算出的角度进行角度调整,旋转后的图像如图3(c)所示。

2.3 获取感兴趣区域

由于相机的视野较大,喷码字符只占被采集图像的一部分区域,为了减少工程计算量提高计算效率,图像处理过程中的感兴趣区域(Region of Interest,ROI)的提取是必不可少的。其具体操作步骤如下:

(1)调用threshold()算子对角度调整后的图像进行灰度阈值变换,获取字符区域;

(2)调用connection()算子计算区域的连通域,并利用seclect?shap()算子选择字符区域;

(3)调用area?center()算子获取字符区域中心,然后利用gen_rectangle2()得到一个包含全部喷码字符的矩形区域;

(4)调用reduce_domain()截取感兴趣区域,如图4所示。

2.4 形态学处理

由于喷码字符为5列7行的点阵型字体,如果直接进行OCR 字符识别,喷码的质量对识别结果的影响很大。为了排除点阵的变形对字符识别的影响,需要将图像进行形态学处理,形态学的基本思想就是用具有一定形态的结构元素提取图像中对应的形状,从而实现对图像的分析和识别。

腐蚀和膨胀是形态学两种最基本的运算,腐蚀运算公式为:

上式表示B 对A 的腐蚀作用,就是在A 内平移B,平移过程中B 完全包含在A 内所有参考点的集合,其中集合A和集合B 都在Z2中,腐蚀效果如图5(a)所示。膨胀运算公式为:

上式表示B 对A 的膨胀作用,就是在A 内平移B,平移过程中B 与A 至少有一个公共点的所有参考点集合,其中集合A 和集合B 都在Z2中,膨胀效果如图5(b)所示。

本文字符提取主要采用四次不同结构元素的闭运算,闭运算具有填充细小空洞,连接邻近物体,在不明显改变物体面积的情况下平滑其边界的作用,能够扩大前景收缩背景。闭运算就是对灰度图像先膨胀后腐蚀的运算方式,闭运算公式为:

为了得到更加清晰的喷码字符,在闭运算操作之前要调用dots_image()算子对图像进行喷码圆点增强处理,突出图像中的点阵,然后调用threshold()算子对点阵增强后的图像进行阈值处理,处理后的图像如图6所示。

调用closing_rectangle1()算子使用水平矩形结构元素对字符进行闭运算,填充水平方向的空洞,同理使用竖直矩形结构元素进行闭运算,可以填充竖直方向的空洞。由于每个字符之间的间距较小,并且可能存在点阵倾斜、偏移的情况,如果只使用水平矩形结构元素或者竖直矩形结构元素膨胀,幅度过小无法使每个字符的点阵连在一起,幅度过大很可能使字符粘连,无法分割字符,所以选择使用对角线结构元素填充对角线上的空洞,这里首先调用gen_rectangle2()算子获得对角线结构元素,然后调用closing()算子,可以填充一条对角线上的空洞,同理重复以上操作填充另一对角线上的空洞,经过以上操作可以将每个字符连到一起以方便字符的提取,形态学处理后的图像如图7所示。

2.5 字符分割

由于每个字符的高度和宽度是特定的,字符分割采用基于字符面积和高度的连通域分割,首先调用con?nection()算子将图像中的所有字符分割成单独的个体;然后调用select_shape()算子对面积和高度进行过滤,选出面积中像素在2 363和4 428之间的部分以及像素高度在120和146之间的部分;最后调用sort_region()算子排列已经分割出单个的字符。图8为字符分割后的图像。

2.6 字符识别

HALCON 中含有多种字体的字符库,在很多情况下都可以直接调用相应的库识别字符,但是发现直接利用已有库识别字符,识别率和预期的有一些差别,所以要对以上处理过的字符进行训练。这里使用的训练方式是基于BP(Back Propagation)三层神经网络的训练,训练文件生成过程中,要用到大量的字符样本,这些样本取自100幅图像中的50幅,其余50幅用来做识别。

BP神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP神经网络包括输入层、隐层和输出层,其中隐层可以为一个或多个,结构如图9所示。n,p,m 分别表示输入层、隐层、输出层神经元的个数,W1,W 0 , θH , θo 分别表示输入层到隐层的权重、隐层到输出层的权重、隐层的阈值、输出层的阈值。

第q 个输入样本Xn 首先由输入层神经元传送到隐层神经元,经过隐层函数变换作用得到隐层的输出信息Hjq:

式中:W 1ij 表示输入层的第i 个神经元到隐层的第j 个神经元的权重;θHj 表示隐层的第j 个神经元的阈值;训练样本的个数为Q。隐层的函数f (x)采用S型函数,即:

然后隐层的输出信息传送到输出层,最后输出处理结果,完成一次正向传播,输出结果Ykq 为:

式中:W 0jk 表示隐层第j 个神经元到输出层第k 个神经元的权重;θok 表示输出层第k 个神经元的阈值。

当输出的结果与预期的结果有误差存在时,则转换到误差反向传播,误差经输出层按照公式(8)修正各层的权值,并向隐层、输入层逐层反转,信息反复不断地正向传播和误差反向传播使误差减小到最小。

式中:ΔW (t) 表示第t 次训练的权值;η,α,E 分别表示比例系数、动量系数和误差平方和,E 的表达式为:

训练过程中,神经网络的输出神经元的个数为2,为了确定输入神经元的个数,将分割后大小不一的字符统一成8×12大小的图像进行训练,训练字符提取了8×12个字符特征,所以输入神经元为96个。由于隐层神经元个数一般为输入神经元个数的2倍,实验过程中隐层神经元的个数在192附近变动,由实验可得隐层神经元个数为190时效果最好。

字符识别是通过read_ocr_class_mlp()算子调用已创建的分类器,利用do_ocr_multi_class_mlp()算子根据字符的特征计算出字符的类,将类返还到数组中,并返回类的置信度。最后利用for 循环在窗口上显示字符串。图10为识别后的图像。

3 结语

实验中采用PC机型号core i3,2G 内存和HALCON的环境对伊利盒装纯牛奶顶面的喷码字符进行识别,本文共采集100 幅图像,利用HALCON 软件对其中50 幅图像做训练,对另外50幅图像做识别,平均每0.283 s能够识别一幅图像,识别率达到96%。经实验证明,本文提出的四次不同结构元素闭运算字符提取的方法简单可行,同时基于BP神经网络的字符识别能够增大字符库、提高识别效率。基于HALCON 的喷码字符识别可以代替人工,自动识别产品包装上喷码字符,实现高速度、高精度、实时性、自动化生产。随着科学技术的发展,这种基于机器视觉软件的操作将逐渐代替人眼,在产品生产、包装等方面具有极大的实用价值。

教育期刊网 http://www.jyqkw.com
参考文献

[1] 孙怀远,杨丽英,周夫之.基于机器视觉技术的药品瓶包装在线检测系统[J].自动化与控制,2011(2):46?50.

[2] 彭晓辉.基于HALCON的IC卡喷码符号识别技术研究与实现[D].广州:广东工业大学,2006.

[3] 郭佳寅,岳秀江,吴双,等.基于HALCON的乳制品箱体喷码字符识别方法研究[J].制造业自动化,2013(3):21?22.

[4] 项辉宇,刘倩倩,黄佳军,等.基于HALCON的字符识别及缺陷检测[J].机电产品开发与创新,2014,27(2):77?79.

[5] 李志强,项辉宇,李哲.OCR 在印刷字符实时检测系统中的应用[J].机电产品开发与创新,2013,26(3):129?130.

[6] 张银苹,葛广英.基于HALCON的车牌识别研究[J].现代电子技术,2014,37(16):92?95.

[7] 朱正礼.基于三层BP神经网络的字符识别系统的实现[J].现代计算机,2006(10):93?95.

[8] 王征.一种基于数学形态学的边缘检测方法[J].计算机与数字工程,2012,40(2):102?104.

[9] 焦圣喜,张善东.机加工件点阵字符识别研究[J].河南科技,2014(3):13?14.

[10] 赵婷婷,唐晶磊,黄志远,等.基于孤立像素点去除的车牌ROI区域快速定位方法研究[J].现代计算机,2014(9):46?50.

作者简介:肖海俊(1989—),女,山东菏泽人,硕士研究生。研究方向为图像处理。

葛广英(1964—),男,山东聊城人,教授,硕士研究生导师。主要从事图像处理、物联网方向的研究。