一种二维码纠错译码方法及其译码装置转让专利

申请号 : CN201710919166.7

文献号 : CN107577980B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯贵良

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

摘要 :

本申请揭示了一种二维码纠错译码方法,包括如下步骤:获得二维码图像;从二维码图像中提取二维码码字;从二维码码字中获得识别图案;判断是否能够根据识别图案正确识别二维码码字;如果能够正确识别则识别该二维码码字;否则利用识别图案计算校正图案的位置;根据校正图案的位置识别校正图案;利用识别图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字。本申请采用与现有技术相区别的识别图案和校正图案,从而使得译码时的定位更加准确,易于识别出二维码图案的倾斜和破损,同时根据二维码图案的破损程度,阶段性选取识别方法,随着破损程度的增加而使得处理步骤递增,兼顾了处理效率和处理效果。

权利要求 :

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

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

从二维码码字中获得识别图案;

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

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

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

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

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

其中识别图案是中心为空的矩形;

其中利用识别图案计算校正图案的位置包括如下子步骤:确定位于二维码码字对角线的两个识别图案;

识别两个识别图案的内边界;

将内边界延长至相交,获得两个交点,记为交点一和交点二;

排除第三个识别图案附近的交点一;

从交点二出发搜索二维码码字,获得校正图案的位置;

译码方法中预先保存有预定的多个校正图案,根据识别图案或二维码字确定待识别二维码的版本信息,从而从预定的多个校正图案中获取与该二维码图案匹配的校正图案,将校正图案补入校正图案的位置;

其中二维码码字中包括三个识别图案,且三个识别图案的矩形长半径不相同。

2.如权利要求1所述的二维码纠错译码方法,其中二维码码字中还包括编码图案,编码图案是黑色实心正方形。

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

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

如果大于则退出所述二维码纠错译码方法。

5.如权利要求4所述的二维码纠错译码方法,其中判断二维码码字中的错误码字如果不大于该二维码码字的纠错能力,还包括如下步骤:利用码字求得伴随多项式Sj;

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

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

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

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

6.一种二维码纠错译码装置,包括处理器,执行如权利要求1-5所述的二维码纠错译码方法,其中识别图案是中心为空的矩形,如果不能正确识别二维码码字,在利用识别图案计算校正图案的位置之前还删除二维码码字中的补充码。

7.一种计算机可读存储介质,其上包括计算机程序,该计算机程序运行时,执行如权利要求1-5所述的方法,其中识别图案是中心为空的矩形,如果不能正确识别二维码码字,在利用识别图案计算校正图案的位置之前还删除二维码码字中的补充码。

说明书 :

一种二维码纠错译码方法及其译码装置

技术领域

[0001] 本申请涉及译码领域,尤其涉及一种二维码纠错译码方法及其译码装置。

背景技术

[0002] 随着物联网的高速发展,现实生活中到处都是使用物联网进行联网的物品,这些物品通常是通过扫描其上所附的二维码入网,实现物品信息采集、防伪溯源等功能。
[0003] 但是由于贴附于物品上的二维码经常存在破损、折叠、变形等问题,很多二维码无法正确识别,从而给物联网的联网带来不便。

发明内容

[0004] 本申请的目的在于提供一种二维码纠错译码方法以及译码系统,用于实现二维码译码中的纠错。
[0005] 为达到上述目的,本申请所提供的二维码纠错译码方法采用如下技术方案:
[0006] 一种二维码纠错译码方法,包括如下步骤:
[0007] 获得二维码图像;
[0008] 从二维码图像中提取二维码码字;
[0009] 从二维码码字中获得识别图案;
[0010] 判断是否能够根据识别图案正确识别二维码码字;
[0011] 如果能够正确识别则识别该二维码码字;
[0012] 否则利用识别图案计算校正图案的位置;
[0013] 识别校正图案;
[0014] 利用识别图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字。
[0015] 其中识别图案是中心为空的矩形。
[0016] 其中二维码码字中包括三个识别图案,且三个识别图案的矩形长半径不相同。
[0017] 其中二维码码字中还包括编码图案,编码图案是黑色实心正方形。
[0018] 其中利用识别图案计算校正图案的位置包括如下子步骤:
[0019] 确定位于二维码码字对角线的两个识别图案;
[0020] 识别两个识别图案的内边界;
[0021] 将内边界延长至相交,获得两个交点,记为交点一和交点二
[0022] 排除第三个识别图案附近的交点一;
[0023] 从交点二出发搜索二维码码字,获得校正图案的位置。
[0024] 其中如果不能正确识别二维码码字,在利用识别图案计算校正图案的位置之前还包括如下步骤:
[0025] 删除二维码码字中的补充码。
[0026] 其中删除二维码码字中的补充码之后还包括如下步骤:
[0027] 判断二维码码字中的错误码字是否大于该二维码码字的纠错能力;
[0028] 如果大于则退出所述二维码纠错译码方法;
[0029] 其中判断二维码码字中的错误码字如果不大于该二维码码字的纠错能力,还包括如下步骤:
[0030] 利用码字求得伴随多项式Sj;
[0031] 利用伴随多项式Sj求得错误位置多项式;
[0032] 使用前搜索解出错误位置多项式的根,得到错误位置数,确定错误位置;
[0033] 由错误位置求得错误值,从而得到错误图案;
[0034] 从二维码码字中删除错误图案,获得二维码正确图案。
[0035] 本申请还请求保护一种二维码纠错译码装置,包括处理器,执行如上所述的二维码纠错译码方法。
[0036] 进一步地,本申请还请求保护一种计算机介质,其上包括计算机程序,该计算机程序运行时,执行如上所述的方法。
[0037] 采用如上方法和装置的本申请具有如下所述的有益效果:
[0038] 1、由于采用与现有技术相区别的识别图案和校正图案的位置计算方法,从而使得译码时的定位更加准确,易于识别出二维码图案的倾斜和破损,并提高计算效率;
[0039] 2、根据二维码图案的破损程度,阶段性选取识别方法,包括第一阶段的校正图案,第二阶段的填充校正图案,以及第三阶段的删除填充码,三个阶段代表了二维码图案不同破损程度时的处理方式,随着破损程度的增加而使得处理步骤递增,即兼顾了处理效率和处理效果。

附图说明

[0040] 图1为现有技术中二维码的结构图;
[0041] 图2为本申请二维码纠错识别方法的方法流程图;
[0042] 图3为本申请二维码结构示意图;
[0043] 图4为本申请实施例2的方法流程步骤;
[0044] 图5为本申请识别图案内边界延长线交点示意图。

具体实施方式

[0045] 下面将结合本申请实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0046] 现有的二维码如图1所示,包括二维码图像110,其中二维码图像110包括多个识别图案120,以及编码图案130,其中多个识别图案120用于确定二维码的大小和位置。现有技术中,为了更好地对二维码进行纠错,在编码图案130部分增加多个纠错位置码,但是多个纠错位置码的引入使得二维码的识别时间明显延长,同时也挤压了现有编码图案中所携带信息量的数量,因此提出本申请。
[0047] 本申请通过对识别图案的形状进行改变,从现有技术的大小一致的如图1所示的正方形识别图案,变化为中心为空的矩形,从而使得译码时的定位更加准确,特别的由于使用矩形方案,可以容易的识别出二维码图案倾斜,进一步地,根据二维码图案的破损程度,决定是否需要进一步计算校正图案,如果二维码图案可以顺利识别,则无需引入校正图案,否则通过识别校正图案结合预先获得的识别图案识别二维码,其中校正图案的位置信息获得,是通过巧妙定义识别图案的形状而计算得到的,无需通过扫描二维码图案获得,显然提高了译码效率,同时,即使在校正图案破损的情况下,通过识别图案也能够获得校正图案的位置,从而模拟出校正图案的信息,进一步提高译码准确率。同时,本申请还兼顾了译码时的数据量问题,即在纠错之前删除填充码字,使得纠错数据量显著下降。
[0048] 实施例1
[0049] 本申请的纠错译码方法如图2所示,包括如下步骤:
[0050] 步骤S210、获得二维码图像;
[0051] 可通过扫描的方式获得二维码图像,其中,本申请的二维码图像如图3所示。
[0052] 步骤S220、从二维码图像中提取二维码码字;
[0053] 从扫描获得的二维码图像中提取二维码码字,其中获得的二维码码字如图3所示,包括识别图案310、320、330,编码图案350以及校正图案340。
[0054] 步骤S230、从二维码码字中获得识别图案;
[0055] 二维码字中使用黑色实心正方形代表编码图案350,空心矩形代表识别图案,从二维码字中获得具有空心矩形结构的图案,并结合该空心矩型结构的位置信息,例如位于二维码码字的外边,识别出识别图案310、320、330。其中二维码码字中包括三个识别图案310、320、330,并且这些识别图案的矩形长半径(图3中360所示的半径为矩形长半径)不相同。使用三个识别图案从而可准确定位二维码,由于识别图案的矩形长半径360不同,从而也可以根据半径的不同确定识别图案的位置信息,从而获得识别图案。
[0056] 步骤S240、判断是否能够根据识别图案正确识别二维码码字;
[0057] 根据识别图案,判断是否能够正确识别出二维码码字,使用现有的二维码识别方法中的判断方法即可实现。
[0058] 步骤S250、如果能够正确识别则识别该二维码码字;
[0059] 如果能够正确识别,则使用现有的二维码识别方法,识别二维码码字。
[0060] 步骤S260、否则利用识别图案计算校正图案的位置;
[0061] 如果不能正确识别,那么就需要使用获得的识别图案计算校正图案的位置,其包括如图4所示的子步骤:
[0062] 步骤S410、确定位于二维码码字对角线的两个识别图案;
[0063] 如图2所示,位于对于对角线的两个识别图案是320和330,即位于二维码图案右上角的识别图案和二维码图案左下角的识别图案。由于使用三个识别图案,所以位于对角线的识别图案是可以唯一确定的两个图案。
[0064] 步骤S420、识别位于二维码码字对角线的两个识别图案的内边界;
[0065] 其中识别图案的内边界,如图3中的360、370、380、390所示,是步骤S410中获得的位于二维码码字对角线的两个识别图案的内边界,其中360和370是识别图案330的内边界,380和390是识别图案320的内边界。
[0066] 步骤S430、将内边界延长至相交,获得两个交点,记为交点一和交点二;
[0067] 将上述内边界360、370、380、390延长,获得两个交点,如图5所示,交点510和交点520。
[0068] 步骤S440、排除第三个识别图案附近的交点一;
[0069] 图5中,位于二维码左上角的识别图案是第三个识别图案,即位于二维码码字对角线的两个识别图案之外的识别图案,其中的交点520是交点一,由于交点一显然不是校正图案所在的位置,所以可以直接排除该交点。
[0070] 步骤S450、从交点二出发搜索二维码码字,获得校正图案的位置信息。
[0071] 交点二,即图5中的交点510位于校正图案附近,从交点510出发,搜索即可获得校正图案。由于使用识别图案交点的形式确定校正图案,因此即使在校正图案损坏的情况下,例如缺失或二维码图像折叠,也可以获得校正图案的位置。
[0072] 另一实施例中,在通过搜索无法获得校正图案位置的情况下,可通过自动补上校正图案的方式,而获得完整的二维码图案。译码方法中可预先保存有预定的多个校正图案,根据识别图案或二维码码字可确定待识别二维码的版本信息,从而从预订的校正图案集合中获取于该二维码图案相匹配的校正图案,由于已经通过识别图案获得了校正图案的位置,只需将获得的校正图案补入相应的位置即可,从而获得了完整的二维码图案。
[0073] 步骤S270、根据校正图案的位置识别校正图案;
[0074] 通过已有的识别方法,即可实现对校正图案的识别。
[0075] 步骤S280、利用识别图案和校正图案对二维码进行校正,获得可识别的二维码码字,并识别该二维码码字。
[0076] 同样的,通过已有的校正方法和识别方法,即可实现步骤S280。
[0077] 实施例2
[0078] 在实施例1的方案的基础上,提出如下实施例2,实施例2与实施例1中的主要步骤相同,仅仅增加了在不能正确识别二维码码字,利用识别图案计算校正图案的位置之前,增加以下步骤,从而进一步提高识别二维码的效率,节省识别时间。
[0079] 其中如果步骤S240判断不能正确识别二维码码字,在利用识别图案计算校正图案的位置之前还包括如下步骤:
[0080] 步骤P1、删除二维码码字中的补充码;
[0081] 在二维码编码中,编码图案350中经常包括用于填满二维码空间的补充码,使用补充码将编码图案中空白的区域补充完整,但是补充码没有实际意义,对其的识别和解码并不能获得有意义的信息,因此,在计算校正图案之前,为了减少数据的处理量而删除这些无疑义信息,从而可以大大缩短后续的纠错流程。
[0082] 在步骤P1删除二维码码字中的补充码之后,可以直接执行步骤S260,也可执行下述步骤P2,进一步保证识别的效率和正确性。
[0083] 步骤P2、判断二维码码字中的错误码字数量是否大于该二维码码字的纠错能力;
[0084] 包括如下子步骤:
[0085] 步骤P21、对删除补充码之后的二维码码字读取,获取二维码版本号以及发生拒绝读取错误的二维码码字的个数;
[0086] 其中二维码版本号信息嵌入到识别图案或二维码码字中。计算拒绝读取的二维码码字的个数。
[0087] 步骤P22、获取此版本号对应的纠错阈值;
[0088] 其中该纠错阈值和版本号的对应表预先生成,并存储在执行译码操作的识别装置中。其中纠错阈值标识了二维码码字的纠错能力。
[0089] 步骤P3、如果大于则退出所述二维码纠错译码方法;
[0090] 如果错误码字数量是否大于该二维码码字的纠错能力,即错误码字数量大于该二维码码字的纠错阈值,这表示错误的码字已经远远超出现有的识别能力,这时退出该译码方法。
[0091] 步骤P4、否则利用码字求得伴随多项式Sj;
[0092] 步骤P5、利用伴随多项式Sj求得错误位置多项式;
[0093] 步骤P6、使用前搜索解出错误位置多项式的根,得到错误位置数,确定错误位置;
[0094] 步骤P7、由错误位置求得错误值,从而得到错误图案;
[0095] 步骤P8、从二维码码字中删除错误图案,获得二维码正确图案。
[0096] 上述步骤P4-P8是现有的二维码通用的纠错方法,例如现有的RS数据纠错算法。
[0097] 在实施例2中,执行完上述步骤之一、某些个或全部之后,继续执行步骤S260。
[0098] 实施例3
[0099] 其中本申请还公开了一种二维码纠错译码装置,包括处理器,其可实现上述实施例2和实施例3中的纠错译码方法。
[0100] 实施例4
[0101] 本申请还保护一种计算机存储介质,其上包括计算机程序,该计算机程序运行时,执行如实施例1或2所述的方法。
[0102] 这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。