程序运行说明:
程序名称:DWT_SVD_attack.m
运行环境:matlab
程序内容:主图像:lena.bmp , 水印图像:w.bmp
算法描述:
1.对主图像进行二级 haar 小波变换,
2.对二级低通图像进行 SVD 分解;
3.对水印图像进行 SVD 分解;
4.将水印分解到的 SVD 中的 V 矩阵加乘到水印二级低通图像 SVD 分解中的 V 矩阵中;
5.将得到的新的 V 矩阵替换二级小波变换低通图像 SVD 分解中的 V;
6.再次 IDWT 变换,得到含水印图像;
攻击算法:
使用 17 种常用攻击方法对含水印图像进行攻击。
水印提取:
1、对含水印图像进行二级小波变换;
2、对二级分解后的低通图像进行 SVD 分解;
3、对水印图像进行 SVD 分解得到 V 矩阵;
4、两者相减并除以强度系数 K,得到新 V 矩阵;
5、利用水印图像 SVD 分解中的 S 和 D 矩阵,加上新得到的 V 矩阵进行 SVD 逆变换,得
到含水印图像的水印。
算法特点说明:
由于水印提取需要用到原始水印图像,因此为非盲算法。但是该算法鲁棒性非常强,含水
印图像的可见性也非常好,因此较好。
该算法使用到了 DWT 小波分解和 SVD 矩阵分解。代码完整,需要说明的是:每次运行只
能测试一种攻击行为,17 种测试要运行 17 次,每次输入不同的参数,1-17。有的还需要
输入第二个参数,范围大小有提示,程序非常好,有助于初学者的学习。
K 为水印算法的强度,可以更改以观察不同的效果。