矩阵式二维码及其编码方法和译码方法
技术领域
本发明涉及自动识别技术领域,尤其涉及符号条码领域,具体涉及一种矩阵式二维码及其编码方法和译码方法。
背景技术
现有的矩阵式二维码具有多种格式、多种符号尺寸,且在编码时使用了复杂的纠错算法,条码符号中需要有较多的面积用于存储版本信息、格式信息、纠错信息,以及寻像图形和校正图形。这样的矩阵式二维码减少了用于存储有效数据的面积,尤其在小尺寸的二维码中,一般最多只能存放2到3个字符,可存放的有效数据非常少。在实际应用中,小尺寸的条码即使被印刷在较小的区域内,它的每个模块仍然可以得到较大的面积,且小尺寸的条码产生畸变的概率较小,因此在条码没有被污损的情况下,信息在传输的过程中产生的差错较少。然而,在一些要求信息传输过程产生差错较小的场合,只能使用小尺寸的条码,但又要求存储较多的信息,使得现有的矩阵式二维码难以满足要求。
奇偶校验是在每个数据单元(在图2中的为一行或一列)中加上一位,称为奇偶校验位,使数据单元中1的数量为系统预先约定的奇数或偶数。数据接收端通过检测奇偶位,判断所接收到的数据是否发生差错。奇偶校验对单比特差错(single-bit error,即在给定的数据单元中仅有一位发生从1到0或从0到1的变化)和突发性差错(burst error,在数据单元中有两位或更多位发生从1到0或0到1的变化)均有比较强的检测能力,可以检测到所有奇数个差错,以及大部分偶数个差错,仅在部分情况下某些行和某些列同时出现偶数个(如2个)差错时无法准确检测到。此外,当仅在一行或仅在一列中出现奇数个差错时,二维奇偶校验可以通过行、列校验位定位出错误位置,并实现纠正。在小尺寸二维码中,虽然其印刷面积较小,但其模块尺寸较大,可得到清晰的二维码。因此,在二维码保存清晰、完整的情况下,条码阅读器所获取到的二维码,不会出现太多差错。
CRC校验是在数据单元的末尾增加一个称为CRC或CRC余数的冗余位序列,以使得产生的数据单元能够被一个预先约定的二进制数整除。数据接收端将数据单元除以约定的二进制数,若得到的余数为0,则认为数据在传输中没有遭到破坏。在一个k位长的数据单元后面加上r个0,使用模2除法,除以一个(r+1)位的二进制数,得到的r位余数即为CRC,这r位余数也可能为0。这个(r+1)位的二进制除数,通常被表示成多项式的形式,称为生成多项式,如1101会被表示成G(x)=1×x3+1×x2+0×x+1=x3+x2+1,生成多项式的选择,直接影响CRC的检错能力,即CRC检测到所有差错的概率。
发明内容
本发明要解决的技术问题在于,针对现有技术的缺陷,提供一种矩阵式二维码及其编码方法和译码方法。
本发明解决其技术问题所采用的技术方案是:一种矩阵式二维码,包括N×N模块组成的矩阵,所述矩阵包括用于存储数据信息的数据区域和设置在所述数据区域四周的寻像图形;所述数据区域由(N-2)×(N-2)模块组成,包括:
缺省模块,设置在所述数据区域的一顶点上;
列奇偶校验单元,包括N-3位用于存储列奇偶校验码的列奇偶校验位,所述列奇偶校验位设置在所述缺省模块所在行;
行奇偶校验单元,包括N-3位用于存储行奇偶校验码的行奇偶校验位,所述行奇偶校验位设置在所述缺省模块所在列;
CRC校验单元,包括8位用于存储CRC校验码的CRC校验位;
信息存储单元,包括若干位用于存储数据信息的信息位;
所述寻像图形包括用于确定图像方向的定位模块、第一L型定位单元、第二L型定位单元和第三L型定位单元,所述定位模块和所述第二L型定位单元的顶点设置在所述矩阵的一对角线上,所述第一L型定位单元的一边与所述第二L型定位单元的一边完全重叠,所述第二L型定位单元的另一边与所述第三L型定位单元的一边完全重叠;
所述第一L型定位单元与所述第三L型定位单元对称设置;
所述第二L型定位单元的两边长度比例为1:1;若N为偶数,所述第一L型定位单元与所述第三L型定位单元的两边长度比例均为1:2,若N为奇数,所述第一L型定位单元与所述第三L型定位单元的两边长度比例均为(N±1)/2:N;
所述定位模块设置在所述矩阵的一顶点上,并与所述缺省模块相邻;
其中N为大于6的整数。
优选地,N的取值为9、10或11。
本发明还提供一种矩阵式二维码的编码方法,包括如下步骤:
S11:接收用户信息,并按预设编码方式将用户信息转换成二进制数据位流;所述预设编码方式包括三位编码、四位编码和五位编码中的一种或多种;
S12:将所述二进制数据位流按预设顺序存储在所述信息位中;
S13:生成8位的CRC校验码并存储在相应的CRC校验位上;
S14:计算各列的列奇偶校验码及各行的行奇偶校验码,并分别存储在相应的列奇偶校验位和行奇偶校验位上;
S15:构建寻像图形,生成二维码。
优选地,所述预设顺序为行与行之间首尾相连的蛇形顺序;
所述步骤S12包括:将所述二进制数据位流按所述蛇形顺序从所述信息位的首行开始依次填充,剩余的信息位填充0;
所述步骤S14包括:将所述8位CRC校验码按所述蛇形顺序填充在所述CRC校验位中。
本发明还提供一种矩阵式二维码的译码方法,包括如下步骤:
S21:扫描二维码并接收二维码信息;
S22:对比并判断所述二维码信息是否包括所述寻像图形,若是则执行步骤S23以后的步骤,若否则结束译码;
S23:提取所述二维码信息的信息位中的数据;
S24:根据提取后的数据计算各列的列奇偶校验码和各行的列奇偶校验码,并分别与放置在列奇偶校验位中的列奇偶校验码和放置在行奇偶校验位中的行奇偶校验码进行比较,判断是否一致,若一致则执行步骤S25的步骤,若不一致则执行纠错步骤;
S25:利用CRC校验码对提取后的数据进行CRC校验,若CRC校验通过则对所述二维码信息的信息位中的数据进行译码,以结束译码;若否则判定译码失败,以结束译码。
本发明与现有技术相比具有如下优点:本发明所提供的矩阵式二维码设置行奇偶校验单元、列奇偶校验单元和CRC校验单元对二维码内存储的信息进行校验,校错能力强,且能够纠正某些形式的差错,且无需采用校正图形,条码模块数量少,数据编码方式简单,编码效率高,冗余信息少。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例1中矩阵式二维码的结构示意图。
图2是本发明实施例1中数据区域的结构示意图。
图3是本发明实施例1中寻像图形的结构示意图。
图4是本发明实施例2中矩阵式二维码的编码方法的流程图。
图5是本发明实施例2中矩阵式二维码的结构示意图。
图6是本发明实施例3中二维码的译码方法的流程图。
图中:1、数据区域;11、缺省模块;12、列奇偶校验位;13、行奇偶校验位;14、CRC校验位;15、信息位;2、寻像图形;21、定位模块;22、第一L型定位单元;23、第二L型定位单元;24、第三L型定位单元。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
实施例1
图1示出本实施例中的矩阵式二维码。该矩阵式二维码包括由N×N模块组成的矩阵,该矩阵包括用于存储数据信息的数据区域1和设置在数据区域1四周的寻像图形2,可以理解地,数据区域1由(N-2)×(N-2)模块组成,其中,N为大于6的整数。优选地,N的取值为9、10或11。
如图2所示,在数据区域1中,用二进制数据位流表示数据,每一模块(即图2中每一方格)代表一个二进制数据位流,用于存储1或0两个二进制数据。本实施例中,N的取值为10,相应的数据区域1包括:
缺省模块11,设置在由数据区域1一顶点上,如图2所示,该缺省模块11为图中8×8模块中缺省的一个模块。
信息存储单元,包括若干位用于存储数据信息的信息位15,具体地,信息位15的个数为N2-6N+1。可以理解地,每一信息位15中存储一个二进制数据位流。可以理解地,二进制数据位流按预设顺序存放在信息位15中,该预设顺序为行与行之间首尾相连的蛇形顺序,剩余的信息位15填充0。
由于条码可能会存在被污损或条码识读器识读过程中可能产生差错等情况,为了对这些差错进行检测和纠正,在数据区域1内除了设置有用于存储数据的信息位15,还需放置用于数据正确传输或纠正部分形式差错的冗余信息,这些冗余信息存放在校验位中。具体地,该数据区域1还包括:
列奇偶校验单元,包括N-3位用于存储列奇偶校验码的列奇偶校验位12,列奇偶校验位12设置在缺省模块11所在行,如图2中j1~j7中分别存储相应列的列奇偶校验码。可以理解地,N-3个列奇偶校验码同为奇校验码或同为偶校验码。
行奇偶校验单元,包括N-3位用于存储行奇偶校验码的行奇偶校验位13,行奇偶校验位13设置在缺省模块11所在列,如图2中i2~i8中分别存储相应行的行奇偶校验码。可以理解地,N-3个行奇偶校验码同为奇校验码或同为偶校验码。
可以理解地,在同一矩阵式二维码中,行奇偶校验码和列奇偶校验码可以同为奇校验码,也可以同为偶校验码,或者一为奇校验码另一为偶校验码。
CRC校验单元,包括8位用于存储CRC校验码的CRC校验位14,本实施例中8位校验码顺序存储在c1~c8中,可以理解地,CRC校验码按预设顺序填充在CRC校验位14中。
在实际应用中,先通过行奇偶校验位13和列奇偶校验位12同时做行奇偶校验和/或列奇偶校验,以实现检错和纠错功能,再通过CRC校验位14对信息位15进行检查确认。
如图1、图2所示,本实施例中的数据区域1的信息位15占41位,校验位占22位,编码效率为41/63=65.08%。这种采用“一个二维码只表示一个数字”的方法,实际上是直接使用原始数据,即把信息位15中的二进制数据直接转换成十进制,就得到了所要传输的信息,并没有对信息位15编码。
在实际应用中,需要考虑以一定的编码方式去表示字符,例如:把每个字符编码成4位长的二进制数据,这个二进制数据的不同取值代表不同的字符,如表1所示。编码方式多种多样,若采用表1所示的编码方式,那么41个信息位15可以表示10个字符,每个字符占4位,剩余一位补0。则本设计的数据容量为10个数字或大写字母字符。
表1四位编码
可以理解地,还可依据客户的需求,可将把信息位15的前20位用来存放“五位编码”的字符,共4个字符,编码方式如表2所示;把剩下的21位用来存放“四位编码”的字符,共5个字符,编码方式如表1所示,剩下一位补0。可以理解地,此时采用四位编码和五位编码组合的预设编码方式对用户信息进行转换处理,形成二进制数据位流,40位信息位15可用于存储9个字条,剩余一位补0。
表2五位编码
如图3所示,寻像图形2包括用于确定图像方向的定位模块21、用于实现符号定位的第一L型定位单元22、第二L型定位单元23和第三L型定位单元24,定位模块21和第二L型定位单元23的顶点设置在矩阵的一对角线上,第一L型定位单元22的一边与第二L型定位单元23的一边完全重叠,第二L型定位单元23的一边与第三L型定位单元24的一边完全重叠。可以理解地,该定位模块21设置在矩阵的一顶点上,与数据区域1中的缺省模块11相邻。
具体地,第一L型定位单元22与第三L型定位单元24对称设置。第二L型定位单元23的两边长度比例为1:1,本实施例中,第二L型定位单元23的两边长均为10。若N为偶数,第一L型定位单元22与第三L型定位单元24的两边长度比例均为1:2,本实施例中,分别为5个模块和10个模块;若N为奇数,则第一L型定位单元22与第三L型定位单元24的两边长度比例均为(N±1)/2:N。可以理解地,在寻像过程中,首先找出寻像图形2中所有的L型定位单元,然后根据三个相互重叠的L型特征找到符号,进行定位。
本发明所提供的矩阵式二维码设置行奇偶校验单元、列奇偶校验单元和CRC校验单元对二维码内存储的信息进行校验,校错能力强,且能够纠正某些形式的差错,且无需采用校正图形,条码模块数量少,数据编码方式简单,编码效率高,冗余信息少。
实施例2
图4示出本实施例中的矩阵式二维码的编码方法。该二维码的编码方法包括如下步骤:
S11:接收用户信息,并按预设编码方式将用户信息转换成二进制数据位流,可以理解地,该预设编码方式可以采用实施例1中的表1和表2的编码方式。
S12:将二进制数据位流按预设顺序存储在信息位15中。可以理解地,该预设顺序为行与行之间首尾相连的蛇形顺序,将二进制数据位流按蛇形顺序从信息位15的首行开始依次填充,剩余的信息位15填充0。
S13:生成CRC校验码并存储在相应的CRC校验位14上。可以理解地,本实施例中,将8位CRC校验码按蛇形顺序填充在CRC校验位14中。
S14:计算各列的列奇偶校验码及各行的行奇偶校验码,并分别存储在相应列奇偶校验位12和行奇偶校验位13上。
S15:构建寻像图形2,生成二维码。
本实施例中,若用户信息为ABCDE12345,其CRC生成多项式为1 0000 0111;对应的CRC校验码为1111 0000;行奇偶校验码和列奇偶校验码均为偶校验码;若采用四位编码方式,则其生成的矩阵式二维码如图5所示。本方案中的CRC生成多项式采用标准多项式G(x)=x8+x2+x+1,生成8位的CRC校验码,其检错能力如下(其中r为CRC的长度):
1)以1-(1/2)r-1=1-(1/2)8-1=99.21875%的概率检测出所有长度等于9位的突发性差错。
2)以1-(1/2)r=1-(1/2)8=99.609375%的概率检测出所有长度大于9位的突发性差错。
3)可以检测出所有其他形式的差错。
本方案所提供的矩阵式二维码采用奇偶校验和CRC校验结合,具有更高的检错成功率,误码率基本可以忽略。
本发明所提供的矩阵式二维码的编码方法,将用户信息转换成二进制位流存储在信息位15中,并设置行奇偶校验码、列奇偶校验码及CRC校验码,校错能力强,且能够纠正某些形式的差错,且无需采用校正图形,条码模块数量少,数据编码方式简单,编码效率高,冗余信息少。
实施例3
图6示出本实施例中的矩阵式二维码的译码方法。该二维码的译码方法包括如下步骤:
S21:扫描二维码并接收二维码信息。
S22:对比并判断二维码信息是否包括前述的寻像图形2,若是则执行步骤S23以后的步骤,若否则结束译码。
S23:提取二维码信息的信息位15中的数据。
S24:根据提取后的数据计算各列的列奇偶校验码和各行的列奇偶校验码,并分别与放置在列奇偶校验位12中的列奇偶校验码和放置在行奇偶校验位13中的行奇偶校验码进行比较,判断是否一致,若一致则执行步骤S25的步骤,若不一致则执行纠错步骤;
S25:利用CRC校验码对提取后的数据进行CRC校验,若CRC校验通过则对所述二维码信息的信息位15中的数据进行译码,结束译码;若否则判定译码失败,结束译码。
本发明所提供的矩阵式二维码的译码方法,通过提取二维码信息中的数据,并进行行奇偶校验、列奇偶校验以及CRC校验,校错能力强,且能够纠正某些形式的差错,且无需采用校正图形,条码模块数量少,数据编码方式简单,编码效率高,冗余信息少。
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换和等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。