首页 基于离散小波变换的数字水印算法_毕业设计(论文)

基于离散小波变换的数字水印算法_毕业设计(论文)

举报
开通vip

基于离散小波变换的数字水印算法_毕业设计(论文)基于离散小波变换的数字水印算法_毕业设计(论文) 编号 本科生毕业设计(论文) 题目: 基于离散小波变换的数字水印算法 物联网工程 学院 电子信息工程专业 摘要 摘 要 随着网络通信的飞速的发展以及多媒体技术的广泛应用,数字产品版权的保护问题变得越来越重要。数字水印技术已成为解决数字多媒体版权问题的主要工具。目前基于小波域的算法有很多,有简单的直接在经过小波变换的分量中嵌入水印,有两域结合的水印算法等,其中基于小波变换(DWT)和奇异值分解(SVD)结合的算法可以充分利用DWT的多分辨率特性和SVD...

基于离散小波变换的数字水印算法_毕业设计(论文)
基于离散小波变换的数字水印算法_毕业设计(论文) 编号 本科生毕业设计(论文) 题目: 基于离散小波变换的数字水印算法 物联网 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 电子信息工程专业 摘要 摘 要 随着网络通信的飞速的发展以及多媒体技术的广泛应用,数字产品版权的保护问题变得越来越重要。数字水印技术已成为解决数字多媒体版权问题的主要工具。目前基于小波域的算法有很多,有简单的直接在经过小波变换的分量中嵌入水印,有两域结合的水印算法等,其中基于小波变换(DWT)和奇异值分解(SVD)结合的算法可以充分利用DWT的多分辨率特性和SVD所固有的特征(小波变换的多分辨率特性可根据各自的重要程度对图像进行分级处理,奇异值分解的奇异值的稳健性是一种内蕴特性,都增强了水印的不可见性和鲁棒性( 本文分析讨论了数字水印技术的基本原理、典型算法几数字水印攻击方法,研究了一种基于离散小波变换的数字水印算法。该算法使用推广的Arnold变换对水印进行置乱,提高了水印的安全性;利用人类视觉系统确定水印的嵌入强度,提高了水印的不可感知性;实现了树荫的忙提取,增强了算法的适用性。本文对所提出的算法进行了仿真实验,并进行了性能分析。 实验结果 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 明,本文所研究的算法具有良好的鲁棒性,同时也很好地保证了水印的不可感知性。 关键字:数字水印;离散小波变换;图像置乱;人类视觉特性 I Abstract ABSTRACT With the rapid development of network communication and broad appkication of multimedia techniligy,copyright protection of digital median work is becoming more and more important.Digital watermarking is viewed as an effective tool for copyright protection of multimedia data. Now algorithms based on DWT have many, including embedding watermark directly after DWT,combining two domains and so on.The algorithms based on DWT and SVD can take full account of characteristic of the multi-resolution of DWT and inherent factors of SVD.The characteristic of the multi-resolution of DWT can process an iamge at rated according to their important points,and the values of SVD is very robust.All which enhance the invisibility and robustness. At first the principle,typical algorithms and attack analysis of digital watermark is described.Then,a watermarking algorithm based on DWT is proposed.the watermark image is scrambled by a generalized Arnold transform so as to improve the security of the watermark;the watermark is embedded into the middle-frequency subband which guarantees the robustness of the algorithm;In order to implement the blind extraction,this paper improves an embedding algorithm based on HVS,which enhances the applicability of the algorithm.This paper tests the algorithm,and quantity of experiment data shows that algorithm has good robustness,and the imperceptibility of watermark can be guaranteed at the same time. Keywords: digital watermark;DWT;image scrambling;HVS II 目录 目 录 摘 要 ................................................................................................................. I ABSTRACT ...................................................................................................... II 目 录 ............................................................................................................... I 第1章 绪论 ..................................................................................................... 1 1.1选题背景及意义 ........................................................ 1 1.2 数字水印概述 .......................................................... 1 1.2.1数字水印的基本特征 ........................................................... 1 1.2.2 数字水印的国内外研究现状 ..................................................... 3 1.3本文的研究内容 ........................................................ 3 第2章 数字图像水印算法与抗攻击性能分析 ................................................. 5 2.1 数字图像水印系统的基本模型 ............................................ 5 2.2水印攻击 .............................................................. 6 2.3 水印的检测与评价 ...................................................... 6 第3章 基于DWT-SVD分解的水印算法的设计 ............................................. 9 3.1小波变换的基本理论 .................................................... 9 3.1.1小波分析 ..................................................................... 9 3.1.2小波变换对信号的处理 ......................................................... 9 3.2 基于DWT-SVD分解的水印嵌入算法 ....................................... 10 3.3 基于DWT-SVD分解的水印提取算法 ....................................... 13 第4章 MATLAB仿真结果 ........................................................................... 15 4.1 仿真实验 ............................................................. 15 4.2 抗攻击性能分析 ....................................................... 18 4.3 小结 ................................................................. 24 第5章 结论与展望 ........................................................................................ 25 5.1结论 ................................................................. 25 5.2不足之处及未来展望 ................................................... 25 参考文献......................................................................................................... 27 致 谢 ............................................................................................................ 28 附录A: 程序代码 ........................................................................................ 29 ii 基于离散小波变换的数字水印算法 第1章 绪论 1.1选题背景及意义 随着多媒体数据在网上交易和传送的日益增多,由于数字信息极易被篡改、复制与散布,如何对数字作品的知识产权进行保护已经成为迫切需要解决的问题。对数字产品的保护最初是通过加密来完成的,但这种方法至少有两个问题:首先,加密算法存在被破解的可能性,而且一旦被破解,将没有办法证明产品的所有权。另外,加密将影响数字产品的传播,限制了数字产品迅速发展的优势。 新近出现的水印技术正好对这方面的问题进行了很好的探索,它是将具有确定性和保密性的信息直接嵌入到原始数据并作为原始数据的一部分而保留在其中,因而即使在解密之后仍可以跟踪数据的复制和传输,对媒体数据进行有效的保护。 作为数字水印嵌入方法,离散小波变换(DWT)越来越受到研究人员的重视,DWT方法的优点是不仅可以将图像分解到频域中,同时还保留了图像在空间上的分布。这对于加强数字水印以及有损压缩和局部剪裁等的鲁棒性是非常有效的,另一方面小波变换的多分辨率分析和人的视觉特性能较好匹配,因此,从水印可见性的角度讲,DWT也更接近HVS的要求。数字水印技术可以对多媒体信息进行有效地保护,但由于该技术的研究涉及了图像和信号处理、密码学、现代通信技术、编码理论以及神经审理学等众多领域,是一门多学科交叉的学科,因此给研究工作带来了一定的难度。尽管目前国内外数字水印技术的研究者正在努力建立一个相对完善的、能够提供普遍指导意义的理论基础,但就目前状况而言,这项工作还远远没有达到令人满意的地步。无论是在国内还是在国外,数字水印技术的研究都还不成熟,从理论导刊应用都还处于发展的初级阶段,还有很多问题有待于解决。因此,不论从理论角度还是从应用角度来看,开展数字水印技术的研究,不仅具有重要的学术意义,还有机器重要的经济意义。 1.2 数字水印概述 [2]Cox等把水印定义为“不可感知地在作品中嵌入信息的操作行为”;杨义先等认为“数字水印是永久镶嵌在宿主数据中的具有可鉴别性的数字信号或模式,并且不会影响宿 [3]主数据的可用性”(大部分学者认为所谓数字水印技术,就是将数字水印嵌于一个宿主载体中,不被觉察到或者不易被注意到,而且同时不影响宿主载体的视觉效果和使用价值,宿主载体可以是图像、声音、文字、符号和数字等一切可以作为标记和标识的信息(数字水印技术实际是利用数字产品的信息冗余性,把与多媒体内容相关或不相关的一些标识信 息直接或间接嵌入多媒体内容中,通过对水印的检测和分析保证数字信息的完整可靠性,从而成为知识产权和数字多媒体防伪的有效手段( 1.2.1数字水印的基本特征 不同的用途,对于数字水印的要求各不相同,通常我们要求数字水印应具有如下基本 [4 5]特征: (1) 安全性 数字水印能抵抗各种蓄意的攻击,主要是指水印不容易被复制和伪造的能力,以及不 11 江南大学学士学位论文 易被非法检测的能力(必须能够唯一地标志原始图像的相关信息,任何第三方都不能伪造他人的水印图像( (2) 不可感知性 在宿主数据中隐藏的数字水印应该是不能被感知的,即加入水印后宿主数据不能有视觉质量的下降,与原始数据对比,很难发现二者的差别(不可感知包括两方面的含义,一个是指感官上的不可感知,一个指的是统计上的不可感知(感官上的不可感知就是指从人类的感官角度看,嵌入水印的数据与原始数据之间完全一样,通过人的视觉、听觉无法觉察宿主数据中因嵌入数字水印而引起的变化(统计上的不可感知性是指,对大量的用同样的方法经过水印处理过的数据产品,即使采用统计方法也没有办法确定水印是否存在( (3) 可证明性 数字水印能够为宿主数据的产品归属问题提供完全和可靠的证据(数字水印可以是已经注册的用户号码(产品标志或者有意义的文字等,它们被嵌入到宿主数据中,需要时可以将它们提取出来,判断数据是否受到保护,并能够监视被保护数据的传播以及非法复制,进行真伪鉴别等(一个好的水印算法应该能够提供没有争议的版权证明( (4)水印容量 水印容量又称为数据有效载荷,是指在单位时间内或在一个作品中,在某些场景下有效编码的比特数(大多数的算法水印容量都比较小,大的水印容量加大了算法设计的难度(为抵抗各种变换,水印通常需要在数字媒体中按照一定的排列方式反复加入多次,当水印信息本身较大时,会导致重复次数减少,同时就会导致检测结果的不可靠( (5) 鲁棒性 数字水印应该很难被去除(在不能得到水印的全部信息(如水印数据、嵌入算法、嵌入位置、嵌入密钥等)的情况下,只知道部分信息,应该没有办法完全去除水印,任何试图完全破坏水印的操作将对载体的质量产生严重破坏,使得载体数据无法使用(一个好的水印算法应该对信号处理、通常的几何变形,以及恶意攻击具有鲁棒性(衡量一个水印算法的鲁棒性,通常使用下面这样一些处理( ?滤波、平滑处理(水印应该具有低通特性,低通滤波和平滑处理应该无法删除水印( ?数据压缩处理(图像、声音、视频等信号的压缩算法是去掉这些信号中的不重要部分(通常水印的不可感知性就是将水印嵌入在宿主数据对感知不敏感的部位,而这些不敏感的部位经常是被压缩算法所去掉的部分(所以,一个好的水印算法应该将水印嵌入在宿 主数据的最重要部分,使得任何压缩处理都无法将其去除(当然这样做可能会降低宿主数据的质量,但是只要适当选取嵌入水印的强度,就可以使得水印对宿主数据质量的影响尽可能的小,不至于引起察觉( ?几何失真(目前的大部分水印算法对几何失真处理都非常脆弱,水印很容易被擦除(几何失真包括图像尺寸大小的变化、图像旋转、裁剪、删除或添加等( ?量化与增强(水印应该能够抵抗对宿主数据信号的A/D、D/A转换、重采样等处理,以及一些常规的图像操作,如图像在不同灰度级上的量化,亮度与对比度的变化、图像增 2 基于离散小波变换的数字水印算法 强等,都不应该对水印产生严重的影响( 1.2.2 数字水印的国内外研究现状 在国外,自从1994年的IEEE国际图像处理会议上,R.G.sehyndel等人第一次明确提出了“数字水印”的概念以来,数字水印技术有着突飞猛进的发展,1992年的关于水印文章只有两篇,到1998年就猛增到103篇(并且越来越多有影响的国际会议(如IEEE ICIP、IEEE ICASSP、ACM Multimedia等)以及一些国际权威杂志(如Proceedings of IEEE、Signal Processing、Communications of ACM等)相继出版了数字水印的专辑(研究数字水印的机构,如麻省理工学院的媒体实验室、明尼苏达大学、普林斯顿大学、南加州大学等,以及NEC公司、IBM公司等,都一直在致力于信息隐藏技术方面的研究,并已取得了大量研究成果(基于小波变换的数字水印同时也在不断的发展和进步,Kunder等人最早提出将水印嵌入到DWT(DiscrctewaveletTransform)域,其算法首先将图像和水印进行小波变换,然后将特定子带的水印信号缩放后嵌入到相应图像子带上,最后经过小波逆变换得到嵌入水印后的图像(现在基于DWT域的数字水印不仅能够应用于图像,以及在语音和视频文件中也有较好的效果(而且小波变换和基于空域的水印算法比较,在抗干扰,鲁棒性等方面有更好的效果( 在国内,小波变换的研究也很广泛(文献[9]通过对图像矩阵奇异值分解( SVD) 的分析,提出一种基于SVD的数字水印 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 (该方法将高斯随机序列作为水印进行嵌入, 通过 [i]相关检测判断水印存在与否,对几何攻击具有很强的鲁棒性(周波提出了基于奇异值分解的抗几何失真的数字水印算法,算法很新颖,但是该算法在抵御其它一些攻击上效果不 [ii]是很理想,如噪声攻击和JPEG压缩等(陶锋提出了基于DWT-SVD的图像盲水印研究,将水印嵌入到一级DWT变换后的低频分量进行分块再作奇异值分解的奇异值当中(张割, [iii]左运兴提出的基于DWT- SVD 分解的数字水印方案,将载体图像进行一级DWT变换后,将水印的奇异值嵌入到低频和高频分量当中( 1.3本文的研究内容 本文研究一种新的基于小波变换和奇异值分解的水印方案:对载体图像进行多尺度小波变换,将作为水印的灰度图像先作Arnold变换的置乱处理,将变换后水印图像的奇异值嵌入到载体图像的最后一级小波变换的不同分量的奇异值中(并且考虑到奇异值的第一个值对载体图像有很大的影响,对第一个奇异值的破坏不能过大而采用嵌入强度小于其它系数的技术手段( 将经过置乱的水印图像进行奇异值分解的奇异值嵌入到小波变换的低频和中高频的奇异值中,嵌入的信息量少,鲁棒性更强,安全性更好( 实验表明,该方法抗几何失真,对一般的图像处理操作具有较强的鲁棒性(在误码率较高的情况下,仍能达到较高的峰值信噪比和相关性(并且对水印图像采用了置乱技术,加强了安全性( 33 江南大学学士学位论文 4 基于离散小波变换的数字水印算法 第2章 数字图像水印算法与抗攻击性能分析 2.1 数字图像水印系统的基本模型 图像数字水印系统的基本思想是在一幅宿主图像(原始图像)中嵌入一个秘密信息(即水印),而且要保证水印是不可觉察而且安全的,在知道水印嵌入过程中所有或部分密钥的情况下,应该可以恢复或检测出嵌入的秘密信息( 数字图像水印处理过程主要包括水印生成、嵌入和检测三个步骤(而整个水印系统还应该包括外界的攻击过程(整个数字图像水印系统的基本模型如图2-1所示,图中的虚线表示对应项可以参与操作也可以不参与操作(数字水印生成过程G的输入为原始信息m、原始图像和水印生成密钥K,输出为待嵌入载体的数字水印w(当然,在水印生成过程中也可x1 以直接由密钥生成水印序列而不需要原始信息(人们通常采用的水印形式是二进制序列,例如:由伪随机序列发生器产生的伪随机二进制序列信号(有时候,数字水印并不是通过生成算法生成的,而是直接将给定有意义的图形或图标作为数字水印(在水印嵌入过程中, w原始图像x,水印w以及嵌入密钥K经过嵌入函数E,生成含水印图像x(需要注意,尽管图2 中的生成密钥和嵌入密钥都有虚线表示,但是为了保证水印算法的安全性必须确保至少有 ,一个过程使用密钥(通常,嵌入函数E用插入操作符作用在一组特征集F(x)来描述,见式(2-1): w(2-1) F(x),F(x),w 在变换域算法中,位于特征集F(x)中的特征是图像的变换域系数(例如离散余弦变换、离散傅立叶变换或小波系数等)(而在空域算法中,水印被嵌入在图像的亮度或色度分量 w中(一旦生成含水印图像x,该图像将在一定的媒介中传输或流通,一定会受到一些有意 ˆx或无意的攻击,从而得到可疑图像(通常把根据检测密钥K(有时还需要原始图像x和原3 ˆx始水印w)判断可疑图像是否存在水印的过程称为水印检测,而把根据提取密钥 K (有时3 ˆˆxw还需要原始图像x)提取可疑图像中的水印的过程称为水印提取(通常,在包含水印生 ˆw成的水印处理系统中,在提取出水印后有时还需要根据水印生成密钥K对应的解码密钥1 ˆˆmwK恢复所嵌入的信息,这个过程就是水印的解码过程(有时,提取的水印没有感知上4 ˆw的含义,这时需要计算水印和原始水印w之间的相关系数来判断水印的有无,这个过程相当于先提取后检测(为了描述方便,通常人们把这三个概念统称水印解码或水印检测(检测或提取密钥K,可以与嵌入密钥K相同也可以不相同;解码密钥K也可以与生成密钥相同24 ˆx也可以不相同(在水印提取情况下,解码函数D作用于需要确定版权的可能受损的图像, ˆ并从的特征中恢复水印,见式(2-2): F(x) ˆˆw,D(F(x))(2-2) 同时,在水印恢复的过程中,是否要求助于原始图像,对数字水印的鲁棒性以及安全性等方面都有不同的影响(明检测(有原始图像参与检测)的水印算法具有较强的鲁棒性[14]( . 55 江南大学学士学位论文 原始 图像检测/ˆww x ˆx 提取/ x生成 嵌入 攻击 w解码算法G 算法E 算法A ˆm算法 wD 原始 水印存在, 信息 m 检测/解 码 生成 嵌入 提取密钥密钥密钥 密钥K4K K 12K 3 直接给定水印 w 2.2水印攻击 对含有水印图像的常见的攻击方法分为有意攻击和无意攻击两大类(有意攻击一般分为以下几类: 伪造水印的抽取,多重水印,伪造的肯定检测,统计学上的水印抽取( 无意攻击是可以通过改善水印系统来解决的,依照Stirmark和Checkmark等常用的水印测试基准程序,无意攻击通常有: 剪切,亮度和对比度的修改,增强,模糊和旋转,在图像中添加噪声,有损压缩,如JPEG压缩,放大、缩小和旋转等( 对于这些攻击,好的水印系统需要具有一定的鲁棒性,即经过这些攻击还能够保证水印的正确检测和提取,从而能达到保护的目的( 2.3 水印的检测与评价 数字水印的基础就是人眼对图像信号的不敏感性(人眼对图像有很大的感觉冗余,图像信息隐藏就是要求在视觉没有异常感觉的情况下,将信息嵌入到图像中,水印嵌入隐藏的信息是水印信息,可以看作是信息隐藏的一个特例(一般来说,对于相同的隐藏算法,载体图像中嵌入的信息量越大,对宿主数据的修改就越大,图像的视觉效果就越差(换句话说,对于同一个嵌入算法,载体图像数据的改变程度与嵌入的数据量是成正比关系的,嵌入的数据量大,载体图像的视觉效果改变就大,嵌入的数据量小则载体图像的视觉效果 改变就小(但是对于不同的嵌入算法,嵌入的数据量大小就不一定与载体图像视觉效果有特别直接的关联(也就是说,对于不同的嵌入算法,可以做到嵌入的数据量有多有少,对载体图像数据的改变程度也不一样,但二者最后得到的视觉效果却可以相差不大( 因此,一个好的水印嵌入算法,应该是能够在引起视觉感知最小的情况下嵌入较多的信息(要对一个水印算法的优劣评价,应该建立对水印的评价准则(它不仅包括对水印鲁棒性的评价,还应该包括水印的嵌入而引起的载体失真的主观和客观评价( 水印的鲁棒性取决于这样几个因素:水印嵌入强度,嵌入信息的数量等(嵌入的信息 6 基于离散小波变换的数字水印算法 越多,水印的鲁棒性就越低(水印嵌入的强度越大,则鲁棒性越高(而水印的嵌入强度和水印的可感知性之间有一个折衷,水印健壮性高,就需要更强的嵌入,这反过来提高了水印的可感知性(误码率是表征鲁棒性强弱的一个指标,它能够直观的给出水印的鲁棒性强度(因此,设计水印算法时要有一个公平合理的评价和比较,评价过程中要考虑水印的可感知性(通常有两种方法对水印的可感知性进行评价,一个是主观测试,另一个是客观度[iv]量( 本文是将视觉上可以直观认知的灰度图像作为水印,所以人眼的主观评价可以作为水印抽取的一个评价标准(除此之外,本文主要从三个方面来比较全面和比较可观地检测和评价水印的性能( (1) 相关性 相关系数nc是一个作为评价水印抽取算法的客观标准,设原始水印为W,提取出来 ,的水印为,相关系数如式(2-3)所示: W ,,,W(i,j)W(i,j)W(i,j)W(i,j),,,,ijij,,, (2-3) nc(W,W)min,,,,,W(i,j)W(i,j)W(i,j)W(i,j),,,,ijij,, 相关系数在0,1之间,其值越大,水印鲁棒性越好(如果该相关系数nc超过某一个阈值,就判定图像中存在此灰度水印图像( (2) 峰值信噪比 一般来说,信噪比SNR(Signal to Noise Ratio)与峰值信噪比PSNR(Peak Signal to Noise Ratio)是最通行的评定信号品质的指标(由于水印模型是与通信系统模型紧密联系的,相对与原始作品来说,水印信号可以认为是随机噪声,有噪声就会影响原始作品的品质,也自然存在SNR和PSNR(在具体应用中,由于SNR的计算比较复杂,所以一般用PSNR代替SNR,主观上可以容忍的PSNR值都在20dB以上(在图像处理和水印不可见性评价 [v]中,用式(2-4)对加水印的图像的PSNR进行定义( 2DMNPSNR(dB),10log (2-4) 10MN2(I(x,y),I(x,y)),,W,,11xy 其中,D是信号的峰值,M和N分别是图像矩阵的行列数,是原始图像坐标I(x,y)(x,y) I(x,y)上的像素值,是含水印图像坐标上的像素值( (x,y)W (3)误码率 本文还选用另外一个指标,即误码率(Bit Error Rote)来评价水印的鲁棒性(就是指攻击后含提取水印图像错误比特位数占原水印总比特位数的比例,如式(2-5)所示: Dber, 错误~未找到引用N 源。( (2-5) 式2-5中,D表示含水印图像攻击后和攻击前不同比特位的数目(N为水印图像的总比特位数目( 77 江南大学学士学位论文 8 基于离散小波变换的数字水印算法 第3章 基于DWT-SVD分解的水印算法的设计 3.1小波变换的基本理论 3.1.1小波分析 小波变换是一种信号的时间-尺度(时间-频率)分析方法,它具有多分辨率分析(Multiresolution Analysis)的特点(小波分析方法是一种窗口大小(即窗口面积)固定但其形状可改变,时间窗和频率窗都可以改变的时频局部化分析方法(在低频部分具有较高的频率分辨率和较低的时间分辨宰,在高频部分具有较高的时间分辨率和较低的频率分辨率,所以它被誉为数学显微镜(正是这种特性使小波变换具有对信号的自适应性(原则上讲,传统上使用傅里叶分析的地方,都可以用小波分析取代( 22设错误~未找到引用源。表示平方可积的实数空间,即能量有限的,,,,,,,t,LR,,LR ˆ传导空间,其傅里叶变换为错误~未找到引用源。(当错误~未找到引用源。 满足允,,,, 许条件(Admissible Condition)式(3-1): 错误~未找到引用源。( (3-1) 时,可以称错误~未找到引用源。为一个基本小波或母小波(Mother Wavelet)(将母函,,,t 数错误~未找到引用源。经伸缩和平移后,就可以得到一个小波序列( 对于连续的情况,小波序列如式(3-2): 错误~未找到引用源。( (3-2) 式中,a为伸缩因子,b为平移因子( 2对于任意的函数错误~未找到引用源。的连续小波变换的描述如式(3-3),,,,ft,LR 所示: 错误~未找到引用源。( (3-3) 其逆变换如式(3-4)所示: 错误~未找到引用源。( (3-4) 对于离散的情况,小波序列如式(3-5)所示: 错误~未找到引用源。( (3-5) 如果 ,, ,,,,ft,a,t ,,j,kj,kjk,,,,,, ,,成立,则可以称系数错误~未找到引用源。的集合为函数f的离散小波变换 aj,kj,k,Z 3.1.2小波变换对信号的处理 (1) 二维小波变换 二维小波变换的基本思想就是把数字图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再根据各个子图像的特点有针对性的进行处(对一幅图像的三级小波 99 江南大学学士学位论文 分解示意如图3-3 所示( LL3 HL3 HL2 HH3 LH3 HL1 LH2 HH2 LH1 HH1 图3-3三重小波分解示意图 每一级分解都把图像分解为四个频带:水平(HL)、垂直(LH)、对角(HH)和低频(LL),其中低频(LL)部分还可以进行下一级的分解(一幅图像经过分解之后,图像的主要能量主要集中于低频部分,这也是视觉重要部分; 而图像的高频部分即图像的细节部分所含能量较少, 分布在HL,LH,HH 三个子图中,主要包含了原图的边缘和纹理部分信息(基于小波分析的数字水印算法的基本思想是把水印嵌入到图像小波变换后的低频子带或高频子带系数中(图像的低频子带携带了图像的大部分信息,因此可以嵌入更多的水印信息,使水印更加鲁棒,但同时也产生了问题,即图像低频子带的变化容易导致较大的图像失真(相反,高频子带携带的是图像的边缘和纹理信息,人眼对这部分信息不敏感,因此,在这分嵌入水印,可以避免引起图像的失真,但同时水印容易遭到破坏(如有损压缩等),鲁棒性不是很强(因此,一个有效的小波域水印算法必须在鲁棒性和图像的失真度之间取得平衡( 3.2 基于DWT-SVD分解的水印嵌入算法 水印嵌入模型如图3-4所示( 载体图像 小波分解 SVD分解 含水印的图 像 水印嵌入 Arnold变换 SVD分解 水印图像 图3-4水印嵌入算法 (1)水印图像的置乱 [vi]数字图像置乱就是将一幅给定图像按照一定变换规则在空域或频域将其变换为一幅杂乱无章的图像,从而隐藏其图像本身(图像的置乱变换既可以是局部的,也可以是全局的(局部置乱变换必须加大置乱块的大小,但对于比较平滑的图像,即使扩大置乱块,置 10 基于离散小波变换的数字水印算法 乱后的图像中仍会保留原图像的大部分信息;而全局的置乱变换,却能得弥补这一缺陷,能达到较好的效果(在水印预处理中,这种全局的置乱变换就能较好地分散错误比特的分布,提高数字水印的视觉效果来增强水印的鲁棒性(此外,图像置乱还可增加水印信号的保密性,即使水印信号被攻击者识破并提取出来,如果不知道置乱密钥和置乱方法,攻击者也无法恢复出隐藏的图像水印信号(目前已存在多种图像置乱方法,如基于位操作、幻方、FASS 曲线、Arnold 变换、Gray 码变换、骑士巡游、Hibe 变换、几何变换等(其中Arnold 变换易于实现,易于恢复,无需多次变换就能达到令人满意的效果,而且实现起来比较简单,比较适合于实际应用(因此本文采用Arnold 变换的置乱方法( Arnold 变换定义: 假设对于平面单位正方形内的所有点,作式(3-13)变换( 错误~未找到引用源。( (3-13) 其中,k 为正整数,x,y 是平面某点的坐标,x',y' 是变换后的坐标,可见Arnold变换实际是一种点的位置移动,并且这种变换是一一对应的(根据数学理论,只要平面点的有限性,很明显这种变换一直做下去,就会存在周期的问题(考虑到数字图像的需要,我们把以上的Arnold 变换改写为式(3-14): 错误~未找到引用源。( (3-14) 其中,N为水印图像大小,水印大小为N×N(在Arnold 变换中,式中的k与次数N构成数对(N,k)恰好可以成为置乱的密钥( Arnold变换是图像置乱技术中的一种,通过多次迭代计算,使原始图像的像素点位置发生变化,导致原始图像已经完全不是按照原来的规律排列,并且只要知道迭代计算的次数就可以逆变换得到原来的图像(所以置乱的次数可以当作密钥,不知道密钥的人很难得到原始图像,这样做在某种程度上是对原来的图像的一种安全保护( 现研究的水印图像多采用二值图像,这样的图像的像素值只有两个,比较简单(并且提取水印时通过取定阀值很容易得到原来的像素值,从而不易失真,鲁棒性较强(本文采用实际应用中经常用到的灰度图像(大小为128×128),具有普遍性( 读取水印图像,限制水印图像为方形,本文所选水印图像为自己绘制的128×128的灰度图像(代码如下: >>arnold_image=Arnold(watermark_source,10,0); Arnold是按照Arnlod原理编写的一个Matlab函数,迭代次数选10,即上文所说的k,置乱密钥( (2)载体图像的小波变换 对图像的小波变换就是二维的小波变换,一重小波分解,得到四个分量:低频分量包含了绝大部分能量,反映了原图像的主要特征(另外三个分量分别为水平高频分量、垂直高频分量和对角线高频分量,它们含有较少部分的能量,反映的是原始图像的边缘和轮廓特征( 二维小波变换的函数有很多,如表3-1所示( 表3-1 二维小波变换函数 1111 江南大学学士学位论文 函数名 函数功能 二维离散小波变换 dwt2 二维信号的多层小波分解 wavedec2 二维离散小波反变换 idwt2 二维信号的多层小波重构 waverec2 由多层小波分解重构某一层的分解信号 wrcoef2 由多层小波分解重构近似分量或细节分量 upcoef2 提取二维信号小波分解的细节分量 detcoef2 提取二维信号小波分解的近似分量 appcoef2 二维小波分解的单层重构 upwlev2 二维周期小波变换 dwtpet2 二维周期小波反变换 idwtper2 本文采用经典的elaine图像作为载体图像(使用二维离散小波函数,如式(3-15)所示: [cA,cH,cV,cD]=dwt2(X,'wname')( (3-15) 对载体图像进行小波变换,使用小波反变换函数,如式(3-16)所示: X=idwt2(cA,cH,cV,cD,’wname’)( (3-16) 其中的小波基函数 'wname'使用’Haar’( Haar小波性能优良,而且Haar小波的支撑长度最短,它的分解和重构计算复杂度低于其它小波,同时Mallat算法是针对无限信号的,而实际中的图像是有限的,因此需要延拓(而对Haar小波而言,则比较特殊,边界不需要延拓(因此本文中选用Haar小波作为水印实验的小波基(代码如下: >>origne_image=imread('elaine.bmp'); >>[LL1,LH1,HL1,HH1]=dwt2(origne_image,'haar');%对载体图像先进行一阶dwt变换 >>[LL2,LH2,HL2,HH2]=dwt2(LL1,'haar'); >>[LL3,LH3,HL3,HH3]=dwt2(LL2,'haar'); 经过对载体图像进行三阶小波变换之后,得到了多个分量(通过实验数据比较,发现LL3,HH3两个分量的奇异值和水印图像的奇异值比较接近,如果将水印嵌入到这两个分量当中,不仅是将水印嵌入到载体图像的低频分量当中,具有较强的鲁棒性,而且由于给载体图像像素值带来比较小的变化,载体图像不会出现明显的失真,从而不可见性很好( (3)奇异值分解 TCA,UV一个二维矩阵经过奇异值分解后将得到三个矩阵(错误~未找到引用源。, 中的U和V都是正交 ,,,1,,,,,TT,,,,UU,IVV,I矩阵: ,错误~未找到引用源。为对角矩阵,,,,,,, ,,,n,, 12 基于离散小波变换的数字水印算法 其中错误~未找到引用源。计委分解后得到的奇异值(在图像处理中应用(SVD),.......,1n 的主要背景是:(1)图像奇异值的稳定性很好,即当图像被施加小的扰动时,图像的奇异值 [vii]不会有大的变化;(2)奇异值所表现的是图像的内蕴特性而非视觉特性( Matlab自带的函数SVD,使用形式如:[U,S,V] = svd (X) ,结果返回一个与X 同大小的对角矩阵S,两个正交矩阵U 和V( (4)嵌入 将水印奇异值按比例嵌入到载体图像的不同分量的奇异值中(经过SVD分解后的奇异值在对角矩阵中呈数值递减的规律排列(并且可以很重要的一点,即一副图像主要能量的SVD分解得到的奇异值中的第一个与后面一个奇异值几乎相差一个数量级,而且经过实验得这个奇异值对图像的影响最大,对它进行较小的改变,图像的失真度比相对于其它值的变化将大很多,因此在水印的嵌入过程中必须考虑这非常重要的一点,使得水印的嵌入能达到最佳效果( 由于奇异值体现的是图像的内蕴特性,使得图像的稍微改变,奇异值的变化很小,从而比较稳定(因此本文选择将水印图像的奇异值按照不同嵌入因子嵌入到载体图像小波变换后的不不同分量的奇异值中( 3.3 基于DWT-SVD分解的水印提取算法 水印提取检测模型如图3-5所示( 原始图像 小波变换 SVD分解 水印提取 Arnold反变换 小波变换 SVD分解 含水印图水印图像 像 检测 检测结果 原水印图 图3-5 水印提取算法 水印的提取过程就是水印嵌入过程的逆过程,本文的水印提取就是先对嵌入水印的图像和原始图像进行小波变换,奇异值分解后,按照嵌入时的嵌入因此提取出嵌入的水印( (1)含水印图像和原始图像的DWT变换 对载体图像和原始图像进行小波变换,代码如下: >>[o_LL1,o_LH1,o_HL1,o_HH1]=dwt2(origne_image,'haar');%对载体图像先进行dwt变换 >>[o_LL2,o_LH2,o_HL2,o_HH2]=dwt2(o_LL1,'haar'); >>[o_LL3,o_LH3,o_HL3,o_HH3]=dwt2(o_LL2,'haar'); >>[w_LL1,w_LH1,w_HL1,w_HH1]=dwt2(watermarked_image,'haar');%对含水印图像先进行dwt变换 1313 江南大学学士学位论文 >>[w_LL2,w_LH2,w_HL2,w_HH2]=dwt2(w_LL1,'haar'); >>[w_LL3,w_LH3,w_HL3,w_HH3]=dwt2(w_LL2,'haar'); (2)对分量进行奇异值分解提取水印 同时对原始图像和嵌入水印的图像三阶小波变换之后的分量 o_LL3,o_HH3,w_LL3,w_HH3进行奇异值分解,得到四组奇异值,然后按照嵌入时所给定 的不同位置的奇异值进行不同比例的提取水印图像的奇异值,最后对得到的图像进行 Arnold反变换即得到水印图像( 14 基于离散小波变换的数字水印算法 第4章 Matlab仿真结果 4.1 仿真实验 本文的实验结果是由MATLAB2010a仿真得到的(本算法使用MATLAB来做水印嵌入以及提取的实验主要是因为:本算法选择的载体是图像,MATLAB处理图像、音频和视频这些信号非常方便,尤其是图像矩阵运算更是方便快捷(另外MATLAB内置有数量庞大的函数工具箱,可以帮助我们在信号处理等方面能快捷完成实验(利用这些内置函数可以避免对一些信号基本操作编程,将实验的注意力完全放在水印算法的实现和性能分析 [8]上,提高了实验效率( 图4-1给出的是灰度水印嵌入和未经攻击提取的实例(将 elaine图像作为原始图像,灰度图像作为水印(嵌入水印的图像质量的客观评价采用峰值信噪比PSNR来度量,水印检测结果的客观评价用相关系数nc来衡量,水印的鲁棒性采用误码率来评价(从图4-1中可看出,水印嵌入后,具有很好的不可见性,峰值信噪比PSNR= 32.0490 dB,提取出的水印与原始水印的相关系数nc= 0.9984( (a) 原始图像 (b) 嵌入水印后的图像 (c)原始水印 (d)提取出的水印 图4-1本文的抽取的实例和提出的算法水印 (1)Arnlod变换置乱水印图像 水印图像的Arnold置乱Matlab仿真如图4-2所示: (a)原始水印图像 (b)置乱后的水印图像 4-2原始图像和置乱后的水印图像 (2)载体图像的小波变换 1515 江南大学学士学位论文 一阶小波分解和三阶小波分解的两个嵌入水印部分的图像如图4-3和4-4所示: 图4-3图像的一阶小波分解 图4-4要嵌入水印的三阶小波分解分量 从图像可以看出低频分量反映了原始图像的绝大部分能量,能比较完整的显示原来图像(也发现经过三重小波分解之后,低频分量能量很高,不能显示图像,三阶小波分解的 -5所示( 低频分量的数值部分如图4 图4-5 三阶小波分解低频分量数值 从上面可以看出,低频分量的数值比较大,也比较匀称(正是因为小波分解的这种特性,低频分量承载了原始图像的大部分能量,将水印嵌入在这部分之后,对嵌入水印后的图像进行各种处理之后,水印的信息保存量要比将水印嵌入到其它的高频部分要多很多,从而水印具有较强的鲁棒性(但是矛盾也出现在这里,水印嵌入的越多,保存在载体图像中量越多,那么水印就更容易提取出来,鲁棒性更好(然而,在这个低频部分嵌入过多的信息之后,载体图像同时也将受到损失,从而导致载体图像的部分或者大部分失真,这种结果却不是我们所期望的,所以在期望达到较强鲁棒性的同时,必须保证载体图像的原始信息,也就是在嵌入水印的同时能满足非常良好的水印不可见性( 16 基于离散小波变换的数字水印算法 (3)奇异值分解 对载体图像两部分和水印图像做SVD分解后的奇异值如图4-6,4-7,4-8所示: 图4-6 LL3奇异值分解后的部分奇异值 图4-7 HH3奇异值分解后的部分奇异值 图4-8 Aronold变换后水印图像部分奇异值 (4)嵌入 通过对实验数据的观察,水印图像的128个奇异值从数量级上和大小为512×512的elaine载体图像的三阶小波变换的低频分量和高频分量相仿,即与上文提到的LL3和HH3在数值上相近(上文中的图4-7,4-8显示了前面一部分(水印图像的后面一部分奇异值如图3-9所示,和三阶小波变换的高频分量相近,参见图4-9( 1717 江南大学学士学位论文 4-9 水印图像后一部分奇异值 所以本文选择在此两个分量中嵌入水印( 在水印嵌入过程中,考虑到第一奇异值的重要性,本文在嵌入时采用了不同的嵌入因子(第一个奇异值的嵌入因此选择g3=0.1;其它的奇异值嵌入因子选择g1=g2=0.15;效果如图4-10所示( 图4-10 原始图像和嵌入水印的图像 (5)提取结果 对需要的分量进行小波奇异值分解,代码如下: >>[o_UL,o_SL,o_VL]=svd(o_LL3);%对原始图像分量作svd分解 >>[o_UH,o_SH,o_VH]=svd(o_HH3);%对原始图像分量作svd分解 >>[w_UL,w_SL,w_VL]=svd(w_LL3);%对嵌入水印分量作svd分解 >>[w_UH,w_SH,w_VH]=svd(w_HH3);%对嵌入水印分量作svd分解 提取的水印图片如图4-11所示( 图4-11 提取结果 4.2 抗攻击性能分析 为了验证本文算法的鲁棒性,我们对嵌入水印后的含水印图像采用了一些常用的攻击手段进行对水印算法鲁棒性的评估,其中包括添加白噪声、图像剪切、滤波(包括中值滤 18 基于离散小波变换的数字水印算法 波和高斯低通滤波)、JPEG有损压缩等操作(当同一攻击加入强度的不同时,含水印图像所受到的影响必然是不同的,攻击后提取的水印效果也因此必然不一样(下面一一介绍本文算法对各种攻击的抵抗能力( (1)白噪声攻击 图像在传播的过程中最容易受到,也是必然会受到的攻击就是加入噪声了(因此,噪声也是一种典型的无意攻击,它对嵌入的水印也会产生一定程度的影响(实验结果如图4-12,4-13,4-14所示( (a)添加白噪声(强度20)的图像 (b)提取的水印 图4-12加入强度20后的含水印图像和提取的水印 (a)添加白噪声(强度40)的图像 (b)提取的水印 图4-13加入强度40后的含水印图像和提取的水印 图4-14白噪声攻击后的性能检测 (2)剪切攻击 在图像处理中,一个图像不重要的部分或者重要部分的一部分会经常被剪切掉,会造 1919 江南大学学士学位论文 成图像受到影响(对于含水印的图像,必定会造成其中的水印数据部分地丢失(实验中我们对图像进行了不同比例大小的剪切实验,结果如图4-15,4-16所示( (a)剪切10%的图像 (b)提取的水印 (c)剪切25%的图像 (d)提取的水印 图4-15对嵌入水印的图像进行剪切攻击 图4-16剪切攻击后的性能评价 (3)JPEG压缩 JPEG压缩是对图像处理的最普遍的方法,对嵌入水印的图像进行不同质量的JPEG压缩,对嵌入的水印的影响程度肯定会不一样(本文对含水印图像按0到100之间的压缩质量进行压缩,实验结果如图4-17,4-18所示( (a)压缩质量为32%的图像 (b)提取的水印 20 基于离散小波变换的数字水印算法 (c)压缩质量为56%的图像 (d)提取的水印 图4-17对含水印图像进行压缩攻击的实例 图4-18压缩攻击后的性能评价 (4)滤波攻击 高斯低通滤波和中值滤波是两种常用的图像出来方法,本文采用固定大小为[3 3]标准,标准偏差从0.1以0.3的大小增加到0.9的对称高斯低通滤波和窗口大小不断变化的中值滤波器对嵌入水印的图像进行攻击(实验结果如图4-19,4-20所示( (a)高斯滤波标准偏差为1的图像 (b)提取的水印图像 (c)高斯滤波后的水印性能评价 图4-19高斯滤波处理图像实例以及水印性能评价 2121 江南大学学士学位论文 (a)中值滤波窗口大小为5的图像 (b)提取的水印图像 (c)中值滤波后水印性能评价 图4-20中值滤波处理图像实例以及水印性能评价 图4-21旋转攻击后水印性能分析 (5)旋转攻击 旋转攻击是对图像进行处理的一种常用方法(对图像进行旋转后(本文对含水印图像 进行0-90度的旋转攻击,实验结果如图4-21和图4-22所示( (a)旋转1?后的图像 (b)提取的水印图像 22 基于离散小波变换的数字水印算法 (c)旋转后的图像5? (d)提取的水印图像 图4-22旋转攻击后的图像实例 (6)马赛克攻击 对于图像的马赛克攻击,原理很简单,就是将一幅图像中的像素按照一定大小的模板与相邻的像素一起取平均值,然后再将模板下的每个像素值用这个平均值代替(图4-23,4-24显示了不同大小模板攻击后的结果( 图4-23马赛克攻击的后的水印性能分析 (a)模板大小为3×3马赛克攻击后的图像 (b)提取的水印图像 (c)模板大小为7×7马赛克攻击后的图像 (d)提取的水印图像 图4-24马赛克攻击实例 2323 江南大学学士学位论文 4.3 小结 本文提出的算法具有较好不可见性和较强的鲁棒性,含水印图像经过多种攻击后仍能教完整或部分的提取出水印( (1)通过上面实验结果可知,含水印图像在添加的白噪声强度在50以下的时候,含水印图像仍能保持较高的峰值信噪比(20以上),水印图像的相关性在0.6以上,误码率在50%以下(说明水印的不可见性较好,鲁棒性也比较强( (2)含水印图像在经过剪切攻击后,仍能提取出水印(但由实验数据可以看出,在剪切比例达到1/4以上时,提取的水印已经不是很明显,峰值信噪比不是很高,但是由图标可知水印图像的相关系数还是非常的高,高达98%以上,而且误码率一直保持在40%以下( (3)含水印图像经过JPEG压缩后,能够非常完整的提取出来,峰值信噪比保持在25dB以上,水印图像的相关系数在85%以上,误码率在38%以下(可见该算法具有非常高的抗JPEG压缩的能力( (4)在经过不同大小标准偏差的高斯低通滤波后,含水印图像的峰值信噪比一直保持在26dB以上,水印图像的相关系数在80%以上,误码率在35%以下( (5)含水印图像在经过不同窗口大小中值滤波攻击之后,虽然提取出水印或多或少有些失真,但还是很明显,比较清晰(由实验数据图标可以看到,峰值信噪比在26dB以上,相关系数0.9以上,误码率在35%以下( (6)由实验得该算法抗旋转攻击的能力不是很好,含水印图像在经过很小角度的旋转之 ?之后,后提取的水印已经不是很好的分辨出来,由性能分析图可知,含水印图像在旋转5峰值信噪比和相关系数已分别陡降到10dB和0.1以下,误码率也增加到50%以上( (7)含水印图像在经过马赛克处理后,图像视觉上已经可以分辨处理,特别是处理模板大小比较大的时候,4.2节中可以看到在模板是7×7的时候,该含水印图像看起来已经很模糊,提取的水印虽然不是很好,但还是可以辨别出来(由实验数据可以看出该算法抗马赛克攻击的能力还是比较好的( 24 基于离散小波变换的数字水印算法 第5章 结论与展望 5.1结论 本文提出的水印算法具有以下几个特点: (1) 本文算法所研究的内容是将一幅灰度图像作为水印嵌入到原始载体图像中,与目前多数人的二值图像不同,并且不可见性和鲁棒性也非常好( (2) 本文算法中采用Arnold变换对水印图像置乱,置乱次数可以作为只有嵌入人才持有的私钥,安全性能够达到一定的程度( (3)基于DWT域和奇异值分解联合的数字水印本身就比直接基于DWT域的数字水印具备更好的稳健性( (4) 在嵌入过程中充分考虑到不同DWT变换后各分量对原始图像的影响程度,尤其是低频分量,水印图像嵌入强度也因此不同(从而使嵌入水印后的图像能够保持比较好的品质( (5)本算法只是将水印图像奇异值分解后的奇异值嵌入到载体图像中,不仅使得因嵌入信息量较少达到较好的不可见性,而且奇异值稳健性好,使得水印的鲁棒性比较好( (6) 本文算法抵抗旋转攻击的能力非常差,特别当旋转角度比较大时,提取出来的水印基本分辨不出是原来的水印图像( 5.2不足之处及未来展望 本文的水印算法选择灰度图像作为水印,选择在DWT域低频分量和中频分量中嵌入不同强度的水印,总体上可以看出水印的不可见性非常好,抗攻击性——鲁棒性也较好(因为各种算法都有不足之处,不能在每个方面都能达到非常好的效果(由仿真实验可以直观的看出,该水印算在经过滤波、剪切、加噪处理、马赛克攻击后,仍能比较完整的提取出水印,可见水印的鲁棒性较强(但是也比较明显的看到,当将含水印的图像旋转稍微大一点的角度时,提取的水印明显失真,无法分辨出来(这就需要以后在这方面做出更好的改进,能够抵抗旋转攻击或者能在较大的旋转角度下也能比较完整的提取出水印(另外本文水印算法的重点是鲁棒性和透明性,在实际应用中安全问题也是一个比较重要的问题,本文的算法在实际应用中可以在安全性方面做的更好一点,以后在安全性这方面可以做出一定的改进( 2525 江南大学学士学位论文 26 基于离散小波变换的数字水印算法 参考文献 [1] 张卫平. 开关变换器的建模与控制[M]. 北京:中国电力出版社,2006,15-88. [2] 曹文思,杨育霞. 基于状态空间平均法的BOOST变换器仿真分析[J].系统仿真学报, 2007,19(6):1329- 1334. [3] 伍言真. DC/DC开关变换器建模分析及其变结构控制方法的研究[D]. 广州:华南理工 大学,1998. [4] Takagi T, Sugeno M. Fuzzy identification of systems and its applications to modeling and control [J]. IEEE Trans on Systems, Man and Cybernetics, 1985, 15(2): 116-132. [5] Sugeno M, Kang G T. Fuzzy modeling and control of multilayer incinerator [J]. Fuzzy Sets Syst., 1986, 18(2): 329-346. [6] 张勇. HOPE-?模拟器的实现[C],第三届中国学术会议论文集[C](北京:北京邮电大 学出版社, 2001:449-740. 2727 江南大学学士学位论文 致 谢 致谢应以简短的文字对在课题研究和设计 说明书 房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载 (论文)撰写过程中曾直接给予帮助的人员或单位表示自己的谢意,这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应有的思想作风,比如:本文是在导师XXX教授和XXX讲师的悉心指导下完成的,表示谢意! 感谢XX. 28 附录A: 程序代码 %文件名:in.m %嵌入水印的函数 %参数说明 %origne_source--原始图像(载体图像) %watermark_source--水印图像(灰色图像或二值图像) % function [U,SW,V]=in(origne_source,watermark_source,watermarked_source) %N=512; %先处理水印图像(128x128),如下: arnold_image=Arnold(watermark_source,10,0);%读入水印图像并且进行arnold变换,10表示进行的 次数(可作密钥) %arnold_image是uint8的格式 %[ca,ch,cv,cd]=dwt2(arnold_image,'haar');%进行一级dwt变换 %然后处理载体图像,如下: origne_image=imread(origne_source);%读入载体图像 dims=ndims(origne_image); if(dims==2) [image_rol,image_col]=size(origne_image); if(image_rol<512) if(image_col<512) disp('载体图像的高度和宽度都必须大于512'); return; end end origne_image2=double(origne_image); part_origne_image2=origne_image2; [LL1,LH1,HL1,HH1]=dwt2(part_origne_image2,'haar');%对载体图像先进行一级dwt变换(320x256) [LL2,LH2,HL2,HH2]=dwt2(LL1,'haar');%对LL1进行dwt变换(160x128) [LL3,LH3,HL3,HH3]=dwt2(LL2,'haar');%变成80x64,水印图像为64x64 %水印嵌入过程,如下: %嵌入分两个部分 %a1=0.15;a2=0.15; arnold_image=double(arnold_image); [UW,SW,VW]=svd(arnold_image);%对水印作svd分解 [UL,SL,VL]=svd(LL3);%对3级低频分量作svd分解80x64 [UH,SH,VH]=svd(HH3);%对3级高频分量作svd分解 SHH=SH; U=UW;V=VW;%128x128 g1=0.15;g2=0.15;g3=0.1; %由于第一个奇异值很大,改变一点,图像失真很多,所以强度不应很大 [a,b]=size(LL3); col=min(a,b); SL(1,1)=SL(1,1)+g3*SW(1,1); for i=2:col SL(i,i)=SL(i,i)+g1*SW(i,i); end SH(1,1)=SH(1,1)+g3*SW(65,65); for i=2:col SH(i,i)=SH(i,i)+g2*SW(i+64,i+64); end LL3=UL*SL*VL'; HH3=UH*SH*VH'; LL2=idwt2(LL3,LH3,HL3,HH3,'haar');%小波逆变换 2929 附录 LL1=idwt2(LL2,LH2,HL2,HH2,'haar'); watermarked_image1=idwt2(LL1,LH1,HL1,HH1,'haar'); watermarked_image=uint8(watermarked_image1); imwrite(watermarked_image,watermarked_source); figure subplot(1,2,1);imshow(origne_image);title('原始图像'); subplot(1,2,2);imshow(watermarked_image);title('嵌入水印后的图像'); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %文件名:out.m %水印提取函数 %参数说明: %watermarked_image--嵌入水印的图像 %origne_source--原始图像 function water_get=out(watermarked_source,origne_source,UW,VW) origne_image=imread(origne_source); dims=ndims(origne_image); if(dims~=2) disp('输入的不是灰度图像'); end [o_rol,o_col]=size(origne_image); watermarked_image2=imread(watermarked_source); [w_rol,w_col]=size(watermarked_image2); origne_image1=double(origne_image); watermarked_image1=double(watermarked_image2); watermarked_image(i+temp_rol,j+temp_col)=watermarked_image2(i,j); part_origne_image=origne_image1; part_watermarked_image=watermarked_image1; [o_LL1,o_LH1,o_HL1,o_HH1]=dwt2(part_origne_image,'haar');%对载体图像先进行dwt变换320x256 [o_LL2,o_LH2,o_HL2,o_HH2]=dwt2(o_LL1,'haar');%160*126 [o_LL3,o_LH3,o_HL3,o_HH3]=dwt2(o_LL2,'haar');%80*64 [w_LL1,w_LH1,w_HL1,w_HH1]=dwt2(part_watermarked_image,'haar'); [w_LL2,w_LH2,w_HL2,w_HH2]=dwt2(w_LL1,'haar'); [w_LL3,w_LH3,w_HL3,w_HH3]=dwt2(w_LL2,'haar'); SW1=zeros(128);% %ch=(w_LH3-o_LH3)/a1;cv=(w_HL3-o_HL3)/a2;cd=(w_HH3-o_HH3)/a3; [o_UL,o_SL,o_VL]=svd(o_LL3);%对原始图像分量作svd分解 [o_UH,o_SH,o_VH]=svd(o_HH3);%对原始图像分量作svd分解 [w_UL,w_SL,w_VL]=svd(w_LL3);%对嵌入水印分量作svd分解 [w_UH,w_SH,w_VH]=svd(w_HH3);%对嵌入水印分量作svd分解 %[w_ULH,w_SLH,w_VLH]=svd(w_LH3); %[w_UHL,w_SHL,w_VHL]=svd(w_LL3); [a,b]=size(w_LL3); col=min(a,b); if(col>64) col=64; end temp=fix((64-col)/2); if(temp<0) temp=0; end g1=0.15;g2=0.15;g3=0.1; SW1(1,1)=(w_SL(1,1)-o_SL(1,1))/g3; for i=2:col SW1(i,i)=(w_SL(i,i)-o_SL(i,i))/g1; end 30 SW1(65,65)=(w_SH(1,1)-o_SH(1,1))/g3; for j=2:col SW1(j+64,j+64)=(w_SH(j,j)-o_SH(j,j))/g2; end SW=SW1; %SW(1,1)=30845.5499494950; SW(1,1)=SW(1,1); water_image=UW*SW*VW'; water_image=uint8(water_image); imwrite(water_image,'detcted.bmp'); water_temp=Arnold('detcted.bmp',10,1); water_get=uint8(water_temp); %figure; data=imread('water.bmp'); subplot(1,2,1);imshow(data);title('原水印图像'); subplot(1,2,2);imshow(water_temp);title('提取的水印图像'); imwrite(water_temp,'water_marked.bmp'); %%%%%%%%%%%性能分析%%%%%%%%%%%%% %%%%%% 攻击实验 测试鲁棒性 %%%%%%%%%%% disp('对嵌入水印的图像的攻击实验,请输入选择项:'); disp('1--添加白噪声'); disp('2--高斯低通滤波'); disp('3--JPEG 压缩'); disp('4--图像剪切'); disp('5--旋转变换'); disp('6--直接检测水印'); disp('7--中值滤波'); disp('8--马赛克攻击'); disp('其他--不攻击'); d=input('请输入选择(1-8):'); origne_image_name='elaine.bmp'; a1=imread('watermarked.bmp'); im_prime=imread(origne_image_name); water_prime=imread('water.bmp'); a1=double(a1); switch d case 6 [M,N]=size(a1); water_get=out('watermarked.bmp',origne_image_name,U,V); psnr_arr=psnr(a1,im_prime,M,N); nc_arr=nc(water_get,water_prime); disp('嵌入水印后的图像:'); disp('峰值信噪比:psnr=');disp(psnr_arr); disp('相关性:nc=');disp(nc_arr); subplot(1,2,1);imshow(a1,[]);title('未受攻击的含水印图像'); subplot(1,2,2);imshow(water_get);title('水印图像'); M1=a1; M_1=uint8(M1); imwrite(M_1,'not_attack.bmp','bmp'); case 1 WImage2=a1; count=0; for i=0:20:100 count=count+1; arr1(count)=i; noise0=i*randn(size(WImage2)); 3131 附录 WImage2=WImage2+noise0; %subplot(2,3,4); %imshow(WImage2,[]); %title('加入白噪声后图像'); M1=WImage2; [M2,N2]=size(WImage2); M_1=uint8(M1); name=['whitenoise_' int2str(i) '.bmp']; psnr_arr1(count)=psnr(WImage2,im_prime,M2,N2); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr1(count)=nc(water_get,water_prime); ber_arr1(count)=ber(M1,a1); end arr1=0:20:100; name=['whitenoise_' int2str(40) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; subplot(1,2,1);imshow(one_water_image);title('加入白噪声,,,后的图像'); subplot(1,2,2);imshow(water_get);title('加噪后提取的水印'); imwrite(water_get,'water_white.bmp'); figure; subplot(2,3,4);plot(arr1,psnr_arr1);xlabel('白噪声');ylabel('峰值信噪比');title('白噪声, 峰值信噪比图'); subplot(2,3,5);plot(arr1,nc_arr1);xlabel('白噪声');ylabel('相关系数');title('白噪声,检测 相关性图'); subplot(2,3,6);plot(arr1,ber_arr1);xlabel('白噪声');ylabel('误码率');title('白噪声,误码 率图'); case 2 WImage3=a1; count=0; for i=0.1:0.3:1.9 count=count+1; arr2(count)=i; H=fspecial('gaussian',[3,3],i); WImage3=imfilter(WImage3,H); %subplot(2,3,4); %imshow(WImage3,[]); %title('高斯低通滤波后图像'); M1=WImage3; [M3,N3]=size(WImage3); M_1=uint8(M1); name=['gaussian_' int2str(i) '.bmp']; psnr_arr2(count)=psnr(WImage3,im_prime,M3,N3); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr2(count)=nc(water_get,water_prime); ber_arr2(count)=ber(M1,a1); end arr2=0.1:0.3:1.9; name=['gaussian_' int2str(1) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; subplot(2,3,1);imshow(one_water_image);title('高斯低通滤波,1后的图像'); 32 subplot(2,3,3);imshow(water_get);title('高斯低通滤波后提取的水印'); figure; subplot(2,3,4);plot(arr2,psnr_arr2);xlabel('高斯滤波标准偏差');ylabel('峰值信噪比 ');title('高斯低通滤波,峰值信噪比图'); subplot(2,3,5);plot(arr2,nc_arr2);xlabel('高斯滤波标准偏差');ylabel('相关系数');title('高 斯低通滤波,检测相关性图'); subplot(2,3,6);plot(arr2,ber_arr2);xlabel('高斯滤波标准偏差');ylabel('误码率');title('高 斯低通滤波,误码率图'); case 4 count=0; psnr_arr4=zeros(1,7); nc_arr4=zeros(1,7); for i=64:64:448 count=count+1; WImage4=a1; j=(count/8)^2*100; arr4(count)=j; WImage4(1:i,1:i)=255; M1=WImage4; [M4,N4]=size(WImage4); M_1=uint8(M1); name=['crop_' int2str(j) '.bmp']; psnr_arr4(count)=psnr(WImage4,im_prime,M4,N4); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr4(count)=nc(water_get,water_prime); ber_arr4(count)=ber(M1,a1); end %arr4=(1/8)^2*100:(7/8)^2*100; name=['crop_' int2str(25) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; subplot(2,3,1);imshow(one_water_image);title('剪切,,,,后的图像'); subplot(2,3,3);imshow(water_get);title('剪切后提取的水印'); figure; subplot(2,3,4);plot(arr4,psnr_arr4);xlabel('剪切百分比');ylabel('峰值信噪比');title('剪切 ,峰值信噪比图'); subplot(2,3,5);plot(arr4,nc_arr4);xlabel('剪切百分比');ylabel('相关系数');title('剪切,检 测相关性图'); subplot(2,3,6);plot(arr4,ber_arr4);xlabel('剪切百分比');ylabel('误码率');title('剪切,误 码率图'); case 3 a2=imread('watermarked.bmp'); WImage5=im2double(a2); M2=WImage5; count=0; m=0; psnr_arr3=zeros(1,15); arr3=zeros(1,15); nc_arr3=zeros(1,15); ber_arr3=zeros(1,15); mask=zeros(8); for r=1:15 count=count+1; 3333 附录 WImage5=im2double(a2); [M5,N5]=size(WImage5); T=dctmtx(8); imageDCT=blkproc(WImage5,[8,8],'P1*x*P2',T,T'); if r<=8 for i=1:r mask(i,r-i+1)=1; end m=m+r; end if r>8 k=r-8; for j=k+1:8 mask(j,9+k-j)=1; end m=m+16-r; end rate=fix(100*m/64); arr3(count)=rate; imageDCT_temp=blkproc(imageDCT,[8,8],'P1.*x',mask); WImage5=blkproc(imageDCT_temp,[8,8],'P1*x*P2',T',T); M1=WImage5; M_1=WImage5; %M_1=uint8(M1); name=['watermarked_JPEG_' int2str(rate) '.bmp']; imwrite(M_1,name,'bmp'); WImage5=imread(name); WImage5=double(WImage5); psnr_arr3(count)=psnr(WImage5,im_prime,M5,N5); water_get=out(name,origne_image_name,U,V); nc_arr3(count)=nc(water_get,water_prime); ber_arr3(count)=ber(WImage5,a1); end name=['watermarked_JPEG_' int2str(fix(100*36/64)) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; %arr3=:10:100; subplot(2,3,1);imshow(one_water_image);title('压缩,56,后的图像'); subplot(2,3,3);imshow(water_get);title('压缩后提取的水印'); figure; subplot(2,3,4);plot(arr3,psnr_arr3);xlabel('压缩质量');ylabel('峰值信噪比');title('压缩, 峰值信噪比图'); subplot(2,3,5);plot(arr3,nc_arr3);xlabel('压缩质量');ylabel('相关系数');title('压缩,检测 相关性图'); subplot(2,3,6);plot(arr3,ber_arr3);xlabel('压缩质量');ylabel('误码率');title('压缩,误码 率图'); case 5 WImage6=a1; psnr_arr6=zeros(1,18); arr6=zeros(1,18); nc_arr6=zeros(1,18); ber_arr6=zeros(1,18); count=0; for i=1:5:91 count=count+1; 34 arr6(count)=i; WImage6=imrotate(WImage6,i,'bilinear','crop'); %WImage6cl=mat2gray(WImage6); M1=WImage6; [M6,N6]=size(WImage6); M_1=uint8(M1); name=['rotation_' int2str(i) '.bmp']; psnr_arr6(count)=psnr(WImage6,im_prime,M6,N6); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr6(count)=nc(water_get,water_prime); ber_arr6(count)=ber(M1,a1); end name=['rotation_' int2str(1) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; arr6 =1:5:91; subplot(2,3,1);imshow(one_water_image);title('旋转,1?后的图像'); subplot(2,3,3);imshow(water_get);title('旋转后提取的水印'); figure; subplot(2,3,4);plot(arr6,psnr_arr6);xlabel('旋转度数');ylabel('峰值信噪比');title('旋转, 峰值信噪比图'); subplot(2,3,5);plot(arr6,nc_arr6);xlabel('旋转度数');ylabel('相关系数');title('旋转,检测 相关性图'); subplot(2,3,6);plot(arr6,ber_arr6);xlabel('旋转度数');ylabel('误码率');title('旋转,误码 率图'); case 7 psnr_arr7=zeros(1,6); arr7=zeros(1,6); nc_arr7=zeros(1,6); ber_arr7=zeros(1,6); count=0; for i=1:2:11 count=count+1; arr7(count)=i; M1=medfilt2(a1,[i,i]); WImage7=double(M1); M1=uint8(M1); [M7,N7]=size(M1); M_1=uint8(M1); name=['median_' int2str(i) '.bmp']; psnr_arr7(count)=psnr(WImage7,im_prime,M7,N7); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr7(count)=nc(water_get,water_prime); ber_arr7(count)=ber(M1,a1); end name=['median_' int2str(5) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; arr7=1:2:11; subplot(2,3,1);imshow(one_water_image);title('中值滤波,,后的图像'); subplot(2,3,3);imshow(water_get);title('中值滤波后提取的水印'); figure; subplot(2,3,4);plot(arr7,psnr_arr7);xlabel('窗口大小');ylabel('峰值信噪比 3535 附录 ');title('中值滤波,峰值信噪比图'); subplot(2,3,5);plot(arr7,nc_arr7);xlabel('窗口大小');ylabel('相关系数');title('中 值滤波,检测相关性图'); subplot(2,3,6);plot(arr7,ber_arr7);xlabel('窗口大小');ylabel('误码率');title('中值 滤波,误码率图'); %M1=medfilt2(a1,[2,2]); %subplot(2,3,4); %M1=uint8(M1); %imshow(M1); %title('中值滤波后图像'); %imwrite(M1,'image_opd.bmp','bmp'); case 8 psnr_arr8=zeros(1,6); arr8=zeros(1,6); nc_arr8=zeros(1,6); ber_arr8=zeros(1,6); WImage8=a1; WImage8=double(WImage8); [rol,col]=size(WImage8); count=0; for i=1:2:11 count=count+1; arr8(count)=i; for j=1:i:rol for k=1:i:col M1(j:min(j+i-1,rol),k:min(k+i-1,col))=mean2(WImage8(j:min(j+i-1,rol),k:min(k+i-1,col))); end end M_1=uint8(M1); name=['mosaic_' int2str(i) '.bmp']; psnr_arr8(count)=psnr(WImage8,im_prime,rol,col); imwrite(M_1,name,'bmp'); water_get=out(name,origne_image_name,U,V); nc_arr8(count)=nc(water_get,water_prime); ber_arr8(count)=ber(M1,a1); end name=['mosaic_' int2str(7) '.bmp']; water_get=out(name,origne_image_name,U,V); one_water_image=imread(name); figure; arr8=1:2:11; subplot(2,3,1);imshow(one_water_image);title('马赛克,7后的图像'); subplot(2,3,3);imshow(water_get);title('马赛克攻击后提取的水印'); figure; subplot(2,3,4);plot(arr8,psnr_arr8);xlabel('处理图像模板');ylabel('峰值信噪比 ');title('马赛克攻击,峰值信噪比图'); subplot(2,3,5);plot(arr8,nc_arr8);xlabel('处理图像模板');ylabel('相关系数 ');title('马赛克攻击,检测相关性图'); subplot(2,3,6);plot(arr8,ber_arr8);xlabel('处理图像模板');ylabel('误码率');title(' 马赛克攻击,误码率图'); otherwise disp('你输入的是无效数字,图像未受攻击,将直接检测水印'); imshow(a1,[]); title('未受攻击的含水印图像'); M1=a1; end 36 序号 名称 规格型号 单位 数量 备注 一 制冷系统 1 压缩机组 4AV10 台 4 2 冷凝器 LN-70 台 1 3 贮氨器 ZA-1.5 台 1 4 桶泵组合 ZWB-1.5 台 1 5 氨液分离器 AF-65 台 1 6 集油器 JY-219 台 1 7 空气分离器 KF-32 台 1 8 紧急泄氨器 JX-108 台 1 9 冷风机 KLL-250 台 8 10 冷风机 KLD-150 台 4 11 冷风机 KLD-100 台 2 12 阀门 套 86 13 电磁阀 套 6 14 管道及支架 吨 18.6 3 15 管道及设备保温 m22 16 管道保温包扎 镀锌板 吨 1.6 17 附件 套 1 二 气调系统 1 中空纤维制氮机 CA-30B 台 1 2 二氧化碳洗涤器 GA-15 台 1 3 气动电磁阀 D100 台 14 4 电脑控制系统 CNJK-406 台 1 5 信号转换器 8线 台 1 6 果心温度探头 台 7 37 库气平衡袋 5 m 个 7 8 库气安全阀 液封式 个 7 9 小活塞空压机 0.05/7 台 1 10 PVC管 套 1 11 附件 套 1 三 水冷系统 1 冷却塔 DBNL-100 台 2 3 2 水泵 SBL80-160I 台 2 3 水泵 SBL50-160I 台 2 4 阀门 套 30 5 管道及支架 吨 2.8 6 附件 套 1 四 电仪控系统 1 电器控制柜 套 1 2 照明系统 套 1 3 电线电缆 套 1 4 桥架管线 套 1 5 附件 套 1 3737 附录 38
本文档为【基于离散小波变换的数字水印算法_毕业设计&#40;论文&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_014457
暂无简介~
格式:doc
大小:469KB
软件:Word
页数:0
分类:工学
上传时间:2017-10-10
浏览量:10