本发明涉及防伪技术,尤其涉及一种基于二维码的防伪方法。
背景技术:
市场对于商品的防伪有广泛的需求,物理层面的防伪效果虽然好但是成本较高。随着二维码识读设备的普及,利用二维码进行防伪具有其特殊的优势,不但成本较低也可以对产品进行溯源,利用移动网络还可以和数据库进行连接获取更多的产品信息。传统的二维码如qr码需要一块干净的区域用于放置,且qr码等作为一种公开的技术可以随意伪造,利用手机自带的扫码器鉴定容易被连接到一个不安全的网址,不但失去防伪的功能也会带来意外的损失。
技术实现要素:
本发明要解决的技术问题,在于提供一种基于二维码的防伪方法,实现多重的防伪,且二维码与logo图标相融合,给造假的复制和篡改带来一定困难,且无法更改携带的信息。
本发明要解决的技术问题是这样实现的:
一种基于二维码的防伪方法,包括如下步骤:
步骤11:将每一产品对应一独立编号s,并对该独立编号生成一索引i;
步骤12:将所述索引i通过私钥进行加密获得一加密编号e,所述加密编号e与所述索引i一一对应;
步骤13:对所述加密编号e进行编码并生成二维码;
步骤14:将所述二维码与logo图标进行融合形成防伪图,所述二维码置于上层,所述logo图标置于下层,所述二维码黑色模块与logo图标的重叠区域显示所述黑色模块,所述二维码白色模块与logo图标的重叠区域显示所述logo图标;
步骤15:获得一产品后,先对产品带有的防伪图进行采图,并从所述防伪图中提取二维码;
步骤16:对所述二维码解码并获取待检编号e1;
步骤17:将所述待检编号e1通过公钥进行解密获得索引i1,所述公钥与所述私钥相对应;
步骤18:利用所述索引i1查找与之对应的加密编号e,并比较所述待检编号e1与所述加密编号e,如相同,则为正品。
进一步地,在步骤11中,将所述独立编号s生成哈希值作为索引i。
进一步地,所述公钥和私钥基于非对称加密算法。
进一步地,所述二维码为堆叠式二维码,所述堆叠式二维码包括等距矩阵排列的复数个码区和用于分隔各所述码区的定位区;每一所述码区包括矩阵排列的复数行复数列的识别单元,且在同一所述码区内,每相邻两行识别单元之间设有一行空白单元,每相邻两列识别单元之间设有一列空白单元;每一所述空白单元为由白色模块组成的3×3模块;每一所述识别单元为由黑色模块和白色模块组成的3×3模块,所述识别单元的3×3模块包括两个黑色模块和7个白色模块,同一所述识别单元中的两个黑色模块之间间隔至少一个白色模块的距离,每一所述识别单元对应存储一个四位二进制串,所述定位区由识别单元和空白单元相间设置而成,所述定位区与所述码区之间间隔一排空白单元格,所述定位区通过预先选取的一种或几种特定的识别单元按一定规则排列得到,以便快速区分和定位;每一所述码区均携带有一完整的加密编号e。
进一步地,所述黑色模块与白色模块均为正方形色块或圆形色块。
进一步地,所述logo图标分为图形部分和空白部分,在步骤14中,将logo图标图形部分设置为深色灰度值,将logo图标空白部分设置为浅色灰度值,将所述二维码的黑色模块设置为中间灰度值,所述中间灰度值大小应处于所述深色灰度值和所述浅色灰度值的中间范围,所述黑色模块像素点的大小应显著小于logo图标,不大于logo图标中文字中笔画的宽度。
进一步地,在步骤15中,对采到的防伪图做灰度直方图统计,在所述灰度直方图中找到较深的灰度值作为典型深,找到较浅的灰度值作为典型浅,其中典型深代表logo图标图形部分,典型浅代表logo图标空白部分,所述识别单元中黑色模块的灰度值处于所述典型深和典型浅灰度值的中间处,将位于灰度直方图中处于典型深和典型浅中间一定范围内的像素作为待解码区域进行解码。
进一步地,所述解码过程包括如下步骤:
步骤81、将所述待解码区的图像转成二值图;
步骤82、获取二值图中所有粒子中心坐标以及粒子的面积值,过滤掉面积值不符合要求的粒子;
步骤83、遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
步骤84、获取一个独立码区所需的复数个识别单元;
步骤85、根据所述识别单元对应的四位二进制串,依次遍历所述识别单元进行解码,得到所述二维码的二进制串。
进一步地,所述步骤82还包括:统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述待解码区进行旋转,确保所述待解码区为正的图像。
进一步地,所述步骤82中过滤面积值不符合要求的粒子的具体方式为:采用粒子统计的方法获取出现次数最多的面积值作为标准值,根据所述标准值设定上限值和下限值,过滤掉其中面积值大于所述上限值以及面积值小于所述上限值的粒子。
本发明具有如下优点:
1、这种防伪方法通过公钥和私钥的加密以及二维码和logo图标融合实现双重防伪。
2、防伪位置结合logo图标具有显著特征能够一眼辨认,造假者绕开这种图案会被一眼辨认出来,可以防止造假者对编码内容的篡改和批量的复制。
3、由于本发明二维码内部留出足够多的空隙,能够很好的融入其他非编码图形(例如logo图标)之中,因此可以生成大片的编码区域和大片的logo图标,logo图标以均匀的码区作为背景进行展示,较现有的二维码中的logo图标更为清晰明了,且不影响美感。
4、通过堆叠的多个码区形成一个片区,方便用户随意选择一块区域进行扫码操作,实现便捷扫码,且这种均匀分布的堆叠式二维码在解码识别中抗干扰性强,可通过统计的方法区分出属于二维码的模块和非编码的图形,在剔除非编码图形后,利用重复堆叠的二维码可以互相验证,进一步提高二维码鲁棒性,且在出现一部分二维码损坏时,用户还可以使用其他部位进行扫码,不影响正常扫码,大大提高用户扫码体验。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明防伪方法的流程图。
图2为本发明堆叠式二维码与logo图标融合示意图。
图3为本发明单独一个码区示意图。
图4为图3的a部分放大图。
图5为本发明一实施例中识别单元与四位二进制串的对应关系示意图。
图6为本发明堆叠式二维码的解码流程图。
具体实施方式
如图1所示,本发明的基于二维码的防伪方法,包括如下步骤:
步骤11:将每一产品对应一独立编号s,并对该独立编号生成一索引i;
步骤12:将所述索引i通过私钥进行加密获得一加密编号e,所述加密编号e与所述索引i一一对应;
步骤13:对所述加密编号e进行编码并生成二维码;
步骤14:将所述二维码与logo图标进行融合形成防伪图,所述二维码置于上层,所述logo图标置于下层,所述二维码黑色模块与logo图标的重叠区域显示所述黑色模块,所述二维码白色模块与logo图标的重叠区域显示所述logo图标;
步骤15:获得一产品后,先对产品带有的防伪图进行采图,并从所述防伪图中提取二维码;
步骤16:对所述二维码解码并获取待检编号e1;
步骤17:将所述待检编号e1通过公钥进行解密获得索引i1,所述公钥与所述私钥相对应;
步骤18:利用所述索引i1查找与之对应的加密编号e,并比较所述待检编号e1与所述加密编号e,如相同,则为正品。
更为具体地,在步骤11中,厂家对生产的每件产品赋予独立编号s,并且将独立编号s生成哈希值作为该件产品信息在数据库中的索引i。
在步骤12中,利用非对称加密算法(可以是rsa、elgamal、背包算法、rabin、d-h、ec等)中的私钥对产品编号的哈希值即索引i进行加密生成新的编号即加密编号e,将加密编号e存储在索引为索引i的数据中,私钥由厂家持有。
在步骤17中,解码后,检测者持有厂家发放的公钥,利用公钥对解码得到的内容待检编号e1进行解密,得到索引i1。
在步骤18中,检测者根据索引i1生成链接,并且发送待检编号e1的内容,数据库根据索引i1进行索引,并且比对接收到的待检编号e1和索引i1下存储的加密编号e,如果一致就说明为正品,发送相关产品信息给检测者。
这种这种防伪方法通过公钥和私钥的加密以及二维码和logo图标融合和采图实现双重防伪,大大提高防伪的力度。
如图2至图5所示,本发明中所述二维码为堆叠式二维码,所述堆叠式二维码包括等距矩阵排列的复数个码区和用于分隔各所述码区的定位区;每一所述码区包括矩阵排列的复数行复数列的识别单元,且在同一所述码区内,每相邻两行识别单元之间设有一行空白单元,每相邻两列识别单元之间设有一列空白单元;每一所述空白单元为由白色模块组成的3×3模块(见图4中的a);每一所述识别单元为由黑色模块和白色模块组成的3×3模块(见图中的b),所述识别单元的3×3模块包括两个黑色模块和7个白色模块,同一所述识别单元中的两个黑色模块之间间隔至少一个白色模块的距离,每一所述识别单元对应存储一个四位二进制串,如图5所示,按照黑色模块的不同位置组合的识别单元有16种,恰好匹配四位二进制的16种数值,预先对每一种识别单元绑定一个四位二进制串,使得一种识别单元对应一个四位二进制数。
具体描述这种堆叠式二维码的编码方法,可以先根据加密编码e根据现有二维码的编码方式先生成一现有矩阵二维码,去除定位部,得到数据部,所述现有矩阵二维码为qr码或dm码;
然后、依次提取所述数据部内的2×2模块,根据所述2×2模块存储的四位二进制串将所述2×2模块转换为对应的识别单元;
再然后、将所有转换得到的识别单元依次排列成与所述现有矩阵二维码对应的复数行复数列,并在每相邻两行识别单元之间插入一行空白单元,每相邻两列识别单元之间插入一列空白单元,得到本发明所述的堆叠式二维码的一个码区。
又或者,可以将加密编码e先转换为二进制编码串,然后将所述二进制编码串分为多组四位二进制串,每一四位二进制串均对应一个识别单元,再将这些识别单元排序成为一个码区。
以上描述了本发明的具体编码方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
每一所述码区均携带有一完整的加密编号e,而同一个堆叠式二维码中所有的码区都是相同的,这些码区可以矩阵方式无限制堆叠,而这种码区中黑色模块的密度较低大小较小,因此只要logo图标区域大于一个码区,我们可以把堆叠式二维码设置为任意形状任意大小,以此与logo图标更好的融合。
所述码区与码区之间还可通过设置定位区进行快速定位,提高识别效率,所述定位区由识别单元和空白单元相间设置而成,所述定位区与所述码区之间间隔一排空白单元格(即一行或一列的空白单元),且所述定位区中的识别单元可根据需要指定一种或多种识别单元按一定规律排列,以便快速区分和定位,例如所述定位区的识别单元可以指定都用两黑色模块位置关系为水平设置的这一种识别单元,也可以根据需要选择几种识别单元按一定的规则进行排列,且可以指定定位区的十字交叉处的识别单元为其中两黑色模块位置关系为水平设置或竖直设置的识别单元,以便与码区的识别单元排列关系区别开,从而实现快速定位,也便于调整图像方向并快速获取码区位置。又比如,在几种识别单元中选择0°、90°、45°、135°这几种随机组合形成定位区。
所述黑色模块与白色模块可以为大小形状一致的色块,例如均为正方形色块或圆形色块等。
本发明中二维码与logo图标的融合过程和采图过程具体为,所述logo图标分为图形部分和空白部分,在步骤14中,将logo图标图形部分设置为深色灰度值,将logo图标空白部分设置为浅色灰度值,将所述二维码的黑色模块设置为中间灰度值,所述中间灰度值大小应处于所述深色灰度值和所述浅色灰度值的中间范围,可以将深色灰度值设置为h,将浅色灰度值设置为l,设定g=1/2(h+l),将中间灰度值设定为g或g附近的取值,使得深色灰度值、浅色灰度值、中间灰度值之间具有显著区别,便于未来的采图和解码,所述黑色模块像素点的大小应显著小于logo图标,不大于logo图标中文字中笔画的宽度。这样最终形成的叠加后的图案中黑色模块的像素点小于商标图形整体上不会影响商标的显示,且又明显有打码的特征能够一眼辨认。
在步骤15中,对采到的防伪图做灰度直方图统计,在所述灰度直方图中找到较深的灰度值作为典型深,找到较浅的灰度值作为典型浅,其中典型深代表logo图标图形部分,典型浅代表logo图标空白部分,所述识别单元中黑色模块的灰度值处于典型深和典型浅灰度值的中间处,将位于灰度直方图中处于典型深和典型浅中间一定范围内的像素作为待解码区域进行解码。
更加具体的实施例为:
融合时候:logo图标用深色、浅色两种,类似二值图,深浅两种差异越大越好,例如是黑和白。而二维码黑色模块的灰度值取其中间,例如灰。表示为:
logo图标空白部分:白
二维码的黑色模块:灰
logo图标图形部分:黑
采图时候:采集的图像中适当大小的区域,以此为一细分区域,细分区域中需要同时包括二维码单元和logo图标,保证细分区域中灰度值包括黑、白、灰三种,做直方图,将直方图前段部分(例如位于前1/4或1/5或1/6灰度)的像素作为典型深,将直方图后段部分的(例如位于后1/4或1/5或1/6灰度)的像素作为典型浅,砍掉典型深和典型浅的像素后,剩余的像素就是二维码单元的黑色模块,取两个合理阈值(例如选取典型深和典型浅范围内的中间的1/3处,这是为了设定一个宽容度,保证可以找全所有的黑色模块,虽然设定的黑色模块其实就是深色灰度值和浅色灰度值的中间值,但是在采图时用范围来包括才能保证采图的完整性。)将阈值范围内的灰度值的像素作为标准单元。之后按标准单元灰度值向外寻找其他单元。
如图6所示,本发明中所述解码过程包括如下步骤:
步骤81、将所述待解码区的图像转成二值图;
步骤82、获取二值图中所有粒子中心坐标以及粒子的面积值,过滤掉面积值不符合要求的粒子;
步骤83、遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
步骤84、获取一个独立码区所需的复数个识别单元;
步骤85、根据所述识别单元对应的四位二进制串,依次遍历所述识别单元进行解码,得到所述二维码的二进制串。
更为具体地,所述步骤82还包括:统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述待解码区进行旋转,确保所述待解码区为正的图像。
更为具体地,所述步骤82中过滤面积值不符合要求的粒子的具体方式为:采用粒子统计的方法获取出现次数最多的面积值作为标准值,根据所述标准值设定上限值和下限值,过滤掉其中面积值大于所述上限值以及面积值小于所述上限值的粒子。
在扫描本发明的带定位区的堆叠式二维码时,只需要随意扫码其中一部分二维码,只需要识别其中一个码区即可进行解码,具体步骤如下:
获取所述带定位区的堆叠式二维码的图像,对所述带定位区的堆叠式二维码图像进行滤波(比如高斯滤波或均值滤波等);
获取上述图像中所有粒子中心坐标以及粒子的面积值,过滤掉logo图标(即采图过程)和面积值不符合要求的粒子,其中,过滤面积值不符合要求的粒子具体为:筛选掉其中面积值大于一上限值和面积值小于上限值的粒子,得到符合条件的粒子,具体的上限值与下限值可根据统计所有粒子面积值,以出现次数最多的面积值作为标准值,在标准值增加或减少一定值来设定上限值和下限值。
统计数量最多的且距离最小的两粒子的角度,根据所述角度对所述图像进行旋转正位,得到正的图像,便于识别,具体旋转方式可通过统计数量最多的且距离最小的两粒子(粒子对应的是黑色模块)的角度,根据所述角度对所述图像进行旋转正位,由于当识别单元中两个黑色模块处于在同一水平线上或同一竖直线上时,两个黑色模块的距离是各种模式中距离最小的模式,因此可通过统计的方法查找这些0°或90°的识别单元,并利用这些识别单元对图像信息位置的调整;
遍历所述粒子,通过计算每一所述粒子的中心坐标与其他粒子的中心坐标之间的距离,将彼此距离最小的两所述粒子进行配对,每两个配对的粒子形成一识别单元;
按预先设定的协议查找定位区,根据所述定位区找到一个独立的码区所需的复数个识别单元,即通过找到定位区,根据定位区的位置找一个码区,可以为一个完整码区,也可以是在定位区四周的识别单元拼接成的一个码区进行解码,大大减小了所需要的最小解码区域;在没有定位区的情况下,可通过重复部位判断一个码区的识别单元。
依次遍历所述码区对应的识别单元,根据所述识别单元对应的四位二进制串,获得所述一个码区对应的二进制串,之后可根据需要选择现有的二维码(比如qr算法、dm解码等)解码算法或自定义的解码方法做进一步解码操作,然后获得码区对应的加密编号e,并进行后续步骤。
本发明防伪位置结合logo图标具有显著特征能够一眼辨认,造假者绕开这种图案会被一眼辨认出来,可以防止造假者对编码内容的篡改和批量的复制。堆叠式二维码内部留出足够多的空隙,能够很好的融入其他非编码图形(例如logo图标)之中,因此可以生成大片的编码区域和大片的logo图标,该logo图标的大小明显大于一个识别单元的大小,logo图标以均匀的码区作为背景进行展示,较现有的二维码中的logo图标更为显目,且不影响美感。通过堆叠的多个码区形成一个片区,方便用户随意选择一块区域进行扫码操作,实现便捷扫码,且这种均匀分布的堆叠式二维码在解码识别中抗干扰性强,可通过统计的方法区分出属于二维码的模块和非编码的图形,在剔除非编码图形后,利用重复堆叠的二维码可以互相验证,进一步提高二维码鲁棒性,且在出现一部分二维码损坏时,用户还可以使用其他部位进行扫码,保证正常扫码,大大提高用户扫码体验,在本发明中,剔除编码图形的方式可以通过颜色、形状、面积、灰度等方式与码区进行区分与筛选,提高准确度,另外还通过设置定位区,以便快速查找到一个解码用的码区所需的识别单元,大大提高解码效率,且当存在不同码区堆叠的时候,还可以通过所述定位区去判断扫描的码区具体是哪一个码区。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。