一种二维码识别方法、二维码识别装置及电子设备
文献发布时间:2023-06-19 16:04:54
技术领域
本申请属于二维码处理技术领域,尤其涉及一种二维码识别方法、二维码识别装置、电子设备及计算机可读存储介质。
背景技术
现如今,二维码已在生产生活中得到了非常广泛的应用。在实际场景中,二维码污损的情况常有发生。虽然二维码本身有纠错机制,可以容忍一定程度上的编码区域的污损,但若是二维码的定位符被污损,则会因无法识别到准确的定位符而对二维码识别算法提出挑战,而这是二维码的纠错机制所无法解决的问题。因而,如何在二维码的定位符被污损的情况下准确识别二维码,成为当前亟待解决的问题。
发明内容
本申请提供了一种二维码识别方法、二维码识别装置、电子设备及计算机可读存储介质,可在二维码的定位符被污损的情况下,提升对该定位符的识别准确率,使得该二维码的识别成功率也能够有所增加。
第一方面,本申请提供了一种二维码识别方法,包括:
根据预设的颜色特征比例,在待识别二维码的图像中识别出真实定位符;
若识别出的上述真实定位符的数量不完全,则确定上述待识别二维码在上述图像中的几何特征;
根据上述几何特征,在上述图像中查找出至少两个疑似定位符;
在上述至少两个疑似定位符中确定剩余的真实定位符;
基于所有上述真实定位符对上述待识别二维码进行识别。
第二方面,本申请提供了一种二维码识别装置,包括:
第一识别模块,用于根据预设的颜色特征比例,在待识别二维码的图像中识别出真实定位符;
第一确定模块,用于若识别出的上述真实定位符的数量不完全,则确定上述待识别二维码在上述图像中的几何特征;
查找模块,用于根据上述几何特征,在上述图像中查找出至少两个疑似定位符;
第二确定模块,用于在上述至少两个疑似定位符中确定剩余的真实定位符;
第二识别模块,用于基于所有上述真实定位符对上述待识别二维码进行识别。
第三方面,本申请提供了一种电子设备,上述电子设备包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上述第一方面的方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如上述第一方面的方法的步骤。
第五方面,本申请提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,上述计算机程序被一个或多个处理器执行时实现如上述第一方面的方法的步骤。
本申请与现有技术相比存在的有益效果是:电子设备首先根据预设的颜色特征比例,在待识别二维码的图像中识别出真实定位符,若识别出的真实定位符的数量不完全,则确定待识别二维码在图像中的几何特征,并根据几何特征,在图像中查找出至少两个疑似定位符,最后在至少两个疑似定位符中确定剩余的真实定位符,并根据已得到的所有真实定位符对待识别二维码进行识别。上述过程中,电子设备在二维码的定位符被污损导致识别到的真实定位符数量不足的情况下,充分考虑到了二维码的几何特征,并根据该几何特征来推理剩余的真实定位符。由于几何推理对电子设备的运算压力较小,使得电子设备在短时间内即可识别出所有的真实定位符,由此保障了电子设备对定位符的识别准确率,且一定程度上提升了电子设备对该二维码的识别成功率。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的二维码识别方法的实现流程示意图;
图2是本申请实施例提供的被污损的定位符的示例图;
图3是本申请实施例提供的最远点的查找过程的示例图;
图4是本申请实施例提供的在八个指定方向上所查找到的最远点的示例图;
图5是本申请实施例提供的待识别二维码在预处理后的效果示例图;
图6是本申请实施例提供的边界追踪的示例图;
图7是本申请实施例提供的疑似中心点的确定过程的示例图;
图8是本申请实施例提供的疑似中心点的确定过程的另一示例图;
图9是本申请实施例提供的疑似中心点的确定过程的又一示例图;
图10是本申请实施例提供的发生定位符误识别情况的示例图;
图11是本申请实施例提供的二维码识别装置的结构框图;
图12是本申请实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所提出的技术方案,下面通过具体实施例来进行说明。
本申请实施例所提供的二维码识别方法应用于电子设备。仅作为示例,该电子设备可以是具备拍摄功能的电子设备,例如智能手机、平板电脑或笔记本。可以理解,对于这些电子设备来说,其在打开摄像头启用二维码扫描功能时,即可执行本申请实施例所提出的二维码识别方法。当然,该电子设备也可以是不具备拍摄功能的电子设备,例如台式电脑或服务器等。可以理解,对于这些电子设备来说,其可在接收到其它设备所发送的待识别二维码的图像后,再基于该待识别二维码的图像执行本申请实施例所提出的二维码识别方法。也即,本申请实施例中,不对该二维码识别方法的执行主体作出限定。
请参阅图1,该二维码识别方法的实现流程详述如下:
步骤101,根据预设的颜色特征比例,在待识别二维码的图像中识别出真实定位符。
本申请实施例所关注的待识别二维码具体指的是矩阵式二维码(QR二维码)。对于矩阵式二维码来说,其左上角、左下角及右上角分别有一定位符,该定位符严格遵循了如下颜色特征比例:在横向、纵向及斜向45度方向的黑白宽度之比,均满足1:1:3:1:1。基于此,可根据该颜色特征比例在待识别二维码的图像中进行搜索,以识别出真实定位符。
步骤102,若识别出的真实定位符的数量不完全,则确定待识别二维码在图像中的几何特征。
由前文描述可知,正常来说,待识别二维码中应有三个定位符。但考虑到实际应用场景下,可能出现定位符被污损的情况,导致定位符因污损而无法满足该颜色特征比例,进而导致步骤101中未能将被污损的定位符识别出来。也即,可能出现所识别出的真实定位符的数量不足三个的情况。在这种情况下,可找到待识别二维码在图像中的几何特征,该几何特征包括:真实定位符的中心点;以及,待识别二维码的顶点或者真实定位符的中心黑块的顶点。
需要注意的是,本申请实施例主要着重于有识别出真实定位符,但该真实定位符的数量不足的情况。也即,如果通过步骤101识别出了一个真实定位符或两个真实定位符,则可通过本申请实施例所提出的二维码识别方法找到剩余的真实定位符;如果通过步骤101未识别到任何真实定位符,则无法通过该二维码识别方法找到剩余的真实定位符。
当然,如果通过步骤101,电子设备就已识别出了待识别二维码的所有真实定位符(共三个真实定位符),即可直接执行步骤105。
请参阅图2,图2给出了多方向被污损的定位符的示例。
步骤103,根据几何特征,在图像中查找出至少两个疑似定位符。
待识别二维码在图像中的几何特征实际上一定程度的表达了已识别到的真实定位符在该图像中的位置。由前文描述可知,对于矩阵式二维码来说,其定位符在矩阵式二维码中的位置是固定的,因而,可根据该几何特征找到剩余的真实定位符在图像中所可能存在的位置,并以此为基础划定对应的定位符区域,将各个定位符区域所表达的图案作为疑似定位符。
步骤104,在至少两个疑似定位符中确定剩余的真实定位符。
正常情况下,所查找到的至少两个疑似定位符通常包含有剩余的真实定位符。基于此,电子设备可通过除颜色特征比例之外的其它方式对各个疑似定位符进行验证,以确定出剩余的真实定位符。仅作为示例,该其它方式可以是模板匹配的方式;或者,该其它方式也可以是基于深度学习模型进行预测(分类)的方式,此处不对该其它方式作出限定。
以模板匹配的方式为例,电子设备可这样确定出剩余的真实定位符:
计算匹配模板与每个疑似定位符的模板匹配度;按照模板匹配度由高至低的顺序,确定剩余的真实定位符,具体为:如果通过步骤101识别出了一个真实定位符,则将模板匹配度最高的前两个疑似定位符均确定为真实定位符,由此找到三个真实定位符,至此,真实定位符已识别完全;如果通过步骤101识别出了两个真实定位符,则将模板匹配度最高的唯一一个疑似定位符确定为真实定位符,由此找到三个真实定位符,至此,真实定位符已识别完全。
可以理解,匹配模板可以是预设的定位符图案;或者,匹配模板可以是通过步骤101已识别出的真实定位符,此处不对该匹配模板的获取方式作出限定。
可以理解,考虑到所确定的疑似定位符的位置可能存在偏差,因而在计算匹配模板与每个疑似定位符的模板匹配度时,可采用菱形搜索的方法,以对可能存在的位置偏差情况进行补偿,此处不对该菱形搜索的方式作赘述。
步骤105,基于所有真实定位符对待识别二维码进行识别。
前文已描述了,一个二维码共有三个定位符。可以理解,这里的“所有真实定位符”的识别方式有多种:既包括直接通过步骤101识别出三个真实定位符的情况,也包括通过步骤101-104才识别出三个真实定位符的情况。也即,只要电子设备已经能够找到待识别二维码中的所有真实定位符(找到数量完全的真实定位符),该步骤即可被触发执行。根据当前已找到的所有真实定位符(共三个真实定位符),电子设备可对待识别二维码进行识别,以获知该待识别二维码所携带的信息。
在一些实施例中,针对识别出一个真实定位符的情况,电子设备所确定出的几何特征可以为:真实定位符的中心点及待识别二维码的顶点。针对识别出两个真实定位符的情况,电子设备所确定出的几何特征可以为:每个真实定位符的中心点及每个真实定位符的中心黑块的顶点。
其中,电子设备在识别出真实定位符时,即可确定出该真实定位符的中心点的坐标。也即,电子设备在识别出真实定位符时,该真实定位符的中心点对该电子设备来说即为已知。
其中,由于待识别二维码及中心黑块实际均为正方形,因而不论是待识别二维码的顶点,还是真实定位符的中心黑块的顶点,均可通过如下过程获得:
A1、查找待确定顶点的图形的边界分别在至少四个指定方向上的最远点;
可以理解,在识别出一个真实定位符的情况下,该待确定顶点的图形指的是待识别二维码;在识别出两个真实定位符的情况下,该待确定顶点的图形指的是任一个已识别出的真实定位符的中心黑块。也即,此处是为了便于说明,才引出了待确定顶点的图形的概念,实际根据不同的应用场景,指代的是待识别二维码或真实定位符的中心黑块。
电子设备可先对待确定顶点的图形进行边界追踪,然后在追踪到的边界上,分别查找出至少四个指定方向上的最远点。仅作为示例,该指定方向可以为竖直向上(简称为上)、竖直向下(简称为下)、水平向左(简称为左)及水平向右(简称为右)这四个方向。考虑到待识别二维码在图像中可能是倾斜的,因而该指定方向可以增设至上、下、左、右、相对水平向左的方向往上倾斜45°角的方向(简称为左上)、相对水平向左的方向往下倾斜45°角的方向(简称为左下)、相对水平向右的方向往上倾斜45°角的方向(简称为右上)及相对水平向右的方向往下倾斜45°角的方向(简称为右下)这八个方向。可以理解,上述描述中的水平,指的是与图像坐标系的x轴平行的方向;上述描述中的竖直,指的是与图像坐标系的y轴平行的方向;其中,图像坐标系的原点为图像的左上顶点。
具体地,可通过边界上各点在图像坐标系中的坐标来确定不同方向上的最远点,其确定方式详述如下:
对于上方向:将边界上纵坐标值最小的点确定为该方向的最远点。
对于下方向:将边界上纵坐标值最大的点确定为该方向的最远点。
对于左方向:将边界上横坐标值最小的点确定为该方向的最远点。
对于右方向:将边界上横坐标值最大的点确定为该方向的最远点。
对于左上方向:将边界上纵坐标值与横坐标值之和最小的点确定为该方向的最远点。
对于左下方向:将边界上纵坐标值与横坐标值之差(也即y-x)最大的点确定为该方向的最远点。
对于右上方向:将边界上横坐标值与纵坐标值之差(也即x-y)最大的点确定为该方向的最远点。
对于右下方向:将边界上纵坐标值与横坐标值之和最大的点确定为该方向的最远点。
在一些应用场景下,可能在某方向上,通过上述确定方式找到了三个以上的最远点。为降低后续数据处理的复杂度,可对该方向上的三个以上的最远点进行过滤,具体为:
通常来说,该三个以上的最远点必然处于同一直线上。基于此,将该三个以上的最远点相连后,可得到一条线段。仅将该线段的端点保留为该方向最终的最远点,其余的点舍弃,则该方向最终仅保留两个最远点。
例如,通过前文所描述的最远点的确定方式,在左上方向发现P1、P2、P3及P4这四个点均满足纵坐标值与横坐标值之和最小,则这四个点必然位于y=-x+k这一直线上,k为纵坐标值与横坐标值之和的最小值。将P1、P2、P3及P4相连,得到一条线段,其中,P1为线段的端点,P4为该线段的另一端点,P2及P3均为该线段上非端点的某一点。则电子设备可舍弃P2及P3,仅保留P1及P4作为左上方向的最远点。
可以理解,若在某方向上,通过前文所描述的最远点的确定方式,只找到了一个或两个最远点,则无需对该方向上的最远点进行过滤。
由此一来,每个方向上最多可得到两个最远点,在设定有八个指定方向的情况下,电子设备最多可得到十六个最远点。当然,每个方向上最少可得到一个最远点,在设定有八个指定方向的情况下,电子设备最少可得到八个最远点。
请参阅图3,图3给出了最远点的查找过程的示例。需要说明的是,图3中为了对最远点进行突出显示,将最远点以灰色小圆点示出,实际每个最远点应为像素点。
A2、计算最远点两两之间的距离,将距离最远的两个最远点确定为该图形的顶点。
考虑到无论哪种情况下,图形均为正方形,而正方形的顶点有如下特征:对角的顶点距离最远,基于此,电子设备可从该特征入手,找到处于对角的两个顶点。为找到处于对角的两个顶点,电子设备可计算最远点两两之间的距离,然后将计算所得的距离最远的两个最远点确定为该图形的两个顶点。至此,该图像已找到两个顶点,只剩下另外两个顶点还未查找到。
A3、在指定连线的两侧,分别将距离指定连线最远的最远点确定为该图形的顶点,其中,该指定连线为:距离最远的两个最远点的连线。
将距离最远的两个最远点,也即步骤A2所确定出的两个顶点相连,即可得到一条连线。在该连线的任一侧,如果该侧只有一个最远点,则该最远点即为顶点;如果该侧有两个以上的最远点,则可计算该侧这两个以上的最远点分别到指定连线的距离,并将距离该指定连线最远的一个最远点确定为该图像的一个顶点。通过上述过程,在该连线的两侧分别进行查找,即可找到剩余的两个顶点,这两个顶点分别处于该连线的不同侧。
为便于理解,下面通过具体实例对步骤A2及A3进行说明:
请参阅图4,图4给出了在八个指定方向上所查找到的中心黑块的边界的最远点的示例。在图4中,所查找到的最远点分别为P1、P2、……、P12,共有12个最远点。
通过步骤A2计算最远点两两之间的距离,确定P4及P10距离最远,则P4及P10均被确定为顶点。将P4及P10相连,得到指定连线,在图4以灰色线段示出。通过图4可知,P1、P2、P3、P11及P12在该指定连线的一侧,P5、P6、P7、P8及P9在该指定连线的另一侧。
通过步骤A3计算P1、P2、P3、P11及P12分别与该指定连线的距离,确定P1距离该指定连线最远,则P1为指定连线的一侧所确定出的顶点;类似地,计算P5、P6、P7、P8及P9分别与该指定连线的距离,确定P8距离该指定连线最远,则P8为指定连线的另一侧所确定出的顶点。至此,找到了该图形的所有顶点,分别为:P4、P10、P1及P8。
在一些实施例中,步骤A1所查找到最远点的数量可能多达十几个,而图形的实际顶点只有四个,为了进一步提升步骤A2及A3的处理效率,还可在步骤A2之前,对步骤A1所查找到的最远点进行进一步过滤,具体为:合并距离过近的点。例如,如果某一最远点的八邻域内有另一最远点,则这两个最远点中,可随机保留一个最远点,另一个最远点舍弃,不参与后续步骤A2及A3的运算。
在一些实施例中,待确定顶点的图形的边界追踪过程可以为:
B1、从待确定顶点的图形的中心点向外以任一固定方向进行搜寻,找到的第一个白色像素点为边界上的第一个点,基于此,该第一个白色像素点被确定为当前追踪点。
可以理解,在还未开始从待确定顶点的图形的中心点向外搜寻时,该固定方向可以是任意方向;但一旦开始向外搜寻,该固定方向就不应再更改。
需要注意的是,在待确定顶点的图形为待识别二维码时,需要先对该待识别二维码进行预处理,才可通过步骤B1-B3找到待识别二维码的边界。该预处理过程简述如下:
使用增强版的基于游程熵图像分割算法对待识别二维码进行图像分割,将待识别二维码的二维码区域涂黑。
请参阅图5,图5给出了待识别二维码在预处理后的效果示例。
B2、以指定的搜寻顺序搜寻当前追踪点的八邻域,其中,八邻域中第一个被搜寻的点为:确定该当前追踪点之前所搜寻的最后一个黑色像素点。该搜寻顺序可根据边界的追踪顺序而确定,具体为:若追踪顺序为逆时针,则搜寻顺序为顺时针;若追踪顺序为顺时针,则搜寻顺序为逆时针。
B3、将在该八邻域中搜寻到的第一个白色像素点确定为新的当前追踪点,并返回执行步骤B2,直至边界搜寻一圈后停止;也即,直至再次遍历到初始的当前追踪点(也即步骤B1所确定的当前追踪点)时停止。
为便于理解,请参阅图6,下面结合图6对上述边界追踪过程进行说明:
图6中的灰色虚线箭头指示了从待确定顶点的图形的中心点向外搜寻的方向(也即步骤B1的固定方向)。可以看出,基于图6所示出的固定方向,找到的边界上的第一个点(也即第一个当前追踪点)为点S。
在点S的八邻域中进行搜寻,其中,由于找到点S之前所搜寻的最后一个黑色像素点为A点,因而,点A为本次搜寻的第一个点。假定当前追踪顺序为顺时针,则搜寻顺序为逆时针,也即,从点A开始,逆时针遍历点S的八邻域。由此,可找到该八邻域中的第一个白色像素点T。该点T可被确定为边界上的新的点。同时,对当前追踪点进行更新,也即点T被更新为新的当前追踪点。
在点T的八邻域中进行搜寻,其中,由于找到点T之前所搜寻的最后一个黑色像素点为A点,因而,点A为本次搜寻的第一个点。从点A开始,逆时针遍历点T的八邻域,经过了点A、B及C之后,找到该八邻域中的第一个白色像素点R。该点R可被确定为边界上的新的点。同时,对当前追踪点进行更新,也即点R被更新为新的当前追踪点。
以此类推,直至再次搜寻到点S时,可知已搜寻完一圈。此时,对待确定顶点的图形的边界追踪已完成。
可以理解,步骤B1-B3中,由于搜寻顺序与追踪顺序不同,且在搜寻的过程中,将确定当前追踪点之前所搜寻到的最后一个黑色像素点作为本次搜寻八邻域时的第一个被搜寻的点,这使得搜寻下一当前追踪点的路径会先进入待确定顶点的图形的区域内部。基于此,从该区域内部(也即黑色区域)搜寻出去的过程中,遇到的第一个白色象素点一定是紧靠区域内部(也即黑色区域)的,由此保障每个当前追踪点都是待确定顶点的图形的外边界点。
当然,也可采用传统的边界追踪方法来获得待确定顶点的图形的边界。但是,由于传统的边界追踪方法通常需要先提取边缘,与本申请实施例所提出的新的边界追踪方法(也即步骤B1-B3)相比,传统的边界追踪方法的处理流程更复杂,可能会一定程度上影响到电子设备对二维码的定位符的识别速度及效率。
在一些实施例中,如前文所描述的,在识别出一个真实定位符的情况下,电子设备所确定出的几何特征为真实定位符的中心点及待识别二维码的顶点。由前文可知,真实定位符通常处于待识别二维码的某一角附近,因而剩余的两个真实定位符就在剩余的三个角附近。基于此,步骤103可具体表现为:
C1、根据真实定位符的中心点、第一二维码顶点及第二二维码顶点,在图像中确定第一疑似中心。
第一二维码顶点指的是:距离真实定位符的中心点最近的待识别二维码的顶点;换句话说,真实定位符通常处于待识别二维码的某一角,该第一二维码顶点即为待识别二维码在该角的顶点。类似地,第二二维码顶点指的是:距离该真实定位符的中心点最远的待识别二维码的顶点;换句话说,该第二二维码顶点即为待识别二维码在该角的对角的顶点。
为便于说明该第一疑似中心点的确定过程,请参阅图7。图7中示出了所识别出的真实定位符的中心点O,以及待识别二维码的四个顶点A、B、C及D。根据前文所给出的定义,A为第一二维码顶点,C为第二二维码顶点。
由图7可知,在待识别二维码的透视不是很严重的情况下,ABCD近似呈平行四边形,此时有:AO=-CQ。由于真实定位符的中心点O、第一二维码顶点A及第二二维码顶点C的坐标均已知,因而可根据AO=-CQ确定出Q点的坐标,该Q点即为第一疑似中心点。
其中,这里的透视指的是近大远小效应。透视很严重,指的是电子设备拍摄二维码时,电子设备的镜头距离二维码较近,且拍摄角度有倾斜,导致二维码不同区域距离镜头的位置差距(指的是相对差距,即做除法,而非做减法)很大,进而导致成像时近处的二维码区域放大倍率明显高于远处的二维码区域的情况。
C2、根据第一直线、第二直线、第三直线及第四直线的交点,在图像中确定第二疑似中心点及第三疑似中心点。
第一直线指的是:过真实定位符的中心点且平行于待识别二维码的第一边的直线。
第二直线指的是:过真实定位符的中心点且平行于待识别二维码的第二边的直线。
第三直线指的是:过第一疑似中心点且平行于待识别二维码的第一边的直线。
第四直线指的是:过第一疑似中心点且平行于待识别二维码的第二边的直线。
第一边及第二边为待识别二维码相邻的两条不同的边。也即,第一边及第二边为待识别二维码的四条边中,有一个公共端点的两条不同的边。
仍请参阅图7。图7中的第一边指的是AB(也可以是DC),第二边指的是AD(也可以是BC)。则图7中的直线l
由图7可知,基于这四条直线构成了四个交点,其中两个交点分别为真实定位符的中心点O以及第一疑似中心点Q,剩下的两个交点P及R即分别为第二疑似中心点及第三疑似中心点。也即,步骤C2中所关注的交点,指的是除真实定位符的中心点及第一疑似中心点之外,第一直线、第二直线、第三直线及第四直线中的任意两条直线相交所得的交点。
C3、分别根据第一疑似中心点、第二疑似中心点及第三疑似中心点确定对应的疑似定位符。
所得的三个疑似中心点中,应有两个疑似中心点分别在剩余的两个真实定位符的中心点的附近。基于此,可根据这三个疑似中心点,分别确定三个疑似定位符,并通过后续步骤104,在这三个疑似定位符中,找到剩余的两个真实定位符。
可以理解,待识别二维码的图像也有一定可能存在畸变。一般畸变不大时,也仍可以将待识别二维码近似看作平行四边形进行处理,得到对应的三个疑似定位符。虽然因为畸变的原因导致所找出的三个疑似定位符的中心点(也即疑似中心点)的坐标可能有误差,但在后续采用菱形搜索进行模板匹配时,仍然可匹配出剩余的真实定位符的精确位置。
在一些实施例中,如前文所描述的,在识别出两个真实定位符的情况下,电子设备所确定出的几何特征为真实定位符的中心点及这两个真实定位符的中心黑块的顶点。由前文可知,真实定位符通常处于待识别二维码的某一角附近,因而剩余的一个真实定位符就在剩余的两个角附近。而实际应用场景下,在已识别出两个真实定位符时,这两个真实定位符可能有如下两种不同的位置关系:相邻关系及对角关系。顾名思义,相邻关系指的是:这两个真实定位符所处的角相邻;对角关系指的是:这两个真实定位符所处的角为对角。本申请实施例针对这两种不同的位置关系,提出了不同的疑似定位符的确定方式。也即,本申请会先判断已识别出的两个真实定位符的位置关系;若位置关系为相邻关系,则以第一方式确定至少两个疑似中心点;反之,若位置关系为对角关系,则以第二方式确定至少两个疑似中心点;最后,根据所确定出的至少两个疑似中心点确定对应的疑似定位符。
其中,这两个真实定位符的位置关系可通过如下过程进行判断:
D1、选定任一真实定位符,根据该真实定位符的中心黑块的顶点,计算该真实定位符的两个对角线的直线方程。
D2、根据这两个真实定位符的中心点的坐标,计算过这两个中心点的直线的直线方程;
D3、根据D1所得的两个对角线的直线方程,以及D2所得的直线的直线方程,计算D2的直线分别与D1的两个对角线的夹角,得到两个夹角值。
D4、将这两个夹角值中相对较小的夹角值与预设的夹角阈值(例如5度)进行比对,若该相对较小的夹角值小于该夹角阈值,则说明两个真实定位符的中心点的连线近似平行于真实定位符的某条对角线,也即这两个真实定位符是对角关系;反之,若该相对较小的夹角值大于或等于该夹角阈值,则说明这两个真实定位符是相邻关系。
在一些实施例中,在识别出的两个真实定位符是相邻关系的情况下,所采用的确定疑似中心点的第一方式可以包括:
根据第五直线、第六直线、第七直线及第八直线在两个真实定位符之外的交点,在图像中确定至少两个疑似中心点。
为便于说明,分别将两个真实定位符的中心黑块记作第一中心黑块及第二中心黑块,则:第五直线及第六直线分别为第一中心黑块的对角线所处的直线,且第一中心黑块的对角线可根据第一中心黑块的顶点确定;第七直线及第八直线分别为第二中心黑块的对角线所处的直线,且第二中心黑块的对角线可根据第二中心黑块的顶点确定。
可以理解,第五直线、第六直线、第七直线及第八直线共形成有四个交点,其中两个交点必然在已识别出的两个真实定位符的内部,可将这两个在内部的交点忽略。也即,本申请实施例关注的是第五直线、第六直线、第七直线及第八直线在两个真实定位符之外所得的两个交点。
在识别出的两个真实定位符是相邻关系的情况下,电子设备具体可将两个真实定位符的中心点关于两个交点的对称点确定为疑似中心点,由此可得到四个疑似中心点。
为便于说明已识别出的两个真实定位符为相邻关系时,疑似中心点的确定过程,请参阅图8。图8中示出了:
某一真实定位符的中心点O1及另一真实定位符的中心点O2;
第五直线l
第六直线l
第七直线l
第八直线l
由图8可知,这四条直线共有4个交点,其中两个交点分别在两个真实定位符的内部,且分别与O1及O2的位置很接近(在图8中未示出),这两个交点无需考虑。也即,本申请实施例仅考虑在两个真实定位符外部的交点,也即Q及P。
电子设备可找到真实定位符的中心点O1关于交点P的对称点O4,以及关于交点Q的对称点O5;类似地,还可找到真实定位符的中心点O2关于交点P的对称O3,以及关于交点Q的对称点O6。基于此,电子设备共找到两个真实定位符的中心点关于两个交点的四个对称点O3、O4、O5及O6,这四个对称点均为疑似中心点。
在一些实施例中,在识别出的两个真实定位符是对角关系的情况下,所采用的确定疑似中心点的第二方式可以包括:
根据第九直线、第十直线、第十一直线及第十二直线在两个真实定位符之外的交点,在图像中确定至少两个疑似中心点。
为便于说明,分别将两个真实定位符记作第一真实定位符及第二真实定位符,并将第一真实定位符的中心黑块记作第一中心黑块,将第二真实定位符的中心黑块记作第二中心黑块,则:第九直线为:过第一真实定位符的中心点且平行于第一中心黑块的第三边的直线;第十直线为:过第一真实定位符的中心点且平行于第一中心黑块的第四边的直线;第十一直线为:过第二真实定位符的中心点且平行于第二中心黑块的第五边的直线;第十二直线为:过第二真实定位符的中心点且平行于第二中心黑块的第六边的直线。
其中,第三边及第四边为第一中心黑块相邻的两条不同的边。也即,第三边及第四边为第一中心黑块的四条边中,有一个公共端点的两条不同的边。
其中,第五边及第六边为第二中心黑块相邻的两条不同的边。也即,第五边及第六边为第二中心黑块的四条边中,有一个公共端点的两条不同的边。
可以理解,由于第一中心黑块的顶点、第二中心黑块的顶点及两个真实定位符的中心点的坐标均已知,因而第九直线、第十直线、第十一直线及第十二直线的直线方程均可根据平面几何知识推理而得,此处不再赘述。
可以理解,第九直线、第十直线、第十一直线及第十二直线共形成有四个交点,其中两个交点必然在已识别出的两个真实定位符的内部(分别为第一真实定位符的中心点及第二真实定位符的中心点),可将这两个在内部的交点忽略。也即,本申请实施例关注的是第五直线、第六直线、第七直线及第八直线在两个真实定位符之外所得的两个交点。
在识别出的两个真实定位符是对角关系的情况下,电子设备具体可将在真实定位符之外的两个交点直接确定为疑似中心点,由此可得到两个疑似中心点。
为便于说明已识别出的两个真实定位符为对角关系时,疑似中心点的确定过程,请参阅图9。图9中示出了:
第一真实定位符的中心点O1及第二真实定位符的中心点O2;
第一中心黑块的四个顶点A1、A2、A3及A4;
第二中心黑块的四个顶点B1、B2、B3及B4;
第九直线l
第十直线l
第十一直线l
第十二直线l
由图9可知,这四条直线共有4个交点,其中两个交点分别为O1及O2,这两个交点无需考虑。也即,本申请实施例仅考虑在在第一真实定位符及第二真实定位符外部的交点,也即P及Q。该交点P及Q均为疑似中心点。
在一些实施例中,可以理解,对二维码识别的过程即为对二维码解析的过程。为提升对待识别二维码的识别成功率,步骤105可具体包括:
E1、在已找到三个真实定位符的情况下,计算任意两个相邻的真实定位符之间的相对距离,并根据该相对距离确定待识别二维码的目标版本号;
E2、根据该目标版本号对待识别二维码进行解析;
E3、若解析失败,则将与该目标版本号相邻的版本号确定为候选版本号,并继续根据候选版本号再次对待识别二维码进行解析。
其中,相邻的真实定位符之间的相对距离,并不是以像素点的个数为单位,而是以二维码的最小方块单元为单位。也即,该相对距离表达的是:两个相邻的真实定位符之间任一行(或列)中的最小方块单元的数量。可以理解,真实定位符的尺寸是已知的,为7*7的矩阵;也即一个真实定位符的任一行(或列)中的最小方块单元的数量为7。再通过计算出的两个相邻的真实定位符之间任一行(或列)中的最小方块单元的数量x,可获知待识别二维码的尺寸L,也即待识别二维码任一行(或列)的最小方块单元的数量L为7+7+x。根据二维码标准可知,二维码尺寸L和版本号V之间有如下关系:L=(V-1)*4+21。由此,可根据相对距离计算出对应的目标版本号。
然而,由于真实定位符的位置不可避免的会有一些误差,并且二维码尺寸越小,这种误差影响越大,这可能导致计算出的目标版本号偏离正确值。因此,电子设备在基于目标版本号解析失败时,可再以附近版本尝试解码,由此进一步提升对污损二维码的解码成功率。例如,通过该相对距离计算出的目标版本号为v
需要注意的是,若目标版本号v
在一些实施例中,电子设备根据预设的颜色特征比例对待识别二维码的图像进行定位符的识别时,可能会直接识别出三个“定位符”,但这并不一定代表着这三个“定位符”就是真实定位符,只能说明有三个区域在预设方向上都满足该颜色特征比例而已。真实环境下,有可能出现二维码周围的某个区域也在预设方向上满足该颜色特征比例的情况,这会导致定位符的误识别。请参阅图10,图10给出了发生定位符误识别情况时的示例。图10中,二维码的右下角的定位符被污损,无法通过该颜色特征比例被识别为真实定位符,而周围环境中恰巧有个很小的区域在各个方向上都满足该颜色特征比例,导致该区域被电子设备错误的识别为了“定位符”。当然,在电子设备识别出四个或更多的“定位符”时,意味着一定有被误识别的“定位符”。基于此,电子设备可对根据颜色特征比例所得的识别结果进行初步的筛查,将错得离谱的“定位符”删除掉,才可得到真实定位符。则步骤101可具体包括:
根据预设的颜色特征比例对待识别二维码的图像进行识别;若识别到的定位符的数量小于3,则将识别到的定位符均确定为真实定位符;若识别到的定位符的数量大于或等于3,则计算所有已识别出的定位符的平均尺寸;分别计算各个定位符的尺寸与该平均尺寸的尺寸误差;若存在目标尺寸误差,则将目标尺寸误差所对应的定位符删除,并将未被删除的定位符确定为真实定位符;其中,目标尺寸误差指的是超过预设的尺寸误差阈值的尺寸误差。
由上可见,在本申请实施例中,电子设备在二维码的定位符被污损导致识别到的真实定位符数量不足的情况下,充分考虑到了已识别出的真实定位符在二维码中的几何特征,并根据该几何特征来推理剩余的真实定位符。由于几何推理对电子设备的运算压力较小,使得电子设备在短时间内即可识别出所有的真实定位符,由此保障了电子设备对定位符的识别准确率,且一定程度上提升了电子设备对该二维码的识别成功率。
对应于上文所提供的二维码识别方法,本申请实施例还提供了一种二维码识别装置。请参阅图11,该二维码识别装置1100包括:
第一识别模块1101,用于根据预设的颜色特征比例,在待识别二维码的图像中识别出真实定位符;
第一确定模块1102,用于若识别出的真实定位符的数量不完全,则确定待识别二维码在图像中的几何特征;
查找模块1103,用于根据几何特征,在图像中查找出至少两个疑似定位符;
第二确定模块1104,用于在至少两个疑似定位符中确定剩余的真实定位符;
第二识别模块1105,用于基于所有真实定位符对待识别二维码进行识别。
可选地,第一确定模块1102,包括:
第一几何特征确定单元,用于若识别出一个真实定位符,则在图像中确定真实定位符的中心点及待识别二维码的顶点;
第二几何特征确定单元,用于若识别出两个真实定位符,则在图像中确定每个真实定位符的中心点及每个真实定位符的中心黑块的顶点。
可选地,顶点的确定方式包括:
针对每个待确定顶点的图形,查找图形的边界分别在至少四个指定方向上的最远点,其中,待确定顶点的图形包括:待识别二维码或真实定位符的中心黑块;
计算最远点两两之间的距离,将距离最远的两个最远点确定为图形的顶点;
在指定连线的两侧,分别将距离指定连线最远的最远点确定为图形的顶点,其中,指定连线为:距离最远的两个最远点的连线。
可选地,查找模块1103,包括:
第一疑似中心点确定单元,用于在识别出一个真实定位符的情况下,根据真实定位符的中心点、第一二维码顶点及第二二维码顶点,在图像中确定第一疑似中心点,其中,第一二维码顶点为:距离真实定位符的中心点最近的待识别二维码的顶点,第二二维码顶点为:距离真实定位符的中心点最远的待识别二维码的顶点;
第二疑似中心点确定单元,用于根据第一直线、第二直线、第三直线及第四直线的交点,在图像中确定第二疑似中心点及第三疑似中心点,其中,第一直线为:过真实定位符的中心点且平行于待识别二维码的第一边的直线;第二直线为:过真实定位符的中心点且平行于待识别二维码的第二边的直线;第三直线为:过第一疑似中心点且平行于第一边的直线;第四直线为:过第一疑似中心点且平行于第二边的直线;第一边及第二边相邻。
第一疑似定位符确定单元,用于分别根据第一疑似中心点、第二疑似中心点及第三疑似中心点确定对应的疑似定位符。
可选地,查找模块1103,包括:
位置关系判断单元,用于在识别出两个真实定位符的情况下,判断两个真实定位符在待识别二维码中的位置关系;
第三疑似中心点确定单元,用于根据位置关系及几何特征,在图像中确定至少两个疑似中心点;
第二疑似定位符确定单元,用于分别根据至少两个疑似中心点确定对应的疑似定位符。
可选地,分别记两个真实定位符的中心黑块为第一中心黑块及第二中心黑块,第三疑似中心点确定单元,具体用于在位置关系为相邻关系的情况下,根据第五直线、第六直线、第七直线及第八直线在两个真实定位符之外的交点,在图像中确定至少两个疑似中心点,其中,第五直线及第六直线分别为第一中心黑块的对角线所处的直线,第一中心黑块的对角线根据第一中心黑块的顶点确定,第七直线及第八直线分别为第二中心黑块的对角线所处的直线,第二中心黑块的对角线根据第二中心黑块的顶点确定。
可选地,分别记两个真实定位符为第一真实定位符及第二真实定位符,并记第一真实定位符的中心黑块为第一中心黑块,记第二真实定位符的中心黑块为第二中心黑块,第三疑似中心点确定单元,具体用于在位置关系为对角关系的情况下,根据第九直线、第十直线、第十一直线及第十二直线在两个真实定位符之外的交点,在图像中确定至少两个疑似中心点,其中,第九直线为:过第一真实定位符的中心点且平行于第一中心黑块的第三边的直线;第十直线为:过第一真实定位符的中心点且平行于第一中心黑块的第四边的直线;第十一直线为:过第二真实定位符的中心点且平行于第二中心黑块的第五边的直线;第十二直线为:过第二真实定位符的中心点且平行于第二中心黑块的第六边的直线;第三边及第四边相邻,且第三边及第四边根据第一中心黑块的顶点而确定;第五边及第六边相邻,且第五边及第六边根据第二中心黑块的顶点而确定。
可选地,第二识别模块1105包括:
计算单元,用于在已识别出三个真实定位符的情况下,计算任意两个相邻的真实定位符之间的相对距离;
目标版本号确定单元,用于根据相对距离确定待识别二维码的目标版本号;
解析单元,用于根据目标版本号对待识别二维码进行解析;
候选版本号确定单元,还用于若解析失败,则将与目标版本号相邻的版本号确定为候选版本号;
解析单元,还用于根据候选版本号再次对待识别二维码进行解析。
由上可见,在本申请实施例中,电子设备在二维码的定位符被污损导致识别到的真实定位符数量不足的情况下,充分考虑到了已识别出的真实定位符在二维码中的几何特征,并根据该几何特征来推理剩余的真实定位符。由于几何推理对电子设备的运算压力较小,使得电子设备在短时间内即可识别出所有的真实定位符,由此保障了电子设备对定位符的识别准确率,且一定程度上提升了电子设备对该二维码的识别成功率。
对应于上文所提供的二维码识别方法,本申请实施例还提供了一种电子设备。请参阅图12,本申请实施例中的电子设备12包括:存储器1201,一个或多个处理器1202(图12中仅示出一个)及存储在存储器1201上并可在处理器上运行的计算机程序。其中:存储器1201用于存储软件程序以及单元,处理器1202通过运行存储在存储器1201的软件程序以及单元,从而执行各种功能应用以及数据处理,以获取上述预设事件对应的资源。具体地,处理器1202通过运行存储在存储器1201的上述计算机程序时实现上述方法实施例中的各个步骤,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关联的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读存储介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机可读存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括是电载波信号和电信信号。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
- 一种二维码识别方法、二维码识别装置及电子设备
- 二维码识别方法、二维码定位识别模型建立方法及其装置