一种二维码的纠错编码和解码方法、系统与存储介质与流程

摘要: 本发明涉及二维码,尤其涉及一种二维码的纠错编码和解码方法、系统与计算机可读存储介质。背景技术:1、目前广泛使用的qr码(quickresponsecode,快速...
一种二维码的纠错编码和解码方法、系统与存储介质与流程

本发明涉及二维码,尤其涉及一种二维码的纠错编码和解码方法、系统与计算机可读存储介质。

背景技术:

1、目前广泛使用的qr码(quick response code,快速响应矩阵码)是二维码的一种,不仅存储量大、成本低,还可以表示汉字及图像等多种文字信息、其保密防伪性强而且使用非常方便,因此,已被各行业普遍采用。具有存储信息密度高、读取速度快等优点,在众多领域得到应用。然而,随着大数据时代的到来,海量数据的存储与传输需求不断增长,传统qr码存在的容量和空间利用率不高的问题,逐渐凸显。

2、传统 qr 码容量和空间利用率不高:传统 qr 码最大只支持177*177模块,限制数据容量qr码在三个角设置了固定大的定位图案,码中间有多个辅助定位块,加上版本等信息,占用约10%-15% 的码面空间,限制的空间利用率。传统 qr 码纠错能力不足:固定4级纠错码配置,纠错冗余度跨度大,空间利用率低,长字符时采用的是固定长度的分组交错编码,纠错能力只有在特殊情况下才能达到最优。

3、qr码采用纠错算法生成一系列纠错码字,添加在数据码字序列后,使得符号可以在遇到损坏时不致丢失数据。如下表纠错共有4个纠错等级,对应四种纠错容量。

4、

5、纠错码字可以纠正两种类型的错误,拒读错误(错误码字的位置已知)和替代错误(错误码字位置未知)。一个拒读错误是一个没扫描到或无法译码的符号字符,一个替代错误是错误译码的符号字符。由于qr码是矩阵型符号,如果一个缺陷使深色模块变成浅色模块或将浅色模块变成深色模块,将符号字符错误地译码为表面上有效,但却是另一个不同的码字。这种数据替代错误需要两个纠错码字来纠正。

6、可纠正的替代和拒读错误的数量由下式给出:e + 2t ≤ d - p;其中:e=拒读错误数,t=替代错误数,d=纠错码字数,p=错误译码保护码字。

7、例如:版本6-h符号中共有172个码字,其中有112个纠错码字(其余60个为数据码字)。这112个纠错码字可纠正56个替代错误或112个拒读错误,即符号纠错容量为56/172或32.6%。

8、在上面的公式中,版本1-l符号的p=3,版本1-m符号和版本2-l符号的p=2,版本1-h、1-q和3-l符号的p=1,其他情况下p=0。p>0(即1,2或3)时,有p个码字作为错误检测码字,防止从错误超过纠错容量的符号传输数据。e必须小于d/2。例如,在版本2-l符号中码字总数为44,其中数据码字为34个,纠错码字为10个。从表13中可以看出纠错容量为4个替代错误(e=0)。代入上面公式:0 +(2×4)= 10 - 2。这就意味着纠正4个替代错误只需要8个纠错码字,剩余的2个纠错码字可用于检测(不能纠正)其他错误,如果超过4个替代错误,则译码失败。

9、根据版本和纠错等级,将数据码字序列分为1个或多个块,对每一个块分别进行纠错运算。表13-22列出了每个版本、每个纠错等级的码字总数、纠错码字总数以及纠错块的结构和数量。如果某一符号版本需要剩余位填充符号容量中剩余的模块,剩余位都应为0。

10、因此有必要提供一种新的二维码纠错编码方法、系统及介质,减少运算量。

技术实现思路

1、本发明的主要目的在于提供一种二维码的纠错编码和解码方法、系统与计算机可读存储介质,以解决上述技术问题。

2、为实现上述目的,本发明提供的一种一种二维码的纠错编码方法,所述二维码包括功能图形和数据图形,所述功能图形包括尺寸为n*n的中心寻象定位图形块,所述数据图形包括围绕所述中心寻象定位图形块的数据块,其中,n=8*n1+1,m=n+8*n2,n1为正整数、n2为大于等于2的正整数;

3、所述中心寻象定位图形块包括:由尺寸为n1*n1的第一明度的图形组成的中心模块,所述中心模块的中心与所述二维码的中心一致,围绕所述中心模块同心设置的由尺寸为n1*n1的第二明度的图形组成的尺寸为3n1*3n1的中心矩形边框模块,围绕所述中心模块同心设置的由尺寸为n1*n1的第二明度的图形组成的尺寸为n*n的矩形外边框模块,设置于所述矩形外边框模块的一个内角上的由尺寸为an1*bn1的第二明度的图形组成矩形角模块,所述矩形外边框模块所围绕的其余部分由尺寸为n1*n1的第一明度的图形填充组成的第一明度大方块;其中,n1+an1+n1≤(n-1)/2,n1+bn1+n1≤n/2,a、b为大于等于1的整数,a≠b;

4、所述数据图形包括由多个码字按照版本信息所对应的排列顺序在所述数据图形所在区域排布,每个所述码字包括8*n3位字符,n3为正整数,所述字符在所述码字内按照预设的编译顺序排布;

5、包括步骤:

6、s1,获取待编码数据,根据待编码数据的长度、待编码的二维码版本信息和纠错等级,计算二维码的数据图形的最小模块的版本号和长度信息;

7、s2,根据所述待编码数据、版本号、长度信息以及纠错等级,计算rs纠错数据;包括:

8、s21,根据所述待编码数据、版本号、长度信息,选择变长rs编码或者分组交错rs编码方法;

9、s221,在选择变长rs编码时,根据数据长度选择合适的伽罗瓦域(gf)空间运算,进行纠错编码,计算rs纠错数据;

10、s222,在选择分组交错rs编码时,在8位gf域运算,进行纠错编码,计算rs纠错数据;

11、s223,将所述长度信息、所述待编码数据以及所述rs纠错数据拼接成待填充数据;

12、s23,根据所述待编码的二维码版本信息,绘制所述二维码的功能图形,并在所述二维码的数据图形内填充所述待填充数据。

13、优选的,还包括步骤s32,将所述待填充数据与掩码图案数据的二进制做异或处理,得到新的待填充数据。

14、优选的,所述步骤s221包括:

15、计算待编码数据的比特位数以及纠错数据占用的比特数,两者加一起来为总的数据比特位数;

16、根据总的比特位数,找出最小的伽罗瓦域的位数b;

17、根据伽罗瓦域的位数b,将原数据按b位拼接成新的数据集p;

18、新数据集p通过b位的rs算法得到纠错数据e;

19、所述步骤s223包括:将p和e拼接成待写入的待填充数据o。

20、优选的,所述步骤s222包括:

21、根据原数据长度和纠错等级以容量最优原则在200~255选择最优的gf空间n和纠错数e,每块的有效容量则为k=n-2*e;

22、将原数据按每块k字节切分数据块,共有u块数据;

23、将每块数据按字节异或得到一个校验块x;

24、将u块数据和校验块x各自进行rs(n,k)计算得到纠错数据;

25、所述步骤223包括:

26、纠错数据拼接到原块数据后,得到新的u+1块数据块f;

27、循环逐一从f中混合交错拼接成一块数据o,则o是待写入的待填充数据。

28、优选的,还包括步骤:

29、s101,将待处理数据进行分割,分割为多个数据块;

30、s102,将所述多个数据块通过纠删算法增加多块冗余块,得到多个单码数据,每个单码数据包括一个所述待编码数据;

31、s103,将所述待编码数据按照所述步骤s1~步骤s4生成多个单码的二维码;

32、s104,将所述多个单码的二维码根据预设的长宽比和拼接顺序,拼接为多码的二维码。

33、本发明还提供一种二维码,采用如上所述的二维码的纠错编码方法进行生成。

34、优选的,所述第一明度为白色或透明,第二明度为黑色,n1为二维码的1个最小尺寸单位,m为25-529;所述n1为2,a=3,b=2。

35、本发明还提供一种应用于上述的二维码的纠错解码系统,包括步骤:

36、s10,获取二维码的纠错编码模式;

37、s201,在所述二维码的纠错编码模式为变长rs编码时:

38、根据码的版本计算最大数据容量位数,并找出最小的gf空间的位数b;

39、根据纠错等级和最大容量,计算出原数据最大长度k和冗余数据长度e;

40、将数据o按b位切分接拼成数据n;

41、将数据n进行rs解码,解码成功后得到原始数据;

42、s202,在所述二维码的纠错编码模式为分组交错rs编码时:

43、根据码的版本计算最大数据容量字节数以及纠错等级计算出纠错字节数;

44、根据容量计算出原始的分块数u;

45、将待解码的数据o按u+1分组还原出每组的数据f;

46、对每块数据进行rs解码;

47、当数据块都能成功解码时,将数据块字节拼接得出原始的数据字节,直接还原出数据;

48、当数据块有任意一组解码失败,最后一组校验块x解码成功时,将数据解码成功的组与校验组按字节异或即可还原出解码失败的块,将数据块字节拼接得出原始的数据字节,还原出数据。

49、本发明还提供一种二维码的编解码系统,包括存储器、处理器、存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述的方法的步骤。

50、本发明还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的方法的步骤。

51、针对现有技术中的不足与改进需求,本发明提供的二维码及其解码方法,至少具有如下优点:

52、(1)变长rs编码优点是利用率高,纠错能力强,缺点就是计算量大,速度慢。创新使用根据数据长度来动态调整rs有限域的,再结合根据域长度,将数据按比特位切分合并的方法压缩数据,减少运算。

53、(2)分组交错rs编码方法与qr码类似,仅在8位gf域运算,速度快,容量和安全性略低于上述变长rs码;与qr码比,填加检验块x,容错能力更强。