具体实施方式
图1为本发明实施例提供的图像二维码融合方法流程图;图2为本发明实施例提供的目标图像上二维码覆盖区域的示意图;图3为本发明实施例提供的二维码图像的示意图。本发明实施例针对目标图像上融合二维码提出了图像二维码融合方法,该方法具体的步骤如下:
步骤S101、确定目标图像中用于融合二维码的覆盖区域;
如图2所示,在目标图像21上确定用于融合二维码的覆盖区域20,覆盖区域20在目标图像21上的坐标位置具体通过4维数组fBBox[4]确定:
fBBox[0]:二维码覆盖区域底边与目标图像底边之间的距离EF占目标图像高度h的比例EF/h;
fBBox[1]:二维码覆盖区域左边与目标图像左边之间的距离CD占目标图像宽度w的比例CD/w;
fBBox[2]:二维码覆盖区域上边与目标图像底边之间的距离GH占目标图像高度h的比例GH/h;
fBBox[3]:二维码覆盖区域右边与目标图像左边之间的距离AB占目标图像宽度w的比例AB/w。
步骤S102、依据所述覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值;
依据步骤S101确定的覆盖区域20中的像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值。
所述依据所述覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值包括:
依据所述覆盖区域中样本像素点的灰度值,以及所述灰度值对应的所述样本像素点的个数建立第一直方图,所述样本像素点是所述覆盖区域中所有像素点的子集;依据所述第一直方图计算获得所述第一图像灰度特征值;依据所述覆盖区域中所有像素点的灰度值,以及所述灰度值对应的所述像素点的个数建立第二直方图;依据所述第二直方图计算获得所述第二图像灰度特征值。
根据覆盖区域20中像素点在RGB色空间中的颜色值,计算每个像素点的灰度值Gray=0.299R+0.587G+0.114B,且灰度值Gray取值范围为[0,255]。在覆盖区域20中,等间隔抽取四行像素点,第一行像素点可以是覆盖区域20上边界的像素点,也可以是上边界以下一定范围内某一行的像素点,第四行像素点可以是覆盖区域20下边界的像素点,也可以是下边界以上一定范围内某一行的像素点,且选择出四行像素点中每行中间五分之四的像素点作为样本像素点,将样本像素点的灰度值从区间[0,255]映射到区间[0,32],具体为区间[0,255]内的灰度值x映射到区间[0,32]后的灰度值变为y=x/8,并以映射后的灰度值为横坐标,以每个灰度值对应的所述样本像素点的个数为纵坐标建立第一直方图。以覆盖区域20中所有像素点的灰度值为横坐标,以每个灰度值对应的所述像素点的个数为纵坐标建立第二直方图。
所述第一图像灰度特征值包括第一峰值、第二峰值和阈值;所述依据所述第一直方图计算获得所述第一图像灰度特征值包括:
从所述第一直方图中确定第一灰度值,所述第一灰度值对应的所述样本像素点的个数最多;
计算所述第一直方图中除所述第一灰度值之外的各灰度值对应的第一分值V=n*(g-G)*(g-G),其中,G表示所述第一灰度值,g表示所述第一直方图中除所述第一灰度值之外的任一灰度值,n表示灰度值为g的所述样本像素点的个数;
将所述第一灰度值与最大的第一分值对应的灰度值中较小的一个值作为所述第一峰值p1,将所述第一灰度值与最大的第一分值对应的灰度值中较大的一个值作为所述第二峰值p2;
计算所述第一直方图中灰度值在所述第一峰值p1和所述第二峰值p2范围内的各灰度值对应的第二分值S=(h-p1)*(h-p1)*(p2-h)*(N-m),其中,h表示所述第一直方图中灰度值在所述第一峰值p1和所述第二峰值p2范围内的任一灰度值,m表示灰度值为h的所述样本像素点的个数,N表示灰度值为G的所述样本像素点的个数;
将最大的第二分值S对应的灰度值作为所述阈值T。
由于第一直方图中各样本像素点的灰度值在区间[0,32]内,所以经过上述算法获得的第一峰值、第二峰值和阈值要分别乘以8,以使第一峰值、第二峰值和阈值从区间[0,32]映射到区间[0,255]。另外,本发明实施例在建立第一直方图时,也可以不将样本像素点的灰度值从区间[0,255]映射到区间[0,32]。
所述第二图像灰度特征值包括第一灰度值、第二灰度值和中位数灰度值;所述依据所述第二直方图计算获得所述第二图像灰度特征值包括:
将所述第二直方图中的灰度值按照由小到大的顺序进行排序获得有序序列;
确定所述有序序列中的中位数灰度值M,使所述有序序列中从最小灰度值到所述中位数灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的一半;
确定所述最小灰度值与所述中位数灰度值之间的第一灰度值G1,使所述有序序列中从所述中位数灰度值到所述第一灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的26%;
确定所述中位数灰度值与所述有序序列的最大灰度值之间的第二灰度值G2,使所述有序序列中从所述中位数灰度值的下一灰度值到所述第二灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的26%。
对于第二直方图中的灰度值按照由小到大的顺序进行排序获得有序序列,从灰度值0开始,向高灰度值方向累计各灰度值所对应的像素点个数,直至累计像素个数达到第二直方图中总像素个数的一半,则当前灰度值即中位数灰度值,并记为M;以中位数灰度值作为起点,向低灰度值方向累计各灰度值所对应的像素点个数,直至累计像素个数达到第二直方图中总像素个数的26%,则当前灰度值即第一灰度值,并记为G1;以中位数灰度值的下一灰度值作为起点,向高灰度值方向累计各灰度值所对应的像素点个数,直至累计像素个数达到第二直方图中总像素个数的26%,则当前灰度值即第二灰度值,并记为G2。
步骤S103、依据所述第一图像灰度特征值和所述第二图像灰度特征值计算获得深阈值和浅阈值;
所述依据所述第一图像灰度特征值和所述第二图像灰度特征值计算获得深阈值和浅阈值包括:
若所述中位数灰度值M>230,所述第一灰度值G1≥120,则深阈值T1=127,浅阈值T2=230;
若所述中位数灰度值M<30,所述第二灰度值G2≥127,则深阈值T1=30,浅阈值T2=160。
步骤S104、依据所述深阈值和所述浅阈值融合所述目标图像和所述二维码。
所述二维码的各模块对应所述覆盖区域中各L*L像素点区域,L>1,所述模块与所述二维码的0或1对应;
所述依据所述深阈值和所述浅阈值融合所述目标图像和所述二维码包括:
若所述模块为所述二维码的寻像图形模块、校正图形模块或分隔符模块,将所述L*L像素点区域作为目标区域;
若所述模块为所述二维码的除寻像图形模块、校正图形模块和分隔符模块之外的模块,将所述L*L像素点区域的中心区域l*l作为目标区域,L>l;
依据所述模块的深浅修改所述目标区域中像素点的颜色值。
如图3所示,二维码图像包括位置探测图形31、分隔符32、定位图形33、校正图形34、格式信息35、版本信息36,以及数据和纠错码字37,位置探测图形31由3个重叠的同心的正方形组成,3个重叠的同心的正方形分别为7×7个深色模块、5×5个浅模块和3×3个深色模块;位置探测图形31和编码区域之间有宽度为1个模块的分隔符32,分隔符32全部由浅色模块组成,寻像图形模块包括二维码图像左上角、右上角和左下角的位置探测图形31。校正图形34是3个重叠的同心正方形,3个重叠的同心正方形由5×5个的深色模块,3×3个的浅色模块以及位于中心的一个深色模块组成。
二维码的一个模块是二维码图像的最小组成单位,一个模块用于表示二维码的0或1,且二维码的一个模块与覆盖区域20中的一个L*L像素点区域对应,L>1。当二维码的当前模块为寻像图形模块、校正图形模块或分隔符模块时,即当前模块为如图3所示位置探测图形31、校正图形34或分隔符32的一个模块,覆盖区域20中与二维码当前模块对应的L*L像素点区域为目标区域;当二维码的当前模块为除寻像图形模块、校正图形模块和分隔符模块之外的模块时,覆盖区域20中与二维码当前模块对应的L*L像素点区域的中心区域l*l作为目标区域,L>l。例如L*L像素点区域是一个10*10的区域,该区域的中心周围的5*5的区域作为目标区域,且中心区域的大小及形状,在保证融合结果的识别度的前提下,可以随便调整。
根据二维码当前模块的深浅修改覆盖区域20中确定出的目标区域中像素点的颜色值。
本发明实施例通过确定目标图像中用于融合二维码的覆盖区域,依据覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值,并依据第一图像灰度特征值和第二图像灰度特征值计算获得深阈值和浅阈值,根据二维码模块的深浅以及深阈值和浅阈值,将二维码模块的深浅信息融合到目标图像中,同时还保留了目标图像中大部分像素点的颜色值,提高了目标图像与二维码融合后所得融合图像的视觉效果。
在上述实施例的基础上,所述依据所述第一图像灰度特征值和所述第二图像灰度特征值计算获得深阈值和浅阈值还包括:
若|p1-M|≤10,且49<p1<90,则T1=p1;
若|T-M|≤10,且|p1-G1|<30,p1>160,则T1=127;
若|T-M|≤10,且|p1-G1|<30,140<p1≤160,则T1=97;
若|T-M|≤10,且G1-P1>100,则T1=110;
若T<G1,且G1>170,则T1=110;
若p1>100,且M-p1>100,则T1=127;
若|T-G1|≤10,且G1-P1>130,则T1=110;
若G1>p2,且49<G1<90,p1<5,p2<75,则T1=40;
若G1<49,则T1=49;
若G1>90,则T1=90;
若G2<T,且G2<65,则T2=150;
若|G2-p2|<15,且p2<50,则T2=127;
若G2>200,则T2=200;
若G2<160,则T2=160。
在满足“若所述中位数灰度值M>230,所述第一灰度值G1≥120,则深阈值T1=127,浅阈值T2=230”或“若所述中位数灰度值M<30,所述第二灰度值G2≥127,则深阈值T1=30,浅阈值T2=160”的前提下,通过上述限定条件可进一步精确确定深阈值T1和浅阈值T2,且上述的限定条件按照从上到下的顺序其优先级从高到低。
所述依据所述模块的深浅修改所述目标区域中像素点的灰度值包括:
若所述模块为深,则将所述目标区域中灰度值为(T1,255]范围内的像素点作为待处理像素点,修改所述待处理像素点的颜色值使所述待处理像素点的灰度值小于或等于所述深阈值T1;若所述模块为浅,则将所述目标区域中灰度值为[0,T2)范围内的像素点作为待处理像素点,修改所述待处理像素点的颜色值使所述待处理像素点的灰度值大于或等于所述浅阈值T2。
若二维码的当前模块为深,即二维码图像中颜色为黑的模块,代表的数字信息为1,则修改目标区域中灰度值为(T1,255]范围内的像素点的颜色值,使其灰度值小于或等于所述深阈值T1。
若二维码的当前模块为浅,即二维码图像中颜色为白的模块,代表的数字信息为0,则修改目标区域中灰度值为[0,T2)范围内的像素点的颜色值,使其灰度值大于或等于所述浅阈值T2。
所述修改所述待处理像素点的颜色值使所述待处理像素点的灰度值小于或等于所述深阈值T1包括:将所述待处理像素点的颜色值从RGB色空间转换到Lab色空间,减小所述Lab色空间中的L分量,使所述待处理像素点的颜色值从所述Lab色空间转换到所述RGB色空间后,所述待处理像素点对应的灰度值小于或等于所述深阈值T1。
将待处理像素点在RGB色空间的颜色值转换为用Lab色空间表示,L值减1,a、b值保持不变,反计算此时Lab值所对应的RGB值,然后再根据RGB值计算灰度值,并将灰度值与深阈值T1比较,若此时的灰度值小于或等于T1,则将更新后的RGB值作为融合结果;否则,继续以步长1为单位减小L值,更新RGB值,直至灰度值小于或等于T1,并将最后一次更新所得的RGB值作为融合结果。
所述修改所述待处理像素点的颜色值使所述待处理像素点的灰度值大于或等于所述浅阈值T2包括:将所述待处理像素点的颜色值从RGB色空间转换到Lab色空间,增加所述Lab色空间中的L分量,使所述待处理像素点的颜色值从所述Lab色空间转换到所述RGB色空间后,所述待处理像素点对应的灰度值大于或等于所述浅阈值T2。
修改所述待处理像素点的颜色值使所述待处理像素点的灰度值大于或等于所述浅阈值T2的过程同理于,修改所述待处理像素点的颜色值使所述待处理像素点的灰度值小于或等于所述深阈值T1,不同之处在于以步长1为单位增加L值,具体过程此处不再赘述。
本发明实施例通过精确计算深阈值和浅阈值,依据深阈值和浅阈值融合目标图像和二维码,使得目标图像尽可能反应出二维码深浅信息的同时减小对目标图像中像素点颜色值的修改,进一步提高了目标图像与二维码融合后所得融合图像的视觉效果。
图4为本发明实施例提供的图像二维码融合装置的结构图。本发明实施例提供的图像二维码融合装置可以执行图像二维码融合方法实施例提供的处理流程,如图4所示,图像二维码融合装置40包括覆盖区域确定模块41、计算模块42和融合模块43,其中,覆盖区域确定模块41用于确定目标图像中用于融合二维码的覆盖区域;计算模块42用于依据所述覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值;依据所述第一图像灰度特征值和所述第二图像灰度特征值计算获得深阈值和浅阈值;融合模块43用于依据所述深阈值和所述浅阈值融合所述目标图像和所述二维码。
本发明实施例通过确定目标图像中用于融合二维码的覆盖区域,依据覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值,并依据第一图像灰度特征值和第二图像灰度特征值计算获得深阈值和浅阈值,根据二维码模块的深浅以及深阈值和浅阈值,将二维码模块的深浅信息融合到目标图像中,同时还保留了目标图像中大部分像素点的颜色值,提高了目标图像与二维码融合后所得融合图像的视觉效果。
图5为本发明另一实施例提供的图像二维码融合装置的结构图。在图4基础上,计算模块42包括直方图建立单元421和计算子单元422,其中,直方图建立单元421用于依据所述覆盖区域中样本像素点的灰度值,以及所述灰度值对应的所述样本像素点的个数建立第一直方图,所述样本像素点是所述覆盖区域中所有像素点的子集;依据所述覆盖区域中所有像素点的灰度值,以及所述灰度值对应的所述像素点的个数建立第二直方图;计算子单元422用于依据所述第一直方图计算获得所述第一图像灰度特征值;依据所述第二直方图计算获得所述第二图像灰度特征值。
所述第一图像灰度特征值包括第一峰值、第二峰值和阈值;计算子单元422具体用于从所述第一直方图中确定第一灰度值,所述第一灰度值对应的所述样本像素点的个数最多;计算所述第一直方图中除所述第一灰度值之外的各灰度值对应的第一分值V=n*(g-G)*(g-G),其中,G表示所述第一灰度值,g表示所述第一直方图中除所述第一灰度值之外的任一灰度值,n表示灰度值为g的所述样本像素点的个数;将所述第一灰度值与最大的第一分值对应的灰度值中较小的一个值作为所述第一峰值p1,将所述第一灰度值与最大的第一分值对应的灰度值中较大的一个值作为所述第二峰值p2;计算所述第一直方图中灰度值在所述第一峰值p1和所述第二峰值p2范围内的各灰度值对应的第二分值S=(h-p1)*(h-p1)*(p2-h)*(N-m),其中,h表示所述第一直方图中灰度值在所述第一峰值p1和所述第二峰值p2范围内的任一灰度值,m表示灰度值为h的所述样本像素点的个数,N表示灰度值为G的所述样本像素点的个数;将最大的第二分值S对应的灰度值作为所述阈值T。
所述第二图像灰度特征值包括第一灰度值、第二灰度值和中位数灰度值;计算子单元422具体用于将所述第二直方图中的灰度值按照由小到大的顺序进行排序获得有序序列;确定所述有序序列中的中位数灰度值M,使所述有序序列中从最小灰度值到所述中位数灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的一半;确定所述最小灰度值与所述中位数灰度值之间的第一灰度值G1,使所述有序序列中从所述中位数灰度值到所述第一灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的26%;确定所述中位数灰度值与所述有序序列的最大灰度值之间的第二灰度值G2,使所述有序序列中从所述中位数灰度值的下一灰度值到所述第二灰度值之间的各灰度值对应的像素点个数的累加和是所述第二直方图中所有像素点个数的26%。
计算模块42还用于若所述中位数灰度值M>230,所述第一灰度值G1≥120,则确定深阈值T1=127,浅阈值T2=230;若所述中位数灰度值M<30,所述第二灰度值G2≥127,则确定深阈值T1=30,浅阈值T2=160。
计算模块42还用于若|p1-M|≤10,且49<p1<90,则确定T1=p1;若|T-M|≤10,且|p1-G1|<30,p1>160,则确定T1=127;若|T-M|≤10,且|p1-G1|<30,140<p1≤160,则确定T1=97;若|T-M|≤10,且G1-P1>100,则确定T1=110;若T<G1,且G1>170,则确定T1=110;若p1>100,且M-p1>100,则确定T1=127;若|T-G1|≤10,且G1-P1>130,则确定T1=110;若G1>p2,且49<G1<90,p1<5,p2<75,则确定T1=40;若G1<49,则确定T1=49;若G1>90,则确定T1=90;若G2<T,且G2<65,则确定T2=150;若|G2-p2|<15,且p2<50,则确定T2=127;若G2>200,则确定T2=200;若G2<160,则确定T2=160。
所述二维码的各模块对应所述覆盖区域中各L*L像素点区域,L>1,所述模块与所述二维码的0或1对应;融合模块43包括目标区域确定单元431和修改单元432,其中,目标区域确定单元431用于若所述模块为所述二维码的寻像图形模块、校正图形模块或分隔符模块,将所述L*L像素点区域作为目标区域;若所述模块为所述二维码的除寻像图形模块、校正图形模块和分隔符模块之外的模块,将所述L*L像素点区域的中心区域l*l作为目标区域,L>l;修改单元432用于依据所述模块的深浅修改所述目标区域中像素点的颜色值。
修改单元432用于若所述模块为深,则将所述目标区域中灰度值为(T1,255]范围内的像素点作为待处理像素点,修改所述待处理像素点的颜色值使所述待处理像素点的灰度值小于或等于所述深阈值T1;若所述模块为浅,则将所述目标区域中灰度值为[0,T2)范围内的像素点作为待处理像素点,修改所述待处理像素点的颜色值使所述待处理像素点的灰度值大于或等于所述浅阈值T2。
修改单元432具体用于将所述待处理像素点的颜色值从RGB色空间转换到Lab色空间,减小所述Lab色空间中的L分量,使所述待处理像素点的颜色值从所述Lab色空间转换到所述RGB色空间后,所述待处理像素点对应的灰度值小于或等于所述深阈值T1。
修改单元432具体用于将所述待处理像素点的颜色值从RGB色空间转换到Lab色空间,增加所述Lab色空间中的L分量,使所述待处理像素点的颜色值从所述Lab色空间转换到所述RGB色空间后,所述待处理像素点对应的灰度值大于或等于所述浅阈值T2。
本发明实施例提供的图像二维码融合装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过精确计算深阈值和浅阈值,依据深阈值和浅阈值融合目标图像和二维码,使得目标图像尽可能反应出二维码深浅信息的同时减小对目标图像中像素点颜色值的修改,进一步提高了目标图像与二维码融合后所得融合图像的视觉效果。
综上所述,本发明实施例通过确定目标图像中用于融合二维码的覆盖区域,依据覆盖区域中像素点的灰度值计算获得第一图像灰度特征值和第二图像灰度特征值,并依据第一图像灰度特征值和第二图像灰度特征值计算获得深阈值和浅阈值,根据二维码模块的深浅以及深阈值和浅阈值,将二维码模块的深浅信息融合到目标图像中,同时还保留了目标图像中大部分像素点的灰度值,提高了目标图像与二维码融合后所得融合图像的视觉效果;通过精确计算深阈值和浅阈值,依据深阈值和浅阈值融合目标图像和二维码,使得目标图像尽可能反应出二维码深浅信息的同时减小对目标图像中像素点对应灰度值的修改,进一步提高了目标图像与二维码融合后所得融合图像的视觉效果。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。