一种DWT域基于IFS的数字水印算法
摘要:提出了一种小波域基于迭代函数系(IFS)的双重数字水印算法。即将水印信息通过IFS变换为自相似水印分形图,利用拉普拉斯图像边缘检测的方法将水印信息嵌入小波域低频逼近系数中。实验证明该算法具有很好的鲁棒性,同时保证了水印的不可见性。
关键词:数字水印 JPEC2000 小波变换 迭代函数系
随着多媒体和网络技术的迅速发展与广泛应用,数字化媒体(如数字图像、数字视频和音频等)的传输和获取变得越来越便捷,一方面促进了人类信息的共享,推动了社会的进步,而另一方面由于其极易复制且复制后的媒体质量与原版几乎没有差异,因此也带来了数字多媒体的版权问题。数字水印技术作为版权保护的重要手段而得到了广泛的研究和应用。
现有图像数字水印算法基本上可分为两类:空间域方法和变换域方法。空域法通过直接改变图像某些像素的灰度值来嵌入水印,如LSB、扩展频谱[1]等;而变换域方法先把图像做某种变换,例如DCT、DWT,然后通过改变某些变换系数嵌入水印[2,3]。随着JPEG2000和MPEG-4标准的建立,目前大量的数字水印技术研究集中在DWT域,因为在DWT域嵌入水印可以提高水印对最新图像压缩处理的攻击。但是在DWT域嵌入水印也有其弱点,例如抵抗缩放等几何形变攻击能力较弱。文献[4]介绍了一种基于IFS (Iterated Function System)的可以抵抗几何形变的空域数字水印方法。此方法的缺点是嵌入的水印信息只能是英文字母,而且对部分字母识别能力较差,水印抵抗JPEG压缩攻击的能力较弱。本文采用具有实际意义的汉字和二值图像作为水印,利用IFS生成可抵抗几何形变的双重数字水印信息,并且嵌入DWT域低频区域系数矩阵,以提高其抵抗常见图像处理攻击的能力。经实验证明,该方法对常见的攻击有较好的鲁棒性,同时满足了水印信息的不可见性。
1 水印的嵌入原理
1.1 自相似水印分形图的生成
二维IFS是研究二维图像分形压缩和编码的基础,通过对图像的旋转、缩放和扭曲、反演等变成另一自相似图像。将汉字水印信息转化为自相似分形图,也就是将汉字水印信息转化为自相似水印分形图的IFS变换参数。IFS的基本形式为:
javascript:window.open(this.src);" style="cursor:pointer;"/>
其中θ、α、ι1、ι2、e、f分别为旋转角度、扭曲角度、坐标轴伸缩比例和平移参数。
汉字存储编码有区位码和机内码。这里将区位码转化为IFS参数。常用汉字的区码M范围为16~55,定义映射F:M→θ
θ=F(M) =8×(M—15)+4 (2)
(2)式是先将M转化为1~40整数,编为6位二进制编码(000001)~(101000),再在其后面添加(100),则M对应编码为(000001100)~(101000100)。通过上述变换将汉字信息区码转化为仿射变换的旋转角度,变换后θ的范围是[12,324]。
又由于常用汉字的位码N为1~94。定义映射G:N→[aa,bb]→[a,b]
[aa,bb]=G(N)=[((N+5)div(10))+6,((N+5)mod(10)+6)]; (3)
[a,b]=[(aa×16+8)/250,(bbx16+8)/250] (4)
其中(3)式是将N变换为6~15之间的一个整数对;(4)式是将变换所得整数对分别进行二进制编码,再在各个编码后添加(1000),为保证仿射变换的压缩性,全部除以250。通过上述变换后,a,b范围是[0.416,0.992],其中[a,b)是一个实数对。
javascript:window.open(this.src);" style="cursor:pointer;"/>
将θ、a、b值代人上述仿射变换公式中,令α=0,e、f的值根据具体情况而定。假设水印信息W1为{S1,S2,S3:其中Si是常用汉字},根据上面定义的影射转化为迭代函数系{R2;ω0,ω1,ω2,ω3}。其中ωi(对应Si,ω0对应(θ0=0,a0=b0=1),作为第一水印检测的参考图。由于上述两个变换都是一对一映射,可以很容易求得其反变换过程。
取第二水印W2为一幅KxK的二值图像,分别通过上述变换ωi将第二水印信息影射为一个大小为2K×2K的自相似水印分形图W.映射方式如图1所示。
1.2 水印嵌入方法
数字水印的嵌入步骤如下:
(1)将原始图像进行L层小波分解得到3L+1个子带。选择L使其低频子带A系数为与自相似水印分形图W大小相同的矩阵。
(2)引入一个与自相似水印分形大小一致的二值图像B。此图像的单数行为101010…,而其偶数行为010101…,或互换。
(3)从自相似水印分形图W中取像素W(i,j)。
(4)如果W(i,j)值为0,则令A ,(i,j)=A(i,j),转入第(6)步。
(5)如果W( i,j)值为1,从参考图像B中取对应像素B(i,j);如果B(i,j)=1,则令A (i,j)=A(i,j)+d;否则,令A (i,j)=A(i,j)-d。其中d>0,取值视载体图像而定。
(6)重复(3)、(4)、(5)直到取完自相似水印分形图W中的所有像素点。
(7)利用修改后的系数矩阵进行小波反变换,重构带有水印信息的原始图像。
图2
1.3 水印检测方法
在自相似水印的提取算法中,用到了拉普拉斯(Laplace)算子与两个矩阵像素块E、F,其中E=[1 0 1;01 0;1 0 1]3×3,F=[0 1 0;1 0 1;0 1 0]3×3。
(1)将带有水印信息的图像进行L层小波分解,提取出低频子带系数矩阵。
(2)利用拉氏算子的图像边缘检测功能由待检测的系数矩阵A’生成与其大小一致的三值(0,1,2)图像G。具体生成算法如下:
①拉氏算子计算G(i,j)=A (i-1,j)+A (i+1,j)+A (i,j-1)+A (i,j+1)-4A (i,j)。
②如果G(i,j)> ε,则令G(i,j)=0;否则如果G(i,j)<-ε,则令G(ij)=1,否则G(i,j)=2。其中ε>0,其大小与d取值有关(下面ξ同ε)。
③重复上述两步,直到生成三值图像G。计算G的第1行列和最后1行列时用第2行列和倒数第2行列替代。
(3)用W 表示提取出的自相似水印分形图。由三值图像G生成W 的算法如下:
① 从G中取以G(i,j)为中心的3x3像素块,记为G33。
② 统计G33与E、F块对应位置上像素值相同的像素点个数,分别记为SE和SF。
③ 如果SE>ξ或者SF>ξ,则令W (i,j)=1;否则令W (i,j)=0;ξ>0。
③ 重复前三步,直到取完上面所有的点。求第1行列和最后1行列的补救方法与上面求三值图像的方法
(4)从W’中提取汉字水印信息。在二值图像W 中对各部分任意取三个对应点,根据变换公式确定对应变换系数,将系数变换为汉字的区位码即可得对应汉字信息。javascript:window.open(this.src);" style="cursor:pointer;"/>
2 实验结果
2.1 双重水印信息的鲁棒性测试
实验中载体图像采用512x512的标准LENA灰度测试图像,第1水印信息使用“王小林”三个汉字,第2水印信息采用128x128的带有“理工科技”四个字的二值图章图像,原始载体图像小波分解时采用紧支双正交的db3小波(使用该小波函数可以减少提取自相似水印分形图时采用的替代措施),分解层级L为1。实验中d取16,ε取4,ξ取8。水印信息为二值图像,用肉眼可观察各种攻击后的检测效果,所以将检测出的双重水印图像与嵌入前的双重水印图像并放在一起,以便对照水印嵌入前后的差别(检测结果中左半部分为嵌入前双重水印图像,右半部分为检测出的双重水印图像)。常见的攻击测试,包括JPEG图像压缩(压缩因子40~90)、均值和高斯滤波、图像在不同灰度级上的量化、A/D及D/A转换、缩放、旋转、部分剪切、噪声叠加等。其测试结果如图2所示。
2.2第1汉字水印信息的提取
如果需要提取第1水印,则将提取出的双重水印图像置于一坐标系中,对应每一部分图形块取出对应的三个点坐标,根据对应三个点的坐标数值代人仿射变换公式,求出对应部分图形的对应变换ωi的参数,再根据水印转化公式的反变换确定出对应汉字的区位码信息,进而确定出对应的汉字。如图3和表1所示。
表1 由自相似水印分形图像取出的对应点确定对应汉字信息
项 点 | 第1个点 | 第二个点 | 第三个点 | 旋转角度 | 横轴缩放a | 纵轴缩放b | 对应区码 | 对应位码 | 水印汉字 |
参考点 | 43,16 | 32,32 | 49,54 | 0 | 1 | 1 | |||
第一个字 | 183,90 | 196,96 | 194,79 | 244 | 0.992 | 0.416 | 45 | 85 | 王 |
第二个字 | 25,202 | 38,204 | 56,199 | 258 | 0.928 | 0.800 | 48 | 01 | 小 |
第三个字 | 229,224 | 229,206 | 207,195 | 148 | 0.736 | 0.992 | 33 | 54 | 林 |
2.3 峰峰信噪比
本文采用峰峰信噪比(PSNR)作为嵌入水印后重构图像质量的客观评价指标,其计算公式为:
javascript:window.open(this.src);" style="cursor:pointer;"/>
其中,f(i,j)与f'(i,j)为嵌入水印前后图像的灰度值,MSE为均方误差。
按式(5)、(6)来计算,本算法嵌入水印后的峰峰信噪比PSNR=30.1550dB;由文献[5]可知,当PSNR超过30dB时,人的视觉很难分辨出原始图像和重构图像的差异。因此本算法完全满足水印信息的不可见性。
2.4 水印检测的相关性
由于本算法所采用的水印为二值数字图像,为了客观表示检测出的水印信息与原水印信息的相近程度,定义相关系数为:
ρ:WEQU/WALL (7)
其中,WEQU=[相同位置W=W 的个数];[正确检测的水印像素数目],WALL=[W像素总数]。本实验中WALL=256x256。
由以上定义可知,ρ不但表示了水印信息前后的相关程度,而且也表示出了水印信息检测的正确率,即水印信息被正确检测出的百分比率。ρ越大意味着水印信息的鲁棒性越强。本实验结果如表2所示。
由表2可以看出,对带有水印信息的图像进行各种常见的攻击后,水印信息检测的正确率都大于57%,说明该算法对常见攻击具有较强的鲁棒性。
表2 各种功击后自相似水印检测相关关系数表
攻击名 | 无攻击时 | A/D、D/A | JPEG(40) | JPEG(50) | JPEG(60) | JPEG(70) | JPEG(80) | JPEG(90) |
ρ | 0.8855 | 0.8855 | 0.8224 | 0.8598 | 0.8633 | 0.8526 | 0.8684 | 0.8783 |
攻击名 | 放大到1.25 | 缩小到0.75 | 反转15℃ | 部分剪切 | 均值滤波 | 高斯滤波 | 纳盐噪声 | 高斯噪声 |
ρ | 0.8855 | 0.7587 | 0.7879 | 0.6142 | 0.5961 | 0.8610 | 0.5707 | 0.8497 |
本文提出了利用IFS将一组汉字水印和一图像水印映射为双重水印信息,再将双重水印信息利用LAPLACE算子的图像边缘检测功能嵌入小波域低频逼近系数矩阵的鲁棒数字水印改进算法。仿真结果表明,小波域的低频逼近系数矩阵不是水印信息的禁区,将水印信息嵌入低频系数矩阵,可以更好地抵抗图像压缩;而仿射变换的利用提高了水印信息抵抗几何形变的性能。两者的结合,不但能保证水印信息的鲁棒性,同时保证了水印信息的不可见性。同时也表明,本文所提出的方法有很强的抗常见图像处理攻击的能力。对彩色图像,如果先进行分量变换,对变换分量后的某一通道或者多个通道进行小波分解,选取其低频区域嵌入水印信息,同样可得到很好的效果。