具体实施方式
为了能够抵抗打印复印和扫描攻击,使嵌入水印的图像保持良好的视觉效果,以及在水印检测时做到盲提取,本发明提供一种二值图像中数字水印的嵌入方法和一种二值图像中数字水印的提取方法,其中,数字水印的嵌入方法的具体流程如下,参见图1A:
步骤101:获取二值图像S1;
步骤102:将二值图像S1或S1的子集,即S1的部分或全部划分为多个图像块,根据每个图像块所包含的黑色像素点个数得到第一数字序列S2;
步骤103:将第一数字序列S2分组,对每个分组中的数据进行哈达玛(Hadamard)变换,得到每个分组对应的第二数字序列S2H;
步骤104:使用基于量化表量化的方法,将待嵌入水印信号嵌入到第二数字序列中,即根据待嵌入水印信号和预先设定的量化表,将第二数字序列中的数据进行数值转换,得到第三数字序列S2HW;
步骤105:对所述第三数字序列进行逆哈达玛变换得到第四数字序列S2W;
步骤106:根据所述第四数字序列确定步骤102中每个图像块中需要改变颜色的像素点个数;
步骤107:通过在所述每个图像块中选择相应个数的像素点,并改变所选择像素点的颜色,来实现水印嵌入。
数字水印的提取方法的具体流程如下,参见图1B:
步骤111:获取嵌入水印信号的二值图像;
步骤112:将嵌入水印信号的二值图像,按照与水印嵌入相同的方式,划分为多个图像块,根据每个图像块所包含黑色像素点的个数得到第一数字序列;
步骤113:将第一数字序列,按照与水印嵌入相同的方式进行分组,对每个分组中的数据进行哈达玛变换,得到每个分组对应的第二数字序列;
步骤114:根据水印嵌入中使用的基于量化表量化的方法,从第二数字序列中获得水印信号。
下面结合附图对本发明作进一步的说明:
一、水印嵌入过程:
1、给定长度为(2N-1)M的待嵌入水印信号W={wi,j},其中wi,j=0或者1,指标i∈{1,2,...,M}和j∈{1,2,...,2N-1}。本实施例中取M=8和N=2,从而水印长度为24比特;
2、将由图2所示的一幅二值图像S1(它显示的是一段小四号中文楷体文字)进行字符切分,确定出141个字符图像块,其中每个图像块包含1个文字(如图3所示,注意这里去掉了包含黑色像素点特别少的汉字“一”和标点符号);然后按顺序将四个图像块看作一组并记前32组为
T1,T2,......,T32。
于是如图4所示,我们便将二值图像S1的一个子集S1′划分成了32组
S1′=T1UT2U......UT32。
3、计算上一步得到的每个分组中所包含的黑色像素点的个数,得到数字序列
S2=(S21,S22,......,S232)。
4、将数字序列S2分成8组,每组包含4个数据
(S21,S22,S23,S24),
(S25,S26,S27,S28),
............
(S229,S230,S231,S232)。
5、将步骤4中的每组数据作Hadamard变换得到数字序列S2H:
(S2H1,S2H2,S2H3,S2H4),
(S2H5,S2H6,S2H7,S2H8),
............
(S2H29,S2H30,S2H31,S2H32)。
这里使用阶数为4的Hadamard变换。其具体的公式是
S2H4k+1=S24k+1+S24k+2+S24k+3+S24k+4,
S2H4k+2=S24k+1-S24k+2+S24k+3-S24k+4,
S2H4k+3=S24k+1+S24k+2-S24k+3-S24k+4,
S2H4k+4=S24k+1-S24k+2-S24k+3+S24k+4。
其中,k∈{0,1,......,7}。
6、对由步骤5得到的Hadamard变换后的S2H的交流系数
(S2H2,S2H3,S2H4),
(S2H6,S2H7,S2H8),
.............
(S2H30,S2H31,S2H32)
根据水印信号W使用基于量化表的奇偶量化的方法进行水印嵌入,得到嵌入水印后的数字序列S2HW:
(S2HW2,S2HW3,S2HW4),
(S2HW6,S2HW7,S2HW8),
............
(S2HW30,S2HW31,S2HW32)。
就是说根据量化表中的量化系数K(K>0)使得:
其中指标j∈{2,3,4}和k∈{0,1,......,7}。本实施例中K=2800。显而易见,我们有
|S2HW4k+j-S2H4k+j|≤K。
7、我们将由步骤5得到的Hadamard变换后的S2H的直流系数
S2H1,S2H5,......,S2H29
调整为
S2HW1,S2HW5......,S2HW29
使得因此以及步骤6所引数字信号S2的改变尽可能的小。就是使得对信号S2HW
(S2HW1,S2HW2,S2HW3,S2HW4),
(S2HW5,S2HW6,S2HW7,S2HW8),
(S2HW29,S2HW30,S2HW31,S2HW32)
作逆Hadamard变换后得到包含水印的信号S2W
(S2W1,S2W2,S2W3,S2W4),
(S2W5,S2W6,S2W7,S2W8),
.............
(S2W29,S2W30,S2W31,S2W32)
相对于原始信号S2的改变尽可能的小。具体的说就是选择S2HW4k+1使得每个分组信号
(S24k+1,S24k+2,S24k+3,S24k+4)
的改变量的绝对值的最大值
max(|S2W4k+1-S24k+1|,|S2W4k+2-S24k+2|,|S2W4k+3-S24k+3|,|S2W4k+4-S24k+4|)达到最小。这只需要选择
其中Δk max是下述四个数的最大值,Δk min是下述四个数的最小值。
-((S2HW4k+2-S2H4k+2)+(S2HW4k+3-S2H4k+3)+(S2HW4k+4-S2H4k+4)),
-(-(S2HW4k+2-S2H4k+2)+(S2HW4k+3-S2H4k+3)-(S2HW4k+4-S2H4k+4)),
-((S2HW4k+2-S2H4k+2)-(S2HW4k+3-S2H4k+3)-(S2HW4k+4-S2H4k+4)),
-(-(S2HW4k+2-S2H4k+2)-(S2HW4k+3-S2H4k+3)+(S2HW4k+4-S2H4k+4))。
这里Hadamard逆变换的公式为
注意到
于是不难得到,对于任何j∈{1,2,3,4}和k∈{0,1,......,7}
这说明上述过程引起的每个信号S2i的改变都不会超过量化系数K的一半。
8、根据上一步得到的数字序列S2W可以得到原始信号S2所需要的改变量信号ΔS2=(ΔS21,ΔS22,......,ΔS232),其中
ΔS2i=round(S2Wi-S2i),
这里函数round(x)表示与x最靠近的整数。
9、根据上一步得到的改变量信号ΔS2来翻转二值图像S1的若干个像素点以实现水印嵌入。就是说当ΔS2i>0时则在分组Ti中选择ΔS2i个白色像素点将其翻转为黑色;当ΔS2i<0时则在分组Ti中选择ΔS2i个黑色像素点将其翻转为白色;当ΔS2i=0时不对分组Ti作任何操作。这就完成了水印嵌入,图5是嵌入水印后的二值图像。
二、水印提取过程:
1、对获取的如图8所示的嵌入水印的二值图像S1进行字符切分,确定出141字符个图像块,其中每个图像块包含1个文字,如图9所示;然后按顺序将四个图像块看作一组并记前32组为
T1,T2,......,T32。
于是如图10所示,我们便将二值图像S1的一个子集S1′划分成了32组
S1′=T1UT2U......UT32。
2、计算上一步得到的每个分组中所包含的黑色像素点的个数,得到数字序列
S2=(S21,S22,......,S232)。
3、将数字序列S2分成8组,每组包含4个数据
(S21,S22,S23,S24),
(S25,S26,S27,S28),
............
(S229,S230,S231,S232)。
4、将步骤3中的每组数据作Hadamard变换得到数据S2H:
(S2H1,S2H2,S2H3,S2H4),
(S2H5,S2H6,S2H7,S2H8),
......
(S2H29,S2H30,S2H31,S2H32)。
5、对由步骤4得到的Hadamard变换后的S2H的交流系数
(S2H2,S2H3,S2H4),
(S2H6,S2H7,S2H8),
......
(S2H30,S2H31,S2H32)。
根据水印嵌入时使用的基于量化表的奇偶量化方法提取水印信息 其中指标i∈{1,2,...,M}和j∈{1,2,...,2N-1}。具体的说就是
量化系数K=2800。这就完成了水印提取。
下面简要的解释一下为什么本发明中的算法是空频域相结合的。注意到水印嵌入过程中,水印被嵌在了Hadamard变换的交流系数中从而是一种频率域水印嵌入方法。但是我们在水印嵌入之后又通过调节Hadamard变换的直流系数来控制空域信号S2的变化幅度。可以证明,空域信号S2的改变量ΔS2=(ΔS21,ΔS22,......,ΔS232)满足
其中K是事先选定的量化系数。就是说每个分组内的黑点个数的改变量不会超过量化系数的一半加1。这样,我们就可以通过调节量化系数来达到控制空域信号S2和S1的变化幅度,从而达到保持嵌入水印后的二值图像的视觉效果的目的。
最后再通过几个实施例来说明本发明所述的在二值图像中嵌入水印和提取水印方法的鲁棒性。
实施例一:
对如图2所示的一幅中文楷体小四号字文本图像,我们使用本发明所述的方法对其嵌入24比特水印信息。水印嵌入的流程和所需的参数前面已经详述,这里不再重复。图5是嵌入水印后的图像,图6A和图6B是原始图像和嵌入水印图像的一个局部放大。可以看到,嵌入水印后的图像的视觉效果良好,很难看出字符被修改的痕迹,事实上嵌入水印的字符只是略微变粗或者变细,并不影响字符的整体框架。当图像被打印后,我们对纸介质的打印件通过扫描仪将其扫描到计算机内变为灰度图像格式的电子文件,如图7所示,然后将灰度图像二值化重新得到二值图像格式的文本图像,如图8所示。接着通过本发明中的水印算法提取水印,可以成功提取全部24比特的水印信息。
下面对打印后的纸介质文档复印,然后将复印件扫描到计算机内得到灰度图像,再对灰度图像二值化得到二值图像格式的文本图像,如图11所示。对于图11,我们可以使用水印提取算法成功提取全部24比特的水印信息。
接着,对一次复印的纸介质文档再次复印,然后通过扫描和二值化将其转化成如图12所示的二值图像,我们仍可以从中提取全部24比特的水印信息。
最后,对二次复印件再次复印,然后通过扫描和二值化将其转化成如图13所示的二值图像,本次水印提取时错了1个比特,成功提取了23比特的水印信息。
因此,本实施例中可以抵抗打印和两次复印。
实施例二:
对如图14所示的一幅中文宋体小四号字文本图像,我们使用本发明所述的方法对其嵌入24比特水印信息。水印嵌入的流程和所需的参数和上一实例相同,这里不再重复。图15是嵌入水印后的图像。然后将该图像打印扫描以及二值化重新得到二值图像格式的文本图像,如图16所示。通过水印提取算法可以从中成功提取全部24比特的水印信息。
下面对打印后的纸介质文档复印,然后将复印件扫描以及二值化得到二值图像格式的文本图像,如图17所示。对于图17,我们可以使用水印提取算法成功提取全部24比特的水印信息。
接着,对一次复印的纸介质文档再次复印,然后通过扫描和二值化将其转化成如图18所示的二值图像,我们仍可以从中提取全部24比特的水印信息。
最后,对二次复印件再次复印,然后通过扫描和二值化将其转化成如图19所示的二值图像,本次水印提取时错了2个比特,成功提取了22比特的水印信息。
因此,本实施例中可以抵抗打印和两次复印。
实施例三:
对如图20所示的一幅印章图像(放大两倍显示,原始图像大小为1024×1024像素,原始图像显示大小为4.4cm×4.4cm),我们使用本发明所述的方法对其嵌入15比特水印信息。水印嵌入时首先将图像等分成20个扇形,每个扇形看成一组,于是将图20分成了20组,如图21所示,图中显示了第1组、第2组和第20组。然后计算每组中的黑点个数得到长度为20的一个数字信号,将该信号分组并对每组作四阶的Hadamard变换。接着按照本发明所述算法并使用奇偶量化进行水印嵌入,共嵌入了长度为20÷4×3=15比特的水印信息,其中量化系数K=1500。图22是嵌入水印后的图像。然后将该图像打印扫描,再作二值化得到如图23所示的二值图像。通过水印提取算法可以从中成功提取全部15比特的水印信息。
下面对打印后的纸介质文档复印,然后将复印件扫描以及二值化得到二值图像格式的印章图像,如图24所示。对于图24,我们可以使用水印提取算法成功提取全部15比特的水印信息。
接着,对一次复印的纸介质文档再次复印,然后通过扫描和二值化将其转化成如图25所示的二值图像,本次水印提取时错了3个比特,成功提取了12比特的水印信息。
因此,本实施例中可以抵抗打印和一次复印。
参见图26,本发明还提供一种实现数字水印嵌入的装置,该装置包括:分组单元2601,用于将二值图像的部分或全部划分为至少两个图像块,根据每个图像块中的黑色像素点个数得到第一数字序列;变换单元2602,用于将所述第一数字序列分组,对所述每个分组中的数据进行哈达玛变换,得到每个分组对应的第二数字序列;量化单元2603,用于使用基于量化表的量化方法,将待嵌入水印信号嵌入到所述第二数字序列中,得到第三数字序列;嵌入单元2604,用于对所述第三数字序列进行逆哈达玛变换得到第四数字序列,根据该第四数字序列确定分组单元划分的每个分组中需要改变颜色的像素点个数,在所述每个分组选择相应个数的像素点,并改变所选择像素点的颜色。
量化单元2603包括:获取单元,用于获取待嵌入水印信号和所保存的奇偶量化表中的量化系数,该量化系数为大于零的数;第一转换单元,用于将所述第二数字序列的交流系数中的各个数据进行数值转换,转换方法为:如果与待转换数据对应的水印信号为1,则将所述数据转换为最接近本数据的量化系数的奇数倍;如果与待转换数据对应的水印信号为0,则将所述数据转换为最接近本数据的量化系数的偶数倍。
量化单元2603进一步包括:调整单元,用于将所述第二数字序列的直流系数中的各个数据进行数值转换,使得所述第四数字序列相对于所述第一数字序列的数据改变量的能量最小,所述数据改变量的能量为数据改变量的绝对值的最大值。
嵌入单元2604包括:逆变换单元,用于对所述第三数字序列进行逆哈达玛变换得到第四数字序列;个数确定单元,用于计算所述第四数字序列中的每个数据与所述第一数字序列中对应数据的差,将计算结果取整后作为分组中改变颜色像素点的个数;颜色改变单元,用于根据个数确定单元确定的个数改变分组中像素点的颜色,如果所述个数大于零,则在分组单元中划分的对应分组中选择相应个数的白色像素点,并将该像素点的颜色变为黑色;如果所述个数小于零,则在分组单元中划分的对应分组中选择相应个数的黑色像素点,并将该像素点的颜色变为白色。
下面结合具体实施例对本水印嵌入装置的工作流程进行说明:
步骤S01:水印嵌入装置的分组单元将由图2所示的二值图像S1进行字符切分并分组,根据每个分组包含的黑色像素点的个数,得到数字序列S2,具体同水印嵌入方法部分的步骤2-3;
步骤S02:水印嵌入装置的变换单元将数字序列S2进行分组,将每个分组中的数据作Hadamard变换得到数字序列S2H,具体同水印嵌入方法部分的步骤4-5;
步骤S03:水印嵌入装置的量化单元使用基于量化表的量化方法,将待嵌入水印信号嵌入到数字序列S2H中,得到数字序列S2HW;
具体的,量化单元中的获取单元获取待嵌入水印信号和所保存的奇偶量化表中的量化系数;第一转换单元根据水印信号对数字序列S2H的交流系数进行水印嵌入;调整单元调节数字序列S2H的直流系数,得到数字序列S2HW,具体同水印嵌入方法部分的步骤6-7;
步骤S04:水印嵌入装置的嵌入单元对数字序列S2HW进行逆哈达玛变换,根据变换后的数字序列改变像素点颜色实现水印嵌入;
具体的,嵌入单元中的逆变换单元对数字序列S2HW进行逆哈达玛变换得到数字序列S2W,根据S2W确定分组单元划分的每个分组中需要改变颜色的像素点个数,在所述每个分组选择相应个数的像素点,并改变所选择像素点的颜色,具体同水印嵌入方法部分的步骤8-9。
参见图27,本发明还提供一种数字水印的提取装置,该装置包括:
分组单元2701,用于将嵌入水印信号的二值图像,按照与水印嵌入相同的方式划分为至少两个图像块,根据每个图像块中的黑色像素点个数得到第一数字序列;变换单元2702,用于将所述第一数字序列,按照与所述水印嵌入相同的方式进行分组,对所述每个分组中的数据进行哈达玛变换,得到每个分组对应的第二数字序列;提取单元2703,用于根据所述水印嵌入中使用的基于量化表的量化方法,从所述第二数字序列中获得水印信号。
提取单元2703包括:计算单元,用于计算所述第二数字序列的交流系数中的每个数据与所述量化表中的量化系数的商并取整;水印确定单元,用于确定嵌入的水印信号值,如果计算单元的计算结果为奇数,则将对应的水印信号确定为1,如果计算单元的计算结果为偶数,则将对应的水印信号确定为0。
下面结合具体实施例对本水印提取装置的工作流程进行说明:
步骤S11:水印提取装置的分组单元将图5所示的嵌入水印信号的二值图像进行字符切分并分组,根据每个分组包含的黑色像素点的个数,得到数字序列S2,具体同水印提取方法部分的步骤1-2;
步骤S12:水印提取装置的变换单元将数字序列S2,按照与水印嵌入相同的方式进行分组,对每个分组中的数据进行哈达玛变换,得到数字序列S2H,具体同水印提取方法部分的步骤3-4;
步骤S13:水印提取装置的提取单元根据水印嵌入中使用的基于量化表的量化方法,从数字序列S2H中获得水印信号;
具体的,提取单元中的计算单元计算数字序列S2H的交流系数中的每个数据与量化表中的量化系数的商并取整;水印确定单元根据计算单元的计算结果确定嵌入的水印信号值,具体同水印提取方法部分的步骤5。
综上,本发明的有益效果在于:
采用本发明,可以成功实现数字水印在二值图像尤其是二值文本图像或者二值印章图像中的嵌入和提取,嵌入水印后的图像的视觉效果良好,并且能够抵抗打印复印和扫描攻击,另外水印提取时不需要原始图像参与。因此,本方法是一种高鲁棒性的盲水印算法,可以用于重要文档的信息隐藏、消息源头追踪和版权保护等,具有广泛的商业应用前景。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。