基于Zxing的彩色QR码生成与识别方法
2016-09-14陈元枝史绍亮姜文英
陈元枝,邓 艳,史绍亮,姜文英
(1.桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004;2.中国科技开发院广西分院,南宁 530012)
基于Zxing的彩色QR码生成与识别方法
陈元枝1,邓艳1,史绍亮2,姜文英1
(1.桂林电子科技大学 电子工程与自动化学院,广西 桂林541004;2.中国科技开发院广西分院,南宁530012)
针对黑白条码数据容量小、信息嵌入能力不足等问题,在Zxing的基础上设计了一种彩色QR码的生成和识别方法。该方法利用2k种二进制组合对数据信息进行编码,对应k种不同的编码颜色,利用二进制值与十进制值之间的转换实现准确的颜色识别,编码颜色可任意选取,不需要利用参考颜色处理颜色模块边缘的混叠效应,计算复杂度大幅降低。实验结果表明,基于Zxing的彩色QR码不仅扩充了数据容量,而且保留了黑白QR码的可靠性和鲁棒性。
彩色QR码;数据容量;编码;条码识别;Zxing
近年来,彩色条码成为信息嵌入技术之一,颜色的使用大大提高了黑白条码的数据容量。研究者为了提高二维码的数据容量进行了大量的研究。Han[1]首次提出了彩色二维码ColorCode,利用参考颜色克服了颜色保真度的问题,为区分每种颜色提供了标准的颜色参考,为彩色二维码的发展奠定了基础。微软公司开发了高容量的彩色条码[2](high capacity color barcode,简称HCCB),HCCB码采用不同颜色的三角形编码数据,提高了数据容量并减小了条码元素的尺寸,但HCCB码扫描的鲁棒性较差。彩色PM(paper memory)码[3]利用独特的层状结构提高了数据容量,但解码时对设备分辨率要求过高。Kato等[4]提出的移动多彩色复合码(mobile multi-color composite,简称MMCC)选取的编码颜色最大限度地分离RGB颜色立方体的黑、红、青、白平面,数据容量增加至黑白QR码的4倍,但MMCC码无法正确解码褶皱或边缘弯曲的失真符号。Querini等[5]在黑白QR码的基础上研发了高容量的彩色二维码(high capacity colored 2-dimensional code,简称HCC2D),它将调色板均匀分布在QR码的四周,解决了HCCB码的检测和校准问题,但其数据容量略小于HCCB码,解码的正确率取决于彩色打印机的分辨率。
由于彩色条码观察到的颜色取决于条码表面的反射率和未知光源的光谱,彩色二维码主要利用参考颜色处理偏色问题,导致计算复杂度明显增加、解码正确率不高。为了避免颜色模块边缘的混叠效应,要求编码颜色在RGB空间相距最远,以提高颜色的辨识度。为此,在Zxing[6]的基础上设计了一种彩色QR码的生成和识别方法,彩色QR码的数据容量相比黑白二维码和同类型的彩色二维码均有明显的优势。将生成的彩色QR码保存为PNG格式后,编码颜色可以任意选取,无须利用参考颜色处理彩色QR码的偏色问题,计算复杂度明显降低。
1 彩色QR码简介
1.1PM码
2005年,日本专利局提出彩色PM码。PM码利用独特的层状结构显著地提高了数据容量,PM码有多层且每层都是单色的QR码,PM码表层的颜色模块可能呈现2种颜色,一种是单个码层的颜色,另一种是多层叠加后合成的颜色。当合成的颜色与单层的颜色一样时,合成的颜色将根据PM码的转换算法,在RGB和HSB两个颜色空间之间将其转换成指定的颜色。PM码的颜色转换算法连同包含在条码表层的索引信息,使解码软件能够检测每层颜色模块是否存在,继而解码每层的数据,最终解码PM码。
1.2CQR码
受PM码多层二维码的启发,Nurwono等[7]提出了CQR码(color quick response code),CQR码将待编码的数据分成3组,采用第三方编码软件分别生成3个黑白QR码,并设定第1层QR码为红色,第2层QR码为绿色,第3层QR码为蓝色,用Adobe Photoshop将3个单色QR码叠加,叠加后同一像素点的颜色值相加,最后将整个图像的颜色值反转生成CQR码。解码时,遍历由手机采集的CQR码,得到每个像素点的RGB值,分离并解码单层QR码,最后将3个单色QR码的解码结果级联,显示解码结果。虽然CQR码能储存9 KB数据,但是在保证光源、拍摄角度、拍摄距离、手机像素等实验条件下平均解码正确率仅为63%。
1.3HCC2D码
Grillo和Querini共同研发了HCC2D码,HCC2D码在扩充条码容量的同时,保留了黑白QR码的可靠性和鲁棒性。HCC2D码能支持不同类型和不同长度的数据,根据输入数据的长度自适应选择条码的维度。因为HCC2D码的位置探测图形、分隔符、定位图形、校正图形、格式信息以及版本信息均与黑白QR码一致,所以HCC2D与黑白QR码兼容。HCC2D码的数据容量仅次于HCCB码,但其解决了HCCB码的检测和校准问题。
2 彩色QR码的生成与识别
2.1彩色QR码的设计思路
黑白QR码每个模块只能容纳1位二进制数据,通常白色用“0”表示,黑色用“1”表示。若每个模块放入2位二进制数据,则有4种不同的组合,“00”、“01”、“10”、“11”分别表示4种颜色。例如,二进制数据为11001100,若采用黑白QR码,则需要存入8个模块,但采用4色QR码,每次读取2位二进制数据,并将其转换为1位十进制数据,即11→3,00→0,11→3,00→0,然后将4位十进制数据存入4个模块,即4色QR码的数据容量为黑白QR码的2倍。将这个结论推广,若每个模块放入k(k≥2)位二进制数据,则彩色QR码采用2k种颜色表示,数据容量为黑白QR码的k倍。
2.2彩色QR码相对黑白QR码的变化
为了确保彩色QR码的可靠性和鲁棒性,4色QR码保留了黑白QR码的功能图形、格式信息和版本信息区域,由于3个区域占QR码的面积比例很小,提高QR码的数据容量仅在数据和纠错码字区域进行。随着颜色种类的增加,单位面积的数据容量随之增大。假设编码采用的颜色数为2k种,则每个模块可储存的比特数为k。
码字总数、剩余位、数据码字数、纠错码字数、纠错块数等均为黑白QR码的k倍。当k=1时,QR码采用黑白两色编码;当k=2时,QR码采用4种颜色编码,以此类推。为了简化计算,彩色QR码以4种颜色为例,低版本黑白QR码和彩色QR码的数据容量如表1所示。
表1 低版本黑白QR码和彩色QR码的数据容量
与黑白QR码相比,彩色QR码的数据密度更高,因此彩色QR码的字符计数指示符的位数需要相应增加。如表2所示,彩色QR码数字模式、字母数字模式、中国汉字模式的字符计数指示符位数为n+[k/2],其中,n为黑白QR码的字符计数指示符的位数。彩色QR码8位字节模式的字符计数指示符的位数均为16。
表2 黑白QR码和彩色QR码字符计数指示符的位数
2.3彩色QR码生成举例
将“12345678”编码为版本1-L的4色QR码的步骤为:
1)根据表1和表2扩充4色QR码的数据容量和字符计数指示符的位数。
2)根据待编码内容选择编码模式为数字模式。
3)根据QR码数字模式的编码规则,将“12345678”编码为27位二进制数据,即12345678→000111101101110010001001110。
4)由数据码字流的字节数为4,确定彩色QR码的版本号为1、纠错等级为L、码字总数为52、数据码字数为38、纠错码字数为14以及纠错的块数为2。
5)连接数字模式的模式指示符0001、字符计数指示符00000001000和二进制数据,适当添加终止符0000、填充位00和填充码字。
6)采用Reed-Solomon算法对数据码字流进行分块纠错,形成纠错码字流。块1的数据码字为{16,16,61,-71,19,-128,-20,17,-20,17,-20,17,-20,17,-20,17,-20,17,-20};块1的纠错码字为{-32,21,90,-1,-45,121,1};块2的数据码字为{17,-20,17,-20,17,-20,17,-20,17,-20,17,-20,17,-20,17,-20,17,-20,17};块2的纠错码字为{-47,8,-15,30,-67,103,0}。
7)根据QR码符号中字符的布置规则,构造信息的最终码字序列。
8)填充功能图形区域,包括寻像图形、分隔符、定位图形、校正图形区域,黑色用3填充,白色用0填充。
9)填充格式信息和版本信息,黑色用3填充,白色用0填充。
10)对数据和纠错码字区域进行掩膜。
11)根据QR码符号字符的排列规则,在步骤9)、10)的基础上填充数据码字和纠错码字,每次读取2位二进制数据,将其转换为十进制数据,填充到矩阵元素aij=0,1,2,3的21×21阶矩阵。
12)根据颜色映射表,将矩阵元素0映射为白色、1映射为青色、2映射为红色、3映射为黑色,生成4色QR码,并将4色QR码图像保存为PNG格式的图像。
2.4彩色QR码识别举例
编码内容为“12345678”的4色QR码的解码步骤为:
1)加载并遍历4色QR码图像。由于图像保存为PNG格式,可得到每个像素点的RGB值,并将90 000个像素点的RGB值一一映射为0、1、2、3。
2)将图像二值化。
3)检测寻像图形是否存在。若成功检测寻像图形,则返回3个位置探测图形中心点的坐标,进入步骤4),否则进入步骤12)结束本次解码。
4)由3个位置探测图形中心点的坐标,计算每边的模块数,即版本号,若版本号大于等于2,则返回校正图形中心点的坐标。
5)利用透视变换得到栅格化的QR码,矩阵元素仅为0、1、2、3。
6)根据预设的颜色映射表,识读格式信息和版本信息。
7)消除掩膜,恢复数据码字和纠错码字。
8)采用纠错码字进行错误检查。若发现错误,则进入步骤9);否则进入步骤10)。
9)根据接收码字多项式,计算伴随式并求解错误位置,对每个错误位置取反,以实现分块纠错。
10)根据模式指示符和字符计数指示符,将数据码字划分为多个部分,按照使用的模式译码。
11)根据数据码字译码结果,输出源数据信息流。
12)结束解码。
3 性能比较与分析
3.1数据容量
黑白QR码与彩色QR码版本40-L的数据容量见表3。由于4色QR码每个模块储存了2位二进制数据,而黑白QR码每个模块仅储存1位二进制数据,随着彩色二维码字符计数指示符位数的增加,4色QR码的数据容量约为黑白QR码的2倍。
表3 黑白QR码与彩色QR码版本40-L的数据容量
6种二维码的最大数据容量见表4。由表4可知,4色QR码的数据容量远大于Data Matrix、PDF417以及黑白QR码。与关涛[8]设计的4色DM码和贾华国等[9]设计的具有高压缩比汉字编码能力的6色DM码相比也有明显的优势。
表4 6种二维码的最大数据容量
3.2颜色识别
随机选取RGB颜色立方体的4个对角线平面WYBK(white、yellow、blue、black)、WGMK(white、green、magenta、black)、WCRK(white、cyan、red、black)、YCRB(yellow、cyan、red、blue)对“桂林电子科技大学”采用4种不同颜色编码生成的彩色QR码,如图1所示。图1均为版本1、纠错等级为L的4色QR码。
图1 彩色QR码示例Fig.1 Example of color QR code
从图1可看出,4色QR码的编码颜色可以任意选取,不要求编码颜色在RGB颜色立方体中的距离最远以提高颜色的辨识度,任意4种颜色均可正确解码。这是因为编码后的矩阵元素0、1、2、3与颜色映射表中颜色一一对应,而编码生成的彩色QR码图片保存为无损压缩格式PNG,确保解码能精确地识别每个模块的RGB值,并将RGB值与预先设定的颜色映射表中数值一一对应,4色QR码每次读取2位二进制数,并将其转化为1位十进制数,能精确地识别颜色,且编码颜色可任意选取。
3.3计算复杂度
主流的彩色条码利用参考颜色作为调色板来辨别颜色模块,并采用一种自适应的颜色阈值算法处理偏色问题,将每个颜色模块与参考颜色对比得到偏色范围,然后定义颜色区间,最后对图像进行偏色纠正,彩色条码的计算复杂度相对黑白条码大幅增加,且颜色区间决定了解码正确率的高低。颜色区间过大,不同色调的颜色将归为同种颜色;颜色区间过小,不同光照条件下的同种颜色将解码为不同颜色。编码颜色在RGB颜色空间中相距越远,颜色的辨识度越高,因此主流彩色条码的编码颜色数受到限制。主流的彩色条码图片保存为有损压缩格式JPEG,相邻颜色模块容易受到颜色混叠的影响,将调色板作颜色匹配容易造成解码错误。
为了减小计算复杂度,提高数据容量和解码正确率,不进行偏色处理。彩色QR码从电子档变成纸质档涉及颜色空间的转换,色域的不同将导致颜色信息的丢失,虽然该方法不支持扫描纸质档的彩色QR码,但能够准确地识别颜色,无需采用参考颜色处理颜色模块边缘的混叠效应,导致计算量显著减少,且编码颜色可任意选取。编码颜色数目也将不受限制,随着编码颜色种类的增多,数据容量将显著提升。
4 结束语
在Zxing的基础上设计了一种彩色QR码的生成和识别方法,该方法生成的4色QR码的数据容量为黑白QR码的2倍,等于4色HCCB码,略大于4色HCC2D码,数据容量与4色或6色的DM码相比有明显的优势。彩色QR码的编码颜色可以任意选取,彩色QR码解码对环境光照无特殊要求,通过二进制数据与十进制数据的相互转换,能准确地识别颜色,无需采用调色板匹配颜色模块,计算复杂度大大降低。
[1]CHEOL-HO C,EUN-DONG S,NAM-KYU L,et al.Machine readable code image and method of encoding and decoding the same:United States,7020327[P].2002-03-07.
[2]Microsoft Research.High capacity color barcode [EB/OL].(2007-03-19)[2015-11-25].http://research.microsoft.com/projects/hccb.
[3]ONODA T,MIWA K.Hierarchized two-dimensional code, creation method thereof, and read method thereof:European,1916619[P].2011-05-25.
[4]KATO H, TAN K T, CHAI D. Novel colour selection scheme for 2D barcode[C]//IEEE International Symposium on Intelligent Signal Processing and Communication Systems,2009:529-532.
[5]QUERINI M,GRILLO A,LENTINI A,et al. 2D color barcodes for mobile phones[J].International Journal of Computer Science and Applications,2011,8(1):136-155.
[6]CROSSING Z.Multi-format 1d/2d barcode image processing library with clients for android [EB/OL].(2012-03-15)[2015-11-25].http://code.google.com/p/zxing.
[7]NURWONO K A H,KOSALA R.Color quick response code for mobile content distribution[C]//The 7th ACM International Conference on Advances in Mobile Computing and Multimedia,2009:267-271.
[8]关涛.彩色Data Matrix条码的设计以及若干问题的研究[D].北京:清华大学,2006:47-49.
[9]贾华国,袁远松,刘志.一种面向汉字的高压缩比彩色二维条码的设计与实现[J].浙江工业大学学报,2010,38(5):561-565.
编辑:曹寿平
Generation and recognition method of color QR codes based on Zxing
CHEN Yuanzhi1, DENG Yan1, SHI Shaoliang2, JIANG Wenying1
(1.School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin 541004, China;2.Guangxi Branch of Institute of Chinese Science and Technology Development, Nanning 530012, China)
In view of black-and-white barcode’s defects such as small data capacity and insufficient information embedding capacity, a generation and recognition method of color quick response (QR) codes based on Zxing was designed, which used 2kkinds of binary combination to encode data information, corresponding toktypes of encoding colors which could be arbitrarily selected. A conversion between binary and decimal is used to achieve accurate color recognition. The method was not necessary to use any reference color to deal with the aliasing effect on the edge of the color module, therefore the computational complexity was reduced greatly. Experimental results show that the color QR codes based on Zxing not only expand data capacity, but also retain the reliability and robustness properties of QR.
color QR code; data capacity; encoding; barcode recognition; Zxing
2016-01-12
广西自动检测技术与仪器重点实验室主任基金(YQ14102)
陈元枝(1968-),男,吉林长春人,教授,博士,研究方向为光电检测、图像处理。E-mail:chenyz001@126.com
TP311
A
1673-808X(2016)04-0333-05
引文格式:陈元枝,邓艳,史绍亮,等.基于Zxing的彩色QR码生成与识别方法[J].桂林电子科技大学学报,2016,36(4):333-337.