一种QR码的位置探测图形分组方法转让专利

申请号 : CN201610907989.3

文献号 : CN106529636B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄旭东吴闽帆林宇

申请人 : 上海觉感视觉科技有限公司

摘要 :

本发明提供一种QR码的位置探测图形分组方法;抽取三个扫描得到的位置探测图形;获取两个位置探测图形旁边的格式信息,并将两个格式信息进行对比,确定三个位置探测图形组成QR码的版本,得到该QR码的维数;记录三个位置探测图形中心点坐标,QR码的维数;直至所有位置探测图形分组完成;准确的对位置探测图形进行分组,提高精准度。

权利要求 :

1.一种QR码的位置探测图形分组方法,其特征在于:包括如下步骤:步骤1、抽取三个扫描得到的位置探测图形;

步骤2、获取三个位置探测图形对应的格式信息;将其中两个格式信息进行组合,之后与剩下的格式信息对比;所述组合为将一个格式信息的前半段取出,将另一个格式信息的后半段取出,然后将它们组合,若不同位数大于第一限定值,进入步骤1,否则将两组格式信息分别与QR码32种格式信息分别进行对比,若不同位数小于第二限定值则符合,若符合进入步骤3,否则进入步骤1步骤3、确定三个位置探测图形组成QR码的版本,得到该QR码的维数;

步骤4、记录三个位置探测图形中心点坐标,QR码的维数;回到步骤1,直至所有位置探测图形分组完成。

2.如权利要求1所述的一种QR码的位置探测图形分组方法,其特征在于:获取位置探测图形对应的格式信息具体步骤为:计算位置探测图形与格式信息区域之间空白区域的灰度均值;

计算格式信息区域每个模块的灰度值;

将格式信息区域的每个模块灰度值与空白区域的灰度均值做差值,并从差值中得到最大灰度差值,从零和最大灰度差值之间选出一阈值,若差值小于该阈值,则将该模块设为白色;否,则将该模块设为黑色,其中白色为0,黑色为1;根据差值得到格式信息。

3.如权利要求1所述的一种QR码的位置探测图形分组方法,其特征在于:所述步骤1与步骤2之间还包括步骤a、获取每一个位置探测图中心点坐标、水平扫描的模块宽度、垂直扫描模块宽度,根据三个位置探测图形位置关系,把它们设定为左上,右上,左下,其中心坐标分别为(x1,y1),(x2,y2),(x3,y3);得到l12和l13,其中l12为左上和右上位置探测图形的距离;其中l13为左上和左下位置探测图形的距离;

若|l12-l13|/|l12+l13|<0.4,并且三个位置探测图形中心点之间连线的夹角为70°至

110°之间,则进入步骤2;否,则返回步骤1。

4.如权利要求1所述的一种QR码的位置探测图形分组方法,其特征在于:所述步骤1与步骤2之间还包括步骤b、以左上角的位置探测图形的中心为原点坐标,得到两个方向的单位向量和 计算两个位置探测

图形在 和 两个方向上的模块投影宽度Mh1,Mh2,Mv1,Mv3;并得到 方向模块个数D1=2l12/

1 2 1 3

(Mh+Mh); 方向的模块个数D2=2l13/(Mv+Mv);若D1的值和D2的值均大于等12且小于等于

172且D1和D2之差的绝对值应小于4,则进入步骤2;否,则进入步骤1。

5.如权利要求1所述的一种QR码的位置探测图形分组方法,其特征在于:所述步骤3进一步具体为:左上、右上位置探测图形在 方向上的模块投影宽度为Mh1和Mh2,计算差异度dh=2×(Mh1-Mh2)/(Mh1+Mh2),同样方法计算左上、左下的位置探测图形在 方向的差异度dv;

选择差异度小的方向,把该方向的两位置探测图形之间的距离除以这个方向上的模块投影宽度,并加上首尾各3.5个模块,取整后得到所需维数。

6.如权利要求5所述的一种QR码的位置探测图形分组方法,其特征在于:所述步骤3进一步具体为:根据取整后得到QR码的维数,找到最近这个维数的版本,根据该版本计算得到一维数;若QR码的维数处于两个版本中间,则根据两个版本分别计算得到两个维数。

说明书 :

一种QR码的位置探测图形分组方法

技术领域

[0001] 本发明涉及一种QR码的位置探测图形分组方法。

背景技术

[0002] 目前市面上二维码的种类繁多,但是最为常见的只有三种,分别为:pdf417、datamatrix和QR码,其中QR码是在民用中最广泛使用的二维码。QR码的最大特点是在码的左上、右上、左下部存在三个位置探测图形,每个位置探测图形无论水平扫描还是垂直扫描都能找到固定的1:1:3:1:1比例关系;且其具有很强的抗干扰能力,哪怕是部分缺损也能够被准确定位。然而实际的情况是,由于印刷质量、光照条件和相机成像的缘故,需要放宽其比例关系的要求,且必须认定存在一条符合要求的扫描线就是可能的位置探测图形,否则无法处理位置探测图形残缺和QR码旋转的情况,这就会带来一个严重的问题,扫描图像后将会得到很多的伪位置探测图形,如果我们的目标是在大幅面的图像中搜索数量未知的QR码,就需要把QR码位置探测图形从伪目标中分离出来并进行正确分组。传统的多QR码解码思路分为两种:一种是把找到的位置探测图形进行组合试错解码,这种做法在时间消耗上十分巨大,不具有可行性。另一种是利用找到的位置探测图形之间的位置关系确定一个QR码,这种方法对伪位置探测图形的宽容性很低,无法满足实际的需求。

发明内容

[0003] 本发明要解决的技术问题,在于提供一种QR码的位置探测图形分组方法,准确的对位置探测图形进行分组,提高精准度。
[0004] 本发明是这样实现的:一种QR码的位置探测图形分组方法,包括如下步骤:
[0005] 步骤1、抽取三个扫描得到的位置探测图形;
[0006] 步骤2、获取三个位置探测图形对应的格式信息,并将三个格式信息进行对比,[0007] 若不同位数大于第一限定值,进入步骤1,否则将两组格式信息分别与QR码32种格式信息分别进行对比,若不同位数小于第二限定值则符合,若符合进入步骤3,否则进入步骤1
[0008] 步骤3、确定三个位置探测图形组成QR码的版本,得到该QR码的维数;
[0009] 步骤4、记录三个位置探测图形中心点坐标,QR码的维数;回到步骤1,直至所有位置探测图形分组完成。
[0010] 进一步地,所述步骤2中获取三个位置探测图形对应的格式信息,并将三个格式信息进行对比,进一步具体为:获取三个位置探测图形对应的格式信息;将其中两个格式信息进行组合,之后与剩下的格式信息对比;所述组合为将一个格式信息的前半段取出,将另一个格式信息的后半段取出,然后将它们组合。
[0011] 进一步地,获取位置探测图形对应的格式信息具体步骤为:
[0012] 计算位置探测图形与格式信息区域之间空白区域的灰度均值;
[0013] 计算格式信息区域每个模块的灰度值;
[0014] 将格式信息区域的每个模块灰度值与空白区域的灰度均值做差值,并从差值中得到最大灰度差值,从零和最大灰度差值之间选出一阈值,若差值小于该阈值,则将该模块设为白色;否,则将该模块设为黑色,其中白色为0,黑色为1;根据差值得到格式信息。
[0015] 进一步地,所述步骤1与步骤2之间还包括步骤a、
[0016] 获取每一个位置探测图中心点坐标、水平扫描的模块宽度、垂直扫描模块宽度,根据三个位置探测图形位置关系,把它们设定为左上,右上,左下,其中心坐标分别为(x1,y1),(x2,y2),(x3,y3);得到l12和l13,其中l12为左上和右上位置探测图形的距离;其中l13为左上和左下位置探测图形的距离;
[0017] 若|l12-l13|/|l12+l13|<0.4,并且三个位置探测图形中心点之间连线的夹角为70°至110°之间,则进入步骤2;否,则返回步骤1。
[0018] 进一步地,所述步骤1与步骤2之间还包括步骤b、
[0019] 以左上角的位置探测图形的中心为原点坐标,得到两个方向的单位向量和 计算两个位置探测图形在 和 两个方向上的模块投影宽度Mh1,Mh2,Mv1,Mv3;并得到 方向模块个数D1=2l12/
1 2 1 3
(Mh+Mh);方向的模块个数D2=2l13/(Mv+Mv);若D1的值和D2的值均大于等12且小于等于
172且D1和D2之差的绝对值应小于4,则进入步骤2;否,则进入步骤1。
[0020] 进一步地,所述步骤3进一步具体为:左上、右上位置探测图形在 方向上的模块投影宽度为Mh1和Mh2,计算差异度dh=2×(Mh1-Mh2)/(Mh1+Mh2),同样方法计算左上、左下的位置探测图形在 方向的差异度dv;选择差异度小的方向,把该方向的两位置探测图形之间的距离除以这个方向上的模块投影宽度,并加上首尾各3.5个模块,取整后得到所需维数。
[0021] 进一步地,所述步骤3进一步具体为:根据取整后得到QR码的维数,找到最近这个维数的版本,根据该版本计算得到一维数;若QR码的维数处于两个版本中间,则根据两个版本分别计算得到两个维数。
[0022] 本发明具有如下优点:本发明一种QR码的位置探测图形分组方法,百分百的成功率可以使得之前的步骤宽容度更高,也可以让之后的部分采用多种方法进行尝试,而不至于有巨大的时间花销;本方法利用QR码自身的特点来进行分组,保证成功率,并且在之前利用简单的方法进行快速的判断,也兼顾效率,因此具有非常理想的效果。

附图说明

[0023] 下面参照附图结合实施例对本发明作进一步的说明。
[0024] 图1为本发明一种QR码的位置探测图形分组方法执行流程图。
[0025] 图2为本发明中QR码的位置探测图形示意图。

具体实施方式

[0026] 如图1所示,本发明QR码的位置探测图形分组方法,包括如下步骤:
[0027] 步骤1、抽取三个扫描得到的位置探测图形;
[0028] 步骤a、获取每一个位置探测图中心点坐标、水平扫描的模块宽度、垂直扫描模块宽度,根据三个位置探测图形位置关系,把它们设定为左上,右上,左下,其中心坐标分别为(x1,y1),(x2,y2),(x3,y3);得到l12和l13,其中l12为左上和右上位置探测图形的距离;其中l13为左上和左下位置探测图形的距离;
[0029] 若|l12-l13|/|l12+l13|<0.4,并且三个位置探测图形中心点之间连线的夹角为70°至110°之间,则进入步骤2;否,则返回步骤1;
[0030] 步骤b、以左上角的位置探测图形的中心为原点坐标,得到两个方向的单位向量和 计算两个位置探测图形在 和 两个方向上的模块投影宽度Mh1,Mh2,Mv1,Mv3;并得到 方向模块个数D1=2l12/(Mh1+Mh2);方向的模块个数D2=2l13/(Mv1+Mv3);若D1的值和D2的值均大于等12且小于等于
172且D1和D2之差的绝对值应小于4,则进入步骤2;否,则进入步骤1;
[0031] 步骤2、获取三个位置探测图形对应的格式信息;将其中两个格式信息进行组合,之后与剩下的格式信息对比;所述组合为将一个格式信息的前半段取出,将另一个格式信息的后半段取出,然后将它们组合,之后进行对比,若不同位数大于第一限定值,进入步骤1,否则将两组格式信息分别与QR码32种格式信息分别进行对比,若不同位数小于第二限定值则符合,若符合进入步骤3,否则进入步骤1,
[0032] 获取位置探测图形对应的格式信息具体步骤为:
[0033] 计算位置探测图形与格式信息区域之间空白区域的灰度均值;
[0034] 计算格式信息区域每个模块的灰度值;
[0035] 将格式信息区域的每个模块灰度值与空白区域的灰度均值做差值,并从差值中得到最大灰度差值,从零和最大灰度差值之间选出一阈值,若差值小于该阈值,则将该模块设为白色;否,则将该模块设为黑色,其中白色为0,黑色为1;根据差值得到格式信息;
[0036] 步骤3、左上、右上位置探测图形在 方向上的模块投影宽度为Mh1和Mh2,计算差异度dh=2×(Mh1-Mh2)/(Mh1+Mh2),同样方法计算左上、左下的位置探测图形在 方向的差异度dv;选择差异度小的方向,把该方向的两位置探测图形之间的距离除以这个方向上的模块投影宽度,并加上首尾各3.5个模块,取整后得到所需维数,根据取整后得到QR码的维数,找到最近这个维数的版本,根据该版本计算得到一维数;若QR码的维数处于两个版本中间,则根据两个版本分别计算得到两个维数;
[0037] 步骤4、记录三个位置探测图形中心点坐标,QR码的维数;回到步骤1,直至所有位置探测图形分组完成。
[0038] 如图1所示,本发明一种具体实施方式:
[0039] 步骤1,抽取三个扫描得到的位置探测图形,每一个位置探测图形我们已经知道其中心点坐标、水平扫描的模块宽度、垂直扫描模块宽度,这里也包括伪位置探测图形。利用三个位置探测图形位置关系把他们设定为左上,右上,左下,其中心坐标分别为(xi,yi)i=1,2,3。
[0040] 步骤2,左上右上位置探测图形之间距离为l12,左上左下之间距离为l13。可以利用简单几何关系进行判断排除,要求|l12-l13|/|l12+l13|<0.4,并且三个位置探测图形中心点之间连线的夹角应在70°至110°之间,否则不属于同个QR码,返回步骤1。
[0041] 步骤3,以左上角位置探测图形中心为原点坐标,得到两个方向的单位向量和 这两个单位向量正好指向以二维码模块排列的横向和纵向。然后对三个位置探测图形进行处理,计算他们在和 两个方向上的模块投影宽度。以其中一个位置探测图形水平扫描为例,之前得到的每个位置探测图形的水平模块投影宽度是由 计算得到的。由于位置探测图形理论上是正方形,我们可以判断 和水平、垂直方向的夹角,选择夹角小的扫描模块投影宽度(本例中是水平扫描方向),计算其在 方向的投影,就是位置探测图形在 方向的模块投影宽度Mhi,相同方法可以用另外一个扫描模块投影宽度(本例中是垂直扫描方向)计算该位置探测图形在 方向的模块投影宽度Mvi。
[0042] 步骤4,QR码的维度是在21~177之间,不同版本之间维数相差4,因此要求用左上、右上两个位置探测图形中心之间的距离除以他们在 方向的模块投影宽度均值,即 方向1 2
模块个数D1=2l12/(Mh+Mh),D1的值要在12~172之间(两位置探测图形中心点之间理论上有维数-7个模块,且此处考虑到宽容度放宽了要求),同样的左上,左下两个位置探测图形之间的距离除以他们在 方向的模块个数D2=2l13/(Mv1+Mv3)也要在12~172之间。并且D1和D2之差应小于4。符合则进入下一步,不符合返回步骤1。
[0043] 步骤5,这步我们利用QR码本身的特征进行判断,是最保险的方法,但是耗时稍长。
[0044] 利用QR码格式信息区域进行判断。
[0045] QR码在左上角和左下、右上两个区域有两个格式信息的区域,这两个区域的编码是相同的,在图2中用数字标出其排列的顺序,可以通过判断两组信息的相似程度做快速筛选,通过筛选的结果再做格式信息的判断最终确定是属于QR码32种格式信息编码的方式,能够确定这三个图案是否是属于同一个QR码。
[0046] 步骤5.1,以左上位置探测图形为例,中心点(x1,y1)为基准,利用方向单位向量和左上位置探测图形在这两个方向上的模块投影宽度Mh1、Mv1,以及格式信息相对探测图像中的相对位置,找到与左上位置探测图形相邻的格式信息区域1中每个模块的中心坐标,右上位置探测图形相邻的格式信息区域2中每个模块的中心坐标以及左下位置探测图形的格式信息区域3中每个模块的中心坐标(如图2所示,区域2和区域3组合的信息应与区域1的信息完全相同,只有在污损的情况时会有局部的不同),并且在每个格式信息区域和位置探测图形之间有一个白色净空区域。在格式信息区域中的一个模块的中心处,3×3的像素区域计算其灰度均值,并且与这个模块相邻的白色净空区灰度值做差。净空区的灰度值确定方法和模块相同。分别统计属于该位置探测图形区域格式信息模块的最大灰度差值,以这个差值的20%作为标准,大于标准的设定为黑色,小于设定为白色。这种做法的好处是可以避免灰度变化大时造成的黑白误判。
[0047] 步骤5.2,这里我们用左上位置探测图形确定格式信息区域的全部信息,上右位置探测图形确定格式信息区域的前半部分信息,下左位置探测图形确定格式信息区域的后半部分信息,这样做可以避免透视形变严重时带来的误差。分别记录在两个数组I1[15]I2[15]中。判断I1I2之间不相同的位数,当不同位数达到5时,判定为这三个位置探测图形不属于同一个QR码,终止判断返回步骤1。
[0048] 步骤5.3,当不同位数小于5,三个位置探测图形同属一个QR码的可能性就很高了,把I1[15]I2[15]分别和QR码格式信息允许的32种结果进行比对,如果找到相同的情况判定为属于同一个QR码,这里不必要求两者完全相同,允许有3的误差,提高宽容度。
[0049] 步骤6,确定QR码的版本。左上、右上位置探测图形在 方向上的模块投影宽度为Mh1和Mh2,计算差异度dh=2×(Mh1-Mh2)/(Mh1+Mh2),同样方法利用左上、左下位置探测图形在方向的差异度dv。选择差异度小的方向,把该方向的两位置探测图形之间的距离除以这个方向上的模块投影宽度均值,加上首尾各3.5个模块,取整后得到QR码的维数。利用维数和版本之间的关系,找到最近这个维数的版本,由于QR码各版本之间维数相差4的特点,这么做可以避免算法中误差带来的影响。再反过来计算该版本对应的维数d,就是这个QR码真实的维数,此时定时图案的黑白交替数设为d-13。如果QR码透视形变比较严重时,会发生计算的维数取整后刚好等于两个相邻版本之间维数的中间值。根据经验,此时向下取整成功率高,也可以保守做法把这两个版本都作为可能进行后面的试错解码。
[0050] 步骤7,记录这个QR码三个位置探测图形中心点坐标,QR码的维数。回到步骤1,寻找下一个符合要求的QR码。
[0051] 虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。