一种自适应的DCT 域水印算法
2013-07-03金渊智
金渊智
(三门峡职业技术学院 信息工程系,河南 三门峡 472000)
0 引言
随着计算机和网络技术的飞速发展,多媒体被广泛地运用到人们社会生活中的各个领域.同时,多媒体产品的安全问题已成为目前一个十分重要而又富有挑战性的研究课题.数字水印技术是实现数字产品版权保护的一种有效方法,它将信息嵌入到数字多媒体产品中,用于版权保护、内容检验或提供其它信息.它目前已成为信息安全领域的一个研究热点,也是信息隐藏研究领域的一种重要分支.
基于DCT 变化的数字水印是目前研究的热点.图像在经8*8分块DCT 变换后的系数分为DC 系数(1个)和AC(63个)系数,根据数据的大小可知,图像的能量主要集中在系数矩阵的左上角,右下角的系数基本上全部为“0”,这就是DCT 系数的特点.根据这个特点,当前大部分算法都是基于DC 系数或者是基于AC 系数进行嵌入的.黄继武在文献[1]中总结了利用DC 系数嵌入和AC 系数嵌入的优劣性,同时指出,从稳健性角度分析,DC分量更适合用来嵌入水印,AC分量可嵌入的水印容量较大.在此基础上又出现了大量的DCT域水印算法[2-5].由于上述水印嵌入方法都是单一的采用DC分量或者AC分量,使得算法具有一定的局限性,因此,本文提出了选择DC 系数和AC 中低频系数共同作为水印嵌入的位置的算法.同时结合HVS的亮度掩蔽和纹理掩蔽的两大特性,将图像块(8*8)分为3 大类,以便在每类中嵌入不同强度的水印信息,实现水印的自适应嵌入.
1 水印算法
1.1 HVS 特点
关于HVS的研究结果,在水印嵌入时,对于嵌入强度来说会存在一个临界值(T),如果嵌入强度大于T的话,携带水印的图像就会出现明显的图像失真;如果小于这个临界值,人类视觉系统就无法感知出载体图像中存在水印信号,这样就满足了水印的不可见性.T的取值通常情况下会受到图像的背景照度、背景纹理以及边缘等因素的影响,如果图像背景亮度越强、纹理越复杂,那么T的值也就大[6-7],相反T的值就越小.
载体图像背景亮度即DCT 块的DC分量,图像纹理复杂度即块内方差.块内方差可由公式(1)求出:
这里f(x,y)为每个图像块在(x,y)处的像素值.
结合HVS的特点和文献[8],我们把图像块分为三类,以便迭加不同强度的水印分量.第1类(R1)平均灰度较低(暗),且灰度变化比较平滑,HVS 对其中象素值的改变较为敏感,迭加的水印分量的强度应最弱;第3类(R3)平均灰度较高,且纹理复杂(或存在边缘),HVS 对其中象素值的改变敏感性最弱,迭加的水印分量的强度应最强;余下的为第2类(R2).
1.2 水印预处理
水印图像置乱是一种常见的水印加密方法,它使得合法使用者可以自由控制算法的选择、参数的选择以及使用随机数技术,这就加大了攻击者非法破译的难度.由于Arnold 算法易于实现,其置乱次数可以为隐藏系统提供密钥(Key),从而增强了系统的安全性和保密性,同时该算法实现的置乱克服了随机置乱的不可恢复性.故本文采用Arnold 变换对水印信息进行置乱.
对M*M的水印图像按照公式(3)进行Arnold 变换,
再将得到的矩阵按列优先的方式转换为一维二进制序列m,即下面要嵌入的信息序列m.
1.3 水印的嵌入
水印的嵌入基本流程如图1,算法的基本思路是:将原始图像分割成不相交的8*8 子块,再对每个分块进行DCT 变换,利用HVS 特性对分块进行分类,最后在DCT 域的DC 和AC 系数上嵌入水印.
图1 自适应水印嵌入算法框图
采取以下步骤完成水印的嵌入:
①将水印图像按照上一小节的方法进行预处理,得到水印图像的一维序列m.
1.4 水印的提取
设待测水印图像为A*,则水印的提取过程如下:
图2 水印提取算法的框图
具体的提取方法如下:
③对于每一块的DC 系数(公式(6))和AC 系数(公式(7))进行分别提取:
④根据得到的λ*和d*值运用式(8)进行比较判断得到水印信号.
⑤将上述恢复出的一维水印序列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 水印嵌入前后对比
图4 水印不可见性及检测
2.1 不可见性
对水印不可见性进行测试,图4 是水印嵌入实例.图4(a)是嵌入了水印的原始宿主图像.与图3(a)相比,在视觉上观察不出有任何明显的变化,同时计算PSNR 为18.4251,因此算法具有良好的不可见性,说明本算法是有效的.
2.2 其他攻击测试
为了验证算法的鲁棒性,本文还做了盐椒噪声、JPEG 压缩、高斯低通滤波和剪切攻击的提取实验,实验的参数和结果如表1所示.与此同时,通过计算水印提取的时间,也说明了该算法具有较高的执行效率.
表1 各类攻击下的实验数据汇总
针对不同块分类R1、R2 和R3 我们分别采用不同的嵌入强度λ 和d(2,6,10)实现了水印的自适应嵌入,为了简便起见,在同一类中和的取值相同.由于本文采用的是有意义的水印信息,即便是当NC的值小于0.5 时,也能通过主观判断来获得正确的水印信息,而NC的值越接近1,则表明该水印算法的效果越好.
3 小 结
本文首先介绍了DCT 系数的特点和HVS的研究成果,然后研究前人的水印算法的基础上,提出了结合DC 系数和AC 系数协同实现的自适应水印嵌入方案.最后,通过仿真实验,主观感觉无法感知到水印的存在,表明水印具有不可见性,在鲁棒性方面,当含水印图像遭受各种信号处理和噪声攻击的情况下,提取时依然具有较强的稳健性和鲁棒性.
[1]黄继武,Yun Q.Shi,程卫东.DCT 域图像水印:嵌入对策和算法[J].电子学报,2000,28(4):57-60.
[2]闫丽君,康宝生,岳晓菊.改进的基于DCT的自适应水印算法[J].计算机工程与应用,2011,47(5)186-187.
[3]李昊,吕建平,杨芳芳.基于正负量化的DCT 域数字图像盲水印算法研究[J].计算机工程与应用,2011,47(8)197-200.
[4]王静,王 冰.基于DCT 域和纹理复杂度的图像水印算法[J].计算机工程,2011,37(18)148-150.
[5]黄继武,Yun Q.Shi,姚若河.基于块分类的自适应图像水印算法[J].中国图形图像学报,1999,4(8)640-643.
[6]Watson A B.DCT quantization matrices visually optimized for individual images[J].In:Proc.of SPIE:Human Vision ,Visual Processing and Digital Display IV,Washington:SPIE,1993,1913:202-216.
[7]Jayant N,Johnston J,Safranek R.Signal compression based on model of human perception[J].Proceedings of the IEEE,1993,81(10):1385-1421.
[8]黄继武,Yun Q.Shi,一种自适应图像水印算法[J].自动化学报,1999,25(4):476-482.