基于DWT的半脆弱图像水印算法摘要:半脆弱水印因为在多媒体内容认证方面的重要作用而受到人们密切的关注。为了能够区分偶然攻击与恶意篡改,半脆弱水印需要对一般的内容保护图像操作有一定的鲁棒性。由于JPEG压缩应用的普遍性,在保持较高的篡改检测能力的情况下,提高抗JPEG压缩性能一直是半脆弱水印研究的重要问题。本文首先图像小波高频系数LH1,HL1分别进行分块,然后算出分别每块的系数的能量值,根据能量系数之间的大小关系嵌入水印信息。实验测试表明,所提出的算法不会影响图像的主客观质量,有很好的抗JPEG压缩性能,而且可嵌入的水印信息量大,并且能够准确确定恶意攻击的位置。关键词:半脆弱水印;JPEG;鲁棒性;小波高频系数Semi-fragileimagewatermarkingalgorithmbasedondwtAbstract:Semi-Fragilewatermarkhasattractedattentionduetoitsimportantroleincontentauthenticationformultimedia.Inordertodifferentiateincidentalattacksandmaliciousattacks,semi-fragilewatermarkmustberobustagainstcontent-protectionimageprocessing.Semi-fagilewatermarkresistingtoJPEGcompressionwhilemaintaininghighdetectionabilitytotamperhasbeentheemphasisinthearea.Inthispaper,imagewaveletcoefficientLH1andHL1wasblocked,andcomputedeachofblockcoefficientenergy,basedontherelativeenergyrelationsembeddedwatermark.Simulationexperimentsprovethatitwillnotdegradetheobjectiveandsubjectivequalityoforiginalimages,goodrobustnesstoJPEG.,andthelargeramountofembeddedinformation.What’smore,itcanascertainthepositionofviciousattackexactly.Keyword:semi-fragilewatermark;JPEG;robust;wavelethighcoefficient1引言:随着多媒体技术和网络技术的飞速发展及广泛应用,对图像、音频、视频等多媒体内容的保护已成为迫切需要解决的问题.对多媒体内容的保护一般可以分为如下两个方面:一是版权保护;二是内容完整性(真实性)保护,即认证(或称为“篡改提示”).用于版权保护的数字水印要求有很强的鲁棒性和安全性,用于多媒体内容真实性鉴定(或篡改提示)的水印,一般称为易损水印或脆弱水印,这种水印同样是在内容数据中嵌入不可见的信息。在实际应用中,并不需要脆弱水印对所有的修改都非常敏感.对恶意篡改高度敏感和对内容保护操作鲁棒的半脆弱水印更能适应实际应用的要求.一般地,一个半脆弱水印应该满足3个基本要求:对恶意篡改的高度敏感性和对内容保护操作的鲁棒性、不可见性、安全性。半脆弱水印不但要对恶意的攻击特别敏感,又要对一些常规的图像操作(如JPEG压缩、加噪等)有一定的鲁棒性,从而将偶然攻击与恶意篡改区分开来。由于JPEG压缩应用的普遍性,抗JPEG压缩一直是半脆弱水印的重要研究内容及难点。现有的JPEG图形水印算法可分为两类:一类是能够容忍一定程度的JPEG压缩,并能够检测空域和变换域恶意篡改的半脆弱水印算法]2,1[;另一类是将水印算法融入到图像的压缩算法中,在压缩的过程中嵌入水印,在解压的过程中提取水印,用来对JPEG图像进行精确认证的脆弱水印算法]4,3[。早期的JEPG图像认证水印算法为保护水印的不可见性,只选定的DCT系数上嵌入了水印]4[,而大部分的DCT系数未得到保护,致使这类JPEG图像认证水印算法存在严重的安全性隐患。为了增强其安全性,Li提出了一种新的脆弱水印算法]3[。该算法将DCT系数分为嵌入水印系数和分嵌入水印系数两类,首先利用所有的非水印嵌入系数生成水印,然后将其嵌入到水印嵌入系数上,从而使图像块的所有DCT系数都得到保护。在文献[5]中,Zhang等人根据JPEG压缩过程中的不变参量进行水印生成和嵌入调制,利用小波特性对图像篡改区域进行定位。在文献[6]中,Hu为了减少运算量和提高算法的安全性,提出了基于提升格式参数化整数小波变换的脆弱水印方案,但此算法抗JPEG压缩效果不能令人满意。为了提出一种有效的抗JPEG压缩的半脆弱水印算法,本文在文献[7]的基础上提出了一种新的基于DWT变换的半脆弱水印算法,该算法思想首先对图像进行一层DWT小波变换,在把图像变换出的高频系数部分(LH1和HL1)进行分块,然后分别算出每小块的能量值,根据能量值大小关系嵌入水印。实验结果表明,该算法有对JPEG压缩有较好的鲁棒性,并且有精确的篡改定位检测能力,算法性能较好。本文有三节组成,第1节描述选择小波高频系数的原因及其水印算法的思路。第2节给出水印算法的嵌入、提取过程。第3节给出了算法的实验结果,并进行了分析说明。最后对算法提出了总结。2图像小波变换小波变换用于图像处理是小波变换应用效果比较突出的领域之一。其基本思想就是把数字图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再根据各个子图像的特点有针对性的进行处理。对一幅图像的二级小波分解示意如图1所示。LL2HL2HL1LH2HH2LH1HH1图1二层小波分解示意图每一级分解都把图像分解为四个频带:水平(HL)、垂直(LH)、对角(HH)和低频(LL),其中低频(LL)部分还可以进行下一级的分解,从而构成了小波的塔式分解。一幅图像经过分解之后,图像的主要能量主要集中于低频部分,这也是视觉重要部分;而图像的高频部分即图像的细节部分所含能量较少,分布在HL,LH,HH三个子图中,主要包含了原图的边缘和纹理部分信息。基于小波分析的数字水印算法的基本思想是把水印嵌入到图像小波变换后的低频子带或高频子带系数中。图像的低频子带携带了图像的大部分信息,因此可以嵌入更多的水印信息,使水印更加鲁棒,但同时也产生了问题,即图像低频子带的图1二层小波分解示意图变化容易导致较大的图像失真。相反,高频子带携带的是图像的边缘和纹理信息,人眼对这部分信息不敏感,因此,在这部分嵌入水印,可以避免引起图像的失真,但同时水印容易遭到破坏因此,一个有效的小波域水印算法必须在鲁棒性和图像的失真度之间取得平衡。因此本文所嵌入水印图像是选择二级小波分解的高频部分,这样保证图像的鲁棒性,又不会引起图像的太大失真变化。在文献[8]中,Li与Huangg根据高频小波相邻系数间的大小关系在JPEG压缩之后绝大部分未发生变化这一现象来嵌入和提取水印。本文在文献[8]的基础上提出基于高频系数能量关系来嵌入和提取水印。3抗JPEG压缩的半脆弱图像水印算法3.1水印嵌入本文的算法选用的载体图像为512×512,嵌入的水印是64×64的二值图像.为了提高系统的安全性,实际嵌入到图像中的水印图像是原始水印图像经过一种由密钥控制的置乱加密算法置换之后得到的.嵌入时先将载体图像做一次参数化整数小波提升,然后分别对HL2和LH2进行分块,每块大小2×2,故每4个小波系数对应一个水印图像像素。HL2和LH2子带都有128×128个系数,分块后变成64×64系数块与二值图像所对应。为了便于分析,把HL2子带的能量块记E1(k),把LH2子带的能量块记E2(k)。令△E(k)=∣E1(k)-E2(k)∣E1(k)=A21(k)+B21(k)+C21(k)+D21(k)(1)E2(k)=A21(k)+B21(k)+C21(k)+D21(k)(2)k=1,2…64水印的嵌入过程如下:(1)将宿主图像I进行两层小波分解,采用LH2和HL2子带作为水印嵌入区域。得到的子带A1B1C1D1A2B2C2D2LH2的中2×2子块HL2的中2×2子块图2LH2和HL2各分为64×64个系数块图像大小是128×128。二值水印图像大小是64×64。(2)把LH2和HL2分别分成64个2×2的系数小块,计算其每一小块的能量值,即E1(k),E2(k)W(i)代表二值水印信息0,1;k=1,2…64。(3)然后比较E1(k),E2(k)的大小关系,来嵌入水印信息,是阈值。嵌入规则如下:①若E1(k)-E2(k)且W(i)=1时;不做修改;②若E1(k)-E2(k)且W(i)=1时;修改系数;首先是增加LH2中子块的系数值,减小HL2中子块的系数值。修改公式如下:A1(k)=A1(k)+A1(k)/(k)E1*(△E(k)/2+)(3)同理可得到B1(k),C1(k),D1(k);A2(k)=A2(k)-A2(k)/(k)E2*(△E(k)/2+)(4)同理可得到B2(k),C2(k),D2(k);上述公式满足各个系数之间的增加,或减少比例分配,从而避免了因系数修改过大,而造成图像的失真。把修改过的系数值分别代入(3),(4)中,得到E1(k)E2(k),W(i)=1满足了嵌入条件。③若E2(k)-E1(k)且W(i,j)=0时;不做修改;④若E2(k)-E1(k)且W(i,j)=0时;修改系数;首先减小LH2中子块的系数值,增加HL2中子块的系数值。修改公式如下:A1(k)=A1(k)-A1(k)/(k)E1*(△E(k)/2+)(5)同理可得到B1(k),C1(k),D1(k);A2(k)=A2(k)+A2(k)/(k)E2*(△E(k)/2+)(6)同理可得到B2(k),C2(k),D2(k);修改过的系数值分别代入(3),(4)中,得到E1(k)E2(k),W(i)=0满足了嵌入条件。在上述系数值的修改方法中,阈值用于控制最小的修改量,而且也起到平衡鲁棒性与图像质量作用。愈大则鲁棒性愈好但会造成图像质量下降,相反,愈小的话可以保障图像质量但鲁棒性愈差。大小可通过实验来其确定。3.2水印提取水印提取是水印的逆步骤,在数字水印提取过程中,含水印图像首先进行小波变换,然后确定水印是嵌入在哪个子带,根据具体算法提取水印。整个水印提取过程不需要原始载体图像,数字水印的提取步骤如下(设含水印图像I):(1)对含水印图像I进行二级小波变换,并选取子带I2LH和I2HL用于提取水印。(2)将所选取的子带I2LH和I2HL划分成64个2×2的图像子块,然后根据比较两个子带中的子块能量值大小关系来提取水印。设W(i)是提取出来的水印序列。具体提取规则如下:①若E1(k)-E2(k),则W(i)=1;②若E1(k)-E2(k),则W(i)=0;(3)将得的混乱不堪的二值水印图像序列进行进行解密变换,即通过二维的Arnold变换得到二值水印图像W(i,j)。4性能分析及实验仿真4.1篡改判断准则由文献[9]可知,可由水印差图中稀疏点与稠密点的比值来判断攻击类别,其中水印差图的定义为D(i,j)=W(i,j)-W(i,j)差值图像的实际意义是比较两幅二值图像之间的差异,如果相应像素点的像素值相等,则在差值图像上像素值为0,即表现为白色点;反之则为1,表现为黑色点。文献[9]给出了稀疏点的定义,按照这个定义计算水印差图中稀疏点与稠密点分别的个数,并定义:S={水印差图的像素点总数};Sdense={差图中稠密点的像素点总数};Ssparse={差图中稀疏点的像素点总数};Stotal=Sdense+Ssparse;λ=Stotal/S=Ss