本发明涉及二维码技术,尤其涉及一种带定位区的堆叠式二维码及其生成和识别方法。
背景技术:
二维码因其具有存储量大、保密性高、追踪性高、抗损性强等特点,被广泛运用于各行各业中。目前常见的二维码多为矩阵码(如dm码和qr码),其用黑、白色块表示二进制的1和0,将黑、白色块按一定组合方式堆叠形成二维码,该二维码包括用于定位的定位部和用于存储信息的数据部,但现有的这种矩阵二维码的因其色块比较密集,为了提高解码效率,一般需要选择一块独立干净的平整的区域安放码区。由于目前二维码都是一个单独码区,受环境影响比较大,如扫码位置直接影响到光线角度等,因此需要跑到特定一个位置进行扫码,而不能在多个位置实现快速解码,当出现二维码部分损坏或表面不平整的情况,也不能正常识别与解码。
技术实现要素:
本发明要解决的技术问题之一,在于提供一种带定位区的堆叠式二维码,便于用户多方位的快速扫码,提高扫码成功率,提升用户体验。
本发明要解决的技术问题之一是这样实现的:一种带定位区的堆叠式二维码,包括等距矩阵排列的复数个码区和用于分隔各所述码区的定位区;
每一所述码区包括矩阵排列的复数行复数列的识别单元,且在同一所述码区内,每相邻两行识别单元之间设有一行空白单元,每相邻两列识别单元之间设有一列空白单元;
每一所述空白单元为由白色模块组成的3×3模块;
每一所述识别单元为由黑色模块和白色模块组成的3×3模块,所述识别单元的3×3模块包括两个黑色模块和7个白色模块,同一所述识别单元中的两个黑色模块之间间隔至少一个白色模块的距离,每一所述识别单元对应存储一个四位二进制串;
所述定位区由识别单元和空白单元相间设置而成,所述定位区与所述码区之间间隔一排空白单元格。
进一步的,所述黑色模块与白色模块均为正方形色块或圆形色块。
进一步的,所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位。
本发明要解决的技术问题之二,在于提供一种上述带定位区的堆叠式二维码的生成方法,得到一种便于用户多方位扫码且扫码成功率高的二维码,提升用户体验。
本发明要解决的技术问题之二是这样实现的:一种上述带定位区的堆叠式二维码的生成方法,包括如下步骤:
步骤41、获取一现有二维码,去除定位部,得到数据部;
步骤42、依次提取所述数据部内的2×2模块,根据所述2×2模块存储的四位二进制串将所述2×2模块转换为对应的识别单元;
步骤43、将所有转换得到的识别单元依次排列成与所述现有矩阵二维码对应的复数行复数列,并在每相邻两行识别单元之间插入一行空白单元,每相邻两列识别单元之间插入一列空白单元,得到一个完整的码区;
步骤44、将复数个所述码区通过矩阵排列,并在各所述码区之间设置定位区,得到所述带定位区的堆叠式二维码,所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位。
进一步的,所述现有二维码为带纠错功能的矩阵二维码。
本发明要解决的技术问题之三,在于提供一种上述带定位区的堆叠式二维码的识别方法,实现快速识别二维码,提高扫码成功率,提升用户体验。
本发明要解决的技术问题之三是这样实现的:一种上述带定位区的堆叠式二维码的识别方法,包括如下步骤:
步骤61、获取所述带定位区的堆叠式二维码的图像,将所述带定位区的堆叠式二维码的图像转成二值图;
步骤62、获取二值图中所有粒子中心坐标以及粒子的面积值,过滤掉面积值不符合要求的粒子;
步骤63、遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
步骤64、按预先设定的协议查找定位区,根据所述定位区找到一个独立的码区所需的复数个识别单元;
步骤65、依次遍历所述码区对应的识别单元,根据所述识别单元对应的四位二进制串,获得所述码区对应的二进制串。
进一步的,所述步骤61还包括对所述带定位区的堆叠式二维码的图像进行滤波。
进一步的,所述步骤62中的“过滤掉面积值不符合要求的粒子”具体为:采用粒子统计的方法获取出现次数最多的面积值作为标准值,根据所述标准值设定上限值和下限值,过滤掉其中面积值大于所述上限值以及面积值小于所述上限值的粒子。
进一步的,所述步骤62还包括:统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述二值图进行旋转,确保所述二值图为正的二值图。
进一步的,所述方法还包括步骤66、根据需要选择现有二维码解码算法做进一步解码操作。
本发明具有如下优点:
1、通过设置堆叠式二维码,可以将该堆叠式二维码排布到整个一个大的区域中,当用户需要扫码时,无需特地跑到某一位置,可任意扫一个角落即可实现扫码操作,大大方便扫码操作,也使得在出现一部分二维码损坏时,用户还可以使用其他部位进行扫码;
2、通过设置定位区,可以快速查找到一个解码用的码区所需的识别单元,大大提高解码效率,且当存在不同码区堆叠的时候,还可以通过所述定位区去判断扫描的码区具体是哪一个码区;
3、本发明的二维码均匀排布,不会出现多色块密集情况,比密集排布的二维码识别起来效率更高,大大提高了其识别与解码效率,且零散的二维码可作为背景进行排布,不会影响整体美观。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明带定位区的堆叠式二维码示意图。
图2为本发明一个独立的码区示意图。
图3为图2的a部分放大图。
图4为本发明一实施例中识别单元与四位二进制串的对应关系示意图。
图5为本发明一种带定位区的堆叠式二维码的生成方法流程图。
图6为本发明一种带定位区的堆叠式二维码的识别方法流程图。
具体实施方式
如图1至图3所示,一种带定位区的堆叠式二维码,包括等距矩阵排列的复数个码区和用于分隔各所述码区的定位区(见图1中b部分);
每一所述码区包括矩阵排列的复数行复数列的识别单元,且在同一所述码区内,每相邻两行识别单元之间设有一行空白单元,每相邻两列识别单元之间设有一列空白单元;
每一所述空白单元为由白色模块组成的3×3模块;
每一所述识别单元为由黑色模块和白色模块组成的3×3模块,所述识别单元的3×3模块包括两个黑色模块和7个白色模块,同一所述识别单元中的两个黑色模块之间间隔至少一个白色模块的距离,每一所述识别单元对应存储一个四位二进制串;
所述定位区由识别单元和空白单元相间设置而成,所述定位区与所述码区之间间隔一排空白单元格,所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位。
本发明中,所述黑色模块与白色模块可以为大小形状一致的色块,例如均为正方形色块或圆形色块等。
如图5所示,本发明一种上述带定位区的堆叠式二维码的生成方法,包括如下步骤:
步骤41、获取一现有二维码,去除定位部,得到数据部,所述现有二维码为带纠错功能的矩阵二维码,例如qr码或dm码等;
步骤42、依次提取所述数据部内的2×2模块,根据所述2×2模块存储的四位二进制串将所述2×2模块转换为对应的识别单元;
步骤43、将所有转换得到的识别单元依次排列成与所述现有矩阵二维码对应的复数行复数列,并在每相邻两行识别单元之间插入一行空白单元,每相邻两列识别单元之间插入一列空白单元,得到一个完整的码区;
步骤44、将复数个所述码区通过矩阵排列,并在各所述码区之间设置定位区,得到本发明带定位区的堆叠式二维码,所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位。
如图6所示,本发明一种上述带定位区的堆叠式二维码的识别方法,包括如下步骤:
步骤61、获取所述带定位区的堆叠式二维码的图像,将所述带定位区的堆叠式二维码的图像转成二值图;该步骤61还包括对所述带定位区的堆叠式二维码的图像进行滤波;
步骤62、获取二值图中所有粒子中心坐标以及粒子的面积值,过滤掉面积值不符合要求的粒子,其中,“过滤掉面积值不符合要求的粒子”具体为:采用粒子统计的方法获取出现次数最多的面积值作为标准值,根据所述标准值设定上限值和下限值,过滤掉其中面积值大于所述上限值以及面积值小于所述上限值的粒子;该步骤62还包括:统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述二值图进行旋转,确保所述二值图为正的二值图
步骤63、遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
步骤64、按预先设定的协议查找定位区,根据所述定位区找到一个独立的码区所需的复数个识别单元;
步骤65、依次遍历所述码区对应的识别单元,根据所述识别单元对应的四位二进制串,获得所述码区对应的二进制串。
所述方法还包括步骤66、根据需要选择现有二维码解码算法做进一步解码操作。
下面结合一具体实施例对本发明做进一步说明:
请再参阅图1至图6,获取一现有二维码,将其转换成本发明的带定位区的堆叠式二维码,具体如下:
获取一现有二维码,去除定位部,得到数据部,所述现有二维码为带纠错功能的矩阵二维码,例如常见的qr码或dm码;
依次提取所述数据部内的2×2模块,根据所述2×2模块存储的四位二进制串将所述2×2模块转换为对应的识别单元,每一所述识别单元为由黑色模块和白色模块组成的3×3模块(见图3中的b),所述识别单元的3×3模块包括两个黑色模块和7个白色模块,同一所述识别单元中的两个黑色模块之间间隔至少一个白色模块的距离,每一所述识别单元对应存储一个四位二进制串,如图4所示,按照黑色模块的不同位置组合的识别单元有16种,恰好匹配四位二进制的16种数值,预先对每一种识别单元绑定一个四位二进制串,使得一种识别单元对应一个四位二进制数;
将所有转换得到的识别单元依次排列成与所述现有矩阵二维码对应的复数行复数列,并在每相邻两行识别单元之间插入一行空白单元,每相邻两列识别单元之间插入一列空白单元,得到一个完整的码区,每一所述空白单元为由白色模块组成的3×3模块(见图3中的a);
将复数个所述码区通过矩阵排列,并在各所述码区之间设置定位区,得到带定位区的堆叠式二维码,所述定位区由识别单元和空白单元相间设置而成,所述定位区与所述码区之间间隔一排空白单元格(即一行或一列的空白单元),所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位,比如所述定位区的识别单元可以指定都用两黑色模块位置关系为水平设置的这一种识别单元,也可以根据需要选择几种识别单元按一定的规则进行排列,且可以指定定位区的十字交叉处的识别单元为两黑色模块位置关系为水平设置或竖直设置的识别单元,以便与码区的识别单元排列关系区别开,从而实现快速定位,也便于调整二值图方向,又比如,在几种识别单元中选择0°、90°、45°、135°这几种随机组合形成定位区。
本发明中,所述黑色模块与白色模块可以为大小形状一致的色块,例如均为正方形色块或圆形色块等。
在扫描本发明的带定位区的堆叠式二维码时,只需要随意扫码其中一部分二维码,获取一个码区所需的最少识别单元个数进行解码,具体步骤如下:
获取所述带定位区的堆叠式二维码的图像,对所述带定位区的堆叠式二维码图像进行滤波,比如可采用高斯滤波或均值滤波等方式进行滤波,将所述带定位区的堆叠式二维码的图像转成二值图;
获取上述二值图中所有粒子中心坐标以及粒子的面积值,过滤掉面积值不符合要求的粒子,即筛选掉其中面积值大于一上限值和面积值小于上限值的粒子,得到符合条件的粒子,具体的上限值与下限值可根据统计所有粒子面积值得到,以出现次数最多的面积值作为标准值设定上限值和下限值,统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述二值图进行旋转正位,得到正的二值图,便于识别,具体旋转方式可通过统计数量最多的且距离最小的两粒子(粒子对应的是黑色模块)的角度,根据所述角度对所述二值图进行旋转正位,由于当识别单元中两个黑色模块处于在同一水平线上或同一竖直线上时,两个黑色模块的距离是各种模式中距离最小的模式,因此可通过统计的方法查找这些0°或90°的识别单元,并利用这些识别单元对二值图信息位置的调整,保证不歪斜即可;
遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
按预先设定的协议查找定位区,根据所述定位区找到一个独立的码区所需的复数个识别单元,即通过找到定位区,根据定位区的位置找一个码区,可以为一个完整码区,也可以是在定位区四周的识别单元拼接成的一个码区(如图1中的c部分,通过不同码区的识别单元提取得到),可以根据定位区,辅助定位区四周的码区中重复部分进行整合,使得即使获取到的不是一个完整码区,也可以正常解码;
依次遍历所述码区对应的识别单元,根据所述识别单元对应的四位二进制串,获得所述一个码区对应的二进制串,之后可根据需要选择现有的qr算法或dm解码算法做进一步解码操作。
另外,本发明的一个码区作为解码的最小解码单元,在现有矩阵二维码只有奇数行或奇数列时,可通过增加一行或一列的全1辅助转换成本发明的一个码区,由于现有矩阵二维码自身一般都带有纠错功能,因此不会影响最后解码结果。
本发明通过设置堆叠式二维码,可以将该二维码排布到整个一个大的区域中,当用户需要扫码时,无需特地跑到某一位置,可任意扫一个角落即可实现扫码操作,大大方便扫码操作,也使得在出现一部分二维码损坏时,用户还可以使用其他部位进行扫码,且零散的二维码可作为背景花纹进行排布,不会影响图标的整体性和美观,提升用户体验;通过设置定位区,可以快速查找到一个解码用的码区所需的最少个数的识别单元,大大提高解码效率;由于二维码均匀排布,不会出现多色块密集情况,比密集排布的二维码识别起来效率更高,进一步提高了其识别与解码效率。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。