半脆弱性数字水印算法研究
数字水印的另一个重要用途是作品信息内容的真实性和完整性的认证。本章用于非冗余Contourlet域中的父子大小关系的半脆弱特性给出了一种半脆弱认证水印技术的新方法。这种父子关系不仅对非恶意操作(JPEG/JPEG2000压缩、高斯加噪、高斯滤波和对比度增强)具备优秀的鲁棒性,而且对恶意操作(复制粘贴操作)具备有效的脆弱特性。认证系统即是基于这层父子系数关系的半脆弱性质,并通过调节这种特殊的父子系数的能量关系达到了水印的不可见性,鲁棒性和局部定位准确性之间的一个较好的折中。文中还引入了图像融合算子和形态学算子以提高局部定位的准确性。认证度的高低由虚警率和误检率的高低判定。实验证明该算法能够对篡改实现准确的定位,并在同时经受恶意和非恶意操作的时候,仍然能保证误检率低于1.5%和虚警率低于6.5%。
5.1相关工作
从算法所在的域考虑,半脆弱性算法同样也经历了从空域算法到变换域算法的过程。早期的空域算法,由于鲁棒性较弱,所以集中在脆弱水印方面的研究。变换域的半脆弱性算法同鲁棒性水印算法类似,通过修改变换后的系数完成水印嵌入,多数算法采用的是由鲁棒性水印算法演变而来的方法,下面介绍几种。
Wu等提出了一种基于DCT变换的半脆弱性水印。水印的嵌入过程通过判断当前系数的查找表的映射值与当前水印位是否相等来实现。如果两者相等,则不做任何操作,否则用最近的等值映射像素值替换。另外,文中还采用了一个改进型JPEG编码器,提高了水印对JPEG压缩的抵抗能力。认证和定位部分通过判断提取的水印是否和原始水印相等即可实现。整个算法的安全性依靠于查找表的生成、保存和发布的安全性。
Lin和Chang等发现了匹配的两个块中的两个DCT系数在JPEG压缩前后保持不变的性质,将编码后的这层关系嵌入DCT域的中频系数中。该算法获得了很好的抗击JPEG压缩的鲁棒性(QF=50),但是关于其他非恶意的操作的情况文中并未提及。
Ho等基于Pinned正弦变换(PST)提出了一种用于图像内容认证的半脆弱水印算法。篡改检测的可能性高于98%,并且能够实现篡改区域的近似恢复。但算法除JPEG压缩外也未曾涉及其他非恶意操作。
Kundur and Hatziankos基于小波变换提出了一种名叫Telltale的篡改检测的半脆弱水印算法。本算法利用小波变换多尺度的特性实现了篡改区域的分层检测。与传统的DCT变换不同的是,该算法不再需要分块过程即可实现篡改区域的检测。小波变换在空域和频域的局部定位特性使得小波变换成为半脆弱水印算法的一个很好的选择。但文中使用的量化阈值是从高分辨率到低分辨率递增的,有违人类视觉特性,所以容易造成图像质量的失真。另外,算法中用于区分恶意和非恶意操作的TAF(Tamper Assessment Function),效果不甚满意。
李春等提出了一种抗JPEG压缩的半脆弱水印算法。该算法根据图像相邻小波高频系数之间的大小关系在JPEG压缩之后大多数没有发生变化的事实,提出了一种新的抗JPEG压缩的半脆弱水印算法。实验结果表明,该算法计算简单,嵌入容量大,有很好的抗JPEG压缩性能。但算法也未涉及JPEG压缩以外的非恶意操作。
以上分析可以看到,基于小波变换的水印算法已经成为了一个新的研究热点。然而,张量积构造的小波变换在捕捉图像的纹理和边缘部分并不是最优的,而这些纹理部分对于图像认证却是极其重要的,因为认证水印往往就是嵌入这些位置。因此,我们需要探索其他新的变换来解决这个问题。非冗余Contourlet变换(WBCT)是本文采用的变换,他的优点在前面已经做了详细的介绍。
另外,在一些现存的算法中,研究者主要注重单个的操作,如单独的JPEG压缩或者是单独的复制粘贴操作。但在实际应用中,图像更有可能的是同时经历这些操作。除此之外,很多算法只注重误检率(Missed detection rate,MDR),很少提及虚警检测率(False alarm rate),但我们认为对两者进行同时考虑有助于提高算法的准确性。
本章提出了一种基于非冗余Contoulet变换的图像认证水印算法。算法通过调制父子大小关系的方法完成了水印嵌入。形态学和融合算子的应用,一方面将4个不同子带的检测结果融合起来,另一方面将非恶意操作引入的误警误差去除,因此大大提高了水印的检测率。通过大量实验证明了我们所提出的算法能够准确地检测和定位篡改区域,并将误检率和虚警检测率分别控制在1.5% 以下和6.5% 以下。
5.2水印算法
基于WBCT多尺度的性质,我们知道原图任何部位的改变都能在12个子带的相同空间位置处检测到。由于不同的子带代表着不同的方向信息,所以我们有理由相信水印嵌入不同的子带中能够得到不同的效果。本文中我们选择水印嵌入四个任意的子带中,这可以使图像质量和MDR之间达到一个较好的平衡,具体的分析请见5.3节。
5.2.1水印嵌入过程
在我们的算法里,原图的大小为,水印图的大小为。水印为一个伪二值随机序列{0,1}。首先,我们将原图进行2级WBCT分解,得到12个子带,同时也得到12套父子系数关系。其次,利用密钥选择其中4个子带作为嵌入水印之用。
其中定义为父系数,为其对应的四个子系数。阈值控制着水印图像的质量和鲁棒性,最后,我们实施WBCT的重构变换得到了水印图。
5.2.2水印检测过程
首先对水印图进行相同的2级WBCT变换,并利用密钥选择出嵌入水印的4个子带。
表示无论提出的水印是什么都认为是未被篡改的部分,为误差控制界限(Error Tolerance Margin)值,目的是降低由非恶意操作引起的虚警率。需要注意的是,值较高会导致MDR的增加,值较低则会导致虚警率的增加。因此,值的确定是通过调节MDR和虚警率之间的平衡而确定,是经验值。
5.2.3认证过程
将提取出的水印比特和原始水印比特进行比较即得到水印差图。
水印差图被用于图像篡改区域的定位。差图首先被分为4个部分,每个部分代表的是每个子带的差值信息。为了获得不同子带不同的方向信息,我们采用图像融合技术将4个部分融合成一个差图,以提高水印检测的准确性。
融合算子将四个不同方向的子带的检测结果融合成一幅综合的结果,有效地提高了篡改结果的准确性。
最后,为了提高检测率,我们采用了形态学算子。根据观察,大多数由非恶意操作引起的虚警误差的分布都是孤立的,而由复制粘贴这一恶意操作引起的误差就相对稠密得多,而形态学算子作为信号处理中一个非线性技术可以去除非恶意操作引起的孤立的虚检点,而使得篡区域更加紧凑,以此降低虚警率和MDR。腐蚀(记为)和膨胀(记为)是两个最基本的形态学算子。在大多数的应用中,这两个算子又常常被联合起来成为开、闭运算。
与的开运算,记为,定义为:
在我们的算法中,我们首先使用了开运算,接着使用了闭运算。实验结果证明形态学算子的应用提高了算法的检测率,参见4.4节。
5.3实验结果
为了测试算法的有效性,本节中所有的实验都是基于标准的512×512测试图:“Lena”、“Peppers”、“Goldhill”、“San Diego”、“Boats”和“Trucks”。
5.3.1不可见性测试
我们利用峰值性噪比(PSNR)来评估嵌入水印后的图像质量。PSNR值越高说明图像的质量越好,反之,质量越差。横坐标代表的是随机选择用于水印比特嵌入的子带数目。例如,“2”代表的是从12个子带中随机选取2个子带用于水印比特的嵌入。随着子带数目的增加,PSNR值随之下降。不过,图像中出现了小波动,究其原因是因为不同的子带对图像质量的影响不同。诸如,高频部位的子带的不可见性就高于低频部位的子带。我们还可以发现,当只有1个子带嵌入水印的时候,图像的质量最高:6幅图中最高的达到44db以上,而最低的也有36db。当12个子带全部嵌入水印的时候,图像质量下降得最厉害,PSNR值处于30db左右。同时我们也注意到,当用于嵌入的子带数目为4的时候,6幅图的PSNR值都保持在33db以上。
我们可以看到随着用于嵌入的子带数目的增加,MDR值也随之下降,即检测率也随之提高。当子带数目为1的时候,MDR的值最高,都在0.6以上。当子带数目为12的时候,MDR值最低,接近0左右。同时也注意到子带数目为4的时候,MDR在0.2左右。通过分析,我们认为子带数目为4的时候能够在PSNR值和MDR值之间找到一个较好的折中,因此,我们选择将水印比特嵌入12个子带中任意选择的4个子带中,并采用融合算子技术提高检测率。
5.3.2检测表现的测试方法
我们使用虚警率(False alarm rate,)和误检率(Missed detection rate,)评估认证算法的效果,其定义如下:
未被篡改的像素被误检为被篡改;
被篡改的像素被误检为未被篡改。
在我们的算法中,我们认为虚警率和误检率具有相关性,因此在分析算法表现的时候同时考虑了两者。
5.3.3JPEG和JPEG2000非恶意操作的鲁棒性测试
本节我们进行算法抵抗JPEG压缩和JPEG2000压缩操作。随着压缩比的增加,两者的虚警率也随之增大。但即使在压缩比较高的情况下(QF=50),虚警率还是相对较低的,分别为15%和6% 以下。结果清楚地表明在相同的压缩比下,JPEG2000压缩后的结果明显地好于JPEG压缩,原因在于WBCT和JPEG2000都是基于小波变换的。
5.3.4复制粘贴操作的脆弱性测试
本节测试的是复制粘贴操作联合非恶意操作的情况。复制粘贴采用的是本图像中的某个64×128大小部位去替换图中另一部位的方式。
结果表明了在保证较低的MDR和虚警率的前提下:MDR平均值为1%左右,而虚警率低于4%,我们的算法能够准确地检测出篡改区域。由于测试图“Trucks”和“San Diego”由于含有较丰富的纹理信息,他们的结果优于其他测试图,MDR和误警率都在2%左右。MDR的平均值仅仅只有0.5%左右,虚警率也只有1%左右,这又再一次证明了我们的算法更能有效地抵抗JPEG2000操作,这当然和WBCT与JPEG2000都是基于小波变换密不可分的。
本章提出了一种基于非冗余Contoutlet变换的半脆弱水印算法。水印比特通过调节父子系数的大小关系完成嵌入。实验结果表明该盲检测的半脆弱水印算法能够保证在虚警率低于6.5%和MDR低于1%的情况下,准确地实现篡改区域的认证和定位。在利用WBCT域的父子关系在同时经历恶意操作和非恶意操作联合的攻击中,该算法有效地提高了篡改区域的检测准确率。
未来的工作将集中在父子能量关系与不同的篡改区域位置之间的关系研究,恶意操作与非恶意操作之间的分类研究,以及篡改区域的恢复算法研究。