APP下载

PDF417码识别算法研究

2015-04-23陈俊梅

科技视界 2015年11期
关键词:图像处理

陈俊梅

【摘 要】随着计算机技术和信号处理技术的蓬勃发展,条形码尤其是二维条码在各个领域中的使用范围越来越广,为了保证对二维条码中所含信息识别的准确性,需要对条码的识别算法加以研究。本文以PDF417码为例,在普通的摄入环境下采集到干扰比较大的图像,利用MATLAB通过滤波、分层等算法对这样得到图像进行的一系列处理,最终得到图像的源代码。在处理过程中,保证了图像解码的准确性,减少了在普通摄入环境下可能产生的图像畸变、噪声干扰、运动伪影等干扰对条码识别的影响。

【关键词】二维条码;图像处理;PDF417;MATLAB;识别算法

【Abstract】Along with the vigorous development of computer technology and signal processing technology,barcode,especially the two-dimensional barcode,is used more and more widely,in order to ensure the accuracy of the recognition of two-dimensional barcode,the recognition algorithms should be learned.Using an ordinary camera equipment, a PDF417 barcode image can be got with a lot of noise points,through the image processing which is realized by the MATLAB, the source code of the image can be got.During the process,different algorithms such as filtering ,stratifing can be reduced to ensure the accuracy of the image decoding,and a series of problems which are caused by external disturbance such as image distortion,noise,motion artifacts can be reduced too.

【Key words】Two-dimensional barcode; Signal processing; PDF417; MATLAB; Recognition algorithm

0 引言

自20世纪中叶起,条形码技术就开始发展起来了,它是实现信息自动采集和输入的重要技术。虽然条形码出现得比较早,但是它却在近二十年得到实际应用和迅速发展,即便这样,它已经成为人们信息化建设中不可或缺的一部分了,与此同时,它也在不断渗透到各个领域。在几十年的发展中,条形码的符号表示已经由一维条形码发展到了二维条形码。二维条码一直在用于储存信息,它在美国、日本等很多国家都有了比较广泛的应用。目前,常见的二维条形码被分成两种。有一种条码是层叠式的条形码,它继承了一维条形码的一些功能,因此它们的阅读设备和条码印刷设备可共用,虽然这种二维条形码是建立在一维条形码基础上的,但也增加了不少难度,需要一定的判定。另一种是二维条码是矩阵式的,它是通过黑色和白色的像素点在图像中的不同空间位置来确定二维条形码的含义。日常生活中见的比较多的是QR Code这种矩阵式二维码。另一种二维条码的典型代表是PDF417码,本就围绕PDF417码展开的。

1 PDF417码的技术标准

PDF417码的每一个符号字符都是由4个条和4个空构成,如果将组成条形码的最窄条或空称为模块,也就是后面所说的最小单位模块,则上述的4个条和4个空的总模块数必须为17,因此也称它为417码[1]。

PDF417条形码在结构上从左往右依次是左侧空白区,起始符(条空组合序列为81111113),左行指示符号、数据符号、右行指示符号、终止符(条空组合序列为711311121)、右侧空白区[1]。从上往下依次是上空白区、符号区、下空白区,如图1所示。

2 条码识别的流程

对PDF417条形码解码的过程主要是包括条码图像预处理(矫正、滤波等)、条码分层、求取单位模块宽度、求取各条空相对于最小模块宽度的比值等。在图像摄入之后,首先要对其作相应的预处理,在此之后,要对堆叠式的PDF417码进行分层,然后在分别计算每一层条码中条空宽度,最后完成原PDF417条码源代码的实现。流程图如下图2所示。

3 摄入图像的预处理

3.1 图像的采集

用手机对PDF417条形码进行采集,得到一幅干扰比较大的图像,如图3所示,在这个图像中,有很多椒盐噪声,角度也存在一些偏差。

3.2 灰度化及二值化

对原图像做处理,首先必须将其灰度化,在MATLAB中,每一个灰度图像就是一个数据矩阵,其中矩阵中的每个数据都表示该点的颜色灰度值,转换后的图像如下图4所示。

为了方便以后的计算,需将灰度图像转换为二值图像,值域是[0,1]。其中,系统默认的阈值level是由函数graythresh()计算得到的[1]。灰度化后的二值化图像如图5所示。

可以看到,经过阈值分割后,图像更加清晰明了,也消除了不少干扰,其中就包括对部分伪影的消除,但是还是存在一些干扰。

3.3 图像矫正

在研究图像的过程中,摄入图像仅存在一点旋转畸变,本文主要是针对这种情况进行讨论。这里在有干扰的情况下,常用的方法是Hough变换法。它主要是在图像空间和参数空间建立起一个“线-点”的对应关系,在下图6中,直线l与坐标原点的距离为ρ,它的方向角为θ,它们的关系如公式(1)所示。

ρ=xsinθ+ycosθ(1)

在做旋转矫正时,首先要对图像做边缘检测,然后才能用Hough变换计算得到图像的偏转角度。边缘检测常见的有sobel、prewitt算子,这两种算子的原理是相近的,只是适用情况略有差别,在旋转中,本文使用了双线性差值来进行运算,极大地避免图像的失真,矫正后的结果如下图7所示。

4 二维条码源代码的实现

首先采用采用数学的方法计算各层的起始坐标对图像分层,分层处理后,应对求取每一层的源代码。首先应该求得每层条和空的坐标,计算得到每个条或空的宽度。因为MATLAB中最小计数单位为1,而当出现一个噪声点时,所得的数值就会加1。这里主要是通过纵向投影对像素为0的点的累积来进行计算。通过对投影值做了重新修改,在判断条空时,便可以通过对非0值与0值交界点的记录从而实现对条和空的坐标的记录,依次对每一层代码作上述处理,最后可以获得一个大矩阵,里面储存的是整个PDF417条码的各个模块的宽度,结果如下表1所示。

按照PDF417的编码原理,在解码时应该求取单位模块宽度,进而求取每个条空的与最小单位模块的倍数关系,得到条码图像的源代码。根据已求得各个条空的实际宽度,又因为PDF417码的每一符号字符都是由四个条和四个空构成,上述的四个条和四个空的总模块数必须为17,所以可以利用总模块数固定这一特点,通过各条空占总宽度的比例关系从而确定各符号字符的代码,再通过对数据整理之后便可初步得到源代码,处理后效果如表2所示。

因为PDF417码的起始符和终止符分别为‘31111118和‘121113117,对照上表,基本没有误差,通过对照正确代码后,可以发现这样计算得到的代码准确率高、误差率小。

【参考文献】

[1]中华人民共和国国家标准四一七条码(417 Bar code)[S]. 国家技术监督局,1997.

[2]章毓晋.图像处理和分析[M].北京:清华大学出版社,1998.

[3]刘宁钟,杨静宇.基于波形分析的二维条码识别[J].计算机研究与发展,2004,41(3):463-469.

[4]谢金龙.条码技术及应用[M].北京:电子工业出版社,2009.

[5]党春,段汕.PDF417条码编码算法的研究与实现[J].计算机工程与科学,2007.

[6]刘志海,曾庆良,朱由锋,等.条形码技术与程序设计[M].北京:清华大学出版社,2009.

[7]朱习军,隋思涟,张宾,刘尊年,等.MATLAB在信号与图像处理中的应用[M].北京:电子工业出版社,2009.

[8]Marr D.Hildrcth E.Theory of edge etection[M].Proc.RoyalSoc.Lodon,1980,207(1):87-217.

[9]Ostu N,A threshold selection method from gray level histogram[J]. IEEE Trans System,Man and Cybernetics,1979(1):62-66.

[10]Pamer Roger C.The Bar Code Book [M].America.Imers Publishing Inc.1991.

[责任编辑:汤静]

猜你喜欢

图像处理
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
基于图像处理的定位器坡度计算
基于图像处理的晶圆表面缺陷检测
对图像处理中ROF全变分模型的两种算法的比较研究