摘 要 将数字图象处理技术引入条码分析中,实现了一维条码的快速识别。在研究过程中,使用了条码扫描仪的光电设备采集信号,通过计算机并口实现高速的数据传输,对条码的数字图象进行处理,包括滤波降噪、边界检测、阀值分割等方法,最后通过逻辑值匹配的算法完成译码工作,实现了软件译码。
关键词 数字图象;条码;并口
0 引言
条形码自动识别技术是随着计算机的发展而兴起的一门应用新技术。与其它自动识别输入技术相比,条形码自动识别技术具有速度快、准确度高、可靠性强和成本低等优点,已广泛应用于商品流通、工业生产自动化、办公自动化等许多领域。条码作为信息的载体,自始自终发挥着关键的作用。随着现在企业中信息越来越多,信息的快速采集和高效处理被放在了显著的位置上。文中通过计算机并口进行数据通信,采用数字图象处理技术实现一维条码的识别,实现了软件解码,可以快速采集和处理工业现场的条码数据。
1 系统设计
根据图象处理的一般要求
[1],本系统包括以下几个环节:信号采集、数据传输、数字图象处理(滤波降噪、边界检测、阀值分割)、译码输出。wwW.133229.cOm系统结构如图1所示:
图1 系统结构
2 信号采集
信号采集由条码扫描器的光电设备完成,本文采用美国symbol公司的微型激光条码扫描器,型号为ls2208ap。该扫描器的光源为650nm可见激光二极管,扫描速度100次/秒,扫描精度5mil,采样时序图如图2所示:
图2 采样时序图
开关信号一次接通的持续时间为5s;一个扫描周期内,正反相各占16ms;一次采样触发信号的持续时间为1.4μs。
3 数据传输
由于pc机运行速度远高于单片机,我们将扫描器采集到的电信号通过计算机接口送给计算机处理。这种方法不存在通信协议方面的问题,数据输入简单、方便,如果采用高效的译码程序,将很大程度地提高数据处理的效率。
pc机一般都配有一个标准的centronics并行打印机接口,它也可以作为通用并行i/o口来使用。图3为常用的pc机并行口引脚图,内部包括三个并行i/o端口,地址分别为:0x378、0x37a、0x379,通过对这三个端口的控制,可以实现数据和控制信号的输入和输出。
0x378口包含8位数据输入输出线(d0~d7),通过读写0x378h端口可以对数据线上的数据进行读写操作。进行一次写操作,就将一个8位数据写到寄存器锁存并输出;进行一次读操作,读入锁存在寄存器中的值。
0x37a口包含4根控制信号输出线,可以通过该端口把控制信号输出到外部数据线上。
0x379口包含5根状态输入线,通过该端口可以把扫描器上的状态信号输入到pc机,文中采用379口的引脚10、12、13分别与扫描器内部芯片的开关信号、扫描方向信号、检测输出信号端相连(图4),实现数据传输。
图3 常用的pc并口引脚
p1—检测输出信号 p2—扫描方向信号 p3—开关信号
图4 pc并口与扫描器芯片连接图
4 数字图象处理
数字图象处理是将采集到的图象经a/d转换器数字化后,图象转换为由一定数量级的数字所表示的数学矩阵,然后用计算机根据一定的算法对其进行处理的过程
[2]。
本文采用borland c++ builder为开发环境,利用该软件强大的图形图象处理功能,结合mil所带的一系列函数
[3],完成图象的实时处理和图象后处理。
当数据传输的任务完成后,单片机传输到pc机的是a/d转换后的数字量,表现为:当激光扫到条码的白色区域,检测到高电平;当激光扫到条码的黑色区域,检测到低电平,分别用数字1、0表示,用数字图象的形式表达出来,如图5所示。
图5 条码数字图象
4.1 滤波消噪
数字化后的条码图象存在一定的噪声干扰,本文采用滤波的方法进行消噪处理,从而改善图象质量,便于特征提取。通过分析可知,图中的噪声主要包括孤点噪声和边缘毛刺噪声两部分。
对于孤点噪声,本文采用中值滤波的方法进行消噪处理。中值滤波技术对干扰脉冲和点状噪声有良好的抑制作用,而对图象边缘能保持良好的非线性,起到既消除噪声又保持图像细节的作用。中值滤波是将一个含有奇数个像素的滑动窗口内的像素点按灰度值排序,如:
⑴
其中,, l为窗口的长度, f
j即为窗口的中值滤波输出。表示为:
[4] ⑵
表示取数列的中间值
由于表面图象是二维的,将一维中值滤波推广到二维。这时选取某种形式的二维窗口,将窗口内像素点的灰度值按先行后列的顺序排列,生成单调二维数组序列f
ij,二维中值滤波输出表示为:
⑶
由公式⑴、⑵、⑶可以看出,中值滤波是将中心像素与周围像素的灰度值进行比较,将灰度值较大的像素点与周围像素点接近,从而消除孤立的噪声点。
本文采用3×3形式的二维中值滤波方法对图5做消噪处理,结果如图6所示:
图6 中值滤波后的条码图象
对于边缘毛刺,采用求平均值的方法处理。由于图象各行在同一位置的条空宽度不等,就会出现边缘毛刺现象。因此,本文将每个位置上逐行扫描到的条空宽度求平均值,得到该位置的条空宽度并输出(图7),求解过程如下:
⑷
⑸
⑹
⑺
式中:l
r —第 r个条(空)的宽度; l
ir—第r个条(空)第i扫描行的宽度; m—条码长度;
n —扫描总行数
图7 均值滤波后的条码图象
4.2 边界检测
由于光源扫描的范围不仅包括条码区,还包括非条码区,所以得到的数字图象也包括条码区和两侧静区(如图8所示),需对其进行边界检测,将条码部分提取出来,以便进行译码处理。本文采用相邻条空宽度比较的方法
[5]判别条码的起止位置:当所测条的宽度的10倍小于上一空的宽度时,此条即为条码的开始位置;当所测空的宽度大于上一条的宽度的10倍时,条码部分截止。
图8 条码图象组成
4.3 阀值分割
受信号采集精度的影响,计算机输出的条码元素的宽度与实际值之间存在误差,如果直接译码,难免要出现误读的现象。因此,本文采用阀值分割的方法,选定一个宽度阀值m,通过公式⑻将所有条码元素的宽度f(x)划分为宽条、窄条、窄空、宽空四类,逻辑值分别为-2、-1、1、2,这种方法可以消除硬件带来的误差,保证了输出信息的正确性。
(8)
5 译码输出
不同码制的条码,编码规则一般不同,解码方法也不同。本文采用逻辑值匹配的方法对目前常用的upc/ean码做译码分析,这两种码制的每个字符都由两条两空组成,以字符“5”为例,当它表示一位右手偶字符时,编码结构为:窄条—宽空—宽条—窄空,逻辑值表示为:-1 2 -2 1。译码时,从条码的起始位开始,每四个元素为一个单位,用公式⑻求出其逻辑值,对照字符逻辑表得到相应的字符并输出,直到检测到条码的终止位结束,采用这种译码方法对文中图7所示的条码做译码分析,输出结果如图9所示。
图9 译码结果
6 结束语
由于计算机的处理速度远高于单片机,使用软件译码不仅可以提高译码的效率,而且能适应码制灵活多变的特点,克服了硬件解码的不足。本文采用滤波降噪、阀值分割等数字图象处理技术对条码图象进行处理,不仅能较好地识别标准条码,而且对残码的识别也有一定的意义。计算机并口通信和逻辑值匹配的译码方法对提高译码效率起重要作用。
参考文献
[1] 刘克龙,姜雷,程伟.数字图象处理系统的构成及常用方法[j]. 信息技术,2000,⑷:32-33.
[2] rafael c.conzalez,richard e.woods.“digital image processing”[m]. publish house of electronics industry,beijing,2004.
[3] 席卫文,张春晓,李光明.c++ builder 6程序设计与实例[m]. 北京:冶金工业出版社,2003.
[4] avlidis t.algorithms for graphics and image pressessing [m]. computer science press,1982.
[5] 王雅静.ean-13条码图像辩识方法研究[a]. 山东科技大学硕士学位论文,2003.