王丽丽
目前数字水印的研究重点包括水印的预处理和水印的嵌入算法两方面。常用的算法分为空间域法和变换域法。典型的空间域法有最低有效位算法、两分法、Patchwork方法等[1]。典型的变换域算法有离散余弦变换[2]、离散小波变换[3]等算法。变换域算法对于空域算法来说,具有更强的鲁棒性,能够更好的抵抗常见图像处理和几何变换的攻击。
嵌入图像数字水印面临的两个问题:
(1)嵌入水印图像的鲁棒性和水印信息不可见性的平衡。一般来说,嵌入水印强度越大,载体图像的鲁棒性越强,但同时影响到载体图像质量,使水印图像不可见性降低;要使水印信息能较好的隐藏在载体图像中,嵌入的水印强度必然会降低,但会影响图像的不可见性。图像遭到攻击后,提取出的水印会无法识别。因此算法对于鲁棒性和不可见性的平衡,在水印嵌入过程中要综合考虑。
(2)水印算法的安全性问题,即攻击者获取嵌入信息的能力。
Contourlet变换[4]具有多方向特性,能够较好的描述图像的轮廓和方向性纹理信息,克服了小波变换后图像仅有三个方向的缺点,将图像更多的细节信息通过多方向特性表现出来。在嵌入水印信息时,能够将水印信息隐藏在更多的细节信息中,增强了嵌入水印图像的透明性和抗攻击性能。本文提出了基于Contourlet域能量和交换系数的图像水印算法,通过计算图像分解后的能量大小,确定嵌入水印的方向子图,并通过交换系数的嵌入算法,将水印信息嵌入载体图像。该算法在保证图像不可见性的同时,具有较强鲁棒性,而且嵌入过程中多个密匙组成的密匙空间保证了水印系统的安全性。
图像经过Contourlet变换后,经过两层LP分解和DFB多方向分解,产生了一个低频子带和多个方向子带。由于这唯一的一个低频子带是图像的逼真子带,含有图像的重要信息不适合嵌入水印。否则容易引起图像的失真而被人感知。本文将水印信息嵌入第二层分解后能量最大的细节子带。这样嵌入水印后的载体图像对 JPEG 压缩和普通的图像处理如直方图均衡化、改变图像亮度等具有较好的鲁棒性,并且具有很好的透明性,很好地协调了鲁棒性与不可见性的矛盾[5]。
下面是将水印信息通过交换系数的方式嵌入Contourlet分解的第一层 4个方向子块中能量最大的子块和第二层 4个方向子块中能量最大的子块的效果图,如图1所示:
图1 水印信息嵌入Contourlet分解的第一层4个方向子块中能量最大的子块中
从图1中可以明显看到嵌入水印后的图像质量下降,影响了图像的视觉效果。如图2所示:
图2 水印信息嵌入Contourlet分解的第二层4个方向子块中能量最大的子块中
可以看出,图像分解两层后再将水印信息嵌入,就能够满足不可见性的要求,所以本文将图像进行了Contourlet变换的两层分解。
以大小为M×N的灰度图像A作为载体图像,大小为p×q的二值图像B作为水印信息,来描述水印嵌入算法。步骤如下:
(1)将原始的载体图像进行 Contourlet分解,分解层数为两层,每一层分解的方向数均为四个方向。分解层数和每层分解的方向数可以作为水印嵌入算法的两个密匙。
(2)分别计算 Contourlet分解的第二层的四个方向的图像的能量大小,在能量最大的方向图上嵌入水印。记能量最大的方向图为A3maxE,大小为m×n。图像能量的计算公式如公式(1):
其中,Ek和Ak(i,j)分别为Contourlet分解的第二层的第k个方向的能量和像素值大小。
选择低频系数嵌入水印,能够使嵌入水印的图像具有较好鲁棒性,但是,会降低载体图像的不可见性,而高频系数嵌入水印,使得载体图像具有较好的不可见性,但是鲁棒性较差。为了同时满足嵌入水印的载体图像的不可见性和鲁棒性,算法在嵌入水印的位置上选择了Contourlet分解后第二层能量较大的方向。
由于嵌入水印后,图像的能量值发生变化,再次分解计算这4个方向图能量大小时,不一定是嵌入水印选择的那个方向图的能量仍为最大。所以,在此算法嵌入过程中,需要记录选择的是哪个方向图,以此作为嵌入算法的第三个密匙保存。
(3)将A3maxE分块,块个数为(m× n)/(p× q),块大小为d1×d2。
(4)通过交换系数[6]的嵌入方法,将水印信息嵌入载体图像中,具体步骤如下:
第一:选择每一块的两个固定位置的系数,记为L1,L2。选择固定位置的系数是为了实现盲水印提取,即提取水印图像时不需要原始的水印图像;
第二:将L1和L2做差,k为设定的嵌入强度,当时,分为两种情况:①若嵌入的水印像素值为0,如果L1<L2,交换L1和L2,如果L1≥L2,L1和L2的位置保持不变;②若嵌入的水印像素值为 1,如果L1>L2,交换L1和L2,如果L1≤L2,L1和L2的位置保持不变。当时,L1和L2的位置保持不变。
其中嵌入强度k的设定,是根据选择的图像本身和所选择的嵌入算法确定,在后面的仿真实验中选择的嵌入强度k=20。
(5)对嵌入水印后的方向子图和其它方向子图一起进行Contourlet逆变换,得到嵌入水印信息的载体图像。对于嵌入水印后的载体图像的质量除了人眼主观评价外,还采用了峰值信噪比psnr对图像质量进行了评价。
图像数字水印的提取过程是将嵌入载体图像的水印信息恢复出来,提取出来水印信息效果的好坏一般除了人眼是否能够辨别外,还可通过计算归一化相关系数NC值来衡量。提取算法是嵌入算法的逆过程,算法步骤如下:
(1)对嵌入水印的载体图像进行Contourlet变换分解,分解层数为2层,每一层分解的方向数均为4个方向。由于Contourlet分解的层数和每层分解的方向数,都已经在嵌入算法中作为两个密匙保存,如果不能正确得到这两个密匙,也就无法正确提取出水印信息。
(2)根据在水印嵌入算法中保存的第三个密匙,确定水印信息嵌入的子带,并对该子带进行分块。分块的大小和嵌入算法时载体图像的分块大小一致。
第三个密匙确定了水印信息嵌入子带,若无法正确得到第三个密匙,那么也就不能准确得到该子带,选择其余水印信息并不存在的子带进行水印提取,必然无法提取出水印信息。
(3)选择每一块的两个固定位置系数L1,L2,这两个系数的位置和嵌入时是一致的。然后进行水印提取:比较L1和L2大小,若 L1>L2,则提取数值为0,否则,提取数值为1。
(4)将提取出的0-1序列重新排列,从而得到提取的二值水印信息。
对于提取的水印信息不仅能通过主观的评判,还能通过计算客观评价标准,相似度NC值来评判提取出的水印信息的效果,NC越接近1,说明提取的水印信息和原始嵌入的水印信息越接近,提取的效果越好。
本算法在Matlab 7.0平台上运行,原始的载体图像采用256× 256的“lena.bmp”灰度图像,原始的水印图像为32× 32的“XD.bmp”二值水印图像如图3所示:
图3 图像水印的嵌入和提取
图3是嵌入水印的载体效果图及对载体图像无任何攻击情况下提取的水印信息。从效果图和客观评价标准可以看出,提出的水印嵌入算法具有较高的不可见性,lena图像的峰值信噪比psnr=40.4594dB ,并且在载体图像没有受到任何攻击的情况下,能够完整的提取出嵌入的水印信息,其相似度NC=1,说明该算法具有较好的不可见性和可逆性。
对嵌入水印的载体图像进行各种常见的图像处理和几何变换的攻击,再从被攻击后的图像中提取水印信息。图3.2~3.10是对载体图像进行各种攻击和从受到攻击的载体中提取出的水印的实验结果图。
(1)JPEG压缩
如图4所示:
图4 JPEG压缩
图4(a)是对嵌入水印的载体图像进行JPEG压缩后的图像,压缩过程中图像的品质会遭到破坏,从而响图像的视觉效果,也会破坏其中的水印信息。图4(b)是从被压缩的图像中提取出来的水印图像。从JPEG压缩后的载体图像中提取出的水印图像和原始水印图像的NC值为0.7398,基本可以辨别出原始的水印信息。
(2)椒盐噪声
椒盐噪声是由传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。给载体图像加入椒盐噪声,易对水印信息噪声干扰,从而影响水印的提取,如图5所示:
图5 椒盐噪声
图5(a)是对原始载体图像增加了椒盐噪声,图5(b)是从加噪的载体图像中提取出来的水印信息。提取水印和原始水印图像的NC值为0.7425。
(3)高斯噪声
所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。高斯噪声与椒盐噪声类似,给载体加入高斯噪声,会干扰其中的水印信息,影响正常的水印信息提取,如图6所示:
图6 高斯噪声
图6(a)是对原始载体图像增加了高斯噪声,图6(b)是从加噪的载体图像中提取出来的水印信息。提取水印和原始水印图像的NC值为0.8831。
(4)高斯低通滤波
实质上是一种信号的滤波器,用于信号的平滑处理。由于本文算法是将水印信息嵌入到图像Contourlet分解后的细节子带中,高斯低通滤波处理的就是高频细节子带,从而会将一部分水印信息除去,增加水印信息提取的难度,如图7所示:
图7 高斯低通滤波
图7(a)是对原始载体图像进行了高斯低通滤波处理,图7(b)是从滤波后的载体图像中提取出来的水印信息。尽管提取的水印信息受到了一些干扰,但基本可以识别,并且提取水印和原始水印图像的NC值达到了0.7147,所以,本文算法能够有效的抵抗高斯低通滤波。
(5)直方图均衡化
直方图均衡化是通过对比度拉伸对直方图进行调整,从而扩大前景和背景灰度的差别,以达到增强对比度的目的。均衡化后图像的灰度级减少,使某些细节消失,而水印信息嵌入的高频部分正好对应载体图像的细节。所以,直方图均衡化会干扰对水印信息的提取,如图8所示:
图8 直方图均衡化
图8(a)是对原始载体图像进行了直方图均衡化处理,图8(b)是从处理后的载体图像中提取出来的水印信息。提取水印和原始水印图像的NC值为0.9579,提取的水印信息和原始水印信息基本上相同。
(6)图像增亮与变暗
图像增亮是将原始载体图像的灰度范围压缩到较高的部分,图像变暗是将图像灰度范围压缩到较低的部分,如图9所示:
图9 图像增亮
图9(a)是将图像的灰度范围压缩到[0.4,1]的范围内后的载体图像,图9(b)是从压缩灰度后的载体图像中提取出来的水印信息。提取水印和原始水印图像的 NC值为1.0000,如图10所示:
图10 图像变暗
图10(a)是将图像的灰度范围压缩到[0,0.85]的范围内后的载体图像,图10(b)是从压缩灰度后的载体图像中提取出来的水印信息。提取水印和原始水印图像的 NC值为1.0000。从提取水印的效果图和NC值可以看出,嵌入水印的载体图像进行增亮和变暗的处理,对水印信息没有任何的损失,还是能够完全提取出原始的水印信息。
(7)增加图像对比度
此方法可以分成两类:直接对比度增强方法和间接对比度增强方法。前面的直方图均衡化属于间接对比度增强,而增加图像对比度属于直接对比度增强。通过改变载体图像的对比度,能够去除图像中的一部分水印信息,如图11所示:
图11 增加图像对比度
图11(a)是对通过对原始载体图像的灰度范围进行压缩,从而增加载体图像的对比度,灰度压缩范围为[0.2,0.8]。图11(b)是从增加了对比度的载体图像中提取出来的水印信息,提取水印和原始水印图像的NC值为0.8575。
(8)裁剪图像
对嵌入水印信息的载体图像进行裁剪,必然会丢失这部分嵌入的水印信息,从而提高提取水印信息的难度,如图12所示:
图12 裁剪图像
图12(a)是对原始载体图像进行了随机的裁剪,图中白色的部分是被裁减过的部分,图12(b)是从被裁减的载体图像中提取出来的水印信息。提取水印和原始水印图像的NC值为0.7249。从数值和提取出的水印的效果图可以看出,本文算法对裁剪具有较好的抵抗性。如表1所示:
表1 载体图像受攻击后的客观性能分析
从表1中可以看出,各个受攻击图像中,嵌入水印的载体图像的psnr值小了很多,图像在受到攻击后能量损失较多,嵌入其中的水印信息也必然受到损失。但是,本算法从受攻击后的图像中提取的水印仍然具有较好的辨识度以及较高的NC值,全部都在0.7以上,属于人眼可以接受的差异。
本文提出了一种基于Contourlet域能量和交换系数的图像水印算法,对图像进行Contourlet变换的两层LP分解,并对第二层分解的系数进行四个方向的多方向变换,形成四个方向子带,通过计算每个子带图像的能量,确定水印嵌入的子带,并且通过交换系数的嵌入算法,将水印信息嵌入载体图像。该算法特点如下:
(1)以二值图像作为水印,使水印信息更具直观性和可理解性。
(2)在水印检测过程中不需要原始水印图像,实现了盲水印提取。
(3)嵌入区域的选择。Contourlet分解可以将图像进行多个尺度和多个方向的分解,选择嵌入区域至关重要。算法通过对分解子带图像计算能量值的方式选择嵌入的子带。实验证明,在选择的子带中嵌入水印图像能够使载体图像具有更好的不可见性和鲁棒性。
(4)基于交换系数的嵌入算法。在选择的子带中嵌入水印信息的过程是通过交换子带系数来实现的。实验证明算法能够抵抗多种常见图像处理和几何变换的攻击,具有较强的鲁棒性。
(5)在水印信息嵌入过程中,算法保存了 Contourlet分解载体图像的层数、每层分解的方向数,以及嵌入水印信息选择的子带三个密匙,所以具有较高的安全性。
[1]金聪.数字水印理论与技术[M].北京:清华大学出版社.2008.50-72.
[2]刘方.变换域加密图像数字水印算法研究[D].山东师范大学硕士学位论文.2009,5.
[3]吴玲玲.变换域数字水印技术研究[D].南京信息工程大学硕士学位论文.2009,5.
[4]李海峰,宋巍巍,王树勋.基于 Contoudet变换的稳健性图像水印算法[J].通信学报.2009,27(4).87-94.
[5]梁栋等.基于非抽样 Contourlet变换的彩色图像数字水印算法[J].光学学报.2008,28(8).1469-1474.
[6]汪晓华.基于小波域的二值图像数字水印算法研究[D].西北大学硕士学位论文.2009,7.