鲁棒性数字水印算法
基于小波变换的图像水印算法在过去的十多年里得到了蓬勃的发展,小波变换在图像水印中的应用本质上是基于图像的“稀疏”表示方法。本章基于Contourlet和非冗余Contourlet变换,这两种最新的更“稀疏”的图像表示方法,分别提出了两种鲁棒性的数字水印算法。第一种方法,通过分析Contourlet域中特殊的父子系数关系,定义了Contourlet域中“重要树”的概念,利用“重要树”结构实现了水印的自适应嵌入。第二种方法通过实验发现绝大多数非冗余Contourlet域中父子系数关系在JPEG压缩前后的鲁棒性,采用大小关系调制的方式实现了水印的嵌入。仿真实验证明了Contourlet和非冗余Contourlet变换在数字水印应用中的潜力和有效性。
根据前面介绍,我们知道Contourlet变换是一种多分辨的、局部性的和多方向性的表示方法,它能更“稀疏”地表示具有光滑纹理的分段光滑的图像(自然场景图像),比小波变换具有更优越的非线性逼近性能。比起另外两种较常用的多尺度几何分析方法Ridgelet和Curvlet变换,Contourlet变换拥有更少的冗余度和更好的逼近性能。另一方面,Contourlet产生于离散域,不在需要解决Ridgelet和Curvelet离散化的难题,因此计算简便,更有利于在计算机上实现。
目前,Contourlet变换已经成功地应用到图像融合、图像恢复、图像去噪和图像编码等中,但它在数字水印中的应用仍然是个开放的话题。迄今为止,Contourlet域的水印算法还是比较少的,而在这些文章中都通过实验证明了所提算法的有效性和优越性。因此,本文的目的就是继续讨论Contourlet是否比Wavelet在鲁棒性和不可见性方面更加适合数字水印。在这篇文章中,我们提出了一种基于“重要树”的Contourlet域的水印算法。利用Coutourlet变换灵活可变的多分辨分析性、局部性的和方向性,本算法在Contourlet域同样定义了“重要树”,并且基于对Contourlet系数关系的研究,将水印嵌入选出的“重要树”中去。为了实现水印的自适应嵌入,文中利用系数间的统计特性,定义了纹理掩蔽模型以此达到水印鲁棒性和不可见性之间较好的折中。实验表明,该算法是鲁棒的,能经受住诸如JPEG压缩、加噪、中值滤波、剪切、均值滤波等攻击,并通过与小波域中一典型算法和另一Contourlet域算法的比较进一步证明了此算法的有效性。
3.1Contourlet变换及其系数之间的关系
尽管Curvelet变换表现出较高的方向性和各向异性,但其离散化的困难使得它难于应用。2002年,Do和Vetterli提出了Contourlet变换,它能够在每级上提供不同的、灵活多变的方向数,同时能够达到近似的临界采样。
Contourlet变换是通过一个有效的双迭代滤波组结构实现的。首先采用Laplacian金字塔(LP)获取点奇异,并得到一个低通子带和一系列带通子带,接着每个带通子带进一步被方向滤波器(DFB)分解为不同方向的子带以获得各个方向的信息,并将点奇异连接为线奇异。经过这两步后,图像被分解为多尺度下的多方向子带。Contourlet不仅具有小波的主要性质(即多尺度性、时频局部性),同样也具有高度的方向性和各向异性。另外,Contourlet的构造不同于Curvelet和其他的变换,它的构造起始于离散域,因此它更易在计算机上实现。
此外,在文献中,作者还指出:在小波域中,父子关系总是处于同一对应位置,而在Contourlet域中却是四个子系数分别处于两个不同的方向子带上。其次,如果父系数比较小,那么子系数在很大几率上也是比较小的。最后,通过定义互信息(即任意一个变量包含了多少关于另一个变量的信息),他们指出Contourlet系数依赖于一般意义上的周围的系数。
基于以上的发现,我们首先像小波域中那样定义了“重要树”的概念,因为它代表了图像中的纹理部分。另一方面,利用周围系数的统计特性,设计了一个局部权重因子来控制水印的嵌入强度。我们的水印为{.1,1}的伪随机二值序列。
3.2水印方案
3.2.1水印嵌入过程
步骤1将图像进行三级Contourlet分解,分别得到4,8,16个方向子带。
步骤2定义“重要树”:如果最粗糙尺度(最后一级分解)的系数满足,并且其同方向较精细的尺度(倒数第二级)相同空间位置的所有系数都满足,则这是一棵“重要树”,其中。需注意每个父系数含有四个子系数。
步骤3搜寻第三级和第二级尺度的重要树。
它的设计原则是依据纹理特性:纹理越粗的地方,人眼越不容易察觉,相应嵌入的水印值越多。因此我们可以在“重要树”中嵌入一个强度较大的水印。D为不同尺度下的方向数。另外,由于我们的嵌入过程是基于重要树的,故的设计只需考虑纹理掩蔽特性。
步骤5嵌入完毕后,通过重构算法得到含水印的图。
3.2.2水印检测过程
根据文献,Contourlet系数在某些确定的条件下是呈均值为零的Gaussian分布,因此相关性检测很适合于本算法的水印检测。相关性检测就是通过计算水印图像和水印之间的相关值,并将它与事先给定的阈值做比较,以此判断水印的存在与否。
如果,则判断水印存在,否则不存在。由虚警率确定。
3.3实验结果
在这个部分,我们对512×512的“Peppers”做了大量的实验并展示了重要的结果。PSNR值的高低用于确定含水印图像质量的高低。对于大小为的图像和,本论文中的PSNR值计算如下:
其中,表示的是图形像素值的最大值。
7幅标准图的PSNR值,均高于35db,说明此水印算法能保证较高的不可见性。与文献相比,两者的PSNR相近,不过我们的算法效果较好一些。
我们的算法在面对攻击时,和文献的算法一样有着很强的鲁棒性。另外,我们将这两种算法的结果连同文献的结果进行比较。文献是最早提出的Contourlet域的水印算法之一,文献中的算法是一种基于小波域的算法,而这三种算法都采用了相似的权重值。在相似的PSNR值的条件下,我们的算法和文献的算法,即使在压缩系数低到5的情况下,也能正确地检测到水印。相反,文献的算法在压缩系数低于8的时候就已经失效了。可以看出我们算法和文献表现相当,算法总能正确地检测到水印的存在。
接下来,我们将对水印进行加噪、均值滤波、剪切和旋转的操作。尽管这些攻击都比较严重,但检测器仍然能够成功地检测到水印,嵌入水印的检测值总是高于阈值,而其余999个假水印的检测值又总是低于阈值。我们的算法对剪切操作有着很强的抗击能力,当图像的剪切区域达到一半时,水印仍能正确检测到,这点在文献中未曾谈到。同时,该算法还能承受较强的噪声攻击和较小角度的旋转攻击,这些在文献中都未提及。而对这些的一个较好解释就是在我们的算法中“重要树”的采用以及纹理掩蔽特性的应用,使得我们嵌入过程的成功完成。这些实验进一步证明了Contourlet域的水印算法的可行性和优秀的鲁棒性。