一种二维码编码方法和解码方法转让专利

申请号 : CN201710916429.9

文献号 : CN107729968B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯贵良

申请人 : 中联惠众信息技术(北京)有限公司

摘要 :

本申请揭示了一种二维码编码方法及其相应的解码方法,其中该编码方法包括如下步骤:获得编码信息;根据编码信息生成二维码码字;生成三个定位图案和校正图案;将三个定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置;其中定位图案是中心为空的直角三角形;校正图案是正方形,该正方形内部中心内嵌实心正方形;三个定位图案的直角边和校正图案的边长相等;连接二维码正方形区域的对角线,在其上放置内部定位图案;将编码信息填充到二维码正方形区域未被占用的其他位置。本申请可实现对二维码的精确定位和正确识别。

权利要求 :

1.一种二维码编码方法,其特征在于,包括如下步骤:获得编码信息;

根据编码信息生成二维码码字;

生成三个定位图案和校正图案;

将三个定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置;

将编码信息填充到二维码正方形区域未被占用的其他位置;

其中定位图案是中心为空的直角三角形,校正图案是正方形,该正方形内部中心内嵌实心正方形;三个定位图案的直角边和校正图案的边长相等。

2.如权利要求1所述的二维码编码方法,其中在编码信息中填充有占位码。

3.如权利要求1所述的二维码编码方法,其中在将定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置之后,还包括连接二维码正方形区域的对角线,在其上放置内部定位图案。

4.一种二维码解码方法,其特征在于,包括如下步骤:获得二维码图像;

从二维码图像中提取二维码码字;

从二维码码字中获得定位图案;

判断是否能够根据定位图案正确识别二维码码字;

如果能够正确识别则识别该二维码码字;

否则利用定位图案计算校正图案的位置;

根据校正图案的位置识别校正图案;

利用定位图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字;

其中利用定位图案计算校正图案的位置包括如下子步骤:延长三个定位图案的直角边;

获得正方形区域;

连接正方形区域的对角线,获得对角线的中心点;

从中心点出发,沿对角线向没有定位图案的角出发,识别校正图案的位置。

5.如权利要求4所述的解码方法,其中定位图案是中心为空的直角三角形,校正图案是正方形,该正方形内部中心内嵌实心正方形,三个定位图案的直角边和校正图案的边长相等。

6.如权利要求4所述的解码方法,其中如果不能正确识别二维码码字,在利用定位图案计算校正图案的位置之前还包括如下步骤:删除二维码码字中的补充码。

7.如权利要求6所述的解码方法,其中删除二维码码字中的补充码之后还包括如下步骤:判断二维码码字中的错误码字是否大于该二维码码字的纠错能力;

如果大于则退出二维码解码方法;

其中判断二维码码字中的错误码字如果不大于该二维码码字的纠错能力,还包括如下步骤:利用码字求得伴随多项式Sj;

利用伴随多项式Sj求得错误位置多项式;

使用前搜索解出错误位置多项式的根,得到错误位置数,确定错误位置;

由错误位置求得错误值,从而得到错误图案;

从二维码码字中删除错误图案,获得二维码正确图案。

说明书 :

一种二维码编码方法和解码方法

技术领域

[0001] 本申请涉及解码领域,尤其涉及一种二维码编码方法和解码方法。

背景技术

[0002] 条码技术是伴随着计算机技术发展起来的一门新兴科学,包括一维条码和二维条码,其中,二维条码由于其具有高密度、高可靠度的特点,获得了越来越多企业和个人的使用。
[0003] 图1所示是本领域常见的二维码,包括二维码图像110,其中二维码图像110包括多个定位图案120,以及编码图案130,其中多个定位图案120用于确定二维码的大小和位置。现有技术中的定位图案通过扫描获得,之后用于定位二维码图像110的位置,从而解码出编码图案130,但是由于贴附于物品上的二维码经常存在破损、折叠、变形等问题,很多二维码无法仅仅根据定位图案120实现对于二维码图像110的正确识别,从而给用户带来不便。

发明内容

[0004] 本申请的目的在于提供一种二维码编码方法及其相应的解码方法,用于实现对二维码的精确定位和正确识别。
[0005] 为达到上述目的,本申请所提供的二维码编码方法采用如下技术方案:
[0006] 本申请提供一种二维码编码方法,包括如下步骤:
[0007] 获得编码信息;
[0008] 根据编码信息生成二维码码字;
[0009] 生成三个定位图案和校正图案;
[0010] 将三个定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置;
[0011] 将编码信息填充到二维码正方形区域未被占用的其他位置。
[0012] 其中定位图案是中心为空的直角三角形,校正图案是正方形,该正方形内部中心内嵌实心正方形;三个定位图案的直角边和校正图案的边长相等。
[0013] 其中在编码信息中填充有占位码。
[0014] 其中在将定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置之后,还包括连接二维码正方形区域的对角线,在其上放置内部定位图案。
[0015] 其中二维码正方形区域的尺寸使用以下公式定义:
[0016] S=(V-1)*4+21
[0017] 其中S是正方形区域的尺寸,V是二维码的版本号。
[0018] 本申请还提供一种二维码解码方法,包括如下步骤:
[0019] 获得二维码图像;
[0020] 从二维码图像中提取二维码码字;
[0021] 从二维码码字中获得定位图案;
[0022] 判断是否能够根据定位图案正确识别二维码码字;
[0023] 如果能够正确识别则识别该二维码码字;
[0024] 否则利用定位图案计算校正图案的位置;
[0025] 根据校正图案的位置识别校正图案;
[0026] 利用定位图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字。
[0027] 其中定位图案是中心为空的直角三角形,校正图案是正方形,该正方形内部中心内嵌实心正方形,三个定位图案的直角边和校正图案的边长相等。
[0028] 其中利用定位图案计算校正图案的位置包括如下子步骤:
[0029] 延长三个定位图案的直角边;
[0030] 获得正方形区域;
[0031] 连接正方形区域的对角线,获得对角线的中心点;
[0032] 从中心点出发,沿对角线向没有定位图案的角出发,识别校正图案的位置。
[0033] 其中如果不能正确识别二维码码字,在利用定位图案计算校正图案的位置之前还包括如下步骤:
[0034] 删除二维码码字中的补充码。
[0035] 其中删除二维码码字中的补充码之后还包括如下步骤:
[0036] 判断二维码码字中的错误码字是否大于该二维码码字的纠错能力;
[0037] 如果大于则退出所述二维码纠错解码方法;
[0038] 其中判断二维码码字中的错误码字如果不大于该二维码码字的纠错能力,还包括如下步骤:
[0039] 利用码字求得伴随多项式Sj;
[0040] 利用伴随多项式Sj求得错误位置多项式;
[0041] 使用前搜索解出错误位置多项式的根,得到错误位置数,确定错误位置;
[0042] 由错误位置求得错误值,从而得到错误图案;
[0043] 从二维码码字中删除错误图案,获得二维码正确图案。

附图说明

[0044] 图1为现有技术中二维码的结构图;
[0045] 图2为本申请二维码编码方法的流程图;
[0046] 图3为本申请二维码结构示意图;
[0047] 图4为本申请二维码解码方法的流程图;
[0048] 图5为本申请计算校正图案位置的方法流程图;
[0049] 图6为本申请定位图案内边界延长线交点示意图。

具体实施方式

[0050] 下面将结合本申请实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0051] 实施例1
[0052] 本申请的编码方法如图2所示,包括如下步骤:
[0053] 步骤S210、获得编码信息;
[0054] 对输入的信息流或数据流进行转换以形成编码信息,例如将信息编码转换为数据编码。
[0055] 步骤S220、根据编码信息生成二维码码字;
[0056] 二维码码字使用黑、白实心正方形标识编码信息,如图1中的编码图案130所示,其编码方式是本领域的公知做法,在此不再赘述。
[0057] 步骤S230、生成三个定位图案和校正图案;
[0058] 二维码码字中使用定位图案对二维码的位置进行确定,生成三个定位图案,代表二维码位置信息,并生成校正图案,校正图案在使用定位图案无法获得二维码的位置信息时,使用校正图案获得二维码位置信息,可见校正图案是在定位图案损坏时使用。
[0059] 其中定位图案是中心为空的直角三角形,校正图案是正方形,该正方形内部中心内嵌实心正方形,三个定位图案的直角边和校正图案的边长相等,其具体结构如图3所示,[0060] 步骤S240、将三个定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置;包括如下子步骤:
[0061] 步骤S2401、构建二维码正方形区域;
[0062] 其中二维码正方形区域的尺寸使用以下公式定义:
[0063] S=(V-1)*4+21
[0064] 其中S是正方形区域的尺寸,V是二维码的版本号。
[0065] 步骤S2402、将三个定位图案放置在二维码正方形区域的三个顶角位置。
[0066] 步骤S2403、将校正图案放置在二维码正方形区域的未被定位图案占用的顶角位置。
[0067] 可选的,还可以包括如下步骤:
[0068] 步骤S2404、在将定位图案和校正图案分别放置在二维码正方形区域的四个顶角位置之后,还包括连接二维码正方形区域的对角线,在对角线区域放置内部定位图案。
[0069] 其中内部定位图案如图6所示,可以用于进一步定位二维码中的其他信息,例如版本信息等。
[0070] 步骤S250、将二维码码字填充到二维码正方形区域未被占用的其他位置;
[0071] 将步骤S220中获得的二维码码字填充到二维码正方形区域未被占用的其他位置,形成二维码,二维码码字形成编码图案。其中,如果使用二维码码字不能填满二维码正方形区域时,则进一步使用占位码将二维码正方形区域填满。
[0072] 实施例2
[0073] 本申请的纠错解码方法如图4所示,包括如下步骤:
[0074] 步骤S410、获得二维码图像;
[0075] 可通过扫描的方式获得二维码图像,其中,本申请的二维码图像如图3所示。
[0076] 步骤S420、从二维码图像中提取二维码码字;
[0077] 从扫描获得的二维码图像中提取二维码码字,其中获得的二维码码字如图3所示,包括定位图案310、320、330,编码图案350以及校正图案340。
[0078] 步骤S430、从二维码码字中获得定位图案;
[0079] 二维码字中使用黑色实心正方形代表编码图案350,中心为空的直角三角形代表定位图案,从二维码字中获得具有空心直角三角形结构的图案,并结合该空心直角三角形结构的位置信息,例如位于二维码码字的外边,识别出定位图案310、320、330。其中二维码码字中包括三个定位图案310、320、330,并且这些定位图案的边长相等。使用三个定位图案从而可准确定位二维码。
[0080] 步骤S440、判断是否能够根据定位图案正确识别二维码码字;
[0081] 根据定位图案,判断是否能够正确识别出二维码码字,使用现有的二维码识别方法中的判断方法即可实现。
[0082] 步骤S450、如果能够正确识别则识别该二维码码字;
[0083] 如果能够正确识别,则使用现有的二维码识别方法,识别二维码码字。
[0084] 步骤S460、否则利用定位图案计算校正图案的位置;
[0085] 如果不能正确识别,那么就需要使用获得的定位图案计算校正图案的位置,其包括如图5所示的子步骤:
[0086] 步骤S510、延长三个定位图案的直角边;
[0087] 如图6所示,将三个定位图案的直角边延长至相交。
[0088] 步骤S520、获得正方形区域;
[0089] 在图6中可见,相交的四条线形成正方形区域,即获得了实施例1中的二维码正方形区域610。
[0090] 步骤S530、连接正方形区域的对角线,获得对角线的中心点;
[0091] 如图6中的中心点620所示。
[0092] 步骤S540、从中心点620出发,沿对角线向没有定位图案的角出发,识别校正图案的位置。
[0093] 从中心点620出发,沿对角线向没有定位图案的角出发,从而可识别校正图案的位置。
[0094] 在校正图案损坏的情况下,例如缺失或二维码图像折叠,通过测量从中心点620到任一定位图案的距离,也可以推出校正图案的位置,这是因为,由于二维码正方形区域610是正方形结构,所以从中心点620到各个顶点的距离相等。
[0095] 另一实施例中,在通过搜索无法获得校正图案位置的情况下,可通过自动补上校正图案的方式,而获得完整的二维码图案。可预先保存有预定的多个校正图案,根据定位图案或二维码码字可确定待识别二维码的版本信息,从而从预定的校正图案集合中获取于该二维码图案相匹配的校正图案,由于已经通过定位图案获得了校正图案的位置,只需将获得的校正图案补入相应的位置即可,从而获得了完整的二维码图案。
[0096] 步骤S470、根据校正图案的位置识别校正图案;
[0097] 通过已有的识别方法,即可实现对校正图案的识别。
[0098] 步骤S480、利用定位图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字。
[0099] 同样的,通过已有的校正方法和识别方法,即可实现步骤S480。
[0100] 实施例3
[0101] 在实施例2的方案的基础上,提出如下实施例3,实施例3与实施例2中的主要步骤相同,仅仅增加了在不能正确识别二维码码字,利用定位图案计算校正图案的位置之前,增加以下步骤,从而进一步提高识别二维码的效率,节省识别时间。
[0102] 其中如果步骤S440判断不能正确识别二维码码字,在利用定位图案计算校正图案的位置之前还包括如下步骤:
[0103] 步骤P1、删除二维码码字中的补充码;
[0104] 在二维码编码中,编码图案350中经常包括用于填满二维码空间的补充码,使用补充码将编码图案中空白的区域补充完整,但是补充码没有实际意义,对其的识别和解码并不能获得有意义的信息,因此,在计算校正图案之前,为了减少数据的处理量而删除这些无疑义信息,从而可以大大缩短后续的纠错流程。
[0105] 在步骤P1删除二维码码字中的补充码之后,可以直接执行步骤S460,也可执行下述步骤P2,进一步保证识别的效率和正确性。
[0106] 步骤P2、判断二维码码字中的错误码字数量是否大于该二维码码字的纠错能力;
[0107] 包括如下子步骤:
[0108] 步骤P21、对删除补充码之后的二维码码字读取,获取二维码版本号以及发生拒绝读取错误的二维码码字的个数;
[0109] 其中二维码版本号信息嵌入到定位图案或二维码码字中。计算拒绝读取的二维码码字的个数。
[0110] 步骤P22、获取此版本号对应的纠错阈值;
[0111] 其中该纠错阈值和版本号的对应表预先生成,并存储在执行解码操作的识别装置中。其中纠错阈值标识了二维码码字的纠错能力。
[0112] 步骤P3、如果大于则退出所述二维码纠错解码方法;
[0113] 如果错误码字数量是否大于该二维码码字的纠错能力,即错误码字数量大于该二维码码字的纠错阈值,这表示错误的码字已经远远超出现有的识别能力,这时退出该解码方法。
[0114] 步骤P4、否则利用码字求得伴随多项式Sj;
[0115] 步骤P5、利用伴随多项式Sj求得错误位置多项式;
[0116] 步骤P6、使用前搜索解出错误位置多项式的根,得到错误位置数,确定错误位置;
[0117] 步骤P7、由错误位置求得错误值,从而得到错误图案;
[0118] 步骤P8、从二维码码字中删除错误图案,获得二维码正确图案。
[0119] 上述步骤P4-P8是现有的二维码通用的纠错方法,例如现有的RS数据纠错算法。
[0120] 在实施例3中,执行完上述步骤之一、某些个或全部之后,继续执行步骤S260。
[0121] 实施例3
[0122] 其中本申请还公开了一种二维码解码装置,包括处理器,其可实现上述实施例2和实施例3中的解码方法。同时还公开了一种二维码编码编码装置,包括处理器,其可实现上述实施例1中的编码方法。
[0123] 实施例4
[0124] 本申请还保护一种计算机存储介质,其上包括计算机程序,该计算机程序运行时,执行如实施例2或3所述的方法。同时还公开了一种计算机存储介质,其上包括计算机程序,该计算机程序运行时,执行如实施例1中所述的方法。
[0125] 这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。