二维码相关技术研究
2015-12-10刘晓慧
刘晓慧
摘要:该文对QR二维码相关问题进行了研究,从QR二维码的编码模式、编码方法、纠错编码、图像生成及图像解码等几个方面进行了阐述。
关键词:QR二维码;纠错;编码模式
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)26-0049-03
1 引言
二维码是在一维码技术的基础上发展起来的一门技术,它集信息编码、信息传递、图像处理、数据加密等技术为一体,是一种最新的条码技术。随着移动互联网的快速发展,二维码技术作为一种新型信息传递技术,近年来在世界各国迅速发展并发挥着重要作用。二维码分为行排式二维码和矩阵式二维码,目前应用最为广泛的QR二维码(Quick Response Code,简称QR码)属于矩阵式二维码,QR二维码具有编码范围广泛灵活,快速识别和解码等优势,因而得到广泛应用。因此,对QR二维码及相关技术的研究具有重要意义。
2 QR二维码
QR二维码共有40个版本和4个错误纠错等级,纠错等级分别用L(低)、M(中)、Q(标准)、H(高)来表示,不同的纠错等级使用不同数量的纠错码字,纠错等级越高,使用的纠错码字越多,而纠错码字的增加也会使二维码携带的信息量减少。
2.1 QR二维码的编码模式及编码方法
QR二维码具有多种编码模式,包含了互联网用到的绝大多数字符,主要有数字模式、字符模式、字节模式、中文模式、日文模式、扩充解释模式(ECI)、结构链接、FNC1模式等。其中扩充解释模式用于特殊的字符集,结构链接用于混合编码,FNC1模式主要在一些特殊行业使用。
二维码的编码是要将不同信息编码成二进制数据流,编码之前首先要进行数据分析,确定要进行编码的字符类型,决定使用哪种模式进行编码,并选择二维码版本。编码后的二进制数据流由三部分构成:模式指示符、字符计数指示符和信息数据流。其中各编码模式指示符如表1所示。
表1 模式指示符
[模式\&指示符\&模式\&指示符\&数字\&0001\&扩充解释(ECI)\&0111\&字符\&0010\&日文\&1000\&结构链接\&0011\&中文\&1101\&字节\&0100\&FNC1\&0101/1001\&]
字符计数指示符表示信息数据流在编码前含有的字符个数,字符计数指示符的长度随编码模式不同和二维码版本不同而不同,其长度规定见表2。
表2 字符计数指示符长度
[版本\&数字模式\&字符模式\&字节模式\&中文模式\&日文模式\&1-9\&10\&9\&8\&8\&8\&10-26\&12\&11\&16\&10\&10\&27-40\&14\&13\&16\&12\&12\&]
信息数据流是对数据信息的编码,在不同模式下编码方式不同。
QR二维码在进行汉字编码时,采用的是国标码GB2312,其中包括了6768个汉字字符,每个字符占用两个字节,在编码时将每个汉字字符转换为13位的二进制数,并在其前面加上模式指示符、汉字子集指示符和字符计数指示符。
2.2 QR二维码的纠错编码
信息在含噪信息通道中传送时会被噪声干扰而失真,从而影响信息有效传递,因此,在信息传递之前要对其附加冗余,即编码,信息接收后再进行解码,这样可以纠正信息中的错误,而由信息和附加在其上的冗余构成的编码序列称为纠错码。冗余加入到信息中的方式有两种,即分组码和卷积码,在实用中更多的使用的是分组码,QR二维码使用的纠错码RS(Reed-Solomon)码就是分组码。
RS码是在GF(Galois Field)域中运算的,码系数在GF(28)中取值,GF(28)与线性空间{0,1}8同构(“+”),运算时可以用异或运算代替加法,在工程上实现更为方便,RS码是多项式编码中的一种,用来构造GF(28)域的多项式是:
P(x)=x8+x4+x3+x2+1
RS码在纠错时首先计算校正子,之后计算错误位置并得到错误值,最后将求得的错误值对应的补数加到每个错误位置,纠错完成。
2.3 QR二维码图像生成
QR二维码一共有40个尺寸,即版本(Version),版本1是21×21矩阵,每增加一个版本,尺寸增加4,计算公式是:(Version-1)×4+21。QR二维码的基本结构如图所示:
位置探测图形共有3个,位置固定,用于识别确认此图形是QR二维码图形,同时确定二维码的方向;位置探测图形分隔符是宽度为1的留白,以便更好的识别位置探测图形;定位图形有两条,位置固定在第6行和第6列,作为二维码扫描的标准线;校正图形在版本2及以上的版本中存在,版本不同,校正图形的个数也不同,图形与位置探测图形相似,用于对二维码符号形状校正;格式信息用于存放一些格式化数据,表示该二维码的纠错级别;版本信息表示二维码的规格,在Version 7及以上版本中,需要预留两块3×6的区域存放版本信息;数据和纠错码字区域用于存放实际的数据信息和纠错信息。
绘制二维码时,先在二维码区域三个角上放置位置探测图形,接下来是校正图形和两条定位图形;之后添加格式信息,格式信息是一个15位的信息,其位置排列如图所示,其中包括5个数据位和10个纠错位,5个数据位包括2位纠错等级信息和3位掩膜图形模式,15位格式信息还要与101010000010010进行XOR操作,这样可以避免因为选用了00的纠错级别以及000的掩膜图形,从而造成全部为白色,增加扫描器图像识别的难度;再接下来是版本信息,共18位,其中包含6位版本号和12位纠错码,在两块区域填充方式如图所示;然后是填充数据编码和纠错编码,填充时每个码字放入2×4个模块中,填充方式如图4所示,从右下角开始按M型排列,1是黑色,0是白色。如果遇到了上述的功能区图形,则使用不规则的8个模块图形。
不同版本的数据和纠错码字区域由不同个数的数据块组成,每个数据块包含若干个数据码字和纠错码字,数据码字和纠错码字在填充前,要按一定顺序进行排列,排列方式是:对于数据码,将每个块中的第一个码字进行排列,然后再取每个块中的第二个码字进行排列,依此类推;纠错码排列方式相同,最终得到整个码字序列。如果最后区域有剩余位,则填充0。如版本7-H由5个数据块组成,其数据块和纠错码字块如表3所示。
表3 版本7-H数据块码字
[块\&数据码字\&纠错码字\&1\&D1~D13\&E1~E26\&2\&D14~D26\&E27~E52\&3\&D27~D39\&E53~E78\&4\&D40~D52\&E79~E104\&5\&D53~D66\&E105~E130\&]
按如上所述排列方式,得到的码字序列是:D1,D14,D27,D40,D53,…,D13,D26,D39,D52,D65,D66,E1,E27,E53,E79,E105,…,E26,E52,E78,E104,E130,在二维码图形中排列方式如图5所示。
完成上述操作后,最后要进行掩膜,来减小识别难度,掩膜只对数据和纠错码字区域进行,就是和上面生成的图形做XOR操作,使图形中深色和浅色模块均衡,同时尽量不干扰对功能区域的识别。QR二维码有8种掩膜方案可供选择,如图所示。掩膜之后,QR二维码图像最终生成。
2.4 QR二维码图像识读
二维码的识读是在距离0~0.5米内非接触识读,识读得到图像后,若出现图像旋转、扭曲、伸缩等问题,要对其进行修正,若图像出现污损、模糊,则要进行图像优化,优化后图像识读过程是:首先,对彩色图像进行灰度化,以提高后继的运行速度;其次,去除噪音对二码图像的干扰;再次,使用迭代法选取适当的阈值,对二维码进行二值化处理,使其变为黑白图像;最后,确定二维码的位置探测图形,对二维码进行定位,旋转至水平,建立取样网络,去掩膜,按排列规则恢复码字序列。
3 结束语
QR二维码作为二维码家族中最具代表性,同时也是应用最为广泛的成员,已经越来越多的进入我们的生活,本文针对二维码的编码模式和方法、纠错编码、图像生成和识读几个方面作了阐述。在实应用中二维码在支付、车票等方面出现了对其信息进行加密的需求,因此对二维码加密技术的研究,既不影响其功能,又能使其具备较强的加密性,也具有重要意义。
参考文献:
[1] 于英政.QR二维码相关技术的研究[D].北京:北京交通大学,2014.
[2] 曾子剑.基于QR二维码编解码技术的研究与实现[D].成都:电子科技大学,2010.
[3] 盛秋康.二维码编解码技术的研究与应用[D].南京:南京理工大学,2011.
[4] 程裕强,刘爱民,周国军.二维码生成算法研究[J].玉林师范学院学报,2014(5):23-26.