《数字水印算法设计.doc》由会员分享,可在线阅读,更多相关《数字水印算法设计.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 数字水印算法设计 初始条件: MATLAB软件平台、版权图像、水印图像要求完成的主要任务:1. 设计任务学习掌握一种数字水印算法,选择两幅图像分别作为版权图像和水印图像,采用水印嵌入算法成生含水印图像。采用水印提取算法,提取出嵌入水印。并对水印算法的鲁棒性进行测试。2. 设计要求 掌握一种数字水印的嵌入与提取算法原理。 编写出水印嵌入算法的matlab程序,并给出水印嵌入前后的版权图像,并对嵌入效果进行分析说明。 编写出水印提取算法matlab程序,并给出水印原
2、图和提取出的水印图像,并对水印的提取效果进行分析说明。 进行水印的抗攻击实验,噪声攻击,剪切攻击,缩放攻击,压缩攻击等。测定提取前后水印的峰值信噪比(PSNR)和相关性(NC)时间安排: 第18-19周。指导教师签名: 年 月 日系主任签名: 年 月 日【精品文档】第 21 页目 录摘 要11 数字水印概念21.1 数字水印分类21.2 数字水印特点22 数字水印算法32.1 数字水印基本模型32.2 常见数字水印算法42.2.1 空间域算法42.2.2 变换域算法42.2.3 其他算法52.3离散余弦变换(DCT)算法52.3.1 DCT变换公式52.3.2 二维DCT的性质62.4 离散余
3、弦变换的水印嵌入72.5离散余弦变换的水印提取83 数字水印算法的MATLAB编程93.1数字水印的嵌入93.2数字水印的提取114 数字水印的抗攻击实验124.1噪声攻击134.2滤波攻击144.3压缩攻击154.4剪切攻击164.5旋转攻击175 小结与体会18参考文献18附录19摘 要数字水印技术近年来得到了较大的发展,基于变换域的水印技术是目前研究的热点。数字水印是利用数字作品中普遍存在的冗余数据和随机性,把标识版权的水印信息嵌入到数字作品中,从而可以起到保护数字作品的版权或其完整性的一种技术。一个有效的数字水印系统至少具备以下三个最基本的特性:1.安全性:数据信息隐藏于数据图像中,不
4、是文件头中,文件格式的变换不应导致水印信息的丢失。2.隐蔽性:在数字图像作品中嵌入数字水印不会引起图像明显的降质,即含水印的图像与原始图像对人的感觉器官的刺激应该是无差别或差别很小,主观感觉变化很小。3.鲁棒性:是指在经历有意或无意的信号处理过程后,水印信息仍能保持完整性或仍能被准确鉴别。 本次设计基于DCT域的MATLAB水印算法,实验结果表明这种算法具有较好的性能,实现的水印具有不可见性,而且具有较好的鲁棒性。关键词:数字水印、DCT变换、MATLABAbstractDigital watermarking technology in recent years has been great
5、 progress in the transform domain-based watermarking technology is a hot topic of current research. Digital watermarking is the use of redundant data and randomness of the common digital works to identify the copyright watermark information embedded in digital works, copyright protection of digital
6、works or the integrity of a technology which can play.An effective digital watermarking system with at least the following three basic characteristics: (1) Security: data hidden in the data image, not a file header, file format transformation should not lead to the loss of the watermark information.
7、 Concealment: digital watermark embedded in the digital image works will not cause the image degraded watermarked image with the original image on the stimulation of the sensory organs of the people is no difference or little difference between the subjective feeling of change is smaller. Robustness
8、: refers to the experience intentional or unintentional signal processing, the watermark information to maintain the integrity or able to accurately identify.The design is based on MATLAB watermarking algorithm in DCT domain, the experimental results show that this algorithm has better performance,
9、the watermark is invisible, but also has better robustness.Keywords: digital watermark, DCT transform, MATLAB数字水印算法设计1 数字水印概念数字水印(Digital Watermarking)技术是将一些标识信息(即水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改,但可以被生产方识别和辨认。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。 数
10、字水印是实现版权保护的有效办法,是信息隐藏技术研究领域的重要分支。1.1 数字水印分类(1) 按水印的特性可以将数字水印分为鲁棒数字水印和易损数字水印两类。鲁棒数字水印主要用于在数字作品中标识著作权信息,利用这种水印技术在多媒体内容的数据中嵌入标示信息。在发生版权纠纷时,标示信息用于保护数据的版权所有者。用于版权保护的数字水印要求有很强的鲁棒性和安全性。易损水印,与鲁棒水印的要求相反,易损数字水印主要用于完整性保护,这种水印同样是在内容数据中嵌入不可见的信息。当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。易损水印必须对信号的改动很敏感,人们根据易损水印的状态就
11、可以判断数据是否被篡改过。(2) 按水印所附载的媒体划分可分为文本水印、图像水印、音频水印、视频水印及软件水印等。图像水印将水印信息嵌入到图像中,发生所有权争议时,通过提取、检测嵌入信息来证实所有权。图像水印利用人类视觉系统的特点,应用最为广泛。根据水印嵌入方式不同,图像水印算法主要分为时(空)域方法和变换域方法两类。1.2 数字水印特点数字水印技术基本上具有下面几个特点:安全性:数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原内容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;当然数字水印同样对重复添加有很强的抵抗性。隐蔽性:数字水印应是不可知觉的,而
12、且应不影响被保护数据的正常使用。鲁棒性:指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移及有损压缩编码等。水印容量:是指载体在不发生形变的前提下可嵌入的水印信息量。嵌入的水印信息必须足以表示多媒体内容的创建者或所有者的标志信息,或购买者的序列号,这样便于解决版权纠纷,保护数字产权合法拥有者的利益。2 数字水印算法2.1 数字水印基本模型数字水印的嵌入过程一般模型如图2-1-1所示:水印信息原始图像水印的嵌入含有水印信息的图像图2-1-1 数字水印嵌入一般模型频域法加入数字水印的原理是首
13、先将原始信号(语音一维信号、图像二维信号)变换到频域,常用的变换一般有DWT、DCT、DFT、WP和分形。然后,对加入了水印信息的信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息的信号。数字水印的提取过程一般模型如图2-1-2所示:原始信号待检信号抽检过程提取水印可读水印不可读水印原始水印相关性判断图2-1-2 数字水印提取一般模型频域法检测水印的原理是将原始信号与待检测信号同时进行变换域变换,比较两者的区别,进行嵌入水印的逆运算,得出水印信息。如果是可读的水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出的水印与已知水印作比较,由相关性判断,待检测信号含不含水
14、印,故水印的检测有两个结果。2.2 常见数字水印算法2.2.1 空间域算法数字水印直接加载在原始数据上,还可以细分为如下几种方法:(1) 最低有效位方法(LSB)这是一种典型的空间域数据隐藏算法,L.F.Tumer与R.G.VanSchyadel等先后利用此方法将特定的标记隐藏于数字音频和数字图像内。该方法是利用原始数据的最低几位来隐藏信息(具体取多少位,以人的听觉或视觉系统无法察觉为原则)。LSB方法的优点是有较大的信息隐藏量,但采用此方法实现的数字水印是很脆弱的,无法经受一些无损和有损的信息处理,而且如果确切地知道水印隐藏在几位LSB中,数字水印很容易被擦除或绕过。(2) Patchwor
15、k方法及纹理块映射编码方法这两种方法都是Bender等提出的。Patchwork是一种基于统计的数字水印,其嵌入方法是任意选择N对图像点,在增加一点亮度的同时,降低另一点的亮度值。该算法的隐藏性较好,并且对有损的JPEG和滤波!压缩和扭转等操作具有抵抗能力,但仅适用于具有大量任意纹理区域的图像,而且不能完全自动完成。空间域水印算法的最大优点就是具有较好的抗几何攻击能力,最大弱点就在于抗信号处理的能力较差。2.2.2 变换域算法基于变换域的技术可以嵌入大量比特数据而不会导致可察觉的缺陷,往往采用类似扩频图像的技术来隐藏数字水印信息。这类技术一般基于常用的图像变换,基于局部或是全部的变换,这些变换
16、包括离散余弦变换(DCT)、小波变换(WT)、傅氏变换(FT或FFT)以及哈达马变换(Hadamardtransform)等等。其中基于分块的DCT是最常用的变换之一,现在所采用的静止图像压缩标准JPEG也是基于分块DCT的。最早的基于分块DCT的一种数字水印技术方案是由一个密钥随机地选择图像的一些分块,在频域的中频上稍稍改变一个三元组以隐藏二进制序列信息。选择在中频分量编码是因为在高频编码易于被各种信号处理方法所破坏,而在低频编码则由于人的视觉对低频分量很敏感,对低频分量的改变易于被察觉。该数字水印算法对有损压缩和低通滤波是稳健的。另一种DCT数字水印算法是首先把图像分成88的不重叠像素块,
17、在经过分块DCT变换后,即得到由DCT系数组成的频率块,然后随机选取一些频率块,将水印信号嵌入到由密钥控制选择的一些DCT系数中。该算法是通过对选定的DCT系数进行微小变换以满足特定的关系,以此来表示一个比特的信息。在水印信息提取时,则选取相同的DCT系数,并根据系数之间的关系抽取比特信息。除了上述有代表性的变换域算法外,还有一些变换域数字水印方法,它们当中有相当一部分都是上述算法的改进及发展,这其中有代表性的算法是I.Podichuk和ZengWenjun提出的算法。他们的方法是基于静止图像的DCT变换或小波变换,研究视觉模型模块返回数字水印应加载在何处及每处可承受的JND(JustNoti
18、ceableDifference,恰好可察觉差别)的量值(加载数字水印的强度上限),这种水印算法是自适应的。2.2.3 其他算法近年来利用混沌映射模型实现数字水印、保密通信等成为混沌应用研究的热点。特别是自从Cox等借用通信技术中的扩频原理将水印信号嵌入到一些DCT变换系数或者多层分解的小波变换系数以来,人们已经提出了一些混沌数字水印方法。水印的嵌入与检测是基于人类视觉系统(HVS)的亮度掩蔽特性和纹理掩蔽特性,折衷水印的不可见性和鲁棒性之间的矛盾.结果表明:该方法嵌入的水印具有不可见性和鲁棒性,并且这种基于密钥的混沌水印方法更好的抗破译性能。目前比较流行的还有一种基于盲水印检测的DWT算法,
19、该算法首先对原始图像进行小波变换,根据人类具有的视觉掩蔽特性对低频分量进行一定的量化,同时可不影响视觉效果,并对作为水印的图像进行压缩和二值化处理,形成一维的二值序列,根据二值序列的值对上述量化后的原始信号的低频分量进行视觉阈值范围内允许的修改,从而实现水印的嵌入。水印提取过程是对含有水印的图像进行小波变换,对低频分量同样进行量化处理,为了增大算法的安全性,可以对水印形成的二值0、1序列在嵌入前进一步进行伪随机序列调制,相应的在水印提取过程需要增加用伪随机序列解调的步骤。这样不知道伪随机序列的攻击者即使推测出水印的嵌入规律,也无法提取水印,大大增加了水印系统的透明性和鲁棒性。2.3离散余弦变换
20、(DCT)算法2.3.1 DCT变换公式因为DCT 变换公式是这一算法的核心,有必要先了解一下DCT 正反变换公式。DCT 正反变换公式的核心是余弦变换,计算速度比较快,因图像处理所用的是二维变换,这里只给出二维的DCT 正反变换公式,二维DCT 正变换公式为:其中:二维DCT反变换公式为:其中x,y 为空间采样值,u,v 为频域采样值。因为数字图像多用像素方阵来标识,即M=N,此时,二维DCT 正反变换可以简化为:2.3.2 二维DCT的性质离散余弦变换是图像处理技术中几种最基本的酉变换之一。酉变化是线性变化的一种特殊形式,其基本线性运算式是严格可逆的,并且满足一定的正交条件。图像的酉变换可
21、以被理解为分解图像数据为广义的二维频谱,变换域中每一分量对应于原图频谱函数的能量。设IMN 为MN 的图像矩阵则该图像的二维DCT 变换可由下式表示:FDCT=其中: 其中经过二维DCT 变换得到的DCT 系数矩阵GDCT 指示了一系列频率中每一个频率所对应的变化程度,即频率的高低。其中低频分量将集中在矩阵的左上角,高频分量则集中在右下角。图像的低频分量反映图像慢变化,即图像整体部分;图像的高频分量代表图像跳变的地方,即图像细节部分,如轮廓、边缘。根据人类视觉系统,图像整体比细节部分更为重要,若一幅图像经过处理后而视觉改变不大,则其低频分量必定改变程度不大。此算法采用了将数字水印的灰度值植入D
22、CT 域的低频分量中的方法。二维离散余弦变换是一种严格可逆的酉变换。它的两个矩阵AMM BNN 满足以下的正交条件:由此,易得到离散余弦逆变换(IDCT):正因为DCT 是一种严格可逆的正交变换,才可能对基于DCT 的植入算法实现准确的数字水印滤波。2.4 离散余弦变换的水印嵌入数字图像水印算法选择二值化灰度图像作为水印信息,根据水印图像的二值性选择不同的嵌入系数,并将载体图像进行88的分块,将数字水印的灰度值直接植入到载体灰度图像的DCT变换域中,实现水印的嵌入。具体方法如下:设I是MN大小的原始图像,J是水印图像大小为PQ,M和N分别是P和Q的偶数倍,把水印J加载到图像I中,算法分以下几步
23、进行:1. 将I分解为(M/8)(N/8)个88大小的方块B;同时,J也分解为 (M/8)(N/8)个(8P/M)(8Q/N)大小的方块V; 2. 对每一个B进行DFT变换:DB=DFT(B);3. 加载水印对每一个DB和V,s(i)为从DB的中频选出的加载的位置 , 1i(8P/M)(8Q/N), t(i)为水印V的位置坐标 , 1i(8P/M)(8Q/N),DB(s)=AV,其中A是加权系数,用DB(s)来代替DB,得到加载水印后的图像DBC;4. 对以上得到的每一个DBC进行逆DCT变换:IDBC=IDCT(DBC)并将各方块IDBC合并为一个整图I,即加载了水印的新图像。原始图像I水印
24、图像J88分块处理88分块处理含水印的图像IDCT变换水印的嵌入改变水印的嵌入深度选择加载位置改变水印信息形式DCT变换图2-4-1 DCT变换的水印嵌入流程图2.5离散余弦变换的水印提取设图像D为已经加载了水印的载体图像,现要将所加载的水印从D中提取出来,其过程为上述加载水印算法的逆运算:1. 将D分解为(M/8)(N/8)个88大小的方块BD;2. 对每一个BD进行二维DFT变换:DBD=DCT(BD);3. 提取数据对每一个DBD,按照式V=1/ADBD得到V;4. 将上面得到的所有V合并成一个水印整图。含水印的图像合并分块的水印得到完整的水印提取每块的水印信息DCT变换88分块处理图2
25、-5-1 DCT变换的水印嵌入流程图3 数字水印算法的MATLAB编程3.1数字水印的嵌入 根据DCT数字水印算法,编写的数字水印嵌入MATLAB程序如下:clear all; clc;start_time=cputime;% 读取水印图像 % I=imread(mark.bmp);I=rgb2gray(I);I=double(I)/255; I=ceil(I);%显示水印图像%figure(2);imshow(I),title(水印图像)dimI=size(I);rm=dimI(1);cm=dimI(2);% 以下生成水印信息 %mark=I;alpha=15,k1=randn(1,8);k
26、2=randn(1,8);a0=imread(lena.bmp);psnr_cover=double(a0);figure(3);imshow(a0,),title(原始图像);r,c=size(a0);cda0=blkproc(a0,8,8,dct2); %分块处理图片% 嵌入 %cda1=cda0; % cda1 = 256_256for i=1:rm % i=1:32 for j=1:cm % j=1:32 x=(i-1)*8;y=(j-1)*8; if mark(i,j)=1 k=k1; else k=k2; end cda1(x+1,y+8)=cda0(x+1,y+8)+alpha*
27、k(1); cda1(x+2,y+7)=cda0(x+2,y+7)+alpha*k(2); cda1(x+3,y+6)=cda0(x+3,y+6)+alpha*k(3); cda1(x+4,y+5)=cda0(x+4,y+5)+alpha*k(4);cda1(x+5,y+4)=cda0(x+5,y+4)+alpha*k(5); cda1(x+6,y+3)=cda0(x+6,y+3)+alpha*k(6); cda1(x+7,y+2)=cda0(x+7,y+2)+alpha*k(7); cda1(x+8,y+1)=cda0(x+8,y+1)+alpha*k(8); endend% 嵌入水印后图像
28、 %a1=blkproc(cda1,8,8,idct2); %分块处理图片a_1=uint8(a1);imwrite(a_1,withmark.bmp,bmp);figure(4);imshow(a1,),title(嵌入水印后的图像);disp(嵌入水印处理时间); 程序运行后结果如下。图3-1-1 原始图像和水印图像图3-1-2 含水印的图像由运行结果可知,嵌入水印后的图像和原始图像看上去基本一样,可见数字水印的嵌入不影响原图像的感观,数字水印具有不可见性。3.2数字水印的提取根据DCT数字水印算法,编写的数字水印提取MATLAB程序如下:%提取水印%M1=imread(withmark.
29、bmp); %读取含水印的图像psnr_watermarked=M1;dca1=blkproc(M1,8,8,dct2); %分块处理p=zeros(1,8);for i=1:dimI(1) for j=1:dimI(2) % j=1:32 x=(i-1)*8;y=(j-1)*8; p(1)=dca1(x+1,y+8); p(2)=dca1(x+2,y+7); p(3)=dca1(x+3,y+6); p(4)=dca1(x+4,y+5); p(5)=dca1(x+5,y+4); p(6)=dca1(x+6,y+3); p(7)=dca1(x+7,y+2); p(8)=dca1(x+8,y+1)
30、; %sd1=sum(sum(p.*k1)/sqrt(sum(sum(p.2); %sd2=sum(sum(p.*k2)/sqrt(sum(sum(p.2); %if sd1sd2 if corr2(p,k1)corr2(p,k2),warning off MATLAB:divideByZero; mark1(i,j)=1; else mark1(i,j)=0; end endendfigure(3); subplot(1,3,2);imwrite(mark1,getmark.bmp,bmp);imshow(mark1,),title(提取的水印图像);I=imread(mark.bmp);
31、% 读取原始水印图像 %I=rgb2gray(I);I=double(I)/255; I=ceil(I);subplot(1,3,3);imshow(I),title(原始水印图像);程序运行后结果如下。图3-2-1 水印的提取从程序运行结果中可知,从含水印的图像中提取得到的水印图像和原始图像基本相同,水印信息被成功地提取了出来。4 数字水印的抗攻击实验对数字水印的攻击一般是针对水印的鲁棒性提出的要求,在前面已介绍过数字水印的鲁棒性是指水印信号在经历多种无意或有意的信号处理后,仍能被准确检测或提取的特征。攻击是指那些带有损害性、毁坏性的,或者试图移去水印信号的处理过程。鲁棒性好的水印应该能够抵
32、抗各种水印攻击行为。在这里我们只考虑那些并不严重导致载体数据失真的攻击方法。所谓水印攻击分析,就是对现有的数字水印系统进行攻击,以检验其鲁棒性,通过分析其弱点所在及其易受攻击的原因,以便在以后数字水印系统的设计中加以改进。水印必须对攻击具有鲁棒性,常见的操作主要有:剪切、亮度和对比度的修改、放大、缩小和旋转、有损压缩、在图像中加噪声等。为了验证算法的鲁棒性,对嵌入了水印的视频分别进行了剪切、滤波、压缩等攻击操作,之后再提取水印。评价数字水印被影响程度,除了利用感知系统(人眼或人耳)定性评价以外,还可以采用定量的评价标准。通常对含水印的数字作品进行定量评价的标准有:峰值信噪比(Peak Sign
33、al Noise Rate,PSNR)和归一化相关系数(Normalized Correction)。1. 峰值信噪比:设代表原始图像中坐标为(x,y)的象素点,代表嵌入了水印的图象中坐标为(x,y)的象素点,X和Y分别是行和列的个数。则峰值信噪比定义为:3.归一化相关系数:在作品中嵌入二值水印,为定量的评价提取的水印与原始水印信号的相似性,采用归一化相关系数作为评价标准,其定义为: 未受攻击时,含数字水印的图像峰值信噪比PSNR和提取出的水印图像归一化相关系数NC的情况如下。图4-1 未受攻击时的情况未受攻击时,峰值信噪比高,图像无明显失真。提取出来的水印和原始水印一样,相关系数为1。水印的
34、信息没有损失。4.1噪声攻击在已嵌入水印的图片中加入噪声,进行噪声攻击后,再从中提取水印信息,加入噪声程序如下所示,并求攻击后水印图像的PSNR和NC参数。A1=imread(withmark.bmp); %读取含水印的图像Wimage2=a1;noise0=20*randn(size(Wimage2);Wimage2=Wimage2+noise0; %加入噪声figure(2);subplot(1,3,1);imshow(Wimage2,);title(加入白噪声后图像);M1=Wimage2;M_1=uint8(M1);imwrite(M_1,whitenoise.bmp,bmp); %生
35、成已加入噪声的图片水印的提取程序如上面的3.2节的程序,程序运行后结果如下图所示。图4-1-1 噪声攻击实验从运行结果中可知,峰值信噪比明显减小,PSNR= 123.9731,图像明显失真。但提取出来的水印和原始水印相关系数NC=0.93548,相似性较高,可见该数字水印算法抗噪声攻击能力较强。4.2滤波攻击对已嵌入水印的图片进行滤波,进行滤波攻击后,再从中提取水印信息,滤波程序如下所示,并求攻击后水印图像的PSNR和NC参数。a1=imread(withmark.bmp); %读取含水印的图像 WImage3=a1; H=fspecial(gaussian,4,4,0.2); WImage3
36、=imfilter(WImage3,H); %高斯低通滤波处理 figure(2); subplot(1,3,1); imshow(WImage3,); title(高斯低通滤波后图像); M1=WImage3; M_1=uint8(M1); imwrite(M_1,gaussian.bmp,bmp); %生成高斯低通滤波处理后的图片水印的提取程序如上面的3.2节的程序,程序运行后结果如下图所示。图4-2-1 滤波攻击实验从实验结果中看到其峰值信噪比PSNR=912.7033,PSNR比未受攻击的图片略低,图片经滤波处理后失真很小,但是其水印仍然能准确提取出来,和原始水印相关系数NC很高,NC
37、=0.98557,可见该水印算法抗滤波攻击的能力较强。4.3压缩攻击对已嵌入水印的图片进行压缩,进行压缩攻击后,再从中提取水印信息,压缩程序如下所示,并求攻击后水印图像的PSNR和NC参数。a1=imread(withmark.bmp); %读取含水印的图像 WImage5=a1; WImage5=im2double(WImage5); cnum=10; dctm=dctmtx(8); P1=dctm; P2=dctm.; imageDCT=blkproc(WImage5,8,8,P1*x*P2,dctm,dctm.); DCTvar=im2col(imageDCT,8,8,distinct)
38、.;n=size(DCTvar,1); DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).2)/n; dum,order=sort(DCTvar); cnum=64-cnum; mask=ones(8,8); mask(order(1:cnum)=zeros(1,cnum); im88=zeros(9,9); im88(1:8,1:8)=mask; im128128=kron(im88(1:8,1:8),ones(16); dctm=dctmtx(8); P1=dctm.; P2=mask(1:8,1:8); P3=dctm; WImage5=blkpro
39、c(imageDCT,8,8,P1*(x.*P2)*P3,dctm.,mask(1:8,1:8),dctm); WImage5cl=mat2gray(WImage5); figure(2); subplot(1,3,1); imshow(WImage5cl); title(经JPEG压缩后图像); M1=WImage5cl;水印的提取程序如上面的3.2节的程序,程序运行后结果如下图所示。图4-3-1 压缩攻击实验压缩后图像没有原图清晰,产生了明显的失真,所以峰值信噪比很小,PSNR=2.933,但是提取的水印和原始水印相关系数NC很高,NC=0.99918,提取的水印和原始水印基本一样。可见该
40、水印算法抗压缩攻击的能力很强。4.4剪切攻击对已嵌入水印的图片剪切掉一部分,进行剪切攻击后,再从中提取水印信息,剪切程序如下所示,并求攻击后水印图像的PSNR和NC参数。a1=imread(withmark.bmp); %读取含水印的图像 WImage4=a1; WImage4(1:64,1:512)=512; WImage4cl=mat2gray(WImage4); figure(2); subplot(1,3,1); imshow(WImage4cl); title(部分剪切后图像); figure(1); M1=WImage4cl; imwrite(M_1,cutpart.bmp,bmp
41、); %生成已剪切后的图片水印的提取程序如上面的3.2节的程序,程序运行后结果如下图所示。图4-4-1 剪切攻击实验剪切掉含水印图像左边一小部分后,其比原图少了这剪掉的部分,有很大失真,所以峰值信噪比PSNR很小,PSNR=2.9354。但是提取出来的水印和原始水印相关系数NC很高,NC=0.99303,可见该水印算法抗剪切攻击的能力也很强。4.5旋转攻击旋转已嵌入水印的图片,进行旋转攻击后,再从中提取水印信息,旋转程序如下所示,并求攻击后水印图像的PSNR和NC参数。a1=imread(withmark.bmp); %读取含水印的图像 WImage6=a1; WImage6=imrotate
42、(WImage6,10,bilinear,crop); WImage6cl=WImage6; figure(2); subplot(1,3,1); imshow(WImage6cl);title(旋转10度后图像); figure(1); M1=WImage6cl;水印的提取程序如上面的3.2节的程序,程序运行后结果如下图所示。图4-5-1 旋转攻击实验含水印图像经旋转后,必然和原图想有很大区别,所以其峰值信噪比很小,PSNR=2.9324,同时已经不能提取出的明显的水印图像,水印信息有很大损失,与原始图像相关系数NC=0.48026,NC值较小,可见该水印算法抗旋转攻击的能力较弱。5 小结与
43、体会离散余弦变换在图像处理中的作用非常重要,在本设计中,运用离散余弦变换嵌入水印,是嵌入在原图像的低频部分。本文提出的水印算法的鲁棒性虽然不及一些需要原图的水印算法,但是相比而言不需要未加水印的原始图像,而且这种算法可以抵抗一些常见的攻击方法,如:旋转、裁减。低通滤波等等。如果通过直方图均衡的预处理,还可以提高算法的性能,实验证明此算法有较好的鲁棒性。 嵌入水印的图像还是比较清晰的,这说明离散余弦变换法还是具有实用价值的。当不加任何攻击时,提取的水印非常清晰,和源图像相似程度高达99.55%!这种算法对低通滤波攻击和剪切攻击来说,提取水印的效果还是比较好的;但对于旋转攻击和剪切攻击来说,效果却
44、并不理想。当旋转和剪切攻击,水印就提不出来了。这证明离散余弦变换还是具有一定的局限性的。数字水印的方法有很多,但是每一种单独的方法都无法禁得起多种方法的图像处理,只有组合不同的方法才能达到更好的效果。 程序使用了最一般的循环语句,而没有考虑到代码的优化。在本论文中,程序的执行花销时间很少,但若是图像比较大的话,是一定要考虑代码优化问题的。特别是for循环,当采用向量化循环方法将使运行时间成百上千倍的缩减!另外也没有考虑预分配数组的问题,当加入预分配数组后,运行时间也会明显缩短,而且会使内存有较大的连续空间。参考文献1孙圣和.数字水印技术及应用.科学出版社.20042罗军辉. MATLAB7.0在图像处理中的应用. 机械出版社.20053王家