论文部分内容阅读
摘要:文章提出了一种在离散小波变换域内实现图像水印的方法。此算法充分利用小波变换的特点,把原始图像及水印图像塔式分解,在多分辨率分解后的相同的频段来嵌入水印信息。该方法也利用了人眼视觉特性,算法简单而实用。实验证明,该算法部分地解决了水印不可见性与鲁棒性之间的矛盾,对常见的水印攻击都有一定的鲁棒性。
关键词:数字水印 DWT 小波变换 Fibonacci变换
综合了传统密码学的认证问题和鉴别问题的特点又与被保护数据紧密结合的数字水印技术越来越受到人们的重视,逐步成为多媒体信号处理领域的一个研究热点。数字水印技术是通过在原始数据中嵌入秘密信息——水印来证实该数据的所有权。这种被嵌入的水印可以是一段文字、标识或者序列号等等,而且这种水印通常是不可见或不可察的,它与原始数据(如图像、音频、视频数据)紧密结合并隐藏其中,成为源数据不可分离的一部分,并可以经历一些不破坏源数据使用价值或商用价值的操作而保存下来。数字水印的透明性和健壮性始终是一对相互制约的矛盾。只能是在保证透明性的前提下,尽量提高水印的健壮性。本文采用具有实际意义的二值图像作为水印,提出了与JPEG2000和MPEG-4标准相兼容的基于DWT的水印技术方案。
基本算法
(一)选择嵌入频段(见图1)
数字水印方案最重要的性质是鲁棒性和透明性,两者存在一定的矛盾。鲁棒性要求加强水印信息,而信息太强则会使水印不透明。图像的边缘和纹理部分能隐藏较多的数据,而图像的平坦部分对噪声相对敏感。图像平坦的部分集中了图像绝大部分能量,正对应着小波变换的低频子带。而高频部分则对应于图像的边缘和纹理,即细节部分。考虑到水印的鲁棒性,应将水印信息嵌入到图像DWT分解后的低频子带为宜,但低频段的变化对人眼的视觉影响较大,很难保证图像重构后水印的透明性。若将水印数据嵌入到图像的高频部分中,则可利用高频系数的特点,很好地将水印信息隐藏,但这样的水印却经受不住有损压缩、低通滤波等一些简单的图像处理,水印信息很可能在量化、压缩等处理中被删除。如果能将水印嵌入高、低频带的特性充分结合,就可能得到效果较好的水印嵌入方法。本文选择中、高频系数嵌入水印,如第二、三层的中、高频小波系数。因为第二、三层的小波系数是上一层低频系数进一步分解得到的结果,水印嵌入在该频段,既具有高频对视觉影响小的特点,又具有低频系数不易被修改、移除的特点,具有较好的鲁棒性,且最低分辨率子图像受压缩等变换的影响较小。因此,把水印信息嵌入到最低分辨率子图像中,水印具有了较好的透明性和鲁棒性。同时,为了提高水印的安全性,可以在嵌入前对水印信息按照一定的置乱规则进行置乱,再根据随机生成的0、1矩阵决定嵌入的水印信息。
(二)图像置乱算法
随着数字水印技术的兴起,置乱技术在通过置乱来分散错误比特的分布从而提高数字水印的鲁棒性方面又有了新的应用。通过现有置乱算法的比较,本文采用了Fibonacci变换进行预处理。这是由于Fibonacci变换具有以下两个独特的性质:首先,变换周期为2或4。这一点保证了预处理的快速性及算法的高效性,而嵌入算法的整体速度直接影响了使用者的效率乃至心情。其次,Fibonacci变换具有均匀的分散性。从而使水印比特均匀分散,保证了图像在破损或残缺时算法能够不影响视觉效果地提取水印信息,提高了算法的鲁棒性。
(三)水印的Fibonacci变换置乱预处理
定义1:设F0=1,F1=1,Fn=Fn-1+Fn-2,n≥3,则数列{Fn}称为Fibonacci数列。
定义2:设Fn,Fn+1是Fibonacci数列中的两个相邻数,称以下变换:Sk=(kFn+r)modFn+1为Fibonacci变换。这里r可作算法中密钥的一部分r=0,1,2…,Fn+1-1,k=0,1,2…,Fn+1-1。
由以上定义可以看出,该变换可将数列{Q}=(0,1,2…,Fn+1-1)变换成另一新数列{S}=(S0,S1,S2,…,SF-1),且可以证明数列{S}是数列{Q}的一个新的伪随机置换。
(四)水印嵌入与提取
水印添加及提取都是在小波域中进行的。水印嵌入常用的公式为:
Vi′=Vi+αXi (1)
其中,Vi,Vi′分别表示原始图像和加入水印后的图像,Xi为水印信息,α为水印强度值。α取值大,鲁棒性好,不可见性差;反之,α取值小,不可见性好,但鲁棒性差。可根据实验情况,满足不可见性的前提下,通过提高α来加强水印信息。其逆过程即可提取出水印。
算法实现
(一)水印嵌入
根据Mallat分解算法,图像在N个尺度上被分解为细节系数LHn、HLn、HHn和逼近系数LLN,且n=1,2,…,N。LL是最低频段滤波后的低尺度逼近,同级分辨率下,HL包含水平方向高通、垂直方向低通滤波后的细节信息,LH保留的是水平方向低通、垂直方向高通滤波后所得细节信息,HH保留的是水平方向和垂直方向都经过高通滤波后的细节信息。若原图像Ic是大小为M×M的灰度图像,水印Im是大小为N×N的二值图像,其中,M=A×2m,N=A×2n,m≥3,n≥2。水印嵌入步骤如下:
一是将原始图像进行L层小波分解得到3L+1个子带,分别为cAL、cHi、cVi、cDi,i=1,2,…,L。其中,cHi+1、cVi+1、cDi+1均由cAi分解得到。
二是使用Fibonacci变换对对二值水印图像Im进行置乱,得到置乱后的水印图像Im*。
三是对二值水印图像Im’进行K层小波分解得到3K+1个子带,分别为caK、chi、cvi、cdi,i=1,2,…,K。同时,使size(cAL)=size(caK),即Ic与Im*分解到最后的子图系数矩阵大小相等。
四是生成随机的0、1矩阵P,且size(P)=size(caK)。
五是如果P(i,j)值为0,则cHL(i,j)、cVL(i,j)、cDL(i,j)值不变,转入第七步。
六是如果P(i,j)值为1,则按以下公式计算cHL(i,j)、cVL(i,j)、cDL(i,j)的值。
cHL(i,j)=cHL(i,j)+α*chK(i,j),cVL(i,j)=cVL(i,j)+α*cvK(i,j),cDL(i,j)=cDL(i,j)+α*cdK(i,j) (2)
七是重复第五、六步,直到取完小波系数矩阵的所有点。
八是cAL以及其他尺度没有计算的小波系数以及矩阵P、水印强度因子α等均作为密钥保存。
九是利用修改后的系数矩阵进行小波逆变换,重构带有水印信息的原始图像。
本文采用峰值信噪比(PSNR)作为嵌入水印后重构图像质量的客观评价指标。
峰值信噪比PSNR的计算公式如下所示:
PSNR=10*log10(2552/MSE) (3)
W(i,j)与W′(i,j)为嵌入水印前后图像的灰度值,MSE为嵌入水印前后图像的均方误差。
本文采用公式(5)计算所提取的水印图像与原水印图像的相似度NC:
NC=∑i∑j[W(i,j)W*(i,j)]/∑i∑j[W(i,j)]2(5)
W(i,j)与W′(i,j)为嵌入水印前后图像的灰度值。
(二)水印提取与检测
提取过程即为嵌入过程的逆过程。其中,需要使用Fibonacci反变换,根据解的范围得到像素反置乱坐标,对提取的水印图像做反置乱变换就可以得到恢复的二值水印图像。
实验结果
本文以Matlab 7.0为实验平台,以Lena为原图和二值水印图做实验。其中,(a)为原始图像,(b)为水印图像,(c)为嵌入水印后图像,(d)为提取的水印。图2(d)的PSNR=54.199dB,而(a)和(b)的相似度NC=0.9991。当PSNR超过30dB时,人的视觉很难分辨原始图像和重构图像的差异,因此本算法满足水印信息的不可见性。
本文还对几种常见的水印攻击进行了实验,并给出了实验结果(见图3):
其中,(e)为高斯低通滤波处理提取的水印图像,(f)为3×3中值滤波处理后提取的水印图像,(g)为加入椒盐噪声后提取的水印图像,(h)为将图像缩小50%再放大200%后提取的水印图像,(i)为锐化攻击之后提取的水印图像。另外,表1列出了经过上文几种攻击后提取的水印与原水印图像的相似度。
表1几种常见攻击实验数据
操作 (e) (f) (g) (h) (i)
PSNR(dB) 39.1794 33.8088 22.5087 22.5261 21.499
NC 0.8877 0.8593 0.7192 0.7512 0.6310
由表1数据可知,在图像质量很差的时候,如在噪声攻击、拉伸和锐化攻击之后,图像PSNR值已经降到30dB以下,但也能够有效地提取出水印。在剪切攻击下,提取的水印图像效果如图4所示,由于对水印进行置乱可以消除水印像素的空间相关性,因此能提高水印抗图像剪裁操作的强壮性。剪切部分均为图像左上角。
表2中列出了在剪切掉原图的1/16-1/4大小后,提取的水印图像与原水印的相似度。
表2剪切操作实验数据
对应图像 (j) (k) (l)
剪切大小 1/16 1/8 1/4
相似度NC 0.9683 0.9013 0.8521
在JPEG压缩攻击之后,提取的水印图像如图5所示,(m)和(n)分别对应着从40%和60%的压缩质量。
表3分别列出了各种压缩质量下,嵌入水印图像的PSNR以及提取的水印相似度。由实验结果可知,随着JPEG压缩比的降低,图像质量增加,PSNR值随着增加,提取的水印相似度也逐渐增加。
总结
本文提出了一种基于小波变换的水印方案。在嵌入水印之前采用Fibonacci置乱算法对水印进行置乱,将置乱后的水印信息嵌入图像小波分解的中高频。提取时先进行逆置乱,并且采用伪随机序列决定嵌入位置,将小波变换和密码学结合起来。消除水印像素的空间相关性,增强了安全性,提高了抗几何攻击的能力,缓解水印不可见性与鲁棒性之间的矛盾。
实验结果表明,该水印算法能满足不可见水印的各项要求,在滤波及在几何变换、JPEG压缩中表现出一定的鲁棒性。
(作者单位:中国移动通信集团江西有限公司网络管理中心)
参考文献
1、林琼珠,韩国强,沃焱.一种可用于图像内容认证的数字水印算法[J].微计算机信息,2002(6).
2、许剑勇,邵世煌,田永宏.一种简单的基于多重数字水印的在线多媒体版权保护系统的设计和实现[J].微计算机信息,2003(6).
3、Stankovic S,Djurovic I,Pitas I.Watermarking in the space/spatial frequency domain using two dimensional Radom Wigner distribution[J].IEEE Transactions on Image Processing,2001(4).
4、Bender W,Gruhl D,Morioton N.Techniques for data hiding[J].IBM Syst J,1996(35).
关键词:数字水印 DWT 小波变换 Fibonacci变换
综合了传统密码学的认证问题和鉴别问题的特点又与被保护数据紧密结合的数字水印技术越来越受到人们的重视,逐步成为多媒体信号处理领域的一个研究热点。数字水印技术是通过在原始数据中嵌入秘密信息——水印来证实该数据的所有权。这种被嵌入的水印可以是一段文字、标识或者序列号等等,而且这种水印通常是不可见或不可察的,它与原始数据(如图像、音频、视频数据)紧密结合并隐藏其中,成为源数据不可分离的一部分,并可以经历一些不破坏源数据使用价值或商用价值的操作而保存下来。数字水印的透明性和健壮性始终是一对相互制约的矛盾。只能是在保证透明性的前提下,尽量提高水印的健壮性。本文采用具有实际意义的二值图像作为水印,提出了与JPEG2000和MPEG-4标准相兼容的基于DWT的水印技术方案。
基本算法
(一)选择嵌入频段(见图1)
数字水印方案最重要的性质是鲁棒性和透明性,两者存在一定的矛盾。鲁棒性要求加强水印信息,而信息太强则会使水印不透明。图像的边缘和纹理部分能隐藏较多的数据,而图像的平坦部分对噪声相对敏感。图像平坦的部分集中了图像绝大部分能量,正对应着小波变换的低频子带。而高频部分则对应于图像的边缘和纹理,即细节部分。考虑到水印的鲁棒性,应将水印信息嵌入到图像DWT分解后的低频子带为宜,但低频段的变化对人眼的视觉影响较大,很难保证图像重构后水印的透明性。若将水印数据嵌入到图像的高频部分中,则可利用高频系数的特点,很好地将水印信息隐藏,但这样的水印却经受不住有损压缩、低通滤波等一些简单的图像处理,水印信息很可能在量化、压缩等处理中被删除。如果能将水印嵌入高、低频带的特性充分结合,就可能得到效果较好的水印嵌入方法。本文选择中、高频系数嵌入水印,如第二、三层的中、高频小波系数。因为第二、三层的小波系数是上一层低频系数进一步分解得到的结果,水印嵌入在该频段,既具有高频对视觉影响小的特点,又具有低频系数不易被修改、移除的特点,具有较好的鲁棒性,且最低分辨率子图像受压缩等变换的影响较小。因此,把水印信息嵌入到最低分辨率子图像中,水印具有了较好的透明性和鲁棒性。同时,为了提高水印的安全性,可以在嵌入前对水印信息按照一定的置乱规则进行置乱,再根据随机生成的0、1矩阵决定嵌入的水印信息。
(二)图像置乱算法
随着数字水印技术的兴起,置乱技术在通过置乱来分散错误比特的分布从而提高数字水印的鲁棒性方面又有了新的应用。通过现有置乱算法的比较,本文采用了Fibonacci变换进行预处理。这是由于Fibonacci变换具有以下两个独特的性质:首先,变换周期为2或4。这一点保证了预处理的快速性及算法的高效性,而嵌入算法的整体速度直接影响了使用者的效率乃至心情。其次,Fibonacci变换具有均匀的分散性。从而使水印比特均匀分散,保证了图像在破损或残缺时算法能够不影响视觉效果地提取水印信息,提高了算法的鲁棒性。
(三)水印的Fibonacci变换置乱预处理
定义1:设F0=1,F1=1,Fn=Fn-1+Fn-2,n≥3,则数列{Fn}称为Fibonacci数列。
定义2:设Fn,Fn+1是Fibonacci数列中的两个相邻数,称以下变换:Sk=(kFn+r)modFn+1为Fibonacci变换。这里r可作算法中密钥的一部分r=0,1,2…,Fn+1-1,k=0,1,2…,Fn+1-1。
由以上定义可以看出,该变换可将数列{Q}=(0,1,2…,Fn+1-1)变换成另一新数列{S}=(S0,S1,S2,…,SF-1),且可以证明数列{S}是数列{Q}的一个新的伪随机置换。
(四)水印嵌入与提取
水印添加及提取都是在小波域中进行的。水印嵌入常用的公式为:
Vi′=Vi+αXi (1)
其中,Vi,Vi′分别表示原始图像和加入水印后的图像,Xi为水印信息,α为水印强度值。α取值大,鲁棒性好,不可见性差;反之,α取值小,不可见性好,但鲁棒性差。可根据实验情况,满足不可见性的前提下,通过提高α来加强水印信息。其逆过程即可提取出水印。
算法实现
(一)水印嵌入
根据Mallat分解算法,图像在N个尺度上被分解为细节系数LHn、HLn、HHn和逼近系数LLN,且n=1,2,…,N。LL是最低频段滤波后的低尺度逼近,同级分辨率下,HL包含水平方向高通、垂直方向低通滤波后的细节信息,LH保留的是水平方向低通、垂直方向高通滤波后所得细节信息,HH保留的是水平方向和垂直方向都经过高通滤波后的细节信息。若原图像Ic是大小为M×M的灰度图像,水印Im是大小为N×N的二值图像,其中,M=A×2m,N=A×2n,m≥3,n≥2。水印嵌入步骤如下:
一是将原始图像进行L层小波分解得到3L+1个子带,分别为cAL、cHi、cVi、cDi,i=1,2,…,L。其中,cHi+1、cVi+1、cDi+1均由cAi分解得到。
二是使用Fibonacci变换对对二值水印图像Im进行置乱,得到置乱后的水印图像Im*。
三是对二值水印图像Im’进行K层小波分解得到3K+1个子带,分别为caK、chi、cvi、cdi,i=1,2,…,K。同时,使size(cAL)=size(caK),即Ic与Im*分解到最后的子图系数矩阵大小相等。
四是生成随机的0、1矩阵P,且size(P)=size(caK)。
五是如果P(i,j)值为0,则cHL(i,j)、cVL(i,j)、cDL(i,j)值不变,转入第七步。
六是如果P(i,j)值为1,则按以下公式计算cHL(i,j)、cVL(i,j)、cDL(i,j)的值。
cHL(i,j)=cHL(i,j)+α*chK(i,j),cVL(i,j)=cVL(i,j)+α*cvK(i,j),cDL(i,j)=cDL(i,j)+α*cdK(i,j) (2)
七是重复第五、六步,直到取完小波系数矩阵的所有点。
八是cAL以及其他尺度没有计算的小波系数以及矩阵P、水印强度因子α等均作为密钥保存。
九是利用修改后的系数矩阵进行小波逆变换,重构带有水印信息的原始图像。
本文采用峰值信噪比(PSNR)作为嵌入水印后重构图像质量的客观评价指标。
峰值信噪比PSNR的计算公式如下所示:
PSNR=10*log10(2552/MSE) (3)
W(i,j)与W′(i,j)为嵌入水印前后图像的灰度值,MSE为嵌入水印前后图像的均方误差。
本文采用公式(5)计算所提取的水印图像与原水印图像的相似度NC:
NC=∑i∑j[W(i,j)W*(i,j)]/∑i∑j[W(i,j)]2(5)
W(i,j)与W′(i,j)为嵌入水印前后图像的灰度值。
(二)水印提取与检测
提取过程即为嵌入过程的逆过程。其中,需要使用Fibonacci反变换,根据解的范围得到像素反置乱坐标,对提取的水印图像做反置乱变换就可以得到恢复的二值水印图像。
实验结果
本文以Matlab 7.0为实验平台,以Lena为原图和二值水印图做实验。其中,(a)为原始图像,(b)为水印图像,(c)为嵌入水印后图像,(d)为提取的水印。图2(d)的PSNR=54.199dB,而(a)和(b)的相似度NC=0.9991。当PSNR超过30dB时,人的视觉很难分辨原始图像和重构图像的差异,因此本算法满足水印信息的不可见性。
本文还对几种常见的水印攻击进行了实验,并给出了实验结果(见图3):
其中,(e)为高斯低通滤波处理提取的水印图像,(f)为3×3中值滤波处理后提取的水印图像,(g)为加入椒盐噪声后提取的水印图像,(h)为将图像缩小50%再放大200%后提取的水印图像,(i)为锐化攻击之后提取的水印图像。另外,表1列出了经过上文几种攻击后提取的水印与原水印图像的相似度。
表1几种常见攻击实验数据
操作 (e) (f) (g) (h) (i)
PSNR(dB) 39.1794 33.8088 22.5087 22.5261 21.499
NC 0.8877 0.8593 0.7192 0.7512 0.6310
由表1数据可知,在图像质量很差的时候,如在噪声攻击、拉伸和锐化攻击之后,图像PSNR值已经降到30dB以下,但也能够有效地提取出水印。在剪切攻击下,提取的水印图像效果如图4所示,由于对水印进行置乱可以消除水印像素的空间相关性,因此能提高水印抗图像剪裁操作的强壮性。剪切部分均为图像左上角。
表2中列出了在剪切掉原图的1/16-1/4大小后,提取的水印图像与原水印的相似度。
表2剪切操作实验数据
对应图像 (j) (k) (l)
剪切大小 1/16 1/8 1/4
相似度NC 0.9683 0.9013 0.8521
在JPEG压缩攻击之后,提取的水印图像如图5所示,(m)和(n)分别对应着从40%和60%的压缩质量。
表3分别列出了各种压缩质量下,嵌入水印图像的PSNR以及提取的水印相似度。由实验结果可知,随着JPEG压缩比的降低,图像质量增加,PSNR值随着增加,提取的水印相似度也逐渐增加。
总结
本文提出了一种基于小波变换的水印方案。在嵌入水印之前采用Fibonacci置乱算法对水印进行置乱,将置乱后的水印信息嵌入图像小波分解的中高频。提取时先进行逆置乱,并且采用伪随机序列决定嵌入位置,将小波变换和密码学结合起来。消除水印像素的空间相关性,增强了安全性,提高了抗几何攻击的能力,缓解水印不可见性与鲁棒性之间的矛盾。
实验结果表明,该水印算法能满足不可见水印的各项要求,在滤波及在几何变换、JPEG压缩中表现出一定的鲁棒性。
(作者单位:中国移动通信集团江西有限公司网络管理中心)
参考文献
1、林琼珠,韩国强,沃焱.一种可用于图像内容认证的数字水印算法[J].微计算机信息,2002(6).
2、许剑勇,邵世煌,田永宏.一种简单的基于多重数字水印的在线多媒体版权保护系统的设计和实现[J].微计算机信息,2003(6).
3、Stankovic S,Djurovic I,Pitas I.Watermarking in the space/spatial frequency domain using two dimensional Radom Wigner distribution[J].IEEE Transactions on Image Processing,2001(4).
4、Bender W,Gruhl D,Morioton N.Techniques for data hiding[J].IBM Syst J,1996(35).