一种图形码的解码方法及客户端与流程

文档序号:16211687发布日期:2018-12-08 07:49阅读:307来源:国知局
一种图形码的解码方法及客户端与流程

本申请涉及互联网技术领域,特别涉及一种图形码的解码方法及客户端。

背景技术

随着编码技术的不断发展,目前已经能够将丰富的信息转换为图形码。该图形码例如可以包括条形码、一维码、二维码等。用户通过具备扫码功能的终端设备或者软件,可以对图形码进行解码,从而识别出图形码中包含的信息。

图形码的编码方式多种多样。以二维码为例,可以具备pdf417、qrcode、code49、code16k、datamatrix等多种编码方式。那么在对图形码进行解码时,也需要使用对应的解码方式才能成功解析出图形码中的信息。目前,在对图形码解码的过程中,通常会预先确定多个可能会使用到的解码方式,然后针对同一帧图像,会依次使用这些解码方式尝试解码,一旦解码成功,便可以得到解码信息。然而,如果当前帧图像中不存在图形码,或者图形码不够清晰,会在当前帧图像中耗费较多的时间去逐一尝试各种解码方式,从而导致扫码过程比较缓慢。



技术实现要素:

本申请实施方式的目的是提供一种图形码的解码方式,能够提高图形码的解码速度。

为实现上述目的,本申请实施方式提供一种图形码的解码方法,提供有解码信息,所述解码信息中包括解码方式以及所述解码方式关联的间隔信息,所述间隔信息用于限定关联的解码方式在解码过程中使用的频率;所述方法包括:获取当前帧图像,并确定所述当前帧图像对应的当前帧信息;根据所述间隔信息和所述当前帧信息,在所述解码信息的解码方式中确定所述当前帧图像适配的目标解码方式;按照所述目标解码方式对所述当前帧图像中包含的图形码进行解码。

为实现上述目的,本申请实施方式还提供一种客户端,所述客户端包括:存储单元,用于存储解码信息,所述解码信息中包括解码方式以及所述解码方式关联的间隔信息,所述间隔信息用于限定关联的解码方式在解码过程中使用的频率;当前帧信息确定单元,用于获取当前帧图像,并确定所述当前帧图像的当前帧信息;目标解码方式确定单元,用于根据所述间隔信息和所述当前帧信息,在所述解码信息的解码方式中确定所述当前帧图像适配的目标解码方式;解码单元,用于按照所述目标解码方式对所述当前帧图像中包含的图形码进行解码。

为实现上述目的,本申请实施方式还提供一种客户端,所述客户端包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。

由上可见,本申请提供的技术方案,可以预先在解码信息中为各个解码方式设置关联的间隔信息。该间隔信息例如可以是间隔帧数或者间隔时间。其中,间隔帧数可以用于限定某个解码方式仅针对连续的多帧图像中的一帧图像尝试解码。间隔时间可以用于限定某个解码方式仅在一段时间内的一个时间节点尝试解码。这样,当获取到当前帧图像之后,可以确定该图像对应的当前帧信息。该当前帧信息可以是当前帧图像的当前帧数,或者是获取该当前帧图像时的当前时间节点。这样,通过比对当前帧信息表征的帧数/时间节点和解码信息中的间隔信息表征的间隔帧数/间隔时间节点,从而确定适配于当前帧图像的一个或者多个目标解码方式。然后,可以通过确定的目标解码方式尝试对当前帧图像进行解码。由上可见,在本申请提供的技术方案中,并不会针对每一帧图像均尝试各种解码方式,而是按照间隔信息,有选择地选用一部分解码方式尝试解码,从而可以减少尝试解码的时间,进而提高扫码的速度。

附图说明

为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施方式中图形码的解码方法流程图;

图2为本申请实施方式中间隔帧数的示意图;

图3为本申请实施方式中客户端的功能模块示意图;

图4为本申请实施方式中客户端的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。

本申请提供一种图形码的解码方法,所述方法可以应用于具备扫码功能的终端设备或者软件中。上述的终端设备例如可以是智能手机、平板电脑、个人数字助手、智能可穿戴设备等电子设备。

在本实施方式中,可以针对扫码过程预先设置解码信息,所述解码信息中可以包括解码方式以及所述解码方式关联的间隔信息。其中,所述解码方式可以与图形码的编码方式相对应。例如,常用的图形码的编码方式为pdf417、qrcode、code49、code16k以及datamatrix,那么上述例举的各个编码方式对应的解码方式便可以是解码信息中包含的解码方式。

由于在实际应用时,不同的解码方式使用的频率往往不同。例如,对于二维码而言,应用比较广泛的解码方式可以为qrcode对应的解码方式,而datamatrix对应的解码方式应用的范围可能较小。鉴于此,在本实施方式中,可以针对解码方式在实际应用中出现的频率,来设置各个解码方式关联的间隔信息。与解码方式关联的间隔信息,可以用于限定该解码方式在解码过程中被使用的频率。在实际应用中,该间隔信息可以是间隔帧数或者间隔时间。其中,间隔帧数可以用于限定解码方式仅针对连续的多帧图像中的一帧图像尝试解码。间隔时间可以用于限定解码方式仅在一段时间内的一个时间节点尝试解码。举例来说,若所述间隔帧数为5,则表示与该间隔帧数关联的解码方式会针对每5帧图像中的一帧图像尝试解码。又例如,若所述间隔时间为25毫秒,则表示与该间隔时间关联的解码方式在扫码过程中每隔25毫秒会尝试一次解码。由此可见,若所述间隔信息表征的数值越大,则表示关联的解码方式被使用的频率越低;反之,若所述间隔信息表征的数值越小,则表示关联的解码方式被使用的频率越高。

在本实施方式中,当设置了解码方式以及关联的间隔信息之后,从而可以生成解码过程中所需的解码信息。该解码信息可以存储于服务器中。该服务器可以是提供扫码服务的软件对应的业务服务器。这样,终端设备可以从服务器中获取该解码信息,后续可以按照该解码信息中设置的解码方式以及间隔信息进行解码。此外,该解码信息还可以直接集成于提供扫码服务的软件中。例如,该解码信息可以作为软件的一部分,压缩于软件的安装包中。当终端设备安装该软件时,便可以从安装包中解压出解码信息。这样,终端设备便可以将解码信息存储于安装包指定的路径下,后续可以按照该解码信息中设置的解码方式以及间隔信息进行解码。

请参阅图1,所述图形码的解码方法可以包括以下步骤。

s1:获取当前帧图像,并确定所述当前帧图像对应的当前帧信息。

在本实施方式中,当需要进行扫码操作时,可以开启终端设备上的摄像头,然后通过该摄像头拍摄包含图形码的图像。在实际应用中,摄像头在开启过程中,可以按照固定的时间间隔,持续采集各帧图像。例如,摄像头可以每秒钟采集25帧图像。

在本实施方式中,针对摄像头采集的当前帧图像,可以识别其中包含的图形码,并将图形码携带的信息解码出来。具体地,在获取到当前帧图像之后,可以确定该当前帧图像对应的当前帧信息。

在实际应用中,该当前帧信息的类型可以与解码信息中间隔信息的类型保持一致。例如,解码信息中的间隔信息为间隔帧数。那么,在确定所述当前帧图像对应的当前帧信息时,可以记录所述当前帧图像的当前帧数,并将记录的所述当前帧数作为所述当前帧信息。其中,所述当前帧数可以是针对本次扫码过程统计的。在本次扫码中,摄像头采集到的第一帧图像的帧数可以为1,后续图像的帧数可以逐个递加。此外,如果解码信息中的间隔信息为间隔时间,那么在确定所述当前帧图像对应的当前帧信息时,可以记录获取所述当前帧图像时的当前时间节点,并将所述当前时间节点作为所述当前帧信息。其中,所述当前时间节点可以是按照本次扫码的时间来记录。具体地,本次扫码刚开始时,时间可以从0开始统计,随着扫码过程的不断推进,统计的时间也可以逐渐累加。例如,所述当前帧图像是在本次扫码过程的第50毫秒获取的,那么所述当前时间节点便可以是50毫秒。此外,所述当前时间节点还可以按照终端设备实际的系统时间来记录。例如,获取所述当前帧图像时,终端设备的系统时间为17点25分20秒,那么所述当前时间节点便可以是17点25分20秒。当然,在实际应用中,系统时间的精度可以精确到毫秒级别,从而可以区分相邻的多帧图像的时间节点。

s3:根据所述间隔信息和所述当前帧信息,在所述解码信息的解码方式中确定所述当前帧图像适配的目标解码方式。

在本实施方式中,在获取到所述当前帧信息之后,可以将所述当前帧信息与所述间隔信息进行匹配,以确定目前应该采用哪些解码方式对当前帧图像尝试解码。具体地,若所述间隔信息为间隔帧数,那么可以确定所述间隔帧数对应的帧数序列,所述帧数序列中包括至少一个帧数。该帧数序列中包含的帧数,可以是所述间隔帧数的倍数。例如,所述间隔帧数为5,那么帧数序列中包含的帧数可以是5、10、15等等。当然,在实际应用中,由间隔帧数确定帧数序列可以有多种方式,而且帧数序列中的帧数也可以不是所述间隔帧数的倍数。例如,可以是所述间隔帧数的倍数加上一个固定数值。本申请对基于间隔帧数构建帧数序列的方式并不做限定。

在本实施方式中,当终端设备获取到与所述帧数序列中包含的帧数相符的图像时,便可以调用与该间隔帧数关联的解码方式对获取的图像尝试解码。那么,在基于所述间隔帧数确定出帧数序列之后,可以判断所述当前帧数是否存在于所述帧数序列中,若存在,则可以将所述间隔帧数关联的解码方式确定为所述当前帧图像适配的目标解码方式。后续可以利用该目标解码方式尝试对当前帧图像进行解码。

在实际应用中,针对不同的解码方式,均可以关联对应的间隔帧数。请参阅图2,在一个应用示例中,假设当前有三种解码方式,这三种解码方式关联的间隔帧数分别为1、2以及4。图2中的矩形框为各帧图像,填充阴影的矩形框则可以表示需要调用对应的解码方式尝试解码的图像。如图2所示,针对第一种解码方式,每一帧图像均需要调用该解码方式尝试解码;针对第二种解码方式,每2帧图像中,需要有一帧图像调用该解码方式尝试解码;针对第三种解码方式,每4帧图像中,需要有一帧图像调用该解码方式尝试解码。这样,在获取的各帧图像中,有些图像可能需要利用多种解码方式尝试解码,而有些图像则可能只需要采用一种解码方式尝试解码。

在本实施方式中,若所述间隔信息为间隔时间,那么也可以确定所述间隔时间对应的时间序列,所述时间序列中包括至少一个时间节点。例如,所述间隔时间为25毫秒,那么所述时间序列中的时间节点可以是25毫秒、50毫秒、75毫秒等等。其中,若在所述时间序列中的时间节点处获取了图像,则可以调用所述间隔时间关联的解码方式对获取的图像尝试解码。这样,在确定所述间隔时间对应的时间序列后,可以判断所述当前时间节点是否存在于所述时间序列中,若存在,则可以将所述间隔时间关联的解码方式确定为所述当前帧图像适配的目标解码方式。

s5:按照所述目标解码方式对所述当前帧图像中包含的图形码进行解码。

在本实施方式中,当确定出所述当前帧图像适配的目标解码方式后,便可以按照所述目标解码方式尝试对当前帧图像中包含的图形码进行解码。若解码成功,则可以得到图形码中包含的信息,从而可以结束本次的扫码过程。若解码失败,则可以停止对所述当前帧图像中包含的图形码进行解码,并获取下一帧图像。针对下一帧图像,同样可以按照步骤s1和s3中的描述,确定与该下一帧图像适配的解码方式,从而利用适配的解码方式尝试对下一帧图像进行解码。如果针对下一帧图像依然解码失败,则可以继续获取后续的图像,直至解码成功或者解码超时为止。

在一个实施方式中,所述当前帧图像可能会与至少两个目标解码方式相适配。例如,在图2中,第2帧图像与第一种解码方式以及第二种解码方式相适配,第4帧图像则与三种解码方式均适配。在这种情况下,在按照所述目标解码方式对所述当前帧图像中包含的图形码进行解码时,可以在所述至少两个目标解码方式中确定当前的目标解码方式。具体地,可以随机在所述至少两个目标解码方式中确定当前的目标解码方式,也可以将间隔信息限定的被使用频率最高的目标解码方式作为当前的目标解码方式。然后,可以按照所述当前的目标解码方式对所述当前帧图像中包含的图形码进行解码。若解码成功,则可以得到图形码中包含的信息,从而可以直接停止本次的解码过程。如果当前的目标解码方式解码失败,则可以在所述至少两个目标解码方式中确定与所述当前的目标解码方式不同的目标解码方式,并按照确定的所述目标解码方式对所述当前帧图像中包含的图形码进行解码。当然,在实际应用中,为了不重复使用同一种解码方式对当前帧多次尝试解码,在当前的目标解码方式解码失败后,在后续选择新的目标解码方式时,可以不再选取已经解码失败的目标解码方式。由此可见,当存在多个适配的目标解码方式时,可以利用这多个目标解码方式依次尝试解码,一旦解码成功,便可以停止本次的解码过程;若当前的目标解码方式解码失败,则可以换另一个目标解码方式尝试解码。若适配的多个目标解码方式均解码失败,则可以放弃对当前帧图像进行解码的过程,进而获取下一帧图像,并针对下一帧图像利用步骤s1至s5中描述的方式重新解码。

在一个实施方式中,应用于扫码过程中的各个解码方式可以预先设定优先级。其中,该优先级可以按照解码方式的使用率来设定。使用率越高,解码方式的优先级便可以越高。具体地,可以统计指定数量的图形码中,各个解码方式出现的次数,然后按照统计的次数来设置各个解码方式的优先级。此外,还可以根据设定的间隔信息来设定解码方式的优先级。间隔信息限定的数值越小,对应的优先级可以越高。

在本实施方式中,当所述当前帧图像与至少两个目标解码方式相适配时,可以按照预设优先级对所述至少两个目标解码方式排序。在实际应用中,为了尽快完成解码过程,可以按照优先级从高到低的顺序对多个目标解码方式进行排序。然后,可以按照排序结果依次对所述当前帧图像中包含的图形码进行解码。具体地,可以优先采用优先级较高的目标解码方式尝试解码。若解码成功,则可以得到图形码中包含的信息,便可以停止本次的解码过程。若当前选用的目标解码方式解码失败,则可以选用优先级低一些的目标解码方式尝试解码。若按照排序结果均解码失败,则可以停止针对所述当前帧图像的解码过程,进而获取下一帧图像,并针对下一帧图像利用步骤s1至s5中描述的方式重新解码。

由上可见,按照本申请提供的技术方案,并非针对每一帧图像都需要利用全部的解码方式尝试解码,而是根据解码方式的使用率,为解码方式设定间隔信息。其中,使用率越高的解码方式,间隔信息限定的数值可以越小。例如,针对qrcode的解码方式,可以在每一帧图像中均尝试解码。而针对datamatrix的解码方式,可以在每10帧图像中的一帧图像上尝试解码。这样处理的目的在于,如果当前帧图像中不包含图形码,或者由于拍摄角度问题,所有的解码方式都不能成功解码,那么由于当前帧图像适配的目标解码方式可能只有一种或者少量的几种,那么会很快停止针对当前帧图像的解码过程,并且可以进入下一帧图像的解码过程,从而可以避免在一帧图像中浪费较多时间,进而提高了整个扫码过程的速度。

请参阅图3,本申请还提供一种客户端,所述客户端包括:

存储单元,用于存储解码信息,所述解码信息中包括解码方式以及所述解码方式关联的间隔信息,所述间隔信息用于限定关联的解码方式在解码过程中使用的频率;

当前帧信息确定单元,用于获取当前帧图像,并确定所述当前帧图像的当前帧信息;

目标解码方式确定单元,用于根据所述间隔信息和所述当前帧信息,在所述解码信息的解码方式中确定所述当前帧图像适配的目标解码方式;

解码单元,用于按照所述目标解码方式对所述当前帧图像中包含的图形码进行解码。

在一个实施方式中,所述间隔信息包含间隔帧数;相应地,所述当前帧信息确定单元包括:

帧数记录模块,用于记录所述当前帧图像的当前帧数,并将记录的所述当前帧数作为所述当前帧信息。

在一个实施方式中,所述目标解码方式确定单元包括:

帧数序列确定模块,用于确定所述间隔帧数对应的帧数序列,所述帧数序列中包括至少一个帧数;

帧数匹配模块,用于判断所述当前帧数是否存在于所述帧数序列中,若存在,将所述间隔帧数关联的解码方式确定为所述当前帧图像适配的目标解码方式。

在一个实施方式中,所述间隔信息包含间隔时间;相应地,所述当前帧信息确定单元包括:

时间节点记录模块,用于记录获取所述当前帧图像时的当前时间节点,并将所述当前时间节点作为所述当前帧信息。

在一个实施方式中,所述目标解码方式确定单元包括:

时间序列确定模块,用于确定所述间隔时间对应的时间序列,所述时间序列中包括至少一个时间节点;

时间节点匹配模块,用于判断所述当前时间节点是否存在于所述时间序列中,若存在,将所述间隔时间关联的解码方式确定为所述当前帧图像适配的目标解码方式。

在一个实施方式中,所述当前帧图像与至少两个目标解码方式相适配,并且所述目标解码方式具备预设优先级;相应地,所述解码单元包括:

排序模块,用于按照预设优先级对所述至少两个目标解码方式排序,并按照排序结果依次对所述当前帧图像中包含的图形码进行解码;

解码判定模块,用于在解码成功的情况下,停止本次的解码过程;在按照排序结果均解码失败的情况下,停止针对所述当前帧图像的解码过程,并获取下一帧图像。

请参阅图4,本申请还提供一种客户端,所述客户端包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的图形码的解码方法。

在本实施方式中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如ram、rom等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置,如cd或dvd。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。

在本实施方式中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。

本说明书实施方式提供的客户端,其存储器和处理器实现的具体功能,可以与本说明书中的前述实施方式相对照解释,并能够达到前述实施方式的技术效果,这里便不再赘述。

由上可见,本申请提供的技术方案,可以预先在解码信息中为各个解码方式设置关联的间隔信息。该间隔信息例如可以是间隔帧数或者间隔时间。其中,间隔帧数可以用于限定某个解码方式仅针对连续的多帧图像中的一帧图像尝试解码。间隔时间可以用于限定某个解码方式仅在一段时间内的一个时间节点尝试解码。这样,当获取到当前帧图像之后,可以确定该图像对应的当前帧信息。该当前帧信息可以是当前帧图像的当前帧数,或者是获取该当前帧图像时的当前时间节点。这样,通过比对当前帧信息表征的帧数/时间节点和解码信息中的间隔信息表征的间隔帧数/间隔时间节点,从而确定适配于当前帧图像的一个或者多个目标解码方式。然后,可以通过确定的目标解码方式尝试对当前帧图像进行解码。由上可见,在本申请提供的技术方案中,并不会针对每一帧图像均尝试各种解码方式,而是按照间隔信息,有选择地选用一部分解码方式尝试解码,从而可以减少尝试解码的时间,进而提高扫码的速度。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现客户端以外,完全可以通过将方法步骤进行逻辑编程来使得客户端以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种客户端可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对客户端的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1