一种DC系数的自适应水印算法
2013-01-16金渊智
金渊智
(三门峡职业技术学院 河南三门峡 472000)
0 引言
当前,数字水印技术(Digital Watermarking)是国际信息安全领域研究的重要分支,它的研究目的主要是为了应对当前网络盗版横行的趋势,以此来保障数字作品原作者的版权。
基于DCT变化的数字水印是目前研究的热点。图像在经8*8分块DCT变换后的系数分为DC系数(1个)和AC(63个)系数,根据数据的大小可知,图像的能量主要集中在系数矩阵的左上角,右下角的系数基本上全部为“0”,这就是DCT系数的特点。黄继武在文献[1]中总结了利用DC系数嵌入和AC系数嵌入的优劣性,同时指出,从稳健性角度分析,DC分量更适合用来嵌入水印,AC分量可嵌入的水印容量较大。在此基础上又出现了大量的DCT域水印算法[2-5]。由于在DC分量上嵌入水印更稳健,因此,本文提出了一种选择DC系数作为水印嵌入的位置的算法。同时结合HVS的两大特性,将图像块(8*8)分为3大类,以便在每类分块中叠加不同强度的水印信号,实现水印的自适应嵌入。
1 水印算法
1.1 HVS 特点
关于HVS的研究结果[6],在水印嵌入时,对于嵌入强度来说会存在一个临界值(T),如果嵌入强度大于T的话,携带水印的图像就会出现明显的图像失真;如果小于这个临界值,人类视觉系统就无法感知出载体图像中存在水印信号,这样就满足了水印的不可见性。T的取值通常情况下会受到图像的背景照度、背景纹理以及边缘等因素的影响,如果图像背景亮度越强、纹理越复杂,那么T的值也就大,相反T的值就越小。
载体图像背景亮度即DCT块的DC分量,载体图像纹理即块内方差。块内方差由公式(1)求出:
这里f(x,y)为每个图像块在(x,y)处的像素值。
结合HVS的特点和文献[7],在水印嵌入前,先将图像块进行分类。可以将图形块分成3大类(R1,R2,R3),对于这三大类分块的水印嵌入强度依次增强。
1.2 水印预处理
一般来说,在嵌入水印之前要对水印图像进行预处理操作。常用的预处理操作有加密类和变换类,由于加密类操作需要较大的计算量,影响水印的处理速度,而变换类预处理操作速度较快,因此在此选择Arnold变换来对水印图像进行预处理操作。对M*M的水印图像按照公式(3)进行Arnold变换,
再将得到的矩阵按列优先转换为一维二进制序列m,即下面要嵌入的信息序列m。
1.3 水印的嵌入
水印的嵌入基本流程如图1,算法的基本思路是:将原始图像分割成不相交的8*8子块,再对每个分块进行DCT变换,利用HVS特性对分块进行分类,最后在DCT域的DC系数上嵌入水印。
图1 自适应水印嵌入算法框图
采取以下步骤完成水印的嵌入:
①将水印图像按照上一小节的方法进行预处理,得到水印图像的一维序列m。
②设原始载体图像I为N*N阶的灰度图像,先将I分成互不相交且个数最多的8*8子块记为,按式(1)、(2)计算每一块的方差备用,然后对每个子块进行DCT变换,将变换后的DCT系数矩阵记为,其中即DC系数。
其中wl(为了简便和分块DCT系数使用同一个下标,下同)代表当前要嵌入的水印信息,α是基于DC系数的嵌入强度。
1.4 水印的提取
设待测水印图像为A*,则水印的提取过程如图2:
图2 水印提取算法的框图
具体的提取方法如下:
①将待A*分割为互不重叠8*8分块,计算每一块的方差,并进行DCT变换得到。
③对于每一块的DC系数按照公式(5)进行分别提取:
④将上述恢复出的一维水印序列m*变成二维序列,再利用Arnold变换具有周期性的特点进行逆置乱变换,得到最终的提取结果。
2 实验结果与分析
本文所有的实验均在Matlab2010上完成,处理器 Intel Celeron 1.8 GHz,内存 1 GB,操作系统为Windows 2003。在实验中选用的载体图像是256*256的Lena图像(如图3(a)所示),水印信息为32*32的二值图像(如图3(b)所示)。根据嵌入方法可知,这样做已经达到了水印信息的最大嵌入量,即256*256的Lena图像最多可以嵌入1024比特的信息,这样更能说明该水印算法具有良好的不可见性以及具有较强的鲁棒性。采用峰值信噪比(PSNR)评价嵌入水印后灰度图像与原始灰度图像间的失真度,并采用归一化相关系数(NC)来定量地评价提取的水印与原始水印之间的相似度。
图3 水印嵌入前后对比
2.1 不可见性
对水印不可见性进行测试,图4是水印嵌入实例。图4(a)是嵌入了水印的原始宿主图像。与图3(a)相比,在视觉上观察不出有任何明显的变化,同时计算PSNR为18.415 3,因此算法具有良好的不可见性。
图4 水印不可见性及检测
2.2 其他攻击测试
为了验证算法的鲁棒性,本文还做了盐椒噪声、JPEG压缩、高斯低通滤波和剪切攻击的提取实验,实验的参数和结果如表1所示。与此同时,通过计算水印提取的时间,也说明了该算法具有较高的执行效率。
表1 各类攻击下的实验数据汇总
针对不同块分类R1、R2和R3分别采用不同的嵌入强度 α(0.005,0.015,0.018)实现了水印的自适应嵌入。由于本文采用的是有意义的水印信息,即便是当NC的值小于0.5时,也能通过主观判断来获得正确的水印信息,而NC的值越接近1,则表明该水印算法的效果越好。
[1]黄继武,Yun Q.Shi,程卫东.DCT域图像水印:嵌入对策和算法[J].电子学报,2000(4):57-60.
[2]闫丽君,康宝生,岳晓菊.改进的基于DCT的自适应水印算法[J].计算机工程与应用,2011(5):186-187.
[3]李昊,吕建平,杨芳芳.基于正负量化的DCT域数字图像盲水印算法研究[J].计算机工程与应用,2011(8):197-200.
[4]王静,王冰.基于DCT域和纹理复杂度的图像水印算法[J].计算机工程,2011(18):148-150.
[5]黄继武,Yun Q.Shi,姚若河.基于块分类的自适应图像水印算法[J].中国图形图像学报,1999(8):640-643.
[6]石红梅.一种强鲁棒性的图像数字水印算法的设计[J].常州信息职业技术学院学报,2011(3):36-39.
[7]黄继武,Yun Q.Shi.一种自适应图像水印算法[J].自动化学报,1999(7):476-482.