《基于小波变换的零水印图像算法及Matlab实现(DOC).doc》由会员分享,可在线阅读,更多相关《基于小波变换的零水印图像算法及Matlab实现(DOC).doc(26页珍藏版)》请在三一办公上搜索。
1、广东工业大学课程论文数据安全技术作业学生学院_计算机学院_专业班级12级计算机科学与技术 学 号 2111205052 学生姓名 李恒新 2013 年 01 月 15 日基于小波变换的零水印图像算法及Matlab实现摘要数字水印用于各种版权保护,不同的版权保护会用到不同的数字水印技术,由此可知目前没有一种万能的数字水印,每种数字水印都有其利弊之处。本文提出一种另类的数字水印技术,这种技术并没有把水印植入到原图像中,而是基于小波变换构造出一种称为零水印的数字图像。该技术通过使用密钥,并选择图像低频小波系数来构造零水印,并还原了水印检测的逆过程。这种技术应对各种攻击都具有很高的鲁棒性和显著性。整个
2、技术都是用Matlab软件来实现的。关键词:小波变换 数字水印 零水印 Matlab图像处理A Zero Watermarking Algorithm Based on Wavelet and achieved by Matlab AbstractDigital watermarking for all kinds of copyright protection, different copyright protection use different digital watermarking technology, thus it can be seen there is no a univ
3、ersal digital watermarking, each digital watermarking has its advantages and disadvantages .This paper presents a kind of digital watermarking technology, this technology is not the watermark implant to the original image, but based on wavelet transform is a kind of structure is called the zero wate
4、rmarking digital image.The technology use a key, and choose the low frequency image wavelet coefficients to construct non-watermark, and reducing the watermark detection inverse process. This technique deal with all kinds of attack with high robustness and significant. Matlab software was used by Th
5、e technology.Key words: wavelet transformation digital watermarking zero-watermarking Matlab image processing 目录摘要IAbstractII1. 引言12. 数字水印13. 小波变换33.1. 小波变换理论33.2. 小波变换基本原理34. 零水印概念45. 基于小波变换零水印算法及Matlab代码实现55.1. 零水印构造算法55.2. 零水印的提取算法75.3. 零水印的相似度鉴定算法85.4. 峰值信噪比PNSR的算法96. 攻击实验96.1. 对图像进行腐蚀攻击结果96.2.
6、对图像进行剪切攻击结果106.3. 对图像进行椒盐攻击结果116.4. 对图像进行斑点噪声攻击结果116.5. 对图像进行泊松攻击结果126.6. 对图像进行放大两倍的操作后的结果126.7. 对图像进行缩小四倍的操作后的结果136.8. 对图像进行膨胀攻击结果136.9. 对图像进行4邻域平均滤波结果146.10. 对图像进行8邻域平均滤波结果146.11. 对图像进行中间剪切攻击的结果156.12. 对图像进行JPEG压缩攻击结果如下156.13. 总汇167. 实验结论178. 本算法的适用性179. 结语17参考文献19附录20III1. 引言随着计算机网络技术和多媒体技术的迅速发展,
7、数字媒体得到了广泛应用,各种形式的多媒体数字作品,包括图像、音乐、电影等等,都能在网上找到相关资源,这就使盗版更加猖狂了!当版权无法得到确认时,就会给原作家造成了损失,版权保护成了一个亟待解决的现实问题,而数字水印技术就是为解决这一难题而诞生的!数字水印技术是一种将特定的标记,利用数字内嵌方法隐藏在数字图像、声音、视频等数字内容中,在保证不影响原内容的感知质量和完整性的同时提供一种确认数字内容来源真实性、确保版权拥有者权益、跟踪版权行为、认证用户使用权、隐藏附加其他信息于数字内容中的技术手段。本文提出的零水印算法称不上严格意义下的数字水印,不过这种数字水印有其它水印都具有的三个特征鲁棒性、显著
8、性和安全性,并且体现出了很高的鲁棒性和显著性。是一种值得深入研究的数字水印技术!2. 数字水印数字水印是信息隐藏技术的一个重要研究方向。 数字水印是实现版权保护的有效办法,是信息隐藏技术研究领域的重要分支。具有以下三个基本特征:1) 显著性显著性衡量水印的(不可)感知性或(不易)觉察性,岁图像水印,也就是不可见性。这里包括两个含义:一是水印不易被接收者或使用者觉察,二是水印的加入不影响原产品的视觉质量。从人的感知角度来说,图像水印的嵌入应以不使原始图像有可察觉的失真为前提。2) 鲁棒性鲁棒性指图像水印抵御外界干扰,在图像产生失真的条件下仍能保证其自身完整性和对其检测准确性的能力。换句话说,图像
9、水印应还能帮助以极低差错率识别作品的所有权,所以鲁棒性也称稳健性或可靠性。3) 安全性主要指水印不易被复制、篡改和伪造的能力,以及不易被非法检测和解码消除的能力。1数字水印系统基本结构如下:图 1 数字水印系统基本结构近年来,数字水印技术研究取得了很大的进步,下面简要介绍一些典型的算法及其主要思想:1) 空域算法该类算法中典型的水印算法是将信息嵌入到随机选择的图像点中最不重要的像素位 (LSB:least significant bits)上,这可保证嵌入的水印是不可见的。但是由于使用了图像不重要的像素位,算法的鲁棒性差,水印信息很容易为滤波、图像量化、几何变形的操作破坏。另外一个常用方法是利
10、用像素的统计特征将信息嵌入像素的亮度值中。典型算法有最低有效算法,Patchwork算法等。22) 变换域算法这种算法中,主要利用各种变换将宿主图像变换到其它域,在其它域内构造各种算法,将水印信息加到变换域的系数上,在反变换得到含有水印的图像典型的变换域算法有,离散余弦变换算法(DCT)、傅立叶变换(DFT)算法、离散小波变换(DWT)算法等该类算法的隐藏和提取信息操作复杂,隐藏信息量不能很大,但抗攻击能力强,很适合于数字作品版权保护的数字水印技术中。该类算法中,大部分水印算法采用了扩展频谱通信 (spread spectrum communication)技术。算法实现过程为:先计算图像的离
11、散余弦变换 (DCT),然后将水印叠加到DCT域中幅值最大的前k系数上(不包括直流分量),通常为图像的低频分量。23) 压缩域算法基于JPEG、MPEG标准的压缩域数字水印系统不仅节省了大量的完全解码和重新编码过程,而且在数字电视广播及VOD(Video on Demand)中有很大的实用价值。相应地,水印检测与提取也可直接在压缩域数据中进行。在该算法中有一个问题值得考虑,即水印信号的引入是一种引起降质的误差信号,而基于运动补偿的编码方案会将一个误差扩散和累积起来,为解决此问题,该算法一般采用漂移补偿的方案来抵消因水印信号的引入所引起的视觉变形。24) NEC算法该算法由NEC实验室的Cox等
12、人提出,该算法在数字水印算法中占有重要地位,其实现方法是,首先以密钥为种子来产生伪随机序列,该序列具有高斯N(0,1)分布,密钥一般由作者的标识码和图像的哈希值组成,其次对图像做DCT变换,最后用伪随机高斯序列来调制(叠加)该图像除直流(DC)分量外的1000个最大的DCT系数。该算法具有较强的鲁棒性、安全性、透明性等。由于采用特殊的密钥,因此可防止IBM攻击,而且该算法还提出了增强水印鲁棒性和抗攻击算法的重要原则,即水印信号应该嵌入源数据中对人感觉最重要的部分,这种水印信号由独立同分布随机实数序列构成,且该实数序列应该具有高斯分布N(0,1)的特征。25) 生理模型算法人的生理模型包括人类视
13、HVS(HumanVisualSystem)和人类听觉系统HAS。该模型不仅被多媒体数据压缩系统利用,同样可以供数字水印系统利用。利用视觉模型的基本思想均是利用从视觉模型导出的JND描述来确定在图像的各个部分所能容忍的数字水印信号的最大强度,从而能避免破坏视觉质量。也就是说,利用视觉模型来确定与图像相关的调制掩模,然后再利用其来插入水印。这一方法同时具有好的透明性和强健性。23. 小波变换3.1. 小波变换理论小波变换的基本思想是用一组小波或基函数表示一个函数或信号。若,将任意的连续函数在小波基下进行展开,称这种展开为函数的连续小波变换(Continue Wavelet Transform,简
14、记为CWT),其表达式为: (3-1)(1) 其相应的逆变换为: (3-2)(2)若对式(1 )中的a,b进行采样,取,可得到离散小波变换(DWT) : (3-3)在对图像进行分析、处理的应用中,我们主要采用离散小波变换(DWT),一般选取,此时称DWT为多分辨率分析。SMallat首先将多分辨率分析用于图像数据的压缩,并给出了信号分解与合成的塔式快速小波变换算法,该算法的出现使小波分析方法在信号处理领域真正得以实用化。343.2. 小波变换基本原理1989年,Mallat提出了小波变换多分辨率分析的概念,并给出了用于信号分析和重构的Mallat塔式算法25。所谓Mallat塔式算法,就是将一
15、幅图像经过小波变换分解为一系列不同尺度、方向、空间域上局部变化的子带图像。5原始图像经过一级小波分解后可以分成4个频率带,分别是低频LL1、水平HL1、垂直LH1及对角线HH1。以此类推,第二小波分解对低频频带LL1进一步分解成以上4个频率带。本文进行二级小波变换就足够了。经过小波分解后,最底层低频子带集中了图像大部分能量,包含了图像的基本信息,是视觉上重要的部分,具有较大的感觉容量,故是鲁棒水印嵌入的合适位置。图 2 二级小波分解示意图LL2HL2HLILH2HH2LHlHHl a)两层小波分解示意图 b) lena图分解结果图 3 小波分解图 图3的a)分图中,小波两层分解示意图LL2代表
16、低频信息,即包含了图像的大部分能量,所以这个区域非常容易用来处理形成零水印。提取LL2所用的算法为:LL1, HL1, LH1, HH1 = dwt2(X, sym8);LL2, HL2, LH2, HH2 = dwt2(a1, sym8); 其中,X为原图像的灰度图。LL2就是两层小波变换后低频系数的行向量。这部分代表图像的绝大部分信息,所以水印算法就在此区域进行。4. 零水印概念零水印是由数字作品自身的特点来构造出的,但它本身并不嵌入到作品中,所以对作品的任何数据都不会造成损害,有没有水印都一样,所以显著性不明显,具有很好的隐藏性。当对对象进行各种攻击,还能检测出水印,具有很高的鲁棒性,这
17、在后文会有介绍。零水印基本思想就是把图像的特征提取出来,该特征量必须有数字水印的特点,即显著性、鲁棒性和安全性。再将该特征量与作者的信息用某种方式结合,形成注册内容,将这注册内容注册到可信的水印注册机构。当版权要判定时,只须提取要检测的图像,提取到的特征量与注册的内容相比较,如果相似度高于一个值,就认定两幅图像是相同的,版权就得到了保护。对于这种构造水印技术,人人都可以提取零水印用来注册,不过注册有先后,先注册的,必有个注册时间,比较的时候,提早注册的便可以认为是原作品,这就是时戳机制了。以下是零水印的构造流程:图 4 零水印正变换图图 5 零水印反变换图5. 基于小波变换零水印算法及Matl
18、ab代码实现5.1. 零水印构造算法系数考察区的考察点确定CA2CV2CD2CA1位置密匙K1CH2CH1水印密匙K2锁定区间确定原始图像CV1生成水印图像CD1重构图像图 6基于小波的零水印嵌入图示原始图像X是N1N2的灰度图像,可用下面的式子表示: (5-1)W是根据图像特征随机产生的序列,只取 0, 1 的二值序列,长度为M ,可以用下面的公式表示W: (5-2)构造零水印生成算法如下:第一步 对原始图像灰度化成X并进行两级小波变换, 得到系数向量X0;第二步 计算系数矩阵X0 的均值aver;第三步 随机挑选出系数向量X0 中M个元素,这M个元素构成序列D,并记下数据在系数矩阵中的位置
19、,作为密钥KG1 在提取算法中使用;第四步 生成长度为M的随机序列S,取值范围为1,M,S成为密匙KG2在提取算法中使用;第五步 以S序列的值作为索引挑选D序列中的值,形成同等长度的D第六步 序列D根据下面的公式形成01二值序列T (5-3)第七步 01二值序列T转换为矩阵,形成二值黑白水印图T。通过这七步, 基于小波域的零水印系统产生了WM。用Matlab代码实现如下:clc; clear all; close all;I = imread(dog.jpg); %读入原始图像if ndims(I) = 3 X = rgb2gray(I); %判断是否为彩色图像,是的话转换为灰度图enda1,
20、 h1, v1, d1 = dwt2(X, sym8);a2, h2, v2, d2 = dwt2(a1, sym8); %二级小波变换X0=double(a2);n=length(X0);if n625 KG1=randsample(n,625); %产生矩阵的位置,也就是生成密匙KG1 KG1=KG1; D=X0(KG1(1,(1:625); %从X0中按位置提取625个数据 KG2=randperm(625); %生成密匙KG2 D1=D(KG2(1,(1:625); %从D中按位置提取625个数据endaver=(sum(D1(1:end)/625; %求均值for i=1:625 %
21、二值化 if D1(i)aver D1(i)=1; else D1(i)=0; endendT=D1;WM=reshape(T,25,25); %转换回矩阵imshow(WM,); %显示生成的水印 a)原始图像 b)生成的水印图 7 原始图像和生成的水印 5.2. 零水印的提取算法系数考察区的考察点确定CA2CV2CD2CA1位置密匙K1CH2CH1水印密匙K2锁定区间确定认证图像CV1考察点系数与对应区间匹配CD1生成水印图像Taver E1(i)=1; else E1(i)=0; endendTW=reshape(E1,25,25); %转换回矩阵imshow(TW,); %显示生成的水
22、印5.3. 零水印的相似度鉴定算法第一步: 按公式计算WM和TW的相似度P;本文用的是corr2函数;第二步: 设定一个相似度阈值P0 ;第三步: 根据下式计算鉴定结果FR (5-7)Corr2函数的计算公式6如下: (5-8)若FR 为1, 则说明鉴定作品中包含有水印,反之,则说明鉴定作品不包含有水印。Matlab代码如下:P=corr2(WM,TW);%A指的是原始图像生成的水印,B是指认证图像生成的水印P0=0.6if P625 KG1=randsample(n,625); %产生矩阵的位置,也就是生成密匙KG1 KG1=KG1; %列向量转为行向量 D=X0(KG1
23、(1,(1:625); %从X0中按位置提取625个数据 KG2=randperm(625); %生成密匙KG2 D1=D(KG2(1,(1:625); %从D中按位置提取625个数据endaver=(sum(D1(1:end)/625;for i=1:625 %水印二值化 if D1(i)aver D1(i)=1; else D1(i)=0; endendT=D1;WM=reshape(T,25,25); %转换回矩阵figure(1)imshow(WM,); %显示生成的水印%上面一段是原始图像密匙和水印的生成过程,对各种攻击检验的时候应去掉这段代码。%提取保存KG1、KG2、m、n、X、WM六个变量 %这段代码是受到攻击图像的读入,各种攻