首页> 中国专利> 一种快速反应QR码模块边界调整的方法及装置

一种快速反应QR码模块边界调整的方法及装置

摘要

本发明公开了一种快速反应QR码模块边界调整的方法及装置,所述方法包括:根据QR码中像素点的灰度值,生成梯度投影图;根据梯度投影图中的峰值,对QR码进行划分,得到QR码中的每个模块;针对每个模块,将该模块划分为多个矩形区域;确定每个顶点的梯度值;将梯度值的最大值对应的顶点作为候选点,对候选点进行调整得到每个边界点;每个边界点依次连接后构成的封闭区域作为QR码模块所在区域。由于在本发明实施例中,电子设备将模块划分为多个矩形区域,根据每个顶点在四个方向的梯度值,确定出该模块四个方向的候选点,并进行调整得到边界点,使得在极端环境下,可以更准确的确定模块,进而提高了采样模块信息的准确度和解码的准确率。

著录项

  • 公开/公告号CN106934438A

    专利类型发明专利

  • 公开/公告日2017-07-07

    原文格式PDF

  • 申请/专利权人 浙江华睿科技有限公司;

    申请/专利号CN201710114710.0

  • 发明设计人 韩雪超;周璐;定志峰;

    申请日2017-02-28

  • 分类号G06K19/06;

  • 代理机构北京同达信恒知识产权代理有限公司;

  • 代理人黄志华

  • 地址 310053 浙江省杭州市滨江区滨安路1199号C10

  • 入库时间 2023-06-19 02:44:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-19

    授权

    授权

  • 2017-08-01

    实质审查的生效 IPC(主分类):G06K19/06 申请日:20170228

    实质审查的生效

  • 2017-07-07

    公开

    公开

说明书

技术领域

本发明涉及图像处理技术领域,尤其涉及一种快速反应QR码模块边界调整的方法及装置。

背景技术

随着科学技术的快速发展,QR码的出现方便了用户的生活,在日常生活中,无论是购物还是一些社交软件或者是一些应用软件都有其对应的一个QR码,用户可以通过扫码,读取该QR码即可进入购物付款界面,或者进入添加好友界面等。QR码由多个模块组成,用户在使用电子设备对QR码进行解码时,存在着对QR码中的模块的边界调整的过程,之后针对模块边界调整后的QR码进行解码。

现有技术对模块的边界调整时,是将每个模块的整个直线边界作为一个整体在一定范围内进行移动,完成对模块边界的调整。这种模块边界调整的方法对于QR码所在的区域内模块分布均匀且大小基本一致的QR码,有比较好的效果。但是,实际得到的QR码所在的区域,由于拍摄角度、打印机质量、工业环境污染和误差等不同的原因,会存在QR码中的各模块大小、长宽不一致等问题。此外,在过曝,低对比度,高噪声等图像上QR码中的模块的边界通常不是直线边界。这种情况下,通过将每个模块的整个直线边界作为一个整体在一定范围内进行移动,完成对模块边界的调整,会造成模块内部噪声过多,确定出的模块不准确,影响采样模块信息的准确度,进而严重降低解码的准确率。

发明内容

本发明实施例提供一种QR码模块边界调整的方法及装置,用以解决QR码中的模块的边界调整不准确的问题。

为达到上述目的,本发明实施例公开了一种QR码模块边界调整的方法,该方法包括:

根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图;

根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块;

针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。

进一步地,所述根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图包括:

针对每个像素点,确定与该像素点左右相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值,将每一列的像素点的水平梯度值累加得到水平方向的梯度投影图;

针对每个像素点,确定与该像素点上下相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值,将每一行的像素点的垂直梯度值累加得到垂直方向的梯度投影图。

进一步地,所述根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分包括:

将所述水平方向的梯度投影图的水平方向划分为第一数量的范围区间,识别每个第一范围区间中梯度值的峰值,确定每个峰值所对应的每个目标列,在所述QR码所在的区域中采用每个目标列进行列划分;

将垂直方向的梯度投影图的垂直方向划分为第二数量的范围区间,识别每个第二范围区间中梯度值的峰值,确定每个峰值所对应的每个目标行,在所述QR码所在的区域中采用每个目标行进行行划分。

进一步地,所述针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值包括:

将每个矩形区域的每个顶点划分到左右两个半区,将左方向作为第一方向,针对左半区的顶点,根据每个顶点与该顶点相邻且位于该顶点右侧的顶点的灰度值差的绝对值,确定每个顶点在左方向的梯度值;将右方向作为第一方向,针对右半区的顶点,根据每个顶点与该顶点相邻且位于该顶点左侧的顶点的灰度值差的绝对值,确定每个顶点在右方向的梯度值;

将每个矩形区域的每个顶点划分到上下两个半区,将上方作为第一方向,针对上半区的顶点,根据每个顶点与该顶点相邻且位于该顶点下方的顶点的灰度值差的绝对值,确定每个顶点在上方的梯度值;将下方作为第一方向,针对下半区的顶点,根据每个顶点与该顶点相邻且位于该顶点上方的顶点的灰度值差的绝对值,确定每个顶点在下方的梯度值。

进一步地,所述针对每个第二方向,对候选点进行调整得到每个边界点包括:

如果候选点为左方向候选点,且所述候选点位于外侧,将左方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的左方向候选点,将与该最内侧的左方向候选点位于同一列的顶点作为该外侧组左方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的左方向候选点,将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点;

如果候选点为右方向候选点,且所述候选点位于外侧,将右方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的右方向候选点,将与该最内侧的右方向候选点位于同一列的顶点作为该外侧组右方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的右方向候选点,将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点;

如果候选点为上方候选点,且所述候选点位于外侧,将上方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的上方候选点,将与该最内侧的上方候选点位于同一行的顶点作为该外侧组上方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的上方候选点,将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点;

如果候选点为下方候选点,且所述候选点位于外侧,将下方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的下方候选点,将与该最内侧的下方候选点位于同一行的顶点作为该外侧组下方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的下方候选点,将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点。

进一步地,所述将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点之前,所述方法还包括:

判断每个内侧分组的左方向边界点是否位于同一列,如果是,进行后续步骤。

进一步地,如果每个内侧分组的左方向边界点不位于同一列,所述方法还包括:

针对内侧分组中的左方向边界点,确定位于最内侧的左方向边界点,将内侧分组左方向边界点更新为与该最内侧的左方向候选点位于同一列的顶点。

进一步地,所述将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点之前,所述方法还包括:

判断每个内侧分组的右方向边界点是否位于同一列,如果是,进行后续步骤;

所述将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点之前,所述方法还包括:

判断每个内侧分组的上方边界点是否位于同一行,如果是,进行后续步骤;

所述将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点之前,所述方法还包括:

判断每个内侧分组的下方边界点是否位于同一行,如果是,进行后续步骤。

进一步地,如果每个内侧分组的右方向边界点不位于同一列,所述方法还包括:

针对内侧分组中的右方向边界点,确定位于最内侧的右方向边界点,将内侧分组右方向边界点更新为与该最内侧的右方向候选点位于同一列的顶点;

如果每个内侧分组的上方边界点不位于同一行,所述方法还包括:

针对内侧分组中的上方边界点,确定位于最内侧的上方边界点,将内侧分组上方边界点更新为与该最内侧的上方候选点位于同一行的顶点;

如果每个内侧分组的下方边界点不位于同一行,所述方法还包括:

针对内侧分组中的下方边界点,确定位于最内侧的下方边界点,将内侧分组下方边界点更新为与该最内侧的下方候选点位于同一行的顶点。

另一方面,本发明实施例公开了一种QR码模块边界调整的装置,该装置包括:

生成模块,用于根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图;

划分模块,用于根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块;

调整模块,用于针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。

进一步地,所述生成模块,具体用于针对每个像素点,确定与该像素点左右相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值,将每一列的像素点的水平梯度值累加得到水平方向的梯度投影图;针对每个像素点,确定与该像素点上下相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值,将每一行的像素点的垂直梯度值累加得到垂直方向的梯度投影图。

进一步地,所述划分模块,具体用于将所述水平方向的梯度投影图的水平方向划分为第一数量的范围区间,识别每个第一范围区间中梯度值的峰值,确定每个峰值所对应的每个目标列,在所述QR码所在的区域中采用每个目标列进行列划分;将垂直方向的梯度投影图的垂直方向划分为第二数量的范围区间,识别每个第二范围区间中梯度值的峰值,确定每个峰值所对应的每个目标行,在所述QR码所在的区域中采用每个目标行进行行划分。

进一步地,所述调整模块,具体用于将每个矩形区域的每个顶点划分到左右两个半区,将左方向作为第一方向,针对左半区的顶点,根据每个顶点与该顶点相邻且位于该顶点右侧的顶点的灰度值差的绝对值,确定每个顶点在左方向的梯度值;将右方向作为第一方向,针对右半区的顶点,根据每个顶点与该顶点相邻且位于该顶点左侧的顶点的灰度值差的绝对值,确定每个顶点在右方向的梯度值;将每个矩形区域的每个顶点划分到上下两个半区,将上方作为第一方向,针对上半区的顶点,根据每个顶点与该顶点相邻且位于该顶点下方的顶点的灰度值差的绝对值,确定每个顶点在上方的梯度值;将下方作为第一方向,针对下半区的顶点,根据每个顶点与该顶点相邻且位于该顶点上方的顶点的灰度值差的绝对值,确定每个顶点在下方的梯度值。

进一步地,所述调整模块,具体用于如果候选点为左方向候选点,且所述候选点位于外侧,将左方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的左方向候选点,将与该最内侧的左方向候选点位于同一列的顶点作为该外侧组左方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的左方向候选点,将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点;如果候选点为右方向候选点,且所述候选点位于外侧,将右方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的右方向候选点,将与该最内侧的右方向候选点位于同一列的顶点作为该外侧组右方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的右方向候选点,将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点;如果候选点为上方候选点,且所述候选点位于外侧,将上方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的上方候选点,将与该最内侧的上方候选点位于同一行的顶点作为该外侧组上方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的上方候选点,将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点;如果候选点为下方候选点,且所述候选点位于外侧,将下方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的下方候选点,将与该最内侧的下方候选点位于同一行的顶点作为该外侧组下方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的下方候选点,将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点。

进一步地,所述装置还包括:

判断模块,用于判断每个内侧分组的左方向边界点是否位于同一列,如果是,触发调整模块。

进一步地,所述调整模块,还用于如果每个内侧分组的左方向边界点不位于同一列,针对内侧分组中的左方向边界点,确定位于最内侧的左方向边界点,将内侧分组左方向边界点更新为与该最内侧的左方向候选点位于同一列的顶点。

进一步地,所述判断模块,还用于判断每个内侧分组的右方向边界点是否位于同一列,如果是,触发调整模块;判断每个内侧分组的上方边界点是否位于同一行,如果是,触发调整模块;判断每个内侧分组的下方边界点是否位于同一行,如果是,触发调整模块。

进一步地,所述调整模块,还用于如果每个内侧分组的右方向边界点不位于同一列,针对内侧分组中的右方向边界点,确定位于最内侧的右方向边界点,将内侧分组右方向边界点更新为与该最内侧的右方向候选点位于同一列的顶点;如果每个内侧分组的上方边界点不位于同一行,针对内侧分组中的上方边界点,确定位于最内侧的上方边界点,将内侧分组上方边界点更新为与该最内侧的上方候选点位于同一行的顶点;如果每个内侧分组的下方边界点不位于同一行,针对内侧分组中的下方边界点,确定位于最内侧的下方边界点,将内侧分组下方边界点更新为与该最内侧的下方候选点位于同一行的顶点。

本发明实施例提供一种QR码模块边界调整的方法及装置,所述方法包括:根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图;根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块;针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。由于在本发明实施例中,通过梯度投影图中的峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块,针对每个模块,将该模块划分为多个矩形区域,根据每个矩形区域的每个顶点在四个方向的梯度值,确定出该模块上下左右四个方向的候选点,并对四个方向的候选点进行调整得到边界点,将该调整后的边界点依次连接,得到该模块的边界,这样就会将模块中的噪声过滤掉,使得在过曝,低对比度,高噪声的环境下,可以更准确的确定模块,进而提高了采样模块信息的准确度和解码的准确率。

附图说明

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

图1为本发明实施例1提供的一种QR码模块边界调整过程示意图;

图2为本发明实施例1提供的模块划分示意图;

图3为本发明实施例2提供的QR码所在的区域划分示意图;

图4为本发明实施例3提供的模块划分为左右半区示意图;

图5为本发明实施例3提供的模块划分为上下半区示意图;

图6A-6B,图7A-7B为本发明实施例4提供的左半区边界调整示意图;

图8A-8C为本发明实施例4提供的右半区边界调整示意图;

图9A-9C为本发明实施例4提供的上半区边界调整示意图;

图10A-10C为本发明实施例4提供的下半区边界调整示意图;

图11为本发明实施例4提供的确定模块所在区域示意图;

图12为本发明实施例提供的一种QR码模块边界调整装置结构示意图。

具体实施方式

下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例1:

图1为本发明实施例提供的一种QR码模块边界调整过程示意图,该过程包括以下步骤:

S101:根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图。

本发明实施例提供的QR码模块边界调整的方法应用于电子设备。所述电子设备包括PC、智能电视、相机及手机等。

所述电子设备根据快速反应(Quick Response、QR)码的四个顶点,可以确定QR码所在的区域,根据QR码所在的区域中的每个像素点的灰度值,生成该QR码所在区域在水平方向和垂直方向的灰度值的梯度投影图。

具体的,在确定水平方向的灰度值的梯度投影图时,针对每个像素点,可以确定与该像素点相邻的位于该像素点左侧的像素点的灰度值与该像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值;当然,也可以确定与该像素点相邻的位于该像素点右侧的像素点的灰度值与该像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值,将每一列的像素点的水平梯度值累加得到水平方向的梯度投影图。

在确定垂直方向的灰度值的梯度投影图时,针对每个像素点,可以确定与该像素点相邻的位于该像素点上方的像素点的灰度值与该像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值;当然,也可以确定与该像素点相邻的位于该像素点下方的像素点的灰度值与该像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值,将每一行的像素点的垂直梯度值累加得到垂直方向的梯度投影图。

S102:根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块。

所述电子设备根据预设的划分方式和生成的水平方向和垂直方向的梯度投影图,确定出每个范围内的峰值,根据每个峰值确定每个峰值在QR码所在的区域对应的位置,根据每个位置将QR码所在的区域进行划分。因为水平方向和垂直方向的梯度投影图中记录的是每列和每行的像素点的梯度值的和,因此确定的峰值是每列和每行的像素点的梯度值的峰值,该每列、每行在QR码所在的区域也是对应每列和每行的,因此将划分后的QR码所在的区域中将会包含每个小网格,将每个小网格作为QR码中的每个模块。

当然,在对QR码所在的区域进行划分时,也可以根据经验,在水平方向的梯度投影图确定第一设定数量的目标列,在垂直方向的梯度投影图上确定第二设定数量的目标行,在QR码所在的区域中采用每个目标列进行列划分,在QR码所在的区域中采用每个目标行进行行划分。

S103:针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。

针对得到的QR码中的每个模块,按照预设的划分方法将该模块划分为多个矩形区域,在对每个模块进行划分时,可以将该模块的长进行n等分,将该模块的宽进行m等分,其中所述m和n相同或不同,划分后得到多个矩形区域,针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在上下左右四个第一方向的梯度值,其中,梯度值为与该顶点上下左右相邻的顶点的灰度值与该顶点的灰度值的差的绝对值。

因为每个模块基本都是正方形,因此为了使确定出的每个顶点在四个第一方向的梯度值更加准确,可以将每个模块的长宽分别进行n等分,即把该模块分成n2个相同的矩形区域,得到(n+1)2个矩形区域的顶点。如图2所示,对模块的长宽分别进行7等分,即将该模块分成了49个矩形区域,得到了64个顶点。针对得到的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值。

针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,针对每个第一方向的候选点,将所述候选点划分到内外两个第二方向,其中,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接,将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。

由于在本发明实施例中,电子设备通过梯度投影图中的峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块,针对每个模块,将该模块划分为多个矩形区域,根据每个矩形区域的每个顶点在四个方向的梯度值,确定出该模块上下左右四个方向的候选点,并对四个方向的候选点进行调整得到边界点,将该调整后的边界点依次连接,得到该模块的边界,这样就会将模块中的噪声过滤掉,使得在过曝,低对比度,高噪声的环境下,可以更准确的确定模块,进而提高了采样模块信息的准确度和解码的准确率。

实施例2:

在上述实施例的基础上,在本发明实施例中,所述根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图包括:

针对每个像素点,确定与该像素点左右相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值,将每一列的像素点的水平梯度值累加得到水平方向的梯度投影图;

针对每个像素点,确定与该像素点上下相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值,将每一行的像素点的垂直梯度值累加得到垂直方向的梯度投影图。

将QR码所在的区域在水平方向和垂直方向,分别生成水平方向的投影图和垂直方向的梯度投影图。针对水平方向的每个像素点,确定与该像素点左右相邻的两个像素点的灰度值的差,并取绝对值,将该绝对值作为该像素点在水平方向的梯度值。例如某个像素点左右相邻的两个像素点的灰度值分别为0和10,则该像素点在水平方向的梯度值为10。如果像素点是水平方向的第一个像素点或最后一个像素点,可以将该像素点及与该像素点水平相邻的像素点的灰度值的差的绝对值,作为该像素点在水平方向的梯度值。以此方法得到QR码所在的区域的每个像素点在水平方向的梯度值后,将每一列的像素点的梯度值累加求和,得到在水平方向该列的像素点的梯度值的和,根据每一列在水平方向的像素点的梯度值的和生成水平方向的梯度投影图。

针对垂直方向的每个像素点,确定与该像素点上下相邻的两个像素点的灰度值的差,并取绝对值,将该绝对值作为该像素点在垂直方向的梯度值。例如某个像素点上下相邻的两个像素点的灰度值分别为255和10,则该像素点在垂直方向的的梯度值为245。如果像素点是垂直方向的第一个像素点或最后一个像素点,可以将该像素点及与该像素点垂直相邻的像素点的灰度值的差的绝对值,作为该像素点在垂直方向的梯度值。以此方法得到QR码所在的区域的每个像素点在垂直方向的梯度值后,将每一行的像素点的梯度值累加求和,得到在垂直方向该行的像素点的梯度值的和,根据每一行在垂直方向的像素点的梯度值的和生成垂直方向的梯度投影图。

在生成水平和垂直方向的梯度投影图后,所述根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分包括:

将所述水平方向的梯度投影图的水平方向划分为第一数量的范围区间,识别每个第一范围区间中梯度值的峰值,确定每个峰值所对应的每个目标列,在所述QR码所在的区域中采用每个目标列进行列划分;

将垂直方向的梯度投影图的垂直方向划分为第二数量的范围区间,识别每个第二范围区间中梯度值的峰值,确定每个峰值所对应的每个目标行,在所述QR码所在的区域中采用每个目标行进行行划分。

根据生成的梯度投影图,可以确定梯度投影图中的每个峰值,进而根据所述峰值对应的QR码所在的区域中的位置对所述QR码所在的区域进行划分。

由于QR码是由多个黑色和白色的模块组成的,以上述方法生成水平方向和垂直方向的梯度投影图,梯度投影图中反映的是每一行像素点或每一列像素点的梯度值的和。比如以模块中心的一列像素点为例进行说明,该像素点左右相邻的两个像素点的灰度值相同,如果是黑色模块,则灰度值都为0,如果是白色模块,灰度值都为255,因此,该像素点的梯度值为0。而处于黑色模块和白色模块边界处的像素点,该像素点左右相邻的像素点的灰度值为0和255,因此,该像素点的梯度值为255。因此可以根据水平方向的梯度投影图和垂直方向的梯度投影图中的峰值,查找每个模块的边界。

具体的,针对生成的水平方向的梯度投影图,电子设备将该水平方向的梯度投影图的水平方向划分为第一数量的范围区间,针对每个范围区间,可以识别出其中的梯度值的峰值,由于水平方向的梯度投影图是根据QR码所在的区域中的每一列像素点的梯度值累加求和得到的,水平方向的梯度投影图中记录的是每列的像素点的梯度值的和,因此针对每个范围区间识别出的峰值是每列的像素点的梯度值的峰值,该每列在QR码所在的区域也是对应每列的,将每个范围区间中的峰值对应的QR码所在的区域中的列作为目标列,在所述QR码所在的区域中采用每个目标列进行列划分。

针对生成的垂直方向的梯度投影图,电子设备将该垂直方向的梯度投影图的垂直方向划分为第二数量的范围区间,针对每个范围区间,可以识别出其中的梯度值的峰值,由于垂直方向的梯度投影图是根据QR码所在的区域中的每一行像素点的梯度值累加求和得到的,垂直方向的梯度投影图中记录的是每行的像素点的梯度值的和,因此针对每个范围区间识别出的峰值是每行的像素点的梯度值的峰值,该每行在QR码所在的区域也是对应每行的,将每个范围区间中的峰值对应的QR码所在的区域中的行作为目标行,在所述QR码所在的区域中采用每个目标行进行行划分。

如图3所示,根据水平方向和垂直方向梯度投影图中的每个峰值,在所述QR码所在的区域中采用每个目标列进行列划分,在所述QR码所在的区域中采用每个目标行进行行划分,划分后的QR码所在的区域中将会包含每个小网格,将每个小网格作为QR码中的每个模块。

由于在本发明实施例中,根据QR码所在的区域中的每个像素点在水平方向和垂直方向的梯度值,生成水平方向和垂直方向的梯度投影图,根据水平方向和垂直方向的梯度投影图中的每个峰值,将QR码所在的区域划分为多个行和多个列,进而得到QR码中的每个模块,因此使得根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块更加准确。

实施例3:

在上述实施例的基础上,为了使确定出的每个矩形区域的每个顶点在四个第一方向的梯度值更加准确,在本发明实施例中,所述针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值包括:

将每个矩形区域的每个顶点划分到左右两个半区,将左方向作为第一方向,针对左半区的顶点,根据每个顶点与该顶点相邻且位于该顶点右侧的顶点的灰度值差的绝对值,确定每个顶点在左方向的梯度值;将右方向作为第一方向,针对右半区的顶点,根据每个顶点与该顶点相邻且位于该顶点左侧的顶点的灰度值差的绝对值,确定每个顶点在右方向的梯度值;

将每个矩形区域的每个顶点划分到上下两个半区,将上方作为第一方向,针对上半区的顶点,根据每个顶点与该顶点相邻且位于该顶点下方的顶点的灰度值差的绝对值,确定每个顶点在上方的梯度值;将下方作为第一方向,针对下半区的顶点,根据每个顶点与该顶点相邻且位于该顶点上方的顶点的灰度值差的绝对值,确定每个顶点在下方的梯度值。

电子设备针对得到的QR码中的每个模块,按照预设的划分方法将该模块划分为多个矩形区域。例如对模块的长宽分别进行6等分,即将该模块分成了36个矩形区域,得到了49个顶点。将得到的49个顶点任意划分为左右两个半区,为了使确定的候选点更加准确,在划分时可以尽量使得左右半区的顶点的个数差最小,例如划分后左半区可以为28个顶点,右半区为21个顶点。为了使确定的候选点更加准确,可以对模块的长宽分别进行7等分,即将该模块分成了49个矩形区域,得到了64个顶点。将得到的64个顶点平均划分为左右两个半区,如图4所示,左右半区分别包含32个顶点。

针对位于左半区中的32个顶点,将左方向作为第一方向,需要确定位于左半区的每个顶点的左方向的梯度值,具体在确定时,根据每个顶点与该顶点相邻且位于该顶点右侧的顶点的灰度值差的绝对值,确定每个顶点在左方向的梯度值。例如图4中的第一行的由左到右的8个顶点的灰度值依次为250,240,245,249,254,248,245,250,根据上述确定每个顶点的梯度值的方法,则针对位于左半区的顶点,第一行的由左到右的四个顶点的左方向的梯度值依次为10,5,4,6。针对位于右半区的32个顶点,将右方向作为第一方向,需要确定位于右半区的每个顶点的右方向的梯度值,具体在确定时,根据每个顶点与该顶点相邻且位于该顶点左侧的顶点的灰度值差的绝对值,确定每个顶点在右方向的梯度值。如图4中的第一行的由左到右的8个顶点的灰度值,针对位于右半区的顶点,第一行的由右到左的四个顶点的右方向的梯度值依次为5,3,6,5。

在划分上下半区时,如果是49个顶点,可以将该49个顶点任意划分为上下两个半区,为了使确定的候选点更加准确,在划分时可以尽量使得上下半区的顶点的个数差最小,例如划分后上半区可以为28个顶点,下半区为21个顶点。为了使确定的候选点更加准确,还以本发明实施例得到64个顶点进行说明,将得到的64个顶点平均划分为上下两个半区,如图5所示,上下半区分别包含32个顶点。

针对位于上半区中的32个顶点,将上方作为第一方向,需要确定位于上半区的每个顶点的上方的梯度值,具体在确定时,根据每个顶点与该顶点相邻且位于该顶点下侧的顶点的灰度值差的绝对值,确定每个顶点在上方的梯度值。例如图5中的第一列的由上到下的8个顶点的灰度值依次为250,245,248,249,253,248,248,252,根据上述确定每个顶点的梯度值的方法,则针对位于上半区的顶点,第一列的由上到下的四个顶点的上方的梯度值依次为5,3,1,4。针对位于下半区的32个顶点,将下方作为第一方向,需要确定位于下半区的每个顶点的下方的梯度值,具体在确定时,根据每个顶点与该顶点相邻且位于该顶点上侧的顶点的灰度值差的绝对值,确定每个顶点在下方的梯度值,如图5中的第一列的由上到下的8个顶点的灰度值,针对位于下半区的顶点,第一列的由下到上的四个顶点的下方的梯度值依次为4,0,5,4。

针对上述每个半区中,确定的对应的每个顶点在对应的第一方向的梯度值,针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点。具体的当左方向或右方向为第一方向时,在该第一方向对应的每行中,将梯度值的最大值对应的顶点作为该第一方向的候选点,当上或下为第一方向时,在该第一方向对应的每列中,将梯度值的最大值对应的顶点作为该第一方向的候选点。

如上所述,针对位于左方向的顶点,第一行的左方向的梯度值由左到右依次为10,5,4,6,因此针对位于左方向的顶点,由左到右第一个顶点即为第一行的候选点;针对位于右方向的顶点,第一行的右方向的梯度值由右到左依次为5,3,6,5,因此针对位于右方向的顶点,由右到左第三个顶点即为第一行的候选点;针对位于上方的顶点,第一列的上方的梯度值由上到下依次为5,3,1,4,因此针对位于上方的顶点,由上到下第一个顶点即为第一列的候选点;针对位于下方的顶点,第一列的下方的梯度值由下到上依次为4,0,5,4,因此针对位于下方的顶点,由下到上第三个顶点即为第一列的候选点。

另外,当针对于每个第一方向,该第一方向的同一行或同一列的梯度值的最大值有至少两个时,可以将至少两个梯度值的最大值对应的顶点都作为候选点,也可以任意选取其中的一个梯度值的最大值对应的顶点作为候选点,为了提高确定的候选点的准确性,可以取相对靠近于该模块中心的顶点作为候选点。例如,针对位于左方向第一行的顶点,计算得出梯度值由左到右依次为3,7,7,5,即第一行由左到右第二个和第三个顶点的左方向的梯度值都为最大值,由于该第三个顶点相对第二个顶点靠近于该模块的中心,因此取第三个顶点作为位于左方向第一行的候选点。

实施例4:

在上述实施例的基础上,在针对每个第一方向确定出候选点后,针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点。为了使确定的边界点更加准确,在本发明实施例中,所述针对每个第二方向,对候选点进行调整得到每个边界点包括:

如果候选点为左方向候选点,且所述候选点位于外侧,将左方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的左方向候选点,将与该最内侧的左方向候选点位于同一列的顶点作为该外侧组左方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的左方向候选点,将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点;

如果候选点为右方向候选点,且所述候选点位于外侧,将右方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的右方向候选点,将与该最内侧的右方向候选点位于同一列的顶点作为该外侧组右方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的右方向候选点,将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点;

如果候选点为上方候选点,且所述候选点位于外侧,将上方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的上方候选点,将与该最内侧的上方候选点位于同一行的顶点作为该外侧组上方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的上方候选点,将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点;

如果候选点为下方候选点,且所述候选点位于外侧,将下方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的下方候选点,将与该最内侧的下方候选点位于同一行的顶点作为该外侧组下方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的下方候选点,将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点。

因为本发明实施例中识别出的每个第一方向的候选点为可能位于边界上的点,该每个第一方向的候选点,其可能构成QR码模块所在区域,因此针对每个第一方向的候选点,可以将其作为QR码模块所在区域的边界,从而可以根据每个第一方向的候选点,确定QR码模块内的区域和QR码模块外的区域,因此将QR码模块内的区域对应的方向作为候选点的内侧,QR码模块外的区域对应的方向作为该候选点的外侧。

如果第一方向为左方向,确定左方向的候选点的内外第二方向包括,将该候选点的左侧作为外方向,将其右侧作为内方向;如果第一方向为右方向,针确定右方向的候选点的内外两个第二方向包括,将该候选点的右侧作为外方向,将其左侧作为内方向;如果第一方向为上方,确定上方的候选点的内外两个第二方向包括:将该候选点的上侧作为外方向,将其下侧作为内方向;如果第一方向为下方,确定下方的候选点的内外两个第二方向包括:将该候选点的下侧作为外方向,将其上侧作为内方向。

具体的,如果候选点为左方向候选点,以一个具体的例子对候选点的调整过程进行说明,如图6A所示,图中左半区有32个顶点,其中黑色的点为候选点,根据上述实施例提供的方法,确定出左半区的候选点由左到右分别为,第一行第一个顶点11,第二行第四个顶点24,第三行第二个顶点32,第四行第三个顶点43,第五行第四个顶点54,第六行第二个顶点62,第七行第二个顶点72,第八行第三个顶点83。将左方向的八个候选点分为四个组,其中,第一行和第二行的候选点为第一外侧组,第三行和第四行的候选点为第一内侧分组,第五行和第六行的候选点为第二内侧分组,第七行和第八行的候选点为第二外侧组。

针对第一外侧组和第二外侧组,识别每个外侧组中位于最内侧的候选点,将与该最内侧的左方向候选点位于同一列的顶点作为该外侧组边界点。根据此原则,第一外侧组中,最内侧的候选点为第二行的第四个顶点24,因此将第一行的候选点调整到第四个顶点14,第二外侧组中,最内侧的候选点为第八行的第三个顶点83,因此将第七行的候选点调整到第三个顶点73。针对第一内侧分组和第二内侧分组,识别每个内侧分组中位于最外侧的候选点,将与该最外侧的候选点位于同一列的顶点作为该内侧分组边界点,根据此原则,第一内侧分组中,最外侧的候选点为第三行的第二个顶点32,因此将第四行的候选点调整到第二个顶点42,第二内侧分组中,最外侧的候选点为第六行的第二个顶点62,因此将第五行的候选点调整到第二个顶点52。针对左方向,对候选点进行调整后的得到的边界点如图6B所示,其中黑色的点为边界点。

内侧组可以包含一个内侧分组,也可以包含两个以上的内侧分组,如果包含两个以上的内侧分组,在本发明实施例中,两个以上的内侧分组中的候选点调整后得到的边界点有可能不位于同一列,因此,为了进一步的保证调整后的边界点的准确性,在本实施例中,所述将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点之前,所述方法还包括:

判断每个内侧分组的左方向边界点是否位于同一列,如果是,进行后续步骤。

如果每个内侧分组的左方向边界点不位于同一列,所述方法还包括:

针对内侧分组中的左方向边界点,确定位于最内侧的左方向边界点,将内侧分组左方向边界点更新为与该最内侧的左方向候选点位于同一列的顶点。

如图7A所示,将候选点调整后,第一内侧分组的边界点位于由左到右第三列,分别为顶点33和43,第二内侧分组的边界点位于由左到右第二列,分别为顶点52和62,此时两个内侧分组的左方向边界点不位于同一列,则确定位于最内侧的左方向边界点,将内侧分组左方向边界点更新为与该最内侧的左方向候选点位于同一列的顶点,即,将第二内侧分组中的第三列的顶点53和63更新为第二内测分组的边界点,更新后得到的边界点如图7B所示。

具体的,如果候选点为右方向候选点,以一个具体的例子对候选点的调整过程进行说明,如图8A所示,图中右半区有32个顶点,根据上述实施例提供的方法,确定出右半区的候选点由右到左分别为,第一行第二个顶点17,第二行第一个顶点28,第三行第三个顶点36,第四行第四个顶点45,第五行第二个顶点57,第六行第三个顶点66,第七行第三个顶点76,第八行第一个顶点88。将右方向的八个候选点分为四个组,其中,第一行和第二行的候选点为第一外侧组,第三行和第四行的候选点为第一内侧分组,第五行和第六行的候选点为第二内侧分组,第七行和第八行的候选点为第二外侧组。

针对第一外侧组和第二外侧组,识别每个外侧组中位于最内侧的候选点,将与该最内侧的右方向候选点位于同一列的顶点作为该外侧组边界点,根据此原则,第一外侧组中,最内侧的候选点为第一行的第二个顶点17,因此将第二行的候选点调整到第二个顶点27,第二外侧组中,最内侧的候选点为第七行的第三个顶点76,因此将第八行的候选点调整到第三个顶点86。针对第一内侧分组和第二内侧分组,识别每个内侧分组中位于最外侧的候选点,将与该最外侧的候选点位于同一列的顶点作为该内侧分组边界点,根据此原则,第一内侧分组中,最外侧的候选点为第三行的第三个顶点36,因此将第四行的候选点调整到第三个顶点46,第二内侧分组中,最外侧的候选点为第五行的第二个顶点57,因此将第六行的候选点调整到第二个顶点67。针对右方向,对候选点进行调整后的得到的边界点如图8B所示。

内侧组可以包含一个内侧分组,也可以包含两个以上的内侧分组,如果包含两个以上的内侧分组,在本发明实施例中,两个以上的内侧分组中的候选点调整后得到的边界点有可能不位于同一列,因此,为了进一步的保证调整后的边界点的准确性,在本实施例中,所述将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点之前,所述方法还包括:

判断每个内侧分组的右方向边界点是否位于同一列,如果是,进行后续步骤。

如果每个内侧分组的右方向边界点不位于同一列,所述方法还包括:

针对内侧分组中的右方向边界点,确定位于最内侧的右方向边界点,将内侧分组右方向边界点更新为与该最内侧的右方向候选点位于同一列的顶点。

如图8B所示,将候选点调整后,第一内侧分组的边界点位于由右到左第三列,分别为顶点36和46,第二内侧分组的边界点位于由右到左第二列,分别为顶点57和67,此时两个内侧分组的右方向边界点不位于同一列,则确定位于最内侧的右方向边界点,将内侧分组右方向边界点更新为与该最内侧的右方向候选点位于同一列的顶点,即,将第二内侧分组中的第三列的顶点56和66更新为第二内测分组的边界点,更新后得到的边界点如图8C所示。

具体的,如果候选点为上方候选点,以一个具体的例子对候选点的调整过程进行说明,如图9A所示,图中上半区有32个顶点,根据上述实施例提供的方法,确定出上半区的候选点由上到下分别为,第一列第一个顶点11,第二列第三个顶点32,第三列第四个顶点43,第四列第三个顶点34,第五列第三个顶点35,第六列第二个顶点26,第七列第二个顶点27,第八列第四个顶点48。将上方的八个候选点分为四个组,其中,第一列和第二列的候选点为第一外侧组,第三列和第四列的候选点为第一内侧分组,第五列和第六列的候选点为第二内侧分组,第七列和第八列的候选点为第二外侧组。

针对第一外侧组和第二外侧组,识别每个外侧组中位于最内侧的候选点,将与该最内侧的上方候选点位于同一行的顶点作为该外侧组边界点,根据此原则,第一外侧组中,最内侧的候选点为第二列的第三个顶点32,因此将第一列的候选点调整到第三个顶点31,第二外侧组中,最内侧的候选点为第八列的第四个顶点48,因此将第七列的候选点调整到第四个顶点47。针对第一内侧分组和第二内侧分组,识别每个内侧分组中位于最外侧的候选点,将与该最外侧的候选点位于同一行的顶点作为该内侧分组边界点,根据此原则,第一内侧分组中,最外侧的候选点为第四列的第三个顶点34,因此将第三列的候选点调整到第三个顶点33,第二内侧分组中,最外侧的候选点为第六列的第二个顶点26,因此将第五列的候选点调整到第二个顶点25。针对上方,对候选点进行调整后的得到的边界点如图9B所示。

内侧组可以包含一个内侧分组,也可以包含两个以上的内侧分组,如果包含两个以上的内侧分组,在本发明实施例中,两个以上的内侧分组中的候选点调整后得到的边界点有可能不位于同一行,因此,为了进一步的保证调整后的边界点的准确性,在本实施例中,所述将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点之前,所述方法还包括:

判断每个内侧分组的上方边界点是否位于同一行,如果是,进行后续步骤。

如果每个内侧分组的上方边界点不位于同一行,所述方法还包括:

针对内侧分组中的上方边界点,确定位于最内侧的上方边界点,将内侧分组上方边界点更新为与该最内侧的上方候选点位于同一行的顶点。

如图9B所示,将候选点调整后,第一内侧分组的边界点位于由上到下第三行,分别为顶点33和34,第二内侧分组的边界点位于由上到下第二行,分别为25和26,此时两个内侧分组的上方边界点不位于同一行,则确定位于最内侧的上方边界点,将内侧分组上方边界点更新为与该最内侧的上方候选点位于同一行的顶点,即,将第二内侧分组中的第三行的顶点35和36更新为第二内测分组的边界点,更新后得到的边界点如图9C所示。

具体的,如果候选点为下方候选点,以一个具体的例子对候选点的调整过程进行说明,如图10A所示,图中下半区有32个顶点,根据上述实施例提供的方法,确定出下半区的候选点由下到上分别为,第一列第三个顶点61,第二列第二个顶点72,第三列第四个顶点53,第四列第二个顶点74,第五列第三个顶点65,第六列第一个顶点86,第七列第一个顶点87,第八列第三个顶点68。将上方的八个候选点分为四个组,其中,第一列和第二列的候选点为第一外侧组,第三列和第四列的候选点为第一内侧分组,第五列和第六列的候选点为第二内侧分组,第七列和第八列的候选点为第二外侧组。

针对第一外侧组和第二外侧组,识别每个外侧组中位于最内侧的候选点,将与该最内侧的下方候选点位于同一行的顶点作为该外侧组边界点,根据此原则,第一外侧组中,最内侧的候选点为第一列的第三个顶点61,因此将第二列的候选点调整到第三个顶点62,第二外侧组中,最内侧的候选点为第八列的第三个顶点68,因此将第七列的候选点调整到第三个顶点67。针对第一内侧分组和第二内侧分组,识别每个内侧分组中位于最外侧的候选点,将与该最外侧的候选点位于同一行的顶点作为该内侧分组边界点,根据此原则,第一内侧分组中,最外侧的候选点为第四列的第二个顶点74,因此将第三列的候选点调整到第二个顶点73,第二内侧分组中,最外侧的候选点为第六列的第一个顶点86,因此将第五列的候选点调整到第一个顶点85。针对下方,对候选点进行调整后的得到的边界点如图10B所示。

内侧组可以包含一个内侧分组,也可以包含两个以上的内侧分组,如果包含两个以上的内侧分组,在本发明实施例中,两个以上的内侧分组中的候选点调整后得到的边界点有可能不位于同一行,因此,为了进一步的保证调整后的边界点的准确性,在本实施例中,所述将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点之前,所述方法还包括:

判断每个内侧分组的下方边界点是否位于同一行,如果是,进行后续步骤。

如果每个内侧分组的下方边界点不位于同一行,所述方法还包括:

针对内侧分组中的下方边界点,确定位于最内侧的下方边界点,将内侧分组下方边界点更新为与该最内侧的下方候选点位于同一行的顶点。

如图10B所示,将候选点调整后,第一内侧分组的边界点位于由下到上第二行,分别为顶点73和74,第二内侧分组的边界点位于由下到上第一行,分别为85和86,此时两个内侧分组的下方边界点不位于同一行,则确定位于最内侧的下方边界点,将内侧分组下方边界点更新为与该最内侧的下方候选点位于同一行的顶点,即,将第二内侧分组中的第三行的顶点75和76更新为第二内测分组的边界点,更新后得到的边界点如图10C所示。

在本发明实施例中,将上下左右四个方向调整后的边界点依次连接,将每个方向的边界点依次连接后构成的封闭区域作为QR码模块所在区域,如图11所示的除去封闭区域的边界点之后的阴影区域即为本发明实施例中确定的QR码模块所在的区域。另外,如果除去边界点之后的区域内不存在上述所说的顶点,则不去除封闭区域的边界点,将该封闭区域作为确定的QR码模块所在的区域。

图12为本发明实施例提供的一种QR码模块边界调整装置结构示意图,该装置包括:

生成模块121,用于根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图;

划分模块122,用于根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块;

调整模块123,用于针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。

所述生成模块121,具体用于针对每个像素点,确定与该像素点左右相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的水平梯度值,将每一列的像素点的水平梯度值累加得到水平方向的梯度投影图;针对每个像素点,确定与该像素点上下相邻的两个像素点的灰度值的差的绝对值,将所述绝对值作为该像素点的垂直梯度值,将每一行的像素点的垂直梯度值累加得到垂直方向的梯度投影图。

所述划分模块122,具体用于将所述水平方向的梯度投影图的水平方向划分为第一数量的范围区间,识别每个第一范围区间中梯度值的峰值,确定每个峰值所对应的每个目标列,在所述QR码所在的区域中采用每个目标列进行列划分;将垂直方向的梯度投影图的垂直方向划分为第二数量的范围区间,识别每个第二范围区间中梯度值的峰值,确定每个峰值所对应的每个目标行,在所述QR码所在的区域中采用每个目标行进行行划分。

所述调整模块123,具体用于将每个矩形区域的每个顶点划分到左右两个半区,将左方向作为第一方向,针对左半区的顶点,根据每个顶点与该顶点相邻且位于该顶点右侧的顶点的灰度值差的绝对值,确定每个顶点在左方向的梯度值;将右方向作为第一方向,针对右半区的顶点,根据每个顶点与该顶点相邻且位于该顶点左侧的顶点的灰度值差的绝对值,确定每个顶点在右方向的梯度值;将每个矩形区域的每个顶点划分到上下两个半区,将上方作为第一方向,针对上半区的顶点,根据每个顶点与该顶点相邻且位于该顶点下方的顶点的灰度值差的绝对值,确定每个顶点在上方的梯度值;将下方作为第一方向,针对下半区的顶点,根据每个顶点与该顶点相邻且位于该顶点上方的顶点的灰度值差的绝对值,确定每个顶点在下方的梯度值。

所述调整模块123,具体用于如果候选点为左方向候选点,且所述候选点位于外侧,将左方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的左方向候选点,将与该最内侧的左方向候选点位于同一列的顶点作为该外侧组左方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的左方向候选点,将与该最外侧的左方向候选点位于同一列的顶点作为该内侧分组左方向边界点;如果候选点为右方向候选点,且所述候选点位于外侧,将右方向候选点划分为上下两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的右方向候选点,将与该最内侧的右方向候选点位于同一列的顶点作为该外侧组右方向边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的右方向候选点,将与该最外侧的右方向候选点位于同一列的顶点作为该内侧分组右方向边界点;如果候选点为上方候选点,且所述候选点位于外侧,将上方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的上方候选点,将与该最内侧的上方候选点位于同一行的顶点作为该外侧组上方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的上方候选点,将与该最外侧的上方候选点位于同一行的顶点作为该内侧分组上方边界点;如果候选点为下方候选点,且所述候选点位于外侧,将下方候选点划分为左右两个外侧组,针对每个外侧组,识别该外侧组中位于最内侧的下方候选点,将与该最内侧的下方候选点位于同一行的顶点作为该外侧组下方边界点;针对内测组,将内侧组划分为至少一个内侧分组,针对每个内侧分组,识别该内侧分组中位于最外侧的下方候选点,将与该最外侧的下方候选点位于同一行的顶点作为该内侧分组下方边界点。

所述装置还包括:

判断模块124,用于判断每个内侧分组的左方向边界点是否位于同一列,如果是,触发调整模块123。

所述调整模块123,还用于如果每个内侧分组的左方向边界点不位于同一列,针对内侧分组中的左方向边界点,确定位于最内侧的左方向边界点,将内侧分组左方向边界点更新为与该最内侧的左方向候选点位于同一列的顶点。

所述判断模块124,还用于判断每个内侧分组的右方向边界点是否位于同一列,如果是,触发调整模块123;判断每个内侧分组的上方边界点是否位于同一行,如果是,触发调整模块123;判断每个内侧分组的下方边界点是否位于同一行,如果是,触发调整模块123。

所述调整模块123,还用于如果每个内侧分组的右方向边界点不位于同一列,针对内侧分组中的右方向边界点,确定位于最内侧的右方向边界点,将内侧分组右方向边界点更新为与该最内侧的右方向候选点位于同一列的顶点;如果每个内侧分组的上方边界点不位于同一行,针对内侧分组中的上方边界点,确定位于最内侧的上方边界点,将内侧分组上方边界点更新为与该最内侧的上方候选点位于同一行的顶点;如果每个内侧分组的下方边界点不位于同一行,针对内侧分组中的下方边界点,确定位于最内侧的下方边界点,将内侧分组下方边界点更新为与该最内侧的下方候选点位于同一行的顶点。

本发明实施例提供一种QR码模块边界调整的方法及装置,所述方法包括:根据定位出的QR码所在的区域,及该区域中每个像素点的灰度值,生成灰度值的梯度投影图;根据所述梯度投影图中的每个峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块;针对每个模块,按照预设的划分方法将该模块划分为多个矩形区域;针对每个矩形区域的每个顶点,按照预设的方法确定每个顶点在四个第一方向的梯度值;针对每个第一方向,根据与该第一方向对应的行或列,在每行或每列中将梯度值的最大值对应的顶点作为该第一方向的候选点,并针对每个第一方向将每个候选点划分为内外两个第二方向,针对每个第二方向,对候选点进行调整得到每个边界点,将调整后的边界点依次连接;将所述调整后的边界点依次连接后构成的封闭区域作为QR码模块所在区域。由于在本发明实施例中,电子设备通过梯度投影图中的峰值,对所述QR码所在的区域进行划分,得到QR码中的每个模块,针对每个模块,将该模块划分为多个矩形区域,根据每个矩形区域的每个顶点在四个方向的梯度值,确定出该模块上下左右四个方向的候选点,并对四个方向的候选点进行调整得到边界点,将该调整后的边界点依次连接,得到该模块的边界,这样就会将模块中的噪声过滤掉,使得在过曝,低对比度,高噪声的环境下,可以更准确的确定模块,进而提高了采样模块信息的准确度和解码的准确率。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号