摘 要:数字水印是近几年来出现的数字产品版权保护技术,是当前国际学术界的研究热点.该文论述了数字水印的提出及研究现状、水印的基本原理和算法、水印的分类等情况,并介绍了一种可以快速上手的高效的实用语言——MATLAB,同时给出了一个用MATLAB工具在静止图像上嵌入水印的实例。
关键词:数字水印;MATLAB;DCT
1 引言
多媒体及网络的迅速发展使得多媒体信息的交流和传输变得更加简单和快捷,然而,这也使盗版者能以低廉的成本复制及传播未经授权的数字产品,这种对数字产品保护和信息安全的迫切需求,导致了数字水印技术成为多媒体信息安全领域的一个热点问题。数字水印技术是在不影响宿主媒体主观质量的情况下,在宿主媒体(文本、图像、视频、音频)中嵌入不易被人察觉的标识信息,用以证明原创作者对其作品的所有权,并作为鉴定、起诉非法侵权的证据。
2 数字水印的特征
一般认为数字水印应具有以下特征 :
(1) 安全性
数字水印应该是安全、难以被篡改的。当数字作品发生变化时,数字水印应当也相应发生变化 ;同时,未经授权的个人不得修改水印,理论上是未经授权的用户不能检测到产品中是否含有水印。
(2) 鲁棒性
当被保护的数据在经过攻击后,嵌入的水印信息仍能保持好的完整性并能以一定的正确概率被检测到。这些可能的攻击包括噪声、滤波、剪切、旋转和编码等。
(3) 不可感知性
数字水印的嵌入不应使得原始作品发生可以感知的变化,也不能使得被保护数据在质量上发生可以感觉到的失真。
(4) 可证明性
在多媒体作品的实际应用过程中可能需要多次加入水印,这时水印系统必须能够允许水印被多次嵌入到被保护的数据,而且每个水印均能独立地被证明。
(5) 无歧义性
恢复出的水印或对水印判决结果能够表明版权的惟一,不会发生多重版权纠纷问题。
3 数字水印的基本原理
通用的水印技术包含两个方面:水印的嵌入和水印的提取或检测,如图1和图2所示。
图 1 水印信号嵌入
图 2 水印信号提取或检测
4 数字水印的研究现状
4.1 文本水印
文本水印就是将代表著作人身份的信息(水印)嵌入到电子出版物中,在产生版权纠纷时来验证版权的归属。其主要分为三大类:基于文档结构的水印方法、基于自然语言处理技术的水印方法、基于传统图像的水印方法。
基于文档结构的各种水印方法都只是提留在文本的表层,无法抵抗对于文本结构和格式的攻击,简单的重新录入攻击就能使之失效,因此这些水印方法普遍存在鲁棒性差的缺点。自然语言文本水印方法相对提高了抗攻击的能力,但普遍存在容量不足的问题。基于传统图像的文本水印普遍存在鲁棒性不高、操作复杂的缺点。
4.2 图像水印
根据水印的实现过程,图像水印算法可分为空域算法和变换域算法。空域算法是通过直接改变原始图像的像素值来嵌入水印,通常具有较快的速度,但鲁棒性差,且水印容量也会受到限制 ;变换域算法是通过改变某些变换系数来嵌入水印,通常具有很好的鲁棒性和不可见性。其实现一般是基于图像变换,如DCT、DFT、DWT等。重点介绍一下变换域算法。
4.2.1 离散傅里叶变换 (DFT)
该方法是利用图像的DFT来嵌入信息。通信理论中调相信号的抗干扰能力比调幅信号的抗干扰能力强,同样在图像中利用相位信息嵌入的水印也比用幅值信息嵌入的水印更稳健。实验表明该方法的抗压缩能力比较弱。
4.2.2 离散余弦变换 (DCT)
DCT能把空间域的图像转换到变换域上进行研究,从而能很容易了解到图像的各空间频域成分,进行相应处理。基于DCT的水印方法与基于DFT的水印方法相比有较好的鲁棒性,但是无法做到对图像信号内容的自适应,因此往往会造成对图像特征的明显损害,不可感知性不是最佳。
4.2.3 离散小波变换 (DWT)
DWT是一种时间---频率信号的多分辨率分析方法,在时频两域都具有表征信号局部特征的能力。实验表明,与DCT、DFT变换相比较,基于DWT的水印算法的鲁棒性最优,且与JPEG2000、MPEG4压缩标准兼容,利用DWT产生的水印具有良好的视觉效果和抵抗多种攻击的能力,且不可感知性最好。
4.3 音频水印
音频水印利用音频文件的冗余信息和人耳听觉系统的特点来嵌入水印,其可以保护声音数字产品不被随意复制和篡改,如CD唱片,广播电台的节目内容等。音频水印的三种基本方法 :扩频嵌入方法、回声隐藏方法和相位编码方法。
4.4 视频水印
视频水印是通过对视频载体的时间和空间冗余来嵌入水印,其既不影响视频质量,又能达到保护节目制作者的合法权益和控制数字产品的复制。视频水印从算法要求上同图像水印有许多相似之处,但视频水印也有一些独特之处,如能够在压缩和未压缩的格式下实时完成水印的检测,对MPEG压缩、A/D和D/A转换等都有较好的稳健性。
数字水印技术涉及到通信理论、编码理论、噪声理论、视听觉感知理论、扩频技术、信号处理技术、数字图像处理技术、多媒体技术、模式识别技术、算法设计等理论,用到经典的DFT离散傅立叶变换、DCT离散余弦变换和近代最先进的数学工具——小波即DWT离散小波变换技术。而以上算法的计算量都非常大,用Visual C++或者其它语言编程实现这些变换和逆变换也需要很长的代码,由此造成研究人员把大量的时间和精力浪费在与水印算法研究无关的问题上,下面我们介绍基于MATLAB的快速水印嵌入编程技术。
5 实用工具MATLAB介绍
5.1 MATLAB简介
MATLAB是Mathworks公司发布的.是集数学计算、图形处理、结果可视化和程序语言设计于一体的著名数学软件,是以矩阵运算为基础的交互式程序语言。MATLAB的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理、控制系统、神经网络、图像处理、鲁棒控制、非线性系统控制设计、系统辨识、最优化、模糊逻辑、小波、通信、统计等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。
5.2 DCT数字图像水印算法
选择二值图像作为水印信息,根据水印图像的二值性选择不同的
嵌入系数,并将载体图像进行8*8的分块,将数字水印的值直接植入到载体灰度图像的DCT变换域中,实现水印的嵌入。
具体方法如下:
(1)读取原始公开图像和黑白水印图像到二维数组I与W;
(2)将原始公开图像I分割为互不覆盖的图像块block(x,y),1
(4)对嵌入水印信息后的图像块block_dct(x,y)进行逆向DCT变换;
(5)合并图像块,得到嵌入黑白水印后的图像。
水印提取过程为上述加载水印算法的逆运算。
整个算法的MATLAB实现程序如下:
clear;close all
size=256;block=8;I_W=zeros(size);
I=imread('man.tif');
figure(1);imshow(I);
I=double(I)/256;
W=imread('zw.bmp');
figure(2);imshow(W);
W=double(imresize(W,.软件学报,2001,12(5):668-676.