本发明涉及二维码技术领域,尤其涉及一种二维码的生成方法及系统。
背景技术:
通常的二维码是用特定的几何图形按一定规律在平面上分布的黑白相间的图形。随着二维码的应用越来越广泛与频繁,这种二维码从外观上看没有特色,不够美观。
技术实现要素:
本发明实施例提供一种二维码的生成方法及系统,以解决现有技术的二维码没有特色,不够美观的问题。
第一方面,提供一种二维码的生成方法,包括:
将背景图像变换为背景灰度图像;
采用基于边缘切向流的高斯差分算子方法处理所述背景灰度图像,得到轮廓图像;
将所述轮廓图像、所述背景灰度图像和第一二维码图像进行融合处理,得到第二二维码图像;
采用lab均匀颜色空间对所述第二二维码图像进行色彩量化处理,得到第三二维码图像;
将所述第三二维码图像的色彩还原,得到第四二维码图像。
第二方面,提供一种二维码图像的生成系统,包括:
变换模块,用于将背景图像变换为背景灰度图像;
高斯差分模块,用于采用基于边缘切向流的高斯差分算子方法处理所述背景灰度图像,得到轮廓图像;
融合模块,用于将所述轮廓图像、所述背景灰度图像和第一二维码图像进行融合处理,得到第二二维码图像;
色彩量化模块,用于采用lab均匀颜色空间对所述第二二维码图像进行色彩量化处理,得到第三二维码图像;
色彩还原模块,用于将所述第三二维码图像的色彩还原,得到第四二维码图像。
本发明实施例,将二维码的生成过程和背景图像的卡通画渲染过程合二为一,通过特征识别和显著性区域提取,标识出图片中视觉反馈的重点区域,从而基于二维码模块生成过程,通过阈值设定方法来调整此区域的黑白模块的生成,提升最终生成二维码结果的美观度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的二维码的生成方法的流程图;
图2是本发明实施例的二维码的生成过程的各个步骤的效果图;
图3是本发明实施例的采用高斯差分算子方法沿着边缘切向流处理边缘切向流图像过程的示意图;
图4是本发明实施例的采用高斯差分算子方法沿着边缘切向流处理边缘切向流图像的次数对应的效果示意图;
图5是本发明实施例的双边滤波处理过程的示意图;
图6是本发明实施例的融合处理过程的效果对比图;
图7是本发明实施例的色彩量化的效果对比图;
图8是本发明实施例的二维码的生成系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种二维码的生成方法。如图1所示,该方法包括如下的步骤:
步骤s101:将背景图像变换为背景灰度图像。
其中,该背景图像为卡通画图像,例如,如图2(a)所示。
具体的,该步骤包括如下的过程:
(1)将背景图像的颜色从rgb色彩空间转换为lab色彩空间。
lab色彩空间是灰度化和二值化处理所需要用的色彩空间,因此,先将背景图像从rgb色彩空间转换为lab色彩空间,例如,转换后的图像如图2(b)所示。
(2)将转换为lab色彩空间的背景图像取灰度层,得到背景灰度图像。
例如,该背景灰度图像如图2(c)所示。
步骤s102:采用基于边缘切向流的高斯差分算子方法处理背景灰度图像,得到轮廓图像。
具体的,在本发明一优选的实施例中,该步骤包括如下的过程:
(1)在背景灰度图像上构建边缘切向流,得到边缘切向流图像。
边缘切向流的定义如下:对于图片i(z)(z=(x,y)表示图片任一像素点),构造一个平滑,保存特征区域的边缘流场。定义t(z)为边缘切线,作为一个与图片梯度方向g(z)=δi(z)垂直的向量。将这样的向量域定义为边缘切向流(edgetangentflow,etf)。
该边缘切向流可通过滤波的方法在背景灰度图像上构建,例如,该边缘切向流如图2(e)~(g)所示。具体的,在每个像素为中心的内核,应用非线性平滑的向量,使得显著的边缘方向被保留,并且较弱的边缘被重定向到其主导区域。同时,为了保持尖锐的拐点区域,沿着方向相似的边缘进行平滑。边缘切向流滤波由公式定义如下:
其中,t(z)表示像素点z处的正切向量,其方向指向局部边缘,以2π为周期。ωμ表示在图片像素点z处的内核半径μ。像素点z1和z2位于的ωμ限定的范围内,共同确定了边缘流场。通过选择这两个点,可以比较梯度值。k表示向量标准化项,可由经验设置。本发明实施例中,k取值为3。
ωd(x,y)=|t(x)·t(y)|。其中,ωd表示方向加权函数,起到平滑方向相似的区域的作用。t(x)和t(y)分别表示横纵坐标x和y的归一化的正切向量。当两个向量的夹角接近0时,ωd的取值增大;两个向量接近垂直时,ωd的取值减小。若两个向量的夹角大于90度时,应用函数对向量t(x)和t(y)的方向进行旋转,其定义如下:
通过上述的过程,建立了边缘切向流场。
(2)采用高斯差分算子方法沿着边缘切向流处理边缘切向流图像,得到第一轮廓图像。
优选的,可先对边缘切向流图像进行归一化处理,得到的图像如图2(g)所示。
为了得到连续平滑,不含噪声的图片主要轮廓曲线,沿着边缘切向流使用高斯差分算子(fdog)方法得到第一轮廓图像。在边缘切向流场中,t(z)表示像素点z处的正切向量,其方向指向局部边缘,即在它的垂直方向,也就是梯度方向会有最大的差异。沿着边缘切向流,在梯度方向上应用高斯差分算子方法滤波。
采用cz(s)表示位于像素点z处的边缘切向流的流变曲线(即像素点z处的流轴),代表了轮廓线条中间的边缘方向,s是图像i中像素点z位置上的纵向的弧长中的某一点,其取值可正可负,s的取值不同,表明像素点z处的纵向弧长上的不同点。假设像素点z位于曲线中心,即cz(s)=0。采用lz,s表示一条直线中同时与t(cz(s))和cz(s)相交的部分(即像素点z处的梯度轴)。t(cz(s))表示流变曲线的局部边缘方向,代表了轮廓线条两头的边缘方向。将lz,s用确定的横向的弧长参数t表示,因此lz,s(t)表示位于直线lz,s上的t处的位置。同时假设位lz,s于cz(s)中心,即lz,s(0)=cz(s)。注意到lz,s平行于梯度向量g(cz(s))。如图3所示,为应用高斯差分算子方法滤波的流程示意图。该高斯差分算子方法滤波的公式如下:
h(z)表示采用高斯差分算子方法处理后的像素点。i(lz,a(a))表示输入图像i在lz,a(a)位置的梯度值。lz,a(a)表示一条直线中同时与t(cz(a))和cz(a)相交的部分(即像素点z处的梯度轴)。其中,a表示图像i中像素点z位置上的弧长中的某一点,b表示梯度线上的一维滤波权重矢量函数。该公式的含义如下:当沿着流轴cz移动时,在梯度线上应用一维滤波f(b)。单个滤波器的响应在之后利用图像i中像素点z位置上的弧长中的某一点a沿着流轴cx进行累加,表示为
具体的,
σ决定了流内核的长度,也决定了线条连贯的程度。一般的,σ的大小为3。
对于滤波f(b),应用基于高斯差分算子方法的边缘模型,其公式如下:
(3)对第一轮廓图像进行二值化处理,得到第二轮廓图像。
在获得处理后的像素点h(z)后,这些像素点共同组成图片h。通过二值化处理将该图片h转换成黑白图像,二值化处理的公式具体如下:
τ的取值为[0,1]。一般的,取值为0.5。二值化处理后的第二轮廓图像
(4)将第二轮廓图像与背景图像叠加,得到第三轮廓图像。
为了进一步加强轮廓描绘的效果,可以对输入图片应用高斯差分算子方法滤波迭代操作。该迭代操作,首先在背景图像上叠加第二轮廓图像,得到第三轮廓图像。
(5)采用高斯差分算子方法沿着边缘切向流处理第三轮廓图像,得到第四轮廓图像。
再对该第三轮廓图像采用上述步骤(2)的方法进行处理,得到第四轮廓图像,在此不再赘述。
(6)将第四轮廓图像进行二值化处理,得到轮廓图像。
再对该第三轮廓图像采用上述步骤(3)的方法进行处理,得到最终的轮廓图像。如图2(i)所示,在此不再赘述。
应当理解的是,本发明实施例的迭代次数为两次,但是本发明并不以此为限,还可以继续重复上述的步骤(4)~(6),直到得到满意效果的轮廓图像。
一般来说迭代次数越多线条越明显,细节也更丰富;但是,若迭代次数过多,则会造成线条分布更密集,图片会显得更“乱”,从而降低了其视觉效果。图4示出了背景图像(a)、一次高斯差分算子方法处理(b)和两次高斯差分算子方法处理(c)后的图像。从图中可以明显看出,迭代次数为2次的线条效果更清晰,细节更丰富,纹理轮廓更加明显。
此外,在每次采用高斯差分算子方法处理之前,也可以对输入的图像先进行高斯滤波操作,从而获得更平滑柔和的线条效果,如图2(d)所示。
此外,在每次采用高斯差分算子方法处理之后,也可以对得到的图像进行区域平滑处理。区域平滑处理的目标是移除在区域内部不必要的细节,同时保存重要的部分,因此,这是一种特征保持的图片平滑方法,通常采用双边滤波来实现。但是,普通的双边滤波存在一些局限性,在一个圆形的区域平滑次要颜色的差异时,其忽略了颜色对比度的方向,从而会移除一些微小的但是有意义的形状边界,使图像看起来边缘粗糙。基于边缘切向流的双边滤波方法则可以较好地克服这些问题。本发明实施例可利用两个分离的线性双边平滑操作,一个沿着边缘方向,另一个沿着梯度方向。
具体的,采用下述计算式描述基于边缘切向流的双边滤波处理过程,沿着边缘方向的线性双边滤波定义如下:
其中,cz表示边缘切向流的流变曲线,ve表示权重归一化参数,
类似地,沿着梯度方向的双边滤波操作定义如下:
lz(b)表示在像素点z位置的梯度轴。vg表示权重归一化参数,
步骤s103:将轮廓图像、背景灰度图像和第一二维码图像进行融合处理,得到第二维码图像。
具体的,该步骤包括如下的过程:
(1)将背景灰度图像进行视觉显著性区域提取,得到视觉显著性图像。
该视觉显著性图像如图2(j)所示。
具体的,该视觉显著性区域提取的过程如下:
①将背景灰度图像分割成多个子图像。
设背景灰度图像的边长的尺寸为n个像素,子图像的边长的尺寸为m个像素,则该背景灰度图像被分割成
②将每个子图像进行二值化处理,得到视觉显著性图像。
具体的,该二值化处理的计算公式为:
其中,modgr表示背景灰度图像的第r个子图像的二值化效果,决定该子图像填充为黑色或白色。每个子图像用符号表示为subgr。r表示子图像的下标,其取值范围从1到
(2)将背景灰度图像进行二值化处理,得到背景二值化图像。
该背景二值化图像如图2(k)所示。
(3)将轮廓图像、视觉显著性图像和第一二维码图像进行叠加,得到第五二维码图像。
其中,第一二维码图像为黑白方块组成的原始的标准二维码图像,如图2(1)所示;第五二维码图像如图2(m)所示。
(4)根据第五二维码图像的二值化颜色值和第一二维码图像的二值化颜色值,得到第六二维码图像。
具体的,该步骤包括如下的过程:
①确定第五二维码图像的每个模块的二值化颜色值。
该第五二维码图像的每个模块的值根据如下的公式计算:
其中,集合m表示二维码功能部分、格式信息、版本信息以及输入的数据码相关的模块。
②根据第五二维码图像的每个模块的二值化颜色值和第一二维码图像的每个模块的二值化二值,对第五二维码图像的每个模块中的补齐码和纠错码的部分进行比特流的信息重置,得到第六二维码图像。
具体的,从上述公式中可以看出
通过该步骤,重置比特流b中的值,为后面的步骤做准备。
应当理解的是,通过上述的步骤进行融合处理后的第六二维码图像为未加入rs(里德-所罗门,reed-solomon)编码的美化后的二值化的二维码。
(5)将第六二维码图像按照里德-所罗门编码规则进行编码,得到第二二维码图像。
具体的,该步骤包括如下的过程:
从第六二维码图像的c个信息编码中选择k个rs码字,根据rs编码规则计算剩余(c-k)个码字的值,并确定第六二维码图像的补齐码的字数,得到第二二维码。
c表示是数据码字和纠错码字的总数量。k表示数据码字的数量。sc表示所选择的k个rs编码的集合。sc可根据最小化第二二维码图像qb和第五二维码图像qi的视觉失真得到:
第二二维码图像qb表示可被成功解码的,且需要生成的美化后的二值化的二维码,如图2(n)所示。
η(r)表示第r个模块的视觉重要性值。视觉重要性值η(r)用于集合sc的选择,通过引入边缘特征与显著特征定义视觉重要性值η(r)。具体的视觉重要性值η(r)的定义如下:
η(r)=∑x,yλ1·suber(x,y)+λ2·subsr(x,y)
λ1和λ2表示加权系数,其值可根据经验设定。本发明实施例中,λ1=0.65,λ2=0.35。er和sr分别表示图片的边缘图像和显著性图像。本发明实施例利用opencv工具,且采用opencv工具包中的sobel算子或者拉普拉斯算子处理获得边缘图像。显著性图像的获取是参照cheng,m.-m等人在论文efficientsalientregiondetectionwithsoftimageabstractionwithsoftimageabstraction(chengmm,warrellj,linwy,etal.efficientsalientregiondetectionwithsoftimageabstraction[c]//ieeeinternationalconferenceoncomputervision.ieeecomputersociety,2013:1529-1536.)中的方法获得。
补齐码字段能够影响随后的二维码的美观度,补齐码字数越多,补齐码字段越大,美化操作更改图片的范围也越大,所以需要确定k-d个补齐码的字数,以确定后续步骤能够美化的范围。因为输入d长度的数据码字必须包含在集合sc中,实际上仅仅需要从剩下的(n-d)个码字中选择(k-d)个码字。这样的选择方法对于详尽的列举来说计算量过于庞大。比如,当d=20时,对于纠错级别(9,l)的二维码来说,查找空间是
图6示出了原始图像(a)(其中,原始图像中显示黑色的位置在实际图像中为蓝色)以及将其与二维码基于模块化融合的效果(b),其中所选择的二维码版本号为5,纠错级别为l,输入的信息为网址http://www.xxx.com,由调用的二维码生成器生成。
步骤s104:采用lab均匀颜色空间对第二二维码图像进行色彩量化处理,得到第三二维码图像。
具体的,该步骤包括如下的过程:
(1)将第二二维码图像转换为lab颜色空间。
(2)对转换为lab颜色空间后的第二二维码图像进行区域平滑处理。
该区域平滑方法如前文所述的区域平滑方法,在此不再赘述,得到的图像如图2(o)所示。
(3)将区域平滑处理后的第二二维码图像的补齐码对应的部分进行色彩量化处理,得到第三二维码图像。
为了使平滑后的图像显得更具有卡通效果,对区域平滑处理后的图像采用色彩量化方法进一步处理。颜色量化是将一幅图像中的多种视觉颜色整合成较少种类的颜色,并用整合后的颜色重新对原图进行生成。整合的过程依据量化公式中阈值的设定标准。如果标准控制合理,则会达到量化误差最小的状态,即量化后生成的图像与原图像的对比度较小。因此,色彩量化是一种为了减少原图像中颜色数目同时希望使得原图像的视觉效果保持不变所使用的一种方法。经过这种方法的处理可以使得图像显得具有绘画出的效果,如图2(p)所示。图7示出了图片色彩量化之后的区别,其中,(a)为原始图像,(b)为色彩量化后的图像。
色彩量化的具体算法可使用论文real-timevideoabstraction([1]olsensc,goochb.real-timevideoabstraction[c]//acmsiggraph.acm,2006:1221-1226.)中提出的色彩量化方法。其计算公式如下:
其中,
对于颜色量化后的图像,过渡锐度独立于底层的图像,有可能在光滑的阴影区域产生许多可见的过渡。为了最小化不和谐的过渡,定义控制锐度的参数
对于图片的颜色量化来说第二个优点是连贯性。对于标准量化,一个很小的亮度改变就可以导致在输出时产生很大的变化,尤其对于输入包含噪声的情况来说极为严重,有可能扩大噪声的效果范围,影响图片的质量。通过这种基于图片梯度的色彩量化方式,输出时产生的色彩变化在相对较低的对比度区域会被柔和化,使得噪声产生的视觉效果不会令人反感。
步骤s105:将第三二维码图像的色彩还原,得到第四二维码图像。
具体的,该过程如下:
(1)对第三二维码图像进行色彩空间的重构处理。
将第三二维码图像从黑白色变成lab色彩空间限定的彩色。重构后的图像如图2(q)所示。
(2)将重构处理后的第三二维码图像的颜色从lab色彩空间转换为rgb色彩空间,得到第四二维码图像。
该第四二维码图像如图2(r)所示。
综上,本发明实施例的二维码的生成方法,将二维码的生成过程和背景图像的卡通画渲染过程合二为一,通过特征识别和显著性区域提取,标识出图片中视觉反馈的重点区域,从而基于二维码模块生成过程,通过阈值设定方法来调整此区域的黑白模块的生成,提升最终生成二维码结果的美观度。
本发明实施例还公开了一种二维码的生成系统。如图8所示,该系统包括如下的模块:
变换模块801,用于将背景图像变换为背景灰度图像。
优选的,背景图像为卡通画图像。
高斯差分模块802,用于采用基于边缘切向流的高斯差分算子方法处理背景灰度图像,得到轮廓图像。
融合模块803,用于将轮廓图像、背景灰度图像和第一二维码图像进行融合处理,得到第二二维码图像。
色彩量化模块804,用于采用lab均匀颜色空间对第二二维码图像进行色彩量化处理,得到第三二维码图像。
色彩还原模块805,用于将第三二维码图像的色彩还原,得到第四二维码图像。
优选的,变换模块801包括:
第一转换子模块,用于将背景图像的颜色从rgb色彩空间转换为lab色彩空间。
取灰度层子模块,用于将转换为lab色彩空间的背景图像取灰度层,得到背景灰度图像。
优选的,该系统还包括:
高斯模糊模块,用于得到轮廓图像的步骤之前,将背景灰度图像进行高斯模糊处理。
优选的,高斯差分模块802包括:
构建子模块,用于在背景灰度图像上构建边缘切向流,得到边缘切向流图像。
第一边缘处理子模块,用于采用高斯差分算子方法沿着边缘切向流处理边缘切向流图像,得到第一轮廓图像。
第一二值化子模块,用于对第一轮廓图像进行二值化处理,得到第二轮廓图像。
第一叠加子模块,用于将第二轮廓图像与背景图像叠加,得到第三轮廓图像。
第二边缘处理子模块,用于采用高斯差分算子方法沿着边缘切向流处理第三轮廓图像,得到第四轮廓图像。
第二二值化子模块,用于将第四轮廓图像进行二值化处理,得到轮廓图像。
优选的,该系统还包括:
第一区域平滑模块,用于得到轮廓图像的步骤之后,将轮廓图像进行区域平滑处理。
优选的,融合模块803包括:
提取子模块,用于将背景灰度图像进行视觉显著性区域提取,得到视觉显著性图像。
第三二值化子模块,用于将背景灰度图像进行二值化处理,得到背景二值化图像。
第二叠加子模块,用于将轮廓图像、视觉显著性图像和第一二维码图像进行叠加,得到第五二维码图像。
融合子模块,用于根据第五二维码图像的二值化颜色值和第一二维码图像的二值化颜色值,得到第六二维码图像。
编码子模块,用于将第六二维码图像按照里德-所罗门编码规则进行编码,得到第二二维码图像。
优选的,色彩量化模块804包括:
第二转换子模块,用于将第二二维码图像转换为lab颜色空间。
第二区域平滑模块,用于对转换为lab颜色空间后的第二二维码图像进行区域平滑处理。
色彩量化子模块,用于将区域平滑处理后的第二二维码图像的补齐码对应的部分进行色彩量化处理,得到第三二维码图像。
优选的,色彩还原模块805包括:
重构子模块,用于对第三二维码图像进行色彩空间的重构处理。
第三转换子模块,用于将重构处理后的第三二维码图像的颜色从lab色彩空间转换为rgb色彩空间,得到第四二维码图像。
综上,本发明实施例的二维码的生成系统,将二维码的生成过程和背景图像的卡通画渲染过程合二为一,通过特征识别和显著性区域提取,标识出图片中视觉反馈的重点区域,从而基于二维码模块生成过程,通过阈值设定方法来调整此区域的黑白模块的生成,提升最终生成二维码结果的美观度。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。