《基于DCT数字水印算法的探究毕业论文.doc》由会员分享,可在线阅读,更多相关《基于DCT数字水印算法的探究毕业论文.doc(10页珍藏版)》请在三一办公上搜索。
1、基于DCT数字水印算法的探究 摘要:数字水印技术近年来得到了较大的发展,基于变换域的水印技术是目前研究的热点。本文探究关于DCT变域上的数字水印算法。首先,采用 Arnold 变换对水印图像进行置乱;然后利用DCT算法嵌入水印信息;最后,对算法进行了仿真实验。结果表明,基于DCT 变换域的数字水印算法具有较好的保密性能,能保证水印的不可见性,并保持较好的鲁棒性,从而实现了图像载体数字文献的版权保护。关键词:Arnold变换;DCT算法 Research on Digital watermarking Algorithm Based On DCTPeipei YuanAbstract:Digit
2、al watermarking technology has greatly developed in recent years. Watermarking technology based on transform domain is extremely hot. Digital watermarking algorithm based on DCT transform domain is explored in this paper. First of all, the image is scrambled through the Arnold transformation of wate
3、rmark. Then, watermark is embedded by using DCT algorithm. Finally, the algorithm simulation experiment is carried out. As a result, it is shown that this digital watermarking algorithm has a better performance, which illustrates that not only watermarking algorithm invisibility can be ensured but a
4、lso good robustness can be maintained, Consequently, the carrier image copyright protection of digital documents is realized.Keywords: Arnold transformation;DCT algorithm;引言 近年来,随着计算机网络和数字多媒体技术的不断发展和进步,越来越多的数字多媒体信息可以方便、快捷地在网络上进行传播,这给人们的生活带来了极大的方便。但是数字产品非法拷贝、伪造和篡改等,严重侵犯了单位或个人的知识产权。因此数字产品的版权保护成为一个迫切需要
5、解决的问题,因此也出现了信息隐藏技术。信息隐藏(Information Hiding)主要研究如何将某一机密信息隐藏于另一公开信息中,通过对公开信息的传输来传送秘密信息,拦截者难以从公信息中判断秘密信息的存在性,从而保证秘密信息的安全性。 数字水印是指以可感知或不可感知的形式嵌入到数字多媒体产品中,用于版权保护、内容检验或提供其它信息的信号。它是利用数字作品中普遍存在的冗余数据,把版权信息嵌入到数字作品本身,从而起到保护数字作品版权的一种技术。与其它信息隐藏技术相比,数字水印具有不易破解和去除以及鲁棒性强等优点。因此作为知识版权保护的有效途径,数字水印技术逐渐成为近年来的研究热点。1、 文献综
6、述 数字水印技术近年来得到了较大的发展,基于变换域的水印技术是目前研究的热点,然而结合加密的水印技术的研究有待提高。郭琳琴,张新荣,李震的基于Arnold逆变 换的图像置乱恢复算法1的研究,对置乱图像进行恢复。黄仿元的基于Arnold变换的图像置乱算 法及实现4,介绍了常用的几种图像置乱算法,然后讨论了基于Arnold变换的图形置乱算法及其周期性,并对这一算法用Matlab进行了实现。张俊萍,谭月辉,梁欣,高清伦.Arnold变换的置乱恢复研究5,基于Arnold变换的原理和特点,探讨并综合了周期性进行置乱恢复和Arnold快速反变换恢复方法提出了优化方案,在一定程度上提高了置乱恢复的效率。
7、典型的DCT域算法是由Cox等人17提出的一种基于DCT变换的扩频水印技术。它利用了序列扩频技术(SS)和人类视觉特性(HVS)将满足正态分布的伪随机序列加入到图像的DCT变换后最重要系数中。文献17在分析数字水印重复嵌入算法性能和技术特点的基础上,总结出该类算法的嵌入条件,提出一种基于DCT域的、结合两种嵌入子算法的重复嵌入方法。文献18将原始图像进行88大小分块,并进行子块DCT变换,每一子块嵌入一位水印,利用合适的步长对各子块的直流系数根据当前水印信息位进行量化,之后进行IDCT反变换形成含水印图像。本文综合了前人的探讨和研究,结合Arnold变换以及逆变换置乱图像和DCT算法嵌入水印信
8、息,既对水印图像进行了加密,又很好把置乱后的水印图像的嵌入了载体图像。仿真实验结果表明,基于DCT 变换域的数字水印算法具有较好的性能,能保证水印的不可见性,并保持较好的鲁棒性,实现了图像载体数字文献的版权保护。2、图像的加密与解密2.1加密(置乱算法) 基于Arnold变换的图像置乱Arnold变换是俄国数学家VladimirI. Arnold提出的一种变换,一幅NN的数字图像的二维Arnold变换定义为1 : 其中x,y0,1,2,N-1表示变换前像素的位置,x,y表示变换之后的像素位置,mod为模运算。数字图像可以看为一个二维矩阵,经过Arnold变换之后图像的像素位置会重新排列,这样图
9、像会显得杂乱无章,从而实现了对图像的置乱加密效果。图像置乱变换是通过对数字图像的位置或灰度级等作变换,来扰乱图像,以达到在一定程度上迷惑第三者的目的。经过置乱变换以后的图像,看起来杂乱无章,如果不知道所使用的置乱变换方法,很难恢复出原始图像。置乱变换有两个特点: (1) 周期性:置乱变换一般都有周期性,先是越来越乱,而后当迭代到一定次数之后就会恢复到原图。 (2) 不变性:置乱变换之后的图像的大小不发生改变。正是因为置乱变换的这种周期性和不变性,我们可在传输前先对图像进行置乱变换,使其变得杂乱无章,难以引起攻击者的注意,而后在接收端再进行反置乱变换得到原始信息。2.2解密(置乱恢复) 数字图像
10、的二维Arnold逆变换定义为1: 其中符号的定义和说明与Arnold变换中的相同。此方法克服了利用周期性进行Arnold置乱恢复需要预先求变换周期、恢复时间长的弱点, 能够快速有效地恢复出原始图像, 提高了置乱恢复的效率。3 水印算法的实现3.1 算法的基本框架 首先,把原始图像利用图像自身的某些特性和人类视觉模型进行块分类,然后将水印信息按照一定的嵌入方法嵌入到水印的频域系数当中。在水印嵌入过程中,各块嵌入水印信息的嵌入强度由该块自身的特性及人类视觉系统的特性来决定,不同类型的块嵌入强度也就不同。嵌入水印后的图像信息通过频域反变换得到含水印图像,然后在网络中进行传输或者存储。检测水印时,要
11、用同样的分类方法对图像块进行分类,由其类别得出该块的嵌入强度因子。在频域系数中提取水印时,利用不同的嵌入强度因子来提取正确的水印信息。 块分类 频域 原图 嵌入水印 反变换 频域变换 水印信息 含水印图像 块分类 提取或判断 待测图像 频域变换 图3.1 水印模型设宿主图像0是一幅大小为M*N的灰度图像,M为图像I的宽度,N为图像O的高度。设即将嵌入O中的水印图像W为一幅大小为m*n的灰度图像,m、n分别为图像W的高度和宽度。水印算法的具体过程包括两个部分:嵌入过程和提取过程。3.1.1 水印的嵌入 本文充分考虑了人类视觉系统的特性(HVS),并将其与图像的 DCT 变换相结合,来选择嵌入水印
12、信息的 DCT 系数。水印的具体嵌入过程是通过改变离散余弦变换后的系数来实现的,在改变系数的过程中,只对离散余弦变换后的系数进行较小的改动,这样可以保证在进行逆离散余弦变换后,得到的图像不会发生太大的失真算法流程如下: 水印信息 置乱变换 量 反 含 化 D 水 频域变换 嵌 C 印 原始图像 入 T 图 块分类 像图3.1.1 水印嵌入模型3.1.2 水印的提取 算法的提取过程是嵌入过程的逆过程。水印的提取是在待测图像频域系数进行量化后完成,最后对提取的水印数据进行预处理的逆过程得到确切的水印信息。算法流程如下: 待测图像 DCT变换 量化 提取水印 提取的水印 反置乱 水印数据 3.2 D
13、CT算法离散余弦变换(Discrete Cosine Tranform,简称DCT)是一种与傅立叶变换紧密相关的数学运算。在傅立叶级数展开式中,如果被展开的函数式是偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。在数据压缩中,DCT 变换是常用的一种编码方法,计算速度快,很适合于做图像压缩和随机信号处理。 MN 像素矩阵I(i,j)的二维DCT 变化定义如下2:反DCT 变换为:4 仿真实验 根据本文提出的算法,我进行了下列仿真实验,采用256256像素的图像作为原始载体信息,采用128128像素的8位灰度有个人代表信息的图像作为有意义数字水印信息,
14、如下所示: (a) 原始载体图像 (b)原始水印图像 (c)原始水印置乱图像 图4.1 原始载体图像、水印图像以及水 印置乱图像 采用本文提出的水印嵌入和提取算法,嵌入水印后的图像和无任何攻击下的水印提取结果如下图所示: (a)嵌入水印后的图像 (b)提取的水印置乱图像 (c)提取的水印置乱恢复图像图 4.2 嵌入水印后的图像、提取水印置乱像以及置乱恢复图像5、 水印攻击测试 由于数字水印在实际应用中可能会遭到各种各样的攻击,因此对算法进行攻击测试是衡量一个水印算法优劣的重要手段。下面给出水印攻击与水印提取的具体实现过程,首先对嵌入水印后的图像进行JPEG 压缩(一种水印攻击),而后从压缩的图
15、像中提取出水印。如图5.1所示,从图中可以看到DCT 域的水印算法抵抗JPEG 压缩攻击的效果是比较好的。图5.1 压缩嵌入水印的图像和提取水印 图像6、 结论 从图4.1(a)和5.1中可明显看出:嵌入水印信息后,原图与嵌入水印信息后的图像在视觉效果上没有明显分别, 用肉眼几乎分辨不出,这说明这种算法充分利用了人眼的视觉HVS 特性,利用DCT 域嵌入水印后,水印的不可见性相当好,图像在嵌入水印前后视觉效果改变不大,不影响图像的正常使用。 从图5.1可明显看出:嵌入水印后的图像经过参数.Quality为45 的JPEG 压缩后,还能从中提取出较清晰的水印信息,可见,这种嵌入算法的抗攻击性较好
16、,而且检测和提取易于实现,具有很好的实用性。6.1 本文的优点 (1) 本文进行深入研究了 Arnold变换,并用 Arnold 变换对水印进行置乱,来提高水印算法的鲁棒性。 (2) 本文提出的算法,在 DCT 域嵌入水印信息。该算法充分利用了人类视觉系统特性和离散余弦变换的良好能量压缩和去相关能力。实验表明,算法具有较好的鲁棒性,且嵌入水印后对原始图像质量影响较小。 (3) 进行了仿真实验,结果显示:Arnold 变换和DCT算法相结合的水印算法,能很好的对图像进行信息隐藏,实现了信息的安全性。 (4) 进行了水印攻击测试,原图与嵌入水印信息后的图像在视觉效果上没有明显分别,利用DCT 域嵌
17、入水印后,水印的不可见性相当好,图像在嵌入水印前后视觉效果改变不大,不影响图像的正常使用。6.2 本文的缺点对本文的提出方法,在以下方面还有待进一步的改进:1. 由于本算法在实际检测时需要原始图像,而原始图像有时不方便获得,故应对算法进行进一步的改进,以实现盲检测。2.对嵌入水印的载体图像提取水印,结果可能与原始水印图像有些差别,算法有待进一步改进,以实现最小误差。参考文献:1 郭琳琴,张新荣,李震,基于Arnold逆变 换的图像置乱恢复算法.计算机应用与软件.2010,27(9):265-2672 金聪.数字水印理论与技术.北京: 清 华大学出版社,2008.3 陈强,郑辉昌,王应,等一种基
18、于DCT 域 的数字水印算法在版权保护中的应用 研究.科技情报开发与经济.2011,21(9):123-1244 黄仿元.基于Arnold变换的图像置乱算 法及实现.贵州大学学报(自然科学 版).2008.25(3):276-2795 张俊萍,谭月辉,梁欣,高清伦.Arnold变换的置乱恢复研究.军械工程学院学报.2006.18(4):52-556 侯庆斌.基于 DCT 的鲁棒性数字水印 算法.哈尔滨:哈尔滨工业大学,20087 罗军辉等著.MATLAB7.0在图像处理中 的应用. 北京:机械出版社,20058 王家文等著.MATLAB7.0编程基础.北京:机械出版社,20059 潘刚,吴朝辉
19、,吕红兵,潘云鹤.基于二位DCT的双图像数字水印算法.工程 图学报.2000,3:118-12510金喜子.基于DCT的鲁棒性的数字水 印算法研究,计算机应用与技术.201111刘方.变换域加密图像数字水印算法研 究.计算机应用与技术.200912蔡月.基于DCT和奇异值分解的数字水 印算法研究.信息工程学院.200613潘志光.基于变换域的数字水印算法研 究.控制理论与控制工程.200714高玉娜,杨忠根.基于DCT 域的数字水印算法.软件设计开发.2008.1009-3044(2009)04-0868-0315基于DCT的数字水印算法.http:/wenku. 3683ae.html16骆
20、婷.鲁棒图像数字水印算法和数字水 印协议研究.计算机软件与理论.201017 I. J. Cox. A Secure Robust Watermark for Multimedia Workshop on InformationHiding, Cambridge, UK, 1996, Number 1174 in Lecture Notes in ComputerScience. Springer-Verlag. 1996:18520618Y. Zhao, X. Zheng, N. Li, G. Liu and Q. Wang. A Digital Image WatermarkAlgorit
21、hm Based on DC Coefficients Quantization. The 6th World Congress onIntelligent Control and Automation. 2006附录一:Arnold置乱以及置乱恢复算法:function w1=Arnold(w0)clcw0=imread(ypp1.png);w0=rgb2gray(w0);w1=double(w0)/255;subplot(2,2,2);figure(2),subplot(2,2,1);imshow(w0,);xlabel(原图像);imwrite(w0,1.bmp) for k=1:52
22、for x=1:128 for y=1:128 x1=x+y; y1=x+2*y; if x1128 x1=mod(x1,128); end; if y1128 y1=mod(y1,128); end; if x1=0 x1=128; end; if y1=0 y1=128; end; w1(x1,y1)=w0(x,y); end; end; w0=w1;end;subplot(2,2,2);imshow(w1,);xlabel( Arnold循环次数为52的图像);imwrite(w1,zhiluan1.bmp);figure(2),subplot(2,2,3);imshow(w1,);xl
23、abel(置乱图像);imwrite(w1,2.bmp) for k=1:44 for x=1:128 for y=1:128 x2=x+y; y2=x+2*y; if x2128 x2=mod(x2,128); end; if y2128 y2=mod(y2,128); end; if x2=0 x2=128; end; if y2=0 y2=128; end; w2(x2,y2)=w1(x,y); end; end; w1=w2;end;subplot(2,2,4);imshow(w2,);xlabel( Arnold置乱变换恢复后的图像);附录二:DCT水印嵌入:function syq
24、rclear all; clc;alph=0.05; origImage=imread(ypp.jpg); origImage=rgb2gray(origImage);imwrite(origImage,origImage.bmp);subplot(2,2,1);imshow(origImage);title(原图像);dctfun=dct2; origImageDct=blkproc(origImage,8,8,dctfun); origImageCol=im2col(origImageDct,8,8,distinct); m,n=size(origImageDct);%480*480 m1
25、,n1=size(origImageCol);%64*3600 I=imread(ypp1.png); I1=(rgb2gray(I); %figure(1);%imshow(I1,); subplot(2,2,2);imshow(I1);title(水印图像);imwrite(I1,waterImage.bmp) ;%水印图像w1=Arnold(I1);%置换后的图像watImage=double(I1);%imread(zhiluan.bmp); watImageCol=im2col(watImage,2,2,distinct); m2,n2=size(origImageCol); for
26、 i=1:m1 for j=1:n1 if i=2&i=6&i=10&i=2&i=6&i=10&i=13 extrImage3(i-9,j)=(watermkedImgCol(i,j)-origImageCol(i,j)/alph; end end end extrImageCol=(extrImage1+extrImage2+extrImage3)/3; %extredImage=col2im(extrImageCol,8,8,m2,n2,distinct); %extredImage=uint8(extredImage); %imshow(extredImageCol);imshow(2.
27、png);imwrite(I1,extredImage3.bmp);附录四:水印攻击测试:function SYgongjiM=256; N=128; K=2;clc;I=zeros(M,M); J=zeros(M,M); W=zeros(N,N);%对嵌入水印后的图像进行JPEG 压缩BLOCK1=zeros(K,K);BLOCK2=zeros(K,K);L=imread(waterMked3.bmp);imwrite(L,attack.jpg,jpeg,Quality,45);J=imread(attack.jpg,jpeg);figure,subplot(1,2,1);imshow(J)
28、;title(压缩后的图像);%提取水印I=imread(origImage.bmp);%I=rgb2gray(I);I=imresize(I,256,256,bicubic);for p=1:Nfor q=1:N x=(p-1)*K+1; y=(q-1)*K+1;BLOCK1=I(x:x+K-1,y:y+K-1);BLOCK2=J(x:x+K-1,y:y+K-1);BLOCK1=idct2(BLOCK1);BLOCK2=idct2(BLOCK2);if BLOCK1(1,1)=0a=(BLOCK2(1,1)/BLOCK1(1,1)-1;if a0 W(p,q)=0;elseW(p,q)=1;endendendend%显示提取的水印subplot(1,2,2);imshow(WaterImage.bmp);imwrite(W,gjtq.jpg);title( 从经过压缩的图像中提取的水印);