一种二维码解析方法及装置转让专利

申请号 : CN201811010259.9

文献号 : CN109255277B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨磊磊

申请人 : 阿里巴巴集团控股有限公司

摘要 :

公开了一种二维码解析方法及装置。在一次二维码解析流程中,总是选出选择评分最大的二值化算法作为目标算法,以对本次抓取的二维码图像进行二值化处理,得到二维码黑白图像,并且,如果随后对所述二维码黑白图像识别失败,则根据所述二维码黑白图像的二值化效果的优劣,重新确定所述目标算法对应的选择评分。需要说明的是,如果所述二维码黑白图像的二值化效果越好,则重新确定的所述目标算法对应的选择评分越高。

权利要求 :

1.一种二维码解析方法,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分,所述方法包括:获取对应于待解析二维码的二维码图像;

基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;

对所述二维码黑白图像进行识别;

若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择评分正相关;

重新获取对应于所述待解析二维码的二维码图像,直至识别成功。

2.如权利要求1所述的方法,初始化所述算法集合中每个二值化算法对应的选择评分,具体包括:初始化所述算法集合中每个二值化算法对应的选择评分为,不小于指定分值的分值;

重新确定对应于所述目标算法的选择评分,具体包括:

重新确定对应于所述目标算法的选择评分为,小于所述指定分值的分值。

3.如权利要求1所述的方法,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,具体包括:判断所述算法集合中是否存在至少一个未被选出过的二值化算法;

若是,则从未被选出过的二值化算法中选出一个二值化算法;

否则,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法。

4.如权利要求1所述的方法,确定二值化效果表征值,具体包括:获取所述二维码黑白图像对应的定位区域识别率和/或信息污损率;

根据所述定位区域识别率和/或所述信息污损率,确定二值化效果表征值;所述定位区域准确率与所述二值化效果表征值正相关,所述信息污损率与所述二值化效果表征值负相关;

其中,所述定位区域准确率是所述二维码黑白图像中,可识别出的定位区域的数量与定位区域的总数量的比值;所述信息污损率是所述二维码黑白图像中,未识别出的信息量与全部信息量的比值。

5.如权利要求1所述的方法,所述方法还包括:

若所述二值化效果表征值小于预设值,则从所述算法集合中删除所述目标算法。

6.一种二维码解析方法,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择概率,针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关,所述方法包括:获取对应于待解析二维码的二维码图像;

基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;

对所述二维码黑白图像进行识别;

若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关;

重新获取对应于所述待解析二维码的二维码图像,直至识别成功。

7.如权利要求6所述的方法,初始化所述算法集合中每个二值化算法对应的选择概率,具体包括:初始化所述算法集合中每个二值化算法对应的选择概率为,不小于指定概率值的概率值;

重新确定对应于所述目标算法的选择概率,具体包括:

重新确定对应于所述目标算法的选择概率为,小于所述指定概率值的概率值。

8.如权利要求6所述的方法,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,具体包括:判断所述算法集合中是否存在至少一个未被选出过的二值化算法;

若是,则从未被选出过的二值化算法中选出一个二值化算法;

否则,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法。

9.一种二维码解析装置,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分,所述装置包括:获取模块,获取对应于待解析二维码的二维码图像;

二值化模块,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;

识别模块,对所述二维码黑白图像进行识别;

选择评分重置模块,若所述识别模块识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择评分正相关;以及,指令所述获取模块重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块识别成功。

10.如权利要求9所述的装置,初始化所述算法集合中每个二值化算法对应的选择评分,具体包括:初始化所述算法集合中每个二值化算法对应的选择评分为,不小于指定分值的分值;

所述选择评分重置模块,重新确定对应于所述目标算法的选择评分为,小于所述指定分值的分值。

11.如权利要求9所述的装置,所述二值化模块,判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;

否则,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法。

12.如权利要求9所述的装置,所述选择评分重置模块,获取所述二维码黑白图像对应的定位区域识别率和/或信息污损率;根据所述定位区域识别率和/或所述信息污损率,确定二值化效果表征值;所述定位区域准确率与所述二值化效果表征值正相关,所述信息污损率与所述二值化效果表征值负相关;

其中,所述定位区域准确率是所述二维码黑白图像中,可识别出的定位区域的数量与定位区域的总数量的比值;所述信息污损率是所述二维码黑白图像中,未识别出的信息量与全部信息量的比值。

13.如权利要求9所述的装置,所述装置还包括:

删除模块,若所述二值化效果表征值小于预设值,则从所述算法集合中删除所述目标算法。

14.一种二维码解析装置,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择概率,针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关,所述装置包括:获取模块,获取对应于待解析二维码的二维码图像;

二值化模块,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;

识别模块,对所述二维码黑白图像进行识别;

选择概率重置模块,若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关;以及,指令所述获取模块重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块识别成功。

15.如权利要求14所述的装置,初始化所述算法集合中每个二值化算法对应的选择概率,具体包括:初始化所述算法集合中每个二值化算法对应的选择概率为,不小于指定概率值的概率值;

所述选择概率重置模块,重新确定对应于所述目标算法的选择概率为,小于所述指定概率值的概率值。

16.如权利要求14所述的装置,所述二值化模块,判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;

否则,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法。

17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至5任一项所述的方法。

18.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求6至8任一项所述的方法。

说明书 :

一种二维码解析方法及装置

技术领域

[0001] 本说明书实施例涉及信息技术领域,尤其涉及一种二维码解析方法及装置。

背景技术

[0002] 目前,二维码作为一种信息载体,广泛应用于各行业领域。例如,在移动支付领域,付款方可以使用手机等扫码设备从收款方提供的二维码中解析出收款方的账户信息,从而可以在线向收款方付款。
[0003] 对二维码进行解析的过程主要包括如下步骤:
[0004] 1、扫描二维码,以便抓取一帧二维码图像。
[0005] 2、从预设的至少两个二值化算法中随机选择一个二值化算法,采用随机选择的二值化算法对抓取的二维码图像进行二值化处理,得到二维码黑白图像。
[0006] 3、对二维码黑白图像进行识别(一般包括桩点查找、译码、信息纠错等步骤),若识别成功,则得到二进制信息,若识别失败,则返回步骤1重新抓取一帧二维码图像,直至识别成功。
[0007] 基于现有技术,需要一种成功率更高的二维码解析方法。

发明内容

[0008] 针对现有的二维码解析方法成功率较低的问题,本说明书实施例提供一种二维码解析方法及装置,技术方案如下:
[0009] 根据本说明书实施例的第1方面,提供一种二维码解析方法,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分,所述方法包括:
[0010] 获取对应于待解析二维码的二维码图像;
[0011] 基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0012] 对所述二维码黑白图像进行识别;
[0013] 若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择评分正相关;
[0014] 重新获取对应于所述待解析二维码的二维码图像,直至识别成功。
[0015] 根据本说明书实施例的第2方面,提供另一种二维码解析方法,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择概率,针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关,所述方法包括:
[0016] 获取对应于待解析二维码的二维码图像;
[0017] 基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0018] 对所述二维码黑白图像进行识别;
[0019] 若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关;
[0020] 重新获取对应于所述待解析二维码的二维码图像,直至识别成功。
[0021] 根据本说明书实施例的第3方面,提供一种二维码解析装置,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分,所述装置包括:
[0022] 获取模块,获取对应于待解析二维码的二维码图像;
[0023] 二值化模块,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0024] 识别模块,对所述二维码黑白图像进行识别;
[0025] 选择评分重置模块,若所述识别模块识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择评分正相关;以及,指令所述获取模块重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块识别成功。
[0026] 根据本说明书实施例的第4方面,提供另一种二维码解析装置,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择概率,针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关,所述装置包括:
[0027] 获取模块,获取对应于待解析二维码的二维码图像;
[0028] 二值化模块,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0029] 识别模块,对所述二维码黑白图像进行识别;
[0030] 选择概率重置模块,若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关;以及,指令所述获取模块重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块识别成功。
[0031] 本说明书实施例所提供的技术方案,在一次二维码解析流程中,总是选出选择评分最大的二值化算法作为目标算法,以对本次抓取的二维码图像进行二值化处理,得到二维码黑白图像,并且,如果随后对所述二维码黑白图像识别失败,则根据所述二维码黑白图像的二值化效果的优劣,重新确定所述目标算法对应的选择评分。需要说明的是,如果所述二维码黑白图像的二值化效果越好,则重新确定的所述目标算法对应的选择评分越高。也就是说,在每次对二维码进行解析时,都尽量选择二值化效果较好的二值化算法对本次抓取的二维码图像进行二值化,从而可以尽量得到易于识别的二维码黑白图像。这也就意味着,提升了每次对二维码解析成功的概率,从而可以用更少的解析次数,解析出二维码中的二进制信息,提升二维码解析成功率。
[0032] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
[0033] 此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

[0034] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0035] 图1是本说明书实施例提供的一种二维码解析方法的流程示意图;
[0036] 图2是本说明书实施例提供的另一种二维码解析方法的流程示意图;
[0037] 图3是本说明书实施例提供的一种二维码解析装置的结构示意图;
[0038] 图4是本说明书实施例提供的另一种二维码解析装置的结构示意图;
[0039] 图5是用于配置本说明书实施例方法的一种设备的结构示意图。

具体实施方式

[0040] 二维码解析成功率,与执行二维码解析流程的次数呈反比。也就是说,针对某个二维码,对该二维码尝试进行解析的次数越多,二维码解析成功率越低。
[0041] 在一次二维码解析流程中,影响二维码解析成功率的因素主要有以下两点:
[0042] 1、选择的二值化算法是否合适。实践中,由于同一个二维码在不同环境下所依附的载体、所处的光照条件等往往存在差异,因此,在不同环境下针对同一二维码抓取的二维码图像会存在显著差别。例如,在光照较强的环境中抓取的二维码图像往往因过曝而泛白,通常适合使用局部自适应二值化算法。这意味着,为了取得较好的二值化效果,得到易于识别的二维码黑白图像,需要考虑二维码所处的环境条件,针对性地选择对在当前环境下抓取的二维码黑白图像处理效果较好的二值化算法。
[0043] 然而,用户在操作扫码设备(如手机)扫描二维码时,扫码设备并不能采集到二维码所处的环境的相关信息,也就无法针对性的选择合适的二值化算法对抓取的二维码图像进行二值化处理。当采用的二值化算法并不适合处理在当前环境下抓取的二维码图像时,得到的二维码黑白图像往往是难以被识别的,如此,就会导致本次二维码解析失败,需要再次尝试进行解析,从而拉低了成功率,降低了解析效率。
[0044] 2、用户对二维码的扫码操作是否得当。实践中,用户当想要操作扫码设备扫描二维码时,不一定能够立即在近距离对准二维码进行扫描,从而不一定能够抓取到质量较高的二维码图像,二值化后得到的二维码黑白图像也往往难以识别。用户往往会不断调整扫码设备的扫描角度、扫描距离,而在用户的调整过程中,扫码设备事实上在不断尝试对扫描到的二维码进行解析,即已经执行了多次解析流程并失败,这就拉低了解析成功率。
[0045] 此外需要说明的是,实践中往往会出现这种情况,即对于一次解析流程,虽然在本次解析流程中选用的二值化算法是合适的(即与二维码所处的环境条件匹配),但是由于用户扫码操作不当,在本次解析流程中抓取的二维码图像质量较差,导致二值化后得到的二维码黑白图像依然难以识别。
[0046] 基于以上,在现有技术中,在一次解析流程中,通常是从预设的至少两个二值化算法中,随机选择一个二值化算法对本次抓取的二维码图像进行处理。如果本次解析失败,就再尝试解析一次,直至解析成功。
[0047] 而在本说明书实施例中,如果一次解析失败,则根据本次解析流程中对二维码图像的二值化效果,对本次解析流程中采用的二值化算法对应的选择评分进行重置,二值化效果越好,选择评分越高。如此,在一次解析流程中,总选择选择评分最高的二值化算法对本次抓取的二维码图像进行处理。这意味着,通过本说明书实施例,解析成功率一般只会受到上述因素2的制约,却很少受到上述因素1的制约。如此,可以显著减少对二维码的解析次数,提升解析成功率。
[0048] 为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
[0049] 以下结合附图,详细说明本说明书各实施例提供的技术方案。
[0050] 图1是本说明书实施例提供的一种二维码解析方法的流程示意图,包括以下步骤:
[0051] S100:获取对应于待解析二维码的二维码图像。
[0052] 本方法的执行主体可以是具有数据处理功能的扫码设备,也可以是能够从扫码设备获取二维码图像的数据处理设备。为了描述的方便,本文将执行主体称为解析设备。
[0053] 在实践中,在对待解析二维码进行扫描后,一般会直接得到待解析二维码对应的二维码彩色图像。随后,解析设备会将该二维码彩色图像首先转换成二维码灰度图像。本文所述的二维码图像一般是指所述二维码灰度图像。
[0054] S102:基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像。
[0055] 在本说明书实施例中,可以预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分。
[0056] 其中,可以根据实际情况,对所述算法集合中每个二值化算法对应的选择评分进行初始化。针对每个二值化算法,该二值化算法对应的初始化的选择评分并不是根据在当前环境条件下该二值化算法的二值化效果确定的。
[0057] 这就意味着,在第一次对所述待解析二维码进行解析时,在步骤S102中,实际上是随机选出的一种二值化算法算法作为目标算法。
[0058] S104:对所述二维码黑白图像进行识别。
[0059] S105:若识别成功,则不再执行图1所示的流程。
[0060] S108:若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分。
[0061] 解析设备如果对步骤S102中得到的二维码黑白图像识别失败,则意味着所述二维码黑白图像的二值化效果不佳,有以下3种可能的原因:
[0062] 1、所述目标算法并不是合适的二值化算法,即与当前环境并不匹配。
[0063] 2、本次抓取的二维码图像质量不高。
[0064] 3、所述目标算法并不是合适的二值化算法,且本次抓取的二维码图像质量不高。
[0065] 不论是上述哪一种可能的原因,解析设备在步骤S108中,可以对所述二维码黑白图像的二值化效果进行量化,得到二值化效果表征值,并根据得到的二值化效果表征值,重新确定对应于所述目标算法的选择评分。其中,所述二值化效果表征值越大,所述二维码黑白图像的二值化效果越好;所述二值化效果表征值越大,重新确定的对应于所述目标算法的选择评分越高。
[0066] 在本说明书实施例中,可以有多种方式确定所述二值化效果表征值。
[0067] 例如,可以根据本次识别开始至识别失败所花费的时长,确定所述二值化效果表征值。对所述二维码黑白图像进行识别时所花费的时长越长,意味着二值化效果越差。
[0068] 例如,可以获取所述二维码黑白图像对应的定位区域识别率,根据所述定位区域识别率,确定二值化效果表征值。其中,所述定位区域准确率是所述二维码黑白图像中,可识别出的定位区域的数量与定位区域的总数量的比值。一般而言,所述定位区域准确率越高,二值化效果就越好,意味着所述二值化效果表征值就越大。
[0069] 例如,可以获取所述二维码黑白图像对应的信息污损率,根据所述信息污损率,确定二值化效果表征值。其中,所述信息污损率是所述二维码黑白图像中,未识别出的信息量与全部信息量的比值。一般而言,所述信息污损率越高,二值化效果就越差,意味着所述二值化效果表征值就越小。
[0070] 当然,也可以根据所述定位区域识别率和所述信息污损率,确定二值化效果表征值。
[0071] 在执行了步骤S108之后,需要重新开始执行步骤S100,以再触发一次解析流程,直到在步骤S104中识别成功(意味着解析成功)。当解析成功时,则停止执行图1所示的方法。需要说明的是,当重新开始执行步骤S100时,通常意味着重新获取对应于所述待解析二维码的一帧二维码图像,重新获取的二维码图像可以与上一次获取的二维码图像相同,也可以不同。
[0072] 值得强调的是,如前所述,在不同的环境条件下,最合适的二值化算法一般不同。因此,可以认为,假设有多种不同的环境条件,各种环境条件分别对应的最优(即最匹配)二值化算法不同。进而可以认为,步骤S108中确定的二值化效果表征值,实际上是在一次解析流程中,结合对当前环境条件与所述目标算法之间的匹配程度进行分析与对本次抓取的二维码图像的质量进行分析所得到的综合量化结果。
[0073] 这也就意味着,在一次解析流程中,虽然会将选择评分最大的二值化算法选出,作为目标算法。但是,选出的目标算法并不一定是与当前环境最匹配的二值化算法。这是因为,二值化算法对应的选择评分不仅受到二值化算法与当前环境的匹配程度的影响,还受到在一次解析流程中抓取的二维码图像的质量的影响。
[0074] 某个二值化算法对应的选择评分最高,只说明该二值化算法与当前环境较为匹配,却无法说明该二值化算法与当前环境最为匹配。
[0075] 因此,在本说明书实施例中,通过迭代执行图1所示的解析流程,可以通过一次次迭代,逐渐弱化抓取的二维码图像质量对步骤S104中识别结果的影响,而逐渐强化二值化算法与当前环境匹配程度对步骤S104中识别结果的影响。从而可以通过较少的迭代次数,解析出二维码中的二进制信息。
[0076] 此外还需要说明的是,在对所述算法集合中每个二值化算法对应的选择评分进行初始化时,可以为每个二值化算法对应的选择评分初始化为一个既不太高,又不太低的分值。例如,假设选择评分采用百分制,那么,可以将每个二值化算法对应的选择评分初始化为50分。
[0077] 相应的,在步骤S108中,如果目标算法的二值化效果较好,则重新确定的对应于目标算法的选择评分通常会高于50分;如果目标算法的二值化效果较差,则重新确定的对应于目标算法的选择评分通常会低于50分。
[0078] 这样做的目的,是为了使得在当前环境条件下,一次解析流程中,二值化效果较好的二值化算法更容易被选出,二值化效果较差的二值化算法更不容易被选出。并且,如果暂时并未发现二值化效果较好的二值化算法,那么就在下一次解析流程中,优先选择还未被选择过的二值化算法进行尝试。
[0079] 进一步地,在当前环境条件下,为了以尽可能少的解析次数,尽快根据每种二值化算法的二值化效果重新确定每种二值化算法对应的选择评分,就需要在前几次解析时,不重复得依次采用每个二值化算法进行二值化处理。
[0080] 因此,在本说明书实施例中,具体可以初始化所述算法集合中每个二值化算法对应的选择评分为,不小于指定分值的分值。在步骤S108中,可以重新确定对应于所述目标算法的选择评分为,小于所述指定分值的分值。
[0081] 或者,在本说明书实施例中,在步骤S102中,具体可以判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;否则,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法。
[0082] 另外,在步骤S108中,若所述二值化效果表征值小于预设值,则从所述算法集合中删除所述目标算法。也就是说,在一次解析流程中,如果在本次解析时选用的二值化算法的二值化效果太差,那么就直接该二值化算法排除出算法集合,不再参与后续若干解析流程中的评选。如此,可以进一步减少解析次数,提升解析成功率。
[0083] 通过图1所示的方法,在每次对二维码进行解析时,都可以尽量选择二值化效果最好的二值化算法对本次抓取的二维码图像进行二值化,从而可以尽量得到易于识别的二维码黑白图像。这也就意味着,提升了每次对二维码解析成功的概率,从而可以用更少的解析次数,解析出二维码中的二进制信息,提升二维码解析成功率。
[0084] 图2是本说明书实施例提供的另一种二维码解析方法的流程示意图,包括如下步骤:
[0085] S200:获取对应于待解析二维码的二维码图像。
[0086] S202:基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像。
[0087] S204:对所述二维码黑白图像进行识别。
[0088] S205:若识别成功,则不再执行图2所示的流程。
[0089] S208:若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率。
[0090] 其中,所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关。
[0091] 图2所示的方法与图1所示的方法基于相同的发明构思,二者的区别在于,在图2所示的方法中,以每个二值化算法对应的选择概率为一次解析流程中的二值化算法的评选依据。针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关。
[0092] 需要说明的是,在一次解析流程中,哪怕某个二值化算法对应的选择概率最高,也不一定会选出该二值化算法作为目标算法。
[0093] 在图2所示的方法中,类似地,也需要预先针对算法集合中的每个二值化算法,初始化该二值化算法对应的选择概率。
[0094] 在图2所示的方法中,在当前环境条件下,为了以尽可能少的解析次数,尽快根据每种二值化算法的二值化效果重新确定每种二值化算法对应的选择概率,就需要在前几次解析时,尽可能不重复得依次采用每个二值化算法进行二值化处理。
[0095] 为此,可以初始化所述算法集合中每个二值化算法对应的选择概率为,不小于指定概率值的概率值。相应的,在步骤S108中,重新确定对应于所述目标算法的选择概率为,小于所述指定概率值的概率值。
[0096] 或者,可以在步骤S102中,判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;否则,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法。
[0097] 基于图1所示的二维码解析方法,本说明书实施例还对应提供了一种二维码解析装置,如图3所示,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择评分,所述装置包括:
[0098] 获取模块301,获取对应于待解析二维码的二维码图像;
[0099] 二值化模块302,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0100] 识别模块303,对所述二维码黑白图像进行识别;
[0101] 选择评分重置模块304,若所述识别模块识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择评分;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择评分正相关;以及,指令所述获取模块301重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块303识别成功。
[0102] 初始化所述算法集合中每个二值化算法对应的选择评分,具体包括:
[0103] 初始化所述算法集合中每个二值化算法对应的选择评分为,不小于指定分值的分值;
[0104] 所述选择评分重置模块304,重新确定对应于所述目标算法的选择评分为,小于所述指定分值的分值。
[0105] 所述二值化模块302,判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;否则,基于所述算法集合中每个二值化算法对应的选择评分,从所述算法集合中选出一个选择评分最大的二值化算法。
[0106] 所述选择评分重置模块304,获取所述二维码黑白图像对应的定位区域识别率和/或信息污损率;根据所述定位区域识别率和/或所述信息污损率,确定二值化效果表征值;所述定位区域准确率与所述二值化效果表征值正相关,所述信息污损率与所述二值化效果表征值负相关;
[0107] 其中,所述定位区域准确率是所述二维码黑白图像中,可识别出的定位区域的数量与定位区域的总数量的比值;信息污损率是所述二维码黑白图像中,未识别出的信息量与全部信息量的比值。
[0108] 所述装置还包括:
[0109] 删除模块305,若所述二值化效果表征值小于预设值,则从所述算法集合中删除所述目标算法。
[0110] 基于图2所示的二维码解析方法,本说明书实施例还对应提供了一种二维码解析装置,如图4所示,预先设置包含至少两个二值化算法的算法集合,并初始化所述算法集合中每个二值化算法对应的选择概率,针对每个二值化算法,该二值化算法对应选择概率与该二值化算法被选出的可能性正相关,所述装置包括:
[0111] 获取模块401,获取对应于待解析二维码的二维码图像;
[0112] 二值化模块402,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法,作为目标算法,并使用所述目标算法,对所述二维码图像进行二值化处理,得到二维码黑白图像;
[0113] 识别模块403,对所述二维码黑白图像进行识别;
[0114] 选择概率重置模块404,若识别失败,则确定二值化效果表征值,并根据所述二值化效果表征值,重新确定对应于所述目标算法的选择概率;所述二值化效果表征值,与所述二维码黑白图像的二值化效果正相关,且与重新确定的对应于所述目标算法的选择概率正相关;以及,指令所述获取模块401重新获取对应于所述待解析二维码的二维码图像,直至所述识别模块403识别成功。
[0115] 初始化所述算法集合中每个二值化算法对应的选择概率,具体包括:
[0116] 初始化所述算法集合中每个二值化算法对应的选择概率为,不小于指定概率值的概率值;
[0117] 所述选择概率重置模块404,重新确定对应于所述目标算法的选择概率为,小于所述指定概率值的概率值。
[0118] 所述二值化模块402,判断所述算法集合中是否存在至少一个未被选出过的二值化算法;若是,则从未被选出过的二值化算法中选出一个二值化算法;否则,基于所述算法集合中每个二值化算法对应的选择概率,从所述算法集合中选出一个二值化算法。
[0119] 本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1和图2所示的二维码解析方法。
[0120] 图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0121] 处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0122] 存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0123] 输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0124] 通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
[0125] 总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0126] 需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0127] 本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1和图2所示的二维码解析方法。
[0128] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
[0129] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
[0130] 上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0131] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0132] 以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。