前言
离散小波变换不仅可以较好地匹配人类视觉系统的特性,而且兼容JPEG2000和MPEG4压缩标准,利用小波变换产生的水印具有良好的视觉效果和抵抗多种攻击的能力,因此基于DWT的数字水印技术是目前的主要研究方向。
本案例围绕基于小波的数字水印技术,对数字水印的原理、算法、流程进行了讲解,并进行了数字水印攻击分析。
理论基础
数字水印通常可以分为鲁棒数字水印和易损数字水印两类,从狭义上讲,数字水印一般特指鲁棒数字水印,本章主要针对鲁棒数字水印进行案例讲解与分析。鲁棒数字水印主要用于在数字作品中标示著作权信息,利用这种水印技术在多媒体内容的数据中嵌入标示信息。在发生版权纠纷时,标示信息用于保护数据的版权所有者。用于版权保护的数字水印要求有很强的鲁棒性和安全性。
易损数字水印与鲁棒水印的要求相反,主要用于完整性保护,这种水印同样是在内容数据中嵌入不可见的信息。当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。易损水印必须对信号的改动很敏感,人们根据易损水印的状态就可以判断数据是否被篡改过。不同领域对数字水印有不同的要求,但一般而言,鲁棒数字水印应具备如下特点。
(1)不可感知性: 就是嵌入水印后的图像和未嵌入水印的图像,必须满足人们感知上的需求,在视觉上没有任何差别,不影响产品的质量和价值。
(2)鲁棒性: 嵌入水印后的图像在受到攻击时,水印依然存在于载体数据中,并可以被恢复和检测处理。
(3)安全性: 嵌入的水印难以被篡改或伪造,只有授权机构才能检测出来,非法用户不能检测、提取或者去除水印信息。
(4)计算复杂度: 在不同的应用中,对于水印的嵌入算法和提取算法的计算复杂度要求是不同的,复杂度直接与水印系统的实时性相关。
(5)水印容量: 水印容量是指载体数据字中可嵌入多少水印信息,可以从几兆到几个比特不等。
数字水印技术原理
数字水印技术实际上就是通过对水印载体的分析、水印信息的处理、水印嵌入点的选择、嵌入方式的设计、嵌入调制的控制和提取检测方法等相关技术环节进行合理优化,寻求满足不可感知性、鲁棒性和安全性等约束条件下的准最优化设计问题。在实际应用中,一个完整水印系统的设计通常包括水印的生成、嵌入、检测和提取四个部分。
1.水印生成
通常基于伪随机数发生器或混沌系统来产生水印信号,从水印的鲁棒性和安全性方面来考虑,常常需要对原水印进行预处理来适应水印嵌入算法。
2.水印嵌入
在尽量保证水印不可感知性的前提下,嵌入最大强度的水印,可提高水印的稳健性。水印的嵌入过程如下图所示,其中,虚线框表示嵌入算法不一定需要该数据。常用的水印嵌入准则有加法准则、乘法准则和融合准则。
3.水印检测
指判断水印载体中是否存在水印的过程。水印的检测过程如下图所示,虚框表示判断水印检测不一定需要这些数据。
4.水印提取
指水印被比较精确地提取的过程。水印的提取和检测可以需要原始图像的参与(明检测),也可不需要原始图像的参与(盲检测)。水印的提取过程如下图所示,虚框表示提取水印不一定需要这些数据。
典型的数字水印算法
当今的数字水印技术已经涉及多媒体
信息的各个方面,数字水印技术研究也得到了很大的进步,尤其是针对图像数据的水印算法繁多,下面对一些经典的算法进行分析介绍。
1.空间域算法
空间域方法是数字水印最早的一类算法,它阐明了关于数字水印的一些重要概念。空间域算法-般通过改变图像的灰度值来加入数字水印,大多采用替换法,用水印信号替换载体中的数据,主要有LSB ( Least Significant Bit)、Patchwork、 纹理块映射编码等方法。
(1)LSB方法的主要原理是利用人眼视觉特性对于数字图像亮色等级分辨率的有限性,将水印信号替换原图像中像素灰度值的最不重要位或者次不重要位。这种方法简单易行,且能嵌入较多信息,但是抵抗攻击的能力较差,攻击者简单地利用信号处理技术就能完全破坏消息。正是由于这一点,LSB算法能够有效地确定一幅图在何处被修改了。
(2) Patchwork 算法是一种基于统计学的方法,它是将图像分成两个子集,其中一个子集的亮度增加,另一个子集的亮度减少同样的量,这个量以不可见为标准,整幅图像的平均灰度值保持不变,在这个调整过程中完成水印的嵌入。在Patchwork算法中,一个密钥用来初始化一个伪随机数,而这个伪随机数将产生载体中放置水印的位置。
Patchwork方法的隐蔽性好,对有损压缩和FIR滤波有一定的抵抗力,但其缺陷是嵌入信息量有限,对多拷贝平均攻击的抵抗力较弱。
(3)纹理块映射编码方法是将一个基于纹理的水印嵌入到图像的具有相似纹理的一部分当中,该算法是基于图像的纹理结构的,因而很难察觉,同时对于滤波、压缩和旋转等操作具有抵抗能力。
2.变换域算法
目前变换域算法主要包括傅里叶变换域(DFT)、离散余弦域(DCT)和离散小波变换(DWT)。基于频域的数字水印技术相对于空间域的数字水印技术通常具有更多优势,抗攻击能力更强,比如- -般的几何变换对空域算法影响较大,而对频域算法却影响较小。但是变换域算法嵌入和提取水印的操作复杂,隐藏信息量不能太多。
(1)傅里叶变换是一种经典而有效的数学工具,DFT水印技术是利用图像的DFT相位和幅值嵌入信息,一般利用相位信息嵌入水印比利用幅值信息鲁棒性更好,而利用幅值嵌入水印则对旋转、缩放、平移等操作具有不变性。DFT水印技术的优点是具有仿射不变性,还可以利用相位嵌入水印,但DFT技术与国际压缩标准不兼容导致抗压缩能力弱,且算法比较复杂、效率较低,因此限制了它的应用。
(2)DCT水印技术的主要思想是在图像的DCT变换域_上选择中低频系数叠加水印信息,选择中低频系数是因为人眼的感觉主要集中在这一频段, 攻击者在破坏水印的过程中,不可避免地会引起图像质量的严重下降,而一般的图像处理过程也不会改变这部分数据。该算法不仅在视觉上具有很强的隐蔽性、鲁棒性和安全性,而且可经受- -定程度的有损压缩、滤波、剪切、缩放、平移、旋转、扫描等操作。
(3) DWT是一种“时间一尺度”信号的多分辨率分析方法,它具有良好的空频分解和模拟人类视觉系统的特,而且嵌入式零树小波编码(EZW)将在新一代的压缩标准(JPEG2000,MPEG4/7 等)中被采用,符合国际压缩标准,小波域的水印算法具有良好的发展前景。DWT水印算法的优点是水印检测按子带分级扩充水印序列进行,即如果先检测出的水印序列已经满足水印存在的相似函数要求,则检测可以终止,否则继续搜寻下一子带扩充水印序列直至相似函数出现一个峰值或使所有子带搜索结束。因此含有水印的载体在质量破坏不大的情况下,水印检测可以在搜索少数几个子带后终止,提高了水印检测的效率。
3.其他水印算法
基于压缩域、基于NEC算法和生理模型的数字水印算法。其实数字水印算法正在不断地发展和前进中日益完善,但是仍然存在许多不足,具有更加深入的发展空间,这就需要我们在不断的学习和探索中寻找具有更好性能的新算法。
数字水印攻击和评价
数字水印攻击是指带有损害性、毁坏性的,或者试图移去水印信号的处理过程。鲁棒性是指水印信号在经历无意或有意的信号处理后,仍能被准确检测或提取的特征。鲁棒性好的水印应该能够抵抗各种水印攻击行为。水印攻击分析就是对现有的数字水印系统进行攻击,以检验其鲁棒性,分析其弱点所在及其易受攻击的原因,以便在以后的数字水印系统的设计中加以改进。
对数字水印的攻击--般是针对水印的鲁棒性提出的要求。按照攻击原理,水印攻击一般可以划分为简单攻击、同步攻击和混淆攻击,而常见的攻击操作有滤波、压缩、噪声、量化、裁剪、缩放、抽样等。
(1)简单攻击指试图对整个嵌入水印后的载体数据进行减弱嵌入水印的幅度,并不识别或者分离水印,导致数字水印提取发生错误,甚至提取不出水印信号。
(2)同步攻击指试图破坏载体数据和水印的同步性,使水印的相关检测失效或恢复嵌入的水印成为不可能。被攻击的作品中水印仍然存在,而且幅值没有变化,但是水印信号已经错位,不能维持正常提取过程中所需的同步性。
(3)混淆攻击指试图生成一个伪水印化的数据来混淆含有真正水印的数字作品。虽然载体数据是真实的,水印信号也存在,但是由于嵌入了一个或多个伪造水印,所以混淆了第一个水印,失去了唯一性。
基于小波的水印技术
小波变换把一个信号分解成由基本小波经过移位和缩放后的一系列小波,它是一种“时间一尺度”信号的多分辨率分析方法,在时域和频域都具有表征信号局部特征的能力。小波图像处理把图像进行多分辨率分解,得到不同空间、频率的子图像,然后对图像的小波系数进行处理。一般而言, 小波变换在信号的高频部分可以获得比较好的时间分辨率,而在信号的低频部分可以获得比较好的频率分辨率,这样就能够有针对性地从信号中提取所需的目标信息。
小波数字水印技术首先对图像进行小波变换,并对水印信息进行预处理,然后将处理后的水印通过一定的算法嵌入到选定的小波系数中,最后对含有水印的小波系数进行小波逆变换得到含有水印的数字图像。检验和提取的过程正好是以上过程的逆变换。
1 载体图像小波变换
数字图像经过小波分解后被分割成4个频带:水平方向(LH)、 垂直方向(HL)、对角线方向(HH)和低频部分(LL),其中低频部分可以继续分解,如图25-4 所示。图像能量主要集中于低频部分,是原始图像的逼近子图,具有较强的抵抗外来影响的能力,稳定性较好:其他三个子带表征了原图像在水平、垂直和对角线部分的边缘细节信息,容易受外来噪声、图像操作等影响,稳定性较差。
选择不同的小波基对嵌入水印的性能有很大影响,刘九芬等人研究了水印算法中小波基的选择和正交小波基的性质与鲁棒性的关系,其研究结果表明正交基的正则性、消失矩阶数、支撑长度及小波能量在低频带的集中程度对水印鲁棒性的影响极小;另外,其研究结果还表明Haar小波比较适合图像水印。
2.水印图像的预处理
为了保证水印的安全性,在嵌入水印前需要对水印进行加密处理。置乱预处理是一种简单常用的加密方法,水印图像置乱可以消除像素间的相关性,从而提高水印的鲁棒性。图像置乱算法有很多,如幻方置乱、Hilbert 置乱、随机数置乱,本文采用Amold置乱算法,将有意义的水印内容掩盖。
3.小波数字水印的嵌入
根据人类视觉系统的照明和纹理掩蔽特性,将水印嵌入到图像的纹理和边缘(HH、HL和LH细节子图中的一些有较大值的小波系数上)不易被觉察,但对图像的滤波和有损压缩操作容易丢失信息。小波变换低频部分(LL) 集中了图像的大部分能量,它是视觉上最重要的部分,在这部分嵌入水印容易引起图像失真。但从鲁棒性出发,水印应当嵌入到视觉最重要的区域。
4.小波水印的检查提取
程序及结果展示
根据上述理论基础,水印嵌入主要包括载体图像小波变换、水印图像预处理、水印信息嵌入到小波系数、由小波系数重建图像等几个主要步骤,可以使用峰值信噪比定量判断水印嵌入的质量。下面为上述算法流程的MATLAB代码,用于执行小波数字水印的嵌入工作。(Github:github.com/kivenyangmi…)
close all I = imread('office_5.jpg'); I = rgb2gray(I); W = imread('logo.tif'); W=W(12:91,17:96); figure('Name','载体图像') imshow(I); title('载体图像') figure('Name','水印图像') imshow(W); title('水印图像') ntimes=23; rngseed=59433; flag=1; [Iw,psnr]=setdwtwatermark(I,W,ntimes,rngseed,0); [Wg,nc]=getdwtwatermark(Iw,W,ntimes,rngseed,0); close all action={'filter','resize','crop','noise','rotate'}; for i=1:numel(action) dwtwatermarkattack(action{i},Iw,W,ntimes,rngseed); end