可拆分彩色二维码方案设计
2018-07-25冉鑫泽
王 超 冉鑫泽 刘 毅
1(国家食品药品监督管理总局信息中心 北京 100053) 2(华中科技大学 湖北 武汉 430074) 3(复旦大学 上海 201203)
0 引 言
条形码是一种广泛应用在商业、邮政、图书管理、仓储、工业生产过程控制等领域的自动识别技术具有输入速度快、准确度高、成本低、可靠性强等优点。条形码有一维码、二维码、三维码等类型。常见的一维码有EAN码、UPC码、25码、39码、128码等,一维码一般有数据校验功能;常见的二维码有QR码、PDF417码、Data Matrix码、汉信码、龙贝码等,二维码一般具有数据纠错功能;一维码、二维码均印制在平面上的图形,是二维空间的编码,三维码则在此基础上增加第三维的信息,获得更大的数据容量[1]。
二维码是一种数据交换的载体。常见应用中,二维码存储物品的编码、或某个域名信息,使用信息终端扫码获取编码或域名,进而通过访问网络获取更多的相关信息,这类应用对二维码的数据容量尚没有很大的要求。在一些特殊情况下,维码需要存储较多的数据信息,例如在现在火车票、机票上,广泛采用二维码,可以存储用户姓名、证件号码、车/班次等信息[2-4]。
当二维码被用作普通意义的数据传输信道时,容量更成为一个突出的问题。文献[5-6]中,利用二维码实现物理隔离的数据安全交换。类似的,在文献[7]中,运用二维条码技术和数字图像处理实现非涉密外网与涉密内网数据的单向传输。
上述文献提出的应用模式对条码信息容量提出很高的要求,但没有给出可行的大容量条码技术方案。在二维码基础上,用颜色扩充第三维信息,实现三维码设计,增大信息容量,是一种简单易行的方式。
1 QR码定义
QR码,即快速响应矩阵码,应用非常广泛,特别在移动互联网时代无处不在的扫码应用中,QR码更是不可或缺的标识形式。QR码按模块数量不同分为40个不同版本,其中版本1规格为21×21个模块,版本40规格为177×177个模块。不同版本信息容量不同,表1给出了几种版本模块数量对应的数据容量情况[8]。
表1 不同版本模块数量及数据容量
如图1所示,QR码中用黑白模块表示一个比特位的数据信息,并设计了定位图形、矫正图形,可实现快速识读,在图像弯曲、变形情况下仍具有较强的识别能力[9-13]。
图1 QR码符号示例
2 彩色二维码发展
在二维码基础上,增加颜色信息,即形成所谓彩色二维码,可以增加二维码的信息容量,这也是多维码/三维码的一种主要形式。对于相同的模块结构,黑白码每个模块表示1个比特位,而四种颜色时每个模块可以表示两个比特位的信息,容量增加一倍。
微软公司制定了Microsoft Tag 多维码,这种二维条码有四色和八色两种版本,主要用于保存URL、vCard 和电话。解码时需要根据解码得到的索引号连接到服务器中获取相应数据。Microsoft Tag 针对不同的内容打开不同的应用,实现了单个条码对应多条信息[14]。
韩国ColorZip 公司推出一种名叫ColorCode 的多维码,该条码由延世大学的研究小组开发,并逐渐推出了相关产品。ColorCode 的特点是像照片那样由一看即懂的图案构成,重点在于条码外观的个性化设计,条码内只存了一个索引信息,使用时将解码得到的索引发送给服务器,服务器将索引对应的相关信息发送到手机上。ColorCode 本身的信息容量并不高,获取信息需要和Microsoft Tag一样联网,没有离线获取信息的功能[15-17]。
清华大学的关涛[18]分析了Data Matrix 条码的生成过程,并对其进行信息扩展,生成了一种新的彩色Data Matrix 条码。Data Matrix 条码能够离线解码数据,且其数据容量相对于二维码提高了很多。
类似彩色Data Matrix码,也可以在QR码基础上扩展模块的颜色,形成新的二维码方案。陈元枝等[19-20]提出一种彩色QR码方案,每一个模块表示的不仅仅是一位的二进制数据,可以表示两位、三位甚至更多。假设编码采用的颜色数量为2 k,则QR码符号中每个模块可以储存的比特数就是k。为了保证彩色QR码的可靠性和健壮性,这种彩色QR码方案只改变了数据编码区域的颜色信息,功能图形依然使用的是普通的黑白QR码的,这样可以最大程度的保证其和普通黑白QR码的兼容性。
上述彩色二维码方案中,Microsoft Tag和ColorCode主要目的是为用户提供一种更绚丽的条码方案,而非扩大数据容量。文献[18-20]提出的方案中,直接对表示数据的图形模块进行颜色扩展,从而提高信息容量。这种设计思路容易理解,但是新的条码与Data Matrix或QR码不仅结构上不兼容,而且对数据编码、纠错码的设计也带来影响,限制了新方案的应用。
3 可拆分彩色QR码方案设计
3.1 彩色QR码方案
QR码性能良好,应用非常广泛。在QR码基础上,扩展第三个维度的颜色信息,可以增加信息容量,不仅继承了QR码的优点,还有利于彩色二维码的应用普及。基于该思想,设计新型彩色QR码技术方案。
首先,将需要写入二维码的信息按照先后顺序平均分成前、后两部分,按照普通QR码的生成方法,将两部分数据分别写入前、后两个相同版本的QR码中,也即两个二维码的位置探测图形、定位图形、分隔符、版本信息和格式信息完全一样。
然后,根据上述两个普通QR码符号,生成彩色QR码,彩色QR码模块颜色定义的规则如表2所示。例如前后两个QR码相应位置模块为白色和黑色,则彩色QR码相应位置模块为红色。
表2 彩色QR码模块颜色定义规则
该彩色QR码位置探测图形、定位图形、分隔符、版本信息和格式信息完全遵循QR码的技术标准,也不需要考虑模块掩模、纠错等问题。
解码时,根据彩色QR码的模块颜色,按照表2规则反向操作,将彩色QR码还原为前、后两个黑白QR码,分别提取存储的信息,最后按前、后顺序将两部分信息拼接在一起,得到所需的完整信息。综上所述,彩色QR编码、解码流程如图2所示。
图2 彩色QR码编码/解码流程
3.2 功能模块的颜色选择
相比黑白二维码,提高解码的可靠性是彩色二维码面临的一个关键问题,增加颜色维度不仅影响二维码符号图形的检测,增加模块的颜色类型,也会影响提取信息的准确性。
为了提高彩色QR码识别的可靠性,在选择模块颜色时,尽可能使颜色之间的区分度更大。众所周知,红色、绿色、蓝色是三原色,按比例混合可以得到各种其他颜色。图3为RGB颜色空间示意图,RGB颜色空间处在边长为1的正方体中,红色、绿色、蓝色分别位于立方体在坐标轴上的三个顶点上,坐标系原点处为黑色,其他定点分别对应白色、黄色、品红和青色。
图3 RGB颜色空间示意图
颜色空间中,空间距离越大,颜色区分度越高。因此,彩色QR码模块颜色可以选择RGB空间顶点处的颜色。方案中,彩色QR码定位图形、校正图形仍然为黑色,这样可以提高这些图形识别的准确性。
综上所述,在彩色QR码方案设计中,选择了黑色、白色、红色、蓝色作为模块的四种颜色,具体配色规则见表2。
3.3 彩色QR码实现与测试
在Visual Studio 2012开发平台上,采用C#编程语言编程实现了新型彩色QR码生成、解码功能。
测试中,分别输入10个、20个、30个汉字,程序将字符串分为两部分,分别生成前、后两个相同版本的QR码,并依据表2定义的规则自动生成彩色QR码,并用惠普LaserJet Pro CP1025 彩色激光打印机打印出来。图4中,需要存储的字符串是“白日依山尽黄河入海流”,分段后分别生成两个QR码。其中,图4(a)存储的信息是“白日依山尽”,图4(b)中存储的是“黄河入海流”,图4(c)是合成的彩色(不同灰度)QR码。
(a) 前二维码(b) 后二维码(c) 对应彩色QR码 图4 彩色QR码生成实例
解码时,用摄像机采集彩色QR码图像,基于普通QR码图像分析原理,实现二维码的定位及模块分割。计算每个功能模块所有像素R、G、B的均值,对均值归一化后,计算其与RGB颜色空间中黑色、白色、红色、蓝色的空间距离,按距离大小实现模块颜色的判断。由于采用所有像素的统计特性,所以能最大化提高模块颜色判定的准确性。依据模块的颜色,按照表2定义的规则,还原两个普通QR码,提取两个QR码中的信息并拼接得到完整信息,完成彩色QR码的解码过程。
分别在不同情况下对彩色QR码的识别准确率进行测试:正常情况下的测试、皱褶或弯曲情况下的测试、颜色光照明条件下的测试。
在自然漫反射环境光下进行彩色QR码识别测试,印刷彩色QR码的纸张平整,摄像机正向采集图像。此时彩色QR码识读稳定,没有出现数据差错。
测试中,过度的皱褶、弯曲导致数据错误、甚至无法识别,这是由图形定位错误、模块分割错误引起。测试中,保证标准黑白QR码能够被正确识别,在同等皱褶、弯曲条件下,测试彩色QR码识别准确性的差异。经过100次试验(其中皱褶80次、弯曲20次),彩色QR码正确识别97次,准确性略有下降。
在颜色光照明条件下进行彩色QR码识别测试,分别用红、绿、蓝单色光照明,QR码能够正确定位,但数据大量错误。显而易见,彩色QR码中,模块的颜色包含了数据信息,在偏色条件下,可能导致颜色识别错误,数据不能得到正确解码。
实验表明,正常条件下,彩色QR码识别准确率与QR码持平,具有较高的可靠性。但对照明光的偏色敏感,过度偏色将导致数据出现明显差错。因此应用过程中,应尽可能采用自然光、日光灯等白光源照明。
4 结 语
QR码是一种广泛应用的数据载体形式,通过增加颜色维度可以成倍增加数据容量,拓宽二维码的应用范围。本文设计的彩色二维码在保留QR码图形特征、数据编码特征的基础上,将信息切分两段,分别生成QR码,按特定颜色定义规则合成为彩色二维码。如果增加颜色种类,可以进一步增加信息容量。该方案原理简洁、实用,识别稳定可靠,在彩色QR码合成前及分解后,与标准QR码完全兼容,比较容易得到推广。