刘惠兰, 贾永泽, 石亚楠
(北京航空航天大学 仪器科学与光电工程学院, 北京 100191)
条形码是由不同宽度的垂直黑线(称为条)和白线(称为空)组成,当被扫描器识读时可以转换成机器语言的图形标识符。条形码的条和空按照一定规则排列,条和空的相对宽度不同,用来表示不同的信息[1]。EAN-13条码由代表13位数字码的条码符号组成,是目前商品普遍使用的条码。条形码还在物流、图书、银行系统、档案[2]、设备管理[3]等领域普遍使用。
线阵CCD(charge coupled device)又名电荷耦合器件,是固体图像传感器的重要元件。线阵CCD结构简单、易生产且成本低、测量范围大、频率响应高、扫描速度快,能够达到实时控制和动态测量[4]。线阵CCD主要用在非接触精度较高的测量,在材料参数测量及工件检测等领域有重要的应用[5-7],用其进行条形码的识读也是现在常用的条形码识别方式。
用线阵CCD实验仪识别条形码,集知识性和研究性于一体,综合了条形码理论(包括条形码编码规则、制作及印刷、译码)、数据采集与处理技术、计算机技术、光电技术、自动识别技术等[8]。因此非常适合作为大学生实践实验的重要内容[9]。
原来的实验装置只可进行简单的条形码识别演示实验,在其基础上进行适当改进,增加了影响条形码识别因素的探究实验,并分析提出一种简便的条形码解译方法,设计线阵CCD识别条形码的大学生综合实验。该实验由CCD特性测试、测试系统参数实验、条形码的扫描和条形码的解译几部分组成。
条形码的识别包括4个过程:一,在光源作用下光线照射到条形码;二,条形码图案黑、白条的反射率不同,经过成像系统成像后,在线阵CCD的光敏像元阵列上形成一维模拟信号;三,经过A/D转换后,一维模拟时序波变成一维数字信号方波,横轴表示时间,也表示像元数,标示着条形码条和空的位置信息;四,识别系统或软件将数字信号进行二值化处理,按照编码组合规则进行译码,最终输出条形码的数字字符。
条形码的译码主要包括4个过程:光电转换、绘出一维时序波形图、二值化后转换为方波、解译方波得到的二进制字符,从而识别出条形码的数值。
针对原有实验装置不能更换条形码和光源内置无法调整的问题进行了改进,重新制作适合本实验的条形码固定装置,并在外部加入可调光源,如图1所示。
图1 改进后的实验装置
在原有的实验装置中有配套软件,可进行条形码识别,直接将识别的条形码数据显示在屏幕上。这种方式可作为应用的演示,但为了丰富实验内容,希望学生自己进行线阵CCD采集数据的处理和条形码的译码,因此需要去掉软件自动译码的部分。经过与设备厂家联系沟通,将采集系统显示界面的条码数值一栏的内容改为只显示是否可识别。让学生在条形码可识别状态采集数据,然后利用Matlab软件进行编程,自行处理条形码波形曲线对应的离散数据矩阵,从而识别出条码信息,可上网查找条形码所对应的商品信息。这样提高了实验的灵活性以及内容的丰富性,同时也提高了实验的趣味性。改进后的采集系统显示界面及放大图如图2、图3所示。
图2 改进后输出条码波形系统的界面
图3 改进后判断条形码是否可识别的提示
实验设计对仪器影响条码识读的各项因素进行分析,包括外部光源、成像镜头参数以及CCD采集设置参数的影响。
利用可调亮度的光源,探究光照强度对于CCD采集信号以及条码识别的影响。在保持光圈位置、调焦环位置、条形码位置、光源位置、CCD采集设置参数都不变的条件下,光源的有无及强弱会影响线阵CCD对条形码的识别情况。 在没有光源照射的情况下,波形虽稳定但信号微弱,波形幅值明显低矮,系统几乎不能识别条码值。在保证波形不因饱和而失真的范围内,光照强度越强,波形幅度越高,则识别效果越好。
探究光源照射的角度变化对于条码识别的影响。在保持其他设置都不变的条件下,光源的角度变化会影响线阵CCD对条码的识别情况。当光源角度倾斜时,显示屏上所得到的波形整体上也存在偏斜,可能会对条形码识别造成影响。因此,在实验时应当尽可能使得光源垂直照射条形码,以得到更好的识别效果。
在物像位置固定的情况下,通过旋转成像物镜的调焦环来改变像距的大小,物距、放大率会随之改变,最终通过精细调节获得清晰的成像。将贴有条形码的实验盒放到调焦清晰时对应的理想像面位置上,观察此时显示屏幕上的线阵CCD输出波形。然后继续旋转成像物镜的调焦环,这时像面将逐渐远离理想像面,显示屏幕上的线阵CCD输出波形图逐渐变差,影响了条形码的识别效果。当调焦环转动到一定程度时,最终条形码再也无法被识别出来。
光圈环的大小会影响线阵CCD对条形码的识别情况。转动成像镜头光圈环,调节光阑的大小,从而控制进入光学系统的光通量,观察显示屏幕上的线阵CCD识别波形。光阑孔径最大时,线阵CCD输出的波形图幅值最大,识别效果最好;光阑不断减小时,条码波形图幅值会逐渐降低,识别效果变差甚至开始无法识别出条形码的数值。
实验系统中线阵CCD采集设置参数有积分档和频率档的设置,实验探究其如何影响条形码的识别效果。
实验系统提供16个积分档,它是调节线阵CCD积分时间的重要手段。线阵CCD的积分时间,指的也就是曝光时间,其概念可类比于照相机的快门打开到关闭的时间。在积分时间里,线阵CCD完成一行像素的传输,当一行像素的读出时间愈长时,紧接着下面一行的像素曝光时间也就愈长,而时间愈长,进入到线阵CCD表面的光就愈多,使得线阵CCD输出的波形图幅值愈高。实验系统提供4个频率档档位,它是调节线阵CCD驱动频率的重要手段。线阵CCD的驱动频率,主要影响的是线阵CCD像元中的电荷转移的速率,即电荷被读出的速度。当驱动频率愈大时,线阵CCD像元中的电荷被读出的速度也会愈加迅速,这样条码识别系统的效率会更高。
实验设计要求学生在完成识别影响因素探究后,在成像理想的条件下采集线阵CCD输出信号,并自行进行条形码的译码,上网搜索出条形码所对应的产品信息。为学生提供译码的思路,由学生独立利用Matlab软件进行编程,完成译码过程。译码过程包括:
(1) 数据的二值化处理。当拿到实验后的像素数与光强值的二维数据后,首先要进行二值化处理。
(2) 计算单个模块对应的像元个数。模块是条形码条、空中最小的结构单元。二值化后,首先需要截取出有用的像元部分,去掉起始符左侧以及终止符右侧的无用留白区域。对于EAN-13条形码来讲,它一共有113个模块,其中有效模块数是95个。需要计算单个模块对应的像元数,这与成像的放大率有关。
(3) 将有效像元转换为95个字符。确定95个模块分别对应的数值,到底为0还是为1。由于单个模块对应多个像元,可利用取平均值等算法使得字符的取值更准确。实验指导中建议学生可尝试多种方式:直接根据每个模块最中间的像元数据判断对应字符,但这种算法对于不太理想的图像存在较大偶然误差;利用取平均值进行算法优化,可将该模块对应的所有像元数据进行平均,然后判断;利用每个模块最中间1/2的像元数据做平均,确定最终该模块对应的字符,可去除黑白条码临界位置成像不理想的影响。
(4) 与字符集比对查找并翻译成条形码数字。除去已知的开始符101、间隔符01010以及结束符101,还有84个字符需要根据左手数据符(有奇偶性,共20个)和右手数据符(共10个)进行比对查找,并最终翻译成数字。通过分析EAN-13码的字符集,发现字符集中30个数据符都各不相同,没有重复。因此提出一种解码方法,可以不区分左右手而将所有数据符置于容量为30×7的矩阵中。对应每个条码数字的7个字符作为1个字符串,与其对比,得到对应的EAN-13码数字。此种方法与常用的相似边距离算法[10-11]以及基于全局和局部的欧氏距离算法[12]相比,非常简单,易于操作和实现,非常适合时间较短、安排紧凑的实验课程。
通过实验设计,让学生深入理解了线阵CCD的工作原理以及在条形码识别中的应用,对成像识别测试系统及影响识别的诸多因素进行了探究性实验,并结合计算机和信息处理技术进行条形码解码,是一项既有研究性又有趣味性的综合实验。
我院近年来加大了对于实验实践课程的支持力度,在2015年修订的新版培养方案中,增加了多门独立实验课,开设了实验平台课“仪器科学与光电工程科技实践课”,开课对象是学院本科1—3年级学生,共
160学时。本实验设计即应用在大二的教学课程中。通过对实验的改造和设计,丰富了实验教学的内容,增加了实验教学的深度,对学生实践能力的培养起到了良好的作用。
[1] 刘浩学.条形码的编码规则[J].印刷技术,2000,10(3):42-43.
[2] 于东梅.利用手持式条码终端库存档案盘点的软件功能设计[J].实验技术与管理,2010,27(9):105-107.
[3] 邓松录,穆建平.高校固定资产条形码管理的新尝试[J].实验技术与管理,2001,18(5):161-163.
[4] 王庆友.CCD应用技术[M].天津:天津大学出版社,2000.
[5] 肖化,漆建军.利用线阵CCD的迈克尔逊干涉仪测量压电材料的压电系数[J].实验技术与管理,2011,28(2):24-27.
[6] 陈诚,李香莲,刘伟伟,等. 基于线阵CCD的智能化金属丝弹性模量测量仪设计[J].实验技术与管理,2016,33(1):104-106.
[7] 张静,叶玉堂,谢煜,等.金属圆柱工件缺陷的光电检测[J].光学精密工程,2014,22(7):1871-1876.
[8] 杜金华.1.5维条形码生成与识别系统的研究[D].上海:华东师范大学,2007.
[9] 杨飒,林竹君,齐龙.线阵CCD对条形码的测量与识别实验[J].实验室科学,2011,14(6):110-112.
[10] 刘艳洋,曹玉东. EAN-13条形码图像的识别[J].计算机技术与发展,2015,25(6):202-205.
[11] 车怡.基于图像处理技术的条形码识别系统的研究[D].北京:华北电力大学,2014.
[12] 董华冰.一维图像条形码识别方法研究[D].广州:华南理工大学,2012.