本发明涉及二维码,尤其涉及一种基于图像嵌入的二维码生成方法。
背景技术:
1、二维码作为当下使用场景广泛的一种二维条码,它是由正方形黑白模块在二维图像上按一定规律排列以记录信息的一种图像,平时生活中多用于移动支付、社交软件、o2o、商品广告等应用场景。二维码外观中的黑白模块杂乱无章、视觉效果差、不具备美感,而在二维码中嵌入公司商标或人物头像可以极大地提高二维码的观感。
2、二维码具有能够被快速解码、嵌入数据量大等优势。此外,二维码使用reed-solomon编码,具有一定的纠错能力。如今智能手机已经十分普及,二维码也更加贴近我们的日常生活,不管是使用手机收付款,还是用餐时的自助扫码点餐,亦或是社交软件的扫码交友,以及各大移动端应用都配备的二维码扫码功能,比如扫码登录,这些都展现了二维码作为特定信息载体的便捷之处。
3、美化二维码过程中的主要难点在于:如何将我们想要的图像嵌入到二维码中,又能保证二维码各种不同的扫码器成功扫码并解码,即保证扫码成功率和美化后二维码的鲁棒性,在使二维码愈加符合大众审美的同时提高其扫码成功率和鲁棒性。
技术实现思路
1、为了解决上述问题,本发明提出了一种基于图像嵌入的二维码生成方法。
2、具体方案如下:
3、一种基于图像嵌入的二维码生成方法,包括以下步骤:
4、s1:提取待嵌入图像的视觉中心区域,得到原始视觉图像;
5、s2:将原始视觉图像转换为灰度图后,得到灰度视觉图像,并计算灰度视觉图像对应的灰度阈值;
6、s3:基于灰度视觉图像中各像素点与灰度阈值的大小关系,调整原始视觉图像中对应像素的r、g、b三通道的值,以增大亮暗部分的区别,得到中间视觉图像;
7、s4:根据二维码的模块数,将中间视觉图像等分为相同数量个模块,并基于各模块的灰度值与灰度阈值的大小关系,将各模块分类为亮模块和暗模块;
8、s5:生成一张与二维码的像素分辨率相同的空白图像,将亮模块在空白图像中的对应像素填充为白色,将暗模块在空白图像中的对应像素填充为黑色后,得到二值视觉图像;
9、s6:将二值视觉图像视为一个二维码后,根据二维码的数据读取规则,得到二值视觉图像对应的图像rs码;
10、s7:获取二维码的rs码,并将二维码rs码的填充位对应内容更改为图像rs码的填充位对应内容后,基于二维码rs码的原始消息位和更改后的填充位生成图像rs码的纠错码;
11、s8:构建rs码上三角纠错矩阵,将二维码rs码的纠错位与图像rs码的纠错位进行逐位比较,如果值相同,则继续比较下一位;如果不同,则从rs码上三角纠错矩阵中选择上三角矩阵的相同位置为1且前面均为0的行,将选择的行与二维码rs码进行异或,之后基于异或后的结果更新二维码rs码后再进行下一位的比较,重复直至比较至最后一位后,将得到的最新二维码rs码嵌入二维码中得到二值视觉二维码;
12、s9:将二值视觉二维码的模块大小和颜色进行调整,得到视觉二维码。
13、进一步的,步骤s1中提取待嵌入图像的视觉中心区域之前,还包括将待嵌入图像调整为与二维码图像的像素分辨率相同的图像。
14、进一步的,将待嵌入图像调整为与二维码图像的像素分辨率相同的图像之前,还包括判断待嵌入图像是否为正方形,如果不是,则将其填充为正方形,填充区域各像素的颜色为白色。
15、进一步的,视觉中心区域为圆形区域。
16、进一步的,步骤s1中获取视觉图像的过程中,将待嵌入图像的视觉中心区域之外的图像调整为白色,且在视觉中心区域的图像与视觉中心区域之外的图像之间采用渐变过渡。
17、进一步的,绘制灰度视觉图像对应的灰度直方图,基于灰度直方图得到拟合曲线,并在设定的中间灰度值区间内,计算拟合曲线中各点的斜率,将斜率最大值对应的灰度值作为灰度阈值。
18、进一步的,步骤s3中的调整方法为:通过下式计算各像素点所需的灰度变化量σ:
19、
20、其中,γ和μ均为影响图像亮暗区分程度的参数,x表示像素点的灰度值与灰度阈值的差值;
21、判断各像素点的灰度值与灰度阈值的大小关系,使各像素点的r、g、b三通道的值增加或减小该灰度变化量σ。
22、进一步的,步骤s4中在区分亮模块和暗模块时,将每个模块等分为3×3个小模块,将中央小模块包含的各像素的灰度平均值作为判断对应模块是亮模块还是暗模块的标准。
23、进一步的,rs码上三角纠错矩阵的构建方法包括:
24、设定rs码上三角纠错矩阵由左侧的数据位矩阵和右侧的纠错位矩阵拼接组成,其中,数据位矩阵的列的数量为rs码中消息位加填充位的长度,纠错位矩阵的列的数量为rs码中纠错位的长度;
25、将数据位矩阵中对应rs码的消息位的值均设置为0,对应于rs码的填充位的值设置为不全为0,且不同行对应于rs码的填充位的值不同;
26、基于数据位矩阵中每一行的值计算得到该行对应的纠错码,将得到的纠错码填充到纠错位矩阵的对应行内;
27、对rs码上三角纠错矩阵中的各行与其他行进行异或操作,使得纠错位矩阵形成上三角矩阵。
28、进一步的,步骤s9中调整的方法为:
29、s901:将视觉二维码划分为中央和四周两个区域;
30、s902:通过下式对四周区域中各暗模块的颜色进行调整:
31、
32、其中,r、g、b分别表示中间视觉图像中灰度值小于设定的灰度临界值的所有像素点的r、g、b三通道的值的平均值,(r,g,b)c表示四周区域中各暗模块调整后的r、g、b三通道的值,ya表示基于(r,g,b)c计算的灰度值,y表示灰度阈值;
33、s903:在中央区域中的各模块中划分处于模块中间的中间子模块和处于中间子模块之外的边缘子模块,设置不同模块对应的中间子模块的大小沿着二维码边缘向中央的方向递减,且设置中间子模块的最大值为原始模块大小,中间子模块的最小值为原始模块的九分之一大小;
34、s904:基于中间视觉图像中各像素点的颜色对中央区域中的各模块的对应像素点的颜色进行修改;
35、s905:判断中央区域中各模块的中间子模块包括的所有像素点中是否存在灰度值不属于对应的亮模块或暗模块的灰度值范围的像素点,如果存在,将这些像素点的r、g、b三通道的值修改为其他所有属于对应的亮模块或暗模块的灰度值范围的像素点的r、g、b三通道的值的平均值。
36、本发明采用如上技术方案,生成过程简单,生成的视觉二维码不消耗其自身的纠错能力,在具有良好美化效果的同时,保证了美化后二维码的扫码成功率和鲁棒性。
1.一种基于图像嵌入的二维码生成方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:步骤s1中提取待嵌入图像的视觉中心区域之前,还包括将待嵌入图像调整为与二维码图像的像素分辨率相同的图像。
3.根据权利要求2所述的基于图像嵌入的二维码生成方法,其特征在于:将待嵌入图像调整为与二维码图像的像素分辨率相同的图像之前,还包括判断待嵌入图像是否为正方形,如果不是,则将其填充为正方形,填充区域各像素的颜色为白色。
4.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:视觉中心区域为圆形区域。
5.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:步骤s1中获取视觉图像的过程中,将待嵌入图像的视觉中心区域之外的图像调整为白色,且在视觉中心区域的图像与视觉中心区域之外的图像之间采用渐变过渡。
6.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:绘制灰度视觉图像对应的灰度直方图,基于灰度直方图得到拟合曲线,并在设定的中间灰度值区间内,计算拟合曲线中各点的斜率,将斜率最大值对应的灰度值作为灰度阈值。
7.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:步骤s3中的调整方法为:通过下式计算各像素点所需的灰度变化量σ:
8.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:步骤s4中在区分亮模块和暗模块时,将每个模块等分为3×3个小模块,将中央小模块包含的各像素的灰度平均值作为判断对应模块是亮模块还是暗模块的标准。
9.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:rs码上三角纠错矩阵的构建方法包括:
10.根据权利要求1所述的基于图像嵌入的二维码生成方法,其特征在于:步骤s9中调整的方法为:
