-1-
针对手机场景的二维条形码编解码软件的实现研究
朱童亮,张闯,蔺志青
北京邮电大学模式识别与智能系统实验室,北京(100876)
摘 要:手机二维条形码已经逐渐走进人们的生活,如今在许多公共场合随处可以看到印有
手机二维条形码的广告。作为一种可能会成为 3G时代杀手锏应用的支撑技术,本文以所参
与的实际项目为基础,从整体上介绍了手机二维条形码系统的构成及软件架构,模块功能,
分析讨论了手机二维码编解码软件实现过程中会遇到的诸多方面的问题,最后对其应用模式
进行了分类说明。
关键词:手机,二维条形码,QR码,J2ME,DataMatrix
1. 引 言
对二维条码技术的研究始于 20 世纪 80 年代末。由于具备资料储存量大、存储信息随着
产品走、可以传真影印、以及错误纠正能力高等特点,二维条码在 1990 年代初期已逐渐被
使用。而随着移动增值应用的逐渐普及、3G 时代的即将来临,手机二维条形码已经逐渐走
进人们的生活,现在城市的地铁、公交等公共场合随处可以看到印有手机二维条形码的广告。
在日本、韩国、美国等发达国家,基于手机二维码技术的应用已经是开展的如火如荼。中国
移动集团公司更是把手机二维条形码技术作为 3G 时代重点推广的技术之一。
图1 二维条形码(QR 码)编码实例
图2 手机二维码解码应用
本文讨论了从标准选择到技术实现整个手机二维码编解码软件的开发过程,并且深入讨
论了开发过程中会遇到的各个环节的问题。开发中关键环节的展示有着我们开发过程中使用
的丰富的材料支持。并且从应用的角度介绍了这种技术比较前沿的应用场景,这些都生动的
说明了手机二维条形码在 3G 时代将会是一项应用范围极广的十分有前途的技术。甚至有可
能直接改变人们使用手机的习惯。
-2-
2. 系统介绍
在整个系统中最后实现的是编码和解码两套软件,其中编码软件运行在 PC 平台,解码
软件运行在手机操作系统之上。这两套软件共同组成了一个闭环的系统:由编码软件在 PC
平台上生成二维条形码编码图样,这种图样可以印制在各种传播媒介上传播,手机上运行的
解码软件可以在开放环境下(非确定光源,确定识读方向条件)对二维条形码编码进行识读,
最终给出结果。本解码软件针对需求做了手机上网的模块,对识读出的 WAP 网址进行登陆
浏览。
软件架构及功能模块
编码器结构及编码流程
图3 编码器软件架构
如图 3 所示为编码器的软件结构,实现码制为 QR 码,由于软件是搭建在传统 PC 平台
上,所以图形用户界面可以有多种选择,如 Delphi,MFC,VB 都可以达到软件这一层次的
功能要求。编码后的的输出为电子图样,可以打印在各种传播媒介上,如报纸,杂志,地铁
广告等。核心编码模块包括数据编码模块,纠错编码模块,码字布置模块,以及最优掩模算
法模块。编码流程如下:
1, 数据编码模块将要编码的信息进行分析,再填充一个信息总计字节以及填充字节
(国家标准要求),然后对其整个二进制编码并组成连续的二进制码串。
2, 纠错编码模块接收到来自数据编码模块的码串对其进行纠错编码,纠错编码采用
Reed-Solomen 算法添加冗余纠错。对于选择的不同级别的纠错强度要改变其输出码字的长
度将不同,QR 码国家标准共有 4 种纠错等级:L、M、Q、H。表 1 中列举的是版本一的 QR
码不同纠错等级的各种参数。
3, 纠错编码完成之后要将码字依 Bit 填入图样矩阵中,填充的规则遵循 QR 国标。
4, 最优掩模算法是要对填充图样完成的图样进行不同的掩模处理,并对处理结果进行
评价,评价原则遵照国标的要求,选择最优的掩模,将最优处理后的图样及掩模版本输出。
5, 对最优掩模版本进行 BCH(5,15)编码。将编码结果处理固定掩模后填充在图样
的四角。该图样即是按照国标生成的图样。
图形用户界面
QR编码模块
数据编码 纠错编码
最优掩模算法
码字在矩阵中的布
置
输出打印/通过其他方式传播
掩模版本填充
-3-
表1 一版本的不同纠错等级 QR 码各种参数[1]
版本 纠错等级 数据码字数 数据位数 数据容量(8 位字节) 纠错容量
L 19 152 17 2
M 16 128 14 4
Q 13 104 11 6
1
H 9 72 7 8
解码器软件架构及处理模块
图4 手机解码器软件架构
如图 4 所示为解码器软件的软件架构和处理模块,软件运行在手机 J2ME 环境之上。在
开发过程中解码器的工作量是最大的部分,由于需要在开放环境(非固定拍照角度,非固定
拍照光源)下采集图样,所以对图像的处理要求比较高,其次由于不同手机的 J2ME 环境是
有差别的,许多接口没有开放,很多方法无法实现,所以由软件来调用摄像头资源在手机上
比较难于实现。还有对解码的准确度有了更实际的要求,图像处理过来的数据无法保证都是
正确的,所以对纠错有着现实的要求。
解码处理流程如下:
1, 利用 J2ME 开放 MMAPI 接口函数,显示手机摄像头当前的拍摄场景,并根据按键
响应操作手机摄像头进行拍照,捕获拍照所得数据,将信息数据提取(全部拍照数据为 BMP
格式)出来后交给图像处理模块。[4]
2, 图像处理模块将采集到的数据分别经过:灰度化,中值滤波,深度二值化,粗裁减,
细裁减,浅度二值化,旋转处理,二次中值滤波,网格化等处理流程后输出图像采集矩阵。
3, QR 解码模块将图像采集矩阵的数据进行 QR 标准解码。得出原始信息数据。
4, J2ME 联网模块根据所得出的原始字符串数据,即此时是一个 WAP 网址,调用上
图像处理模块
QR解码模块
去除掩模
数据重组恢复
分析结果,恢复原始信息
数据部分R-S纠错
格 式 信 息 纠 错
(BCH)
J2ME
联网 /
操 作
模块
J2ME运行环境
灰度化
中值滤波
深度二值化
浅度二值化
旋转处理
二次中值滤波
网格化经验值
输出
J2ME 摄 像
头捕获,控
制拍摄,拍
摄数据采集
手机操作系统
-4-
网 API 操作手机上网。
开发过程中的问题总结
前期的预研对于本项目来说是非常重要的。整个开发的难点在于解码程序,程序运行在
我们并不是很熟悉的手机操作平台,其次最大的限制还是来源于对性能的要求;手机操作系
统的性能无法和台式 PC 相提并论,这也就预示着图像处理中很多复杂的算法无法达到迅速
准确的要求。其次前期来说对标准的选择业决定着后期的所有工作的特点,因为不同的标准
有着自己的特点,图像处理部分处理方法也会有所区别。所以前期的问题讨论在这个项目中
显得尤为重要。
针对手机二维码的应用场景的研究
二维码应用针对不同的场景对图像处理模块有着不同的需求,手机二维码场景最大的特
点有两个:
z 二维码采样条件为开放环境。手机的拍摄可能会在各种光照条件各种拍照角度来完
成,因此拍摄的图像可能会出现失真,倾斜,光照不足,旋转等等一系列的问题需要解决。
z 手机的资源受限。现在较高档的手机核心 CPU 主频大概在 200MHz——300MHz
之间。而最为低档的 PC 平台 CPU 也在 1G 以上。所以手机的运算速度无法和传统 PC 平台
相比。这也就造成了我们查阅的许多图像处理方面的论文无法在手机平台上应用。如 Hough
变换在实际手机 Nokia 7610 上运行的速度并不理想。
所以经过认真讨论这些特点,并且参照了其他手机二维条形码使用的码制之后,工作组
成员意见比较集中在 QR 码和 DataMatrix 码两种上。首先是因为他们都不是堆砌式(如
PDF417)二维码,而矩阵式二维码更易于数字化处理,利于提高手机的识别准确度。其次
它们都具有一定的倾斜矫正能力。运算特点方面,DataMatrix 要比 QR 图像处理要简单。但
是 QR 在开放式环境应用方面有优势。
不同码制(标准)的横向比较
正如前文所述,标准的选择直接决定着后续的处理方法。二维条形码的标准很多。国内
常用就有 PDF417,QR Code,DataMatrix,还有一些行业自己的标准,欧洲一些国家还有
Shotcode 等许多码制。如何选择适合中国自己的码制是二维码在中国发展与普及的重要因素
之一。
下面的表格是主要几种码制的横向比较:
表2 不同标准横向比较[1] [2]
码制 QR Code DataMatrix PDF417
编码方式 矩阵式 矩阵式 堆砌式
纠错能力 中等 一般 强
识度方向 全方位 较好 旋转最大 10~15 度
汉字适应性 专门针对汉字作了优化 没有对汉字作优化 没有对汉字作优化
数据容量 大 大 一般
识别速度 快 一般 一般
QRCode 码是由日本 Denso 公司于 1994 年 9 月研制的一种矩阵二维码符号,它除具有
一维条码及其他二维码所具有的信息容量大、可靠性高、可表 示汉字及图像多种文字信息、
-5-
保密防伪性强等优点外,还可高效地表示汉字,相同内容,其尺寸小于相同密度的 PDF417
条码。[1]
PDF417 码是由留美华人王寅敬(音)博士发明的。PDF 是取英文 PortableDataFile 三个单
词的首字母的缩写,意为“便携数据文 件”。因为组成条码的每一符号字符都是由 4 个条和
4 个空构成,如果将组成条码的最窄条或统称为一个模块,则上述的 4 个条和 4 个空的总模
块数一定为 17,所 以称 417 码或 PDF417 码。[2]
Data Matrix 二维条码原名 Datacode,由美国国际资料公司(International Data Matrix, 简
称 ID Matrix)於 1989 年发明。Data-Matrix 二维条码是一种矩阵式二维条码,其发展的构想
是希望在较小的条码标签上存入更多的资料量。Data Matrix 二维条码的最小尺寸是目前所
有条码中最小的,尤其特别适用於小零件的标识,以及直接印刷在实体上。DataMatrix 主要
用于电子行业小零件的标识,如 Intel 的 CPU 背面就印制了这种码。
开发平台的选择
由于编码软件是在传统 PC 平台实现,所以基本多种开发平台都能够完成。手机部分的
解码软件目前主要的开发平台,一个是 J2ME 平台,其特点是利用虚拟机技术屏蔽了许多手
机硬件上的差别,实现了软件的跨平台性,易于移植,技术接口也基本上都是开放的,编程
语言为 Java,难度较小;另一个平台是 Symbian 开发环境,主要针对 NOKIA 手机,执行效
率较高,并且可以操作的资源较多,但是技术不是很开放,手机与手机之间的差异较大,其
编程语言为 Symbian C++,和传统 C++有一定的区别,开发难度较大。
我们工作组选择 J2ME 开发平台主要考虑了一下几点:
z Java 开发语言的跨平台性避免了我们大量的重复性劳动,也利于技术广泛传播。
z 尽管 Java 的执行效率并不如 Symbian C++,但是技术较为开放,有 MMAPI 接口可
以操作手机设想头资源,内存垃圾自动收集机制较为完善。而 Symbian 对多媒体应用这方面
的资料非常少,平且很多厂商接口并不开放,手机和手机之间的差异较大,在内存垃圾收集
方面也是需要开发者来控制,所以这条技术路线要困难许多。
z Java 也有自己的多线程技术可以利用,为提高处理速度提供了有利条件。
事实证明我们的技术路线选择是正确的,工作组从 J2ME 环境出发能够较为容易的迅速
入手图像处理,平台控制,数据解码等部分的工作,从而保证开发的顺利完成。
3. 手机二维条形码系统的应用模式
如今利用手机二维码技术开展的便捷的商业应用已经是曾出不穷。我们在地铁,超市,
医院,电影院许多地方都可以看到手机二维码应用的实例。这些精彩纷呈的应用大致分为两
种模式:
z 手机被读模式:大致元素包括二维码营销软件、识别终端硬件和彩信服务组成。由
二维码营销软件生成二维码图样,并将所编码信息存在数据库中,把带有这种二维条形码图
样的彩信通过彩信网关下发给手机用户,用户据此彩信可以作为一种凭证,通过识别终端硬
件设备可以识别出编码信息和数据库存储信息作对应便可以开展许多业务,如票务系统(如
图 5)折凭据,电子门票,机票等。
z 手机识读模式:大致元素包括二维码营销软件,传播媒介,手机二维码识别软件。
由二维码识别软件生成二维码图样,印制在可以通过手机拍摄的传播媒介上,手机用户通过
手机安装的二维码识别软件对其进行识别。识别出的结构可以是文字信息,也可以是 wap
-6-
网址,利用这些信息可以开展相关应用,如地铁中的二维码广告(如图 6),手机上网应用
等等。
图5 手机被读应用模式举例[5]
图6 手机识读模式举例
4. 结论
本文以实际项目出发,介绍了开发过程中遇到的问题,难点以及讨论的成果。这些都是
每一个开始研究手机二维条形码技术的人都会遇到的问题。尤其是许多分析是工作组在大量
试验的基础上得出的最佳方案。并且最后给出了系统的软件架构和系统流程。希望能够给进
入手机二维码领域的研究者提供帮助,更加快速全面的掌握其特点。
-7-
参考文献
[1] GB/T 18284-2000 快速响应矩阵码国家标准 [S].
[2] GB/T 17172-1997 四一七条码国家标准 [S].
[3] 王新梅,肖国镇.《纠错码——原理与方法》[M],西安:西安电子科技大学出版社,2001。
[4] Martin de Jode.<Symbian OS J2ME 编程指南>.詹建飞,廖雪峰 译 [M]北京:人民邮电出版社,2005。
[5] 票务系统中手机条码的应用 [EB/OL]
[6]
Research of the barcode encoder/decoder used in
mobile-phone field
Zhu Tongliang, Zhang Chuang, Lin Zhiqing
Lab of Pattern Recognition and Intelligent System, BUPT, Beijing (100876)
Abstract
Mobile-phone barcode technology is now stepping into people’s everyday life. There always can be
seen that barcodes are printed on advertisement and many other public places. As a supporting
technology, it may produce killer-applications in the 3G times. This paper, based on the realistic project,
introduces the system of barcode encoder and decoder and its architecture, also the function of the
module is referred to. And then we analyzed and discussed the problems faced in the procedure of the
development. At last, the application mode is classified and illustrated.
Keywords: mobile phone, barcode, QR Code, J2ME, DataMatrix