二值灰度图像水印实验
水印的嵌入与提取 fft()实现一维信号和二维信号的FFT(快速傅里叶变换),ifft()分别实现一维信号和二维信号的IFFT(逆向快速傅里叶变换)。下面以256×256 的灰度图像lena 为原始宿主图像、以32×32 的二值图像flag 为水印图像为例,给出利用MATLAB 实现数字水印的过程。 水印攻击实验 由于数字水印在实际应用中可能会遭到各种各样的攻击,因此对算法进行攻击测试是衡量一个水印算法优劣的重要手段。 JPEG 压缩实验 首先对嵌入水印后的图像进行JPEG(Quality=45),而后从压缩的图像中提取出水印,如图5 所示。从图中可以看到DCT 域的水印算法抵抗JPEG 压缩攻击的效果是比较好的。imwrite()函数中的jpg 和quality 参数能对图像进行可控jpg压缩 噪声实验 加入噪声是对水印鲁棒性考验的一种常见的攻击。本实验是在嵌入水印的图像中分别加入均值为0,方差为0.002 的高斯噪声和强度为0.02 的椒盐噪声,并从中提取水印,如图6 所示。imnoise()函数可以对图像加入各种噪声,如白噪声、椒盐噪声等 结论 嵌入水印信息后,原图与嵌入水印信息后的图像在视觉效果上没有明显分别,用肉眼几乎分辨不出,这说明这种算法 充分利用了人眼的视觉HVS 特性,利用FFT域嵌入水印后,水印的不可见性相当好,图像在嵌入水印前后视觉效果改变不大,不影响图像的正常使用。从图5 可明显看出:嵌入水印后的图像经过参数"Quality"为"45"的JPEG 压缩后,还能从中提取出水印且非常清晰;对含水印的图像进行方差为0.002 的高斯噪声攻击后,加入水印后的图像已经模糊,但是提取出的水印仍清晰可辩。以上实验证实了这种嵌入算法的抗攻击性较好,而且检测和提取易于实现。
用户评论
还好吧,可以试一下。
一般般,帮助不大
程序还不错,对水印的学习很有帮助!