基于MATLAB的数字图像水印技术.doc_第1页
基于MATLAB的数字图像水印技术.doc_第2页
基于MATLAB的数字图像水印技术.doc_第3页
基于MATLAB的数字图像水印技术.doc_第4页
基于MATLAB的数字图像水印技术.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计题目:基于MATLAB的数字图像水印技术 学 院:计算机科学与信息学院专 业: 班 级: 学 号: 学生姓名: 指导教师: 2010年 1月 5日摘要伴随着多媒体技术和网络技术的的飞速发展,多媒体数据逐渐成为人们获取信息的重要来源,并成为人们生活的重要组成部分。对数字媒体(数字图像、数字音频、数字视频)的保护己成为一个迫在眉睫的现实问题。由于传统加密方法对多媒体内容保护能力有一定的局限性,因此一种新的保护途径应运而生,即数字水印技术。数字水印是利用数字作品中普遍存在的冗余数据与随机性把版权信息嵌入数字作品中从而起到保护数字产品版权或完整性的一种技术。在工程方面选择一种方便高效的工具来实现数字水印算法有重要的意义。MATLAB就是符合这要求的强大的工程计算软件。MATLAB含有十分浩大的函数,本论文主要运用MATLAB语言进行编程实现数字水印技术,探讨数字水印的技术及应用,重点研究一种小型的数字图像水印技术。本论文主要完成下面工作:1从数字水印技术的研究动态、概念、特点、典型算法及其受到的各种形式的攻击作了概括性介绍。2由数字图像水印的一般工作流程:嵌入水印、提取水印、攻击、再提取水印,分析和讨论了数字图像水印技术的基本原理和实现过程,最后给出了用MATLAB编写、实现的源代码。关键词:数字图像,加密,数字水印,MATLAB ABSTRACTThe digital media has become a main way for information communication alongwith the wide use of networkHave already become an extremely urgent realistic problem to the protection of the digital media(digital picture, digital audio, digital video)Because the traditional encryption method has certain limitation in protecting ability to the content of the multimedia,so a kind of new protection way arises at the historic moment,named digital watermark technologyDigital watermark utilizes digital works generally exists in the redundant data and randomness of imbed copyright information into digital works to protect the copyright of digital products or integrity of a technology.Choose a convenient and the highefficient tool to implement digital watermark algorithm has important significance in engineeringMATLAB is the strong engineering calculation software which accords with this demandMATLAB contains very huge function. This thesis uses MATLAB program language to realize digital watermark technology, discuss the technology and application of digital watermark and mainly focuses on a small digital image watermark technique.This thesis finishes the work following mainly:First,the Paper introduces the digital watermarks concept,characteristic, typical algorithms and varies of attacks.Second, the general workflow of digital image watermark is imbed the watermark, draw the watermark, attack, draw the watermark again. The paper analyzes and discusses the basic principle and realization process of the digital image watermark technique and gives implementation of source code written with MATLAB.Keywords: digital image, encryption, digital watermark, MATLAB目录摘要IABSTRACTII1 引言111 选题背景112 数字水印技术的研究动态22 数字图像水印技术综述321 数字水印概述322 数字水印的定义和基本原理323 实现数字水印的高效实用工具MATLAB43 数字图像水印技术631 数字水印基本框架632 水印信号的设计和产生94 数字图像水印技术的MATLAB函数1141 数据输入输出函数1142 产生水印序列的函数1243 图像显示和图象数据类型1244 攻击函数1345 本设计所用MATLAB函数135 程序运行结果1551 嵌入水印1552 JPEG压缩及水印提取1653 攻击试验1654 噪声试验176 总结18参考文献19附录 程序源代码201 引言11 选题背景数字水印技术是目前信息安全技术领域的一个新方向,是一种可以在开放的网络环境下保护版权和认证来源及完整性的新型技术。它是信息隐藏学的一个重要分支,它用信号处理的方法在多媒体数据中嵌入特制的隐蔽的标记,这种标记的嵌入不会引起宿主媒体主观质量下降,不易察觉,人们无法从表面上感知水印,只有专用的检测器或计算机软件才可以检测出隐藏的数字水印,并且水印具有很强的对抗非法破解的能力。为了保护版权人的经济利益在数字作品上直接标识版权人的信息会明显损害作品的质量,而利用文件的附加信息标识版权又很不安全。相比之下在不过多损害作品质量的前提下,使用数字水印技术将版权管理信息秘密嵌入数据中,是一个非常理想的解决方案。 从学术研究角度而言,数字水印技术是一项横跨信息处理、图像处理、多媒体技术、密码学等多学科领域的高新技术前沿课题,包括数字水印在内的信息隐藏技术尚未形成完整的学科理论体系。因此,这是一项重要的应用基础研究。同时它又是一项与实际应用密切结合的高新技术,其成果将成为拥有自主知识产权的技术,发展为具有自身特色的软件产品和专用芯片,随着信息产业的发展,有着一份广阔的应用市场。数字水印的提出引起了学术界极大的兴趣,到现在短短的几年时间,就有大量的数字水印算法被提出来。那么,如何既方便又高效的实现这些算法呢? 数字水印算法涉及大量图像处理、数学计算等,如果仅仅采用普遍编程工具所提供的功能来实现将花费大量的时间用在上述算法的编程及调试上。因此选择一种高性能的科学与工程计算软件是很有必要的。目前,在工程计算上应用十分广泛的MATLAB软件是首选的编程语言。MATLAB是一个适合多个学科使用的功能强大的软件,含有十分浩大的函数,MATLAB语言是Mathworks公司推出的一种简单、高效、功能极强的高级语言,具有高性能数值计算能力和可视化计算环境。许多复杂的计算问题只需短短的几行代码就可在MATLAB中实现。本文介绍典型的数字水印算法,用MATLAB实现数字水印的嵌入、提取和攻击测试的方法。12 数字水印技术的研究动态数字时代的到来,多媒体数字世界丰富多彩,数字产品几乎影响到每一个人的日常生活。信息媒体的数字化为信息的存取提供了极大的便利,同时也显著地提高了信息表达的效率和准确度。计算机网络通信技术特别是互联网的蓬勃发展,使得数据的交换和传输变成了一个相对简单且快捷的过程。人们借助计算机、数字扫描仪、打印机等电子设备可以方便、迅速地将数字信息传达到世界各地,在国际互联网上发布自己的作品,传递重要的信息,进行各种学术交流和电子商务活动等等。如何保护这些与我们息息相关的数字作品,如版权保护、信息安全、数据认证以及访问控制等等,就被日益重视并变得迫切需要了。借鉴普通水印的含义和功用,人们采用类似的概念保护诸如数字图像、数字音乐、数字文本等这样的数据,因此数字水印在今天的计算机和互联网时代大有可为。数字水印技术是近十年才发展起来的,它是信息隐藏学的一个分支(如图1.1)。随着国内信息化程度的提高和电子商务逐渐走向实用,数字水印技术将会拥有更加广阔的应用前景。信息隐藏隐藏信道隐写入匿名技术指纹技术数字水印稳健版权标记版权标记易碎水印可见水印不可见水印图1.1 信息隐藏技术的分类2 数字图像水印技术综述21 数字水印概述数字水印(Digital Watermarking)是一种数字标记,可以是数字、序列号、文字、图像标志等标识或版权信息,一般包括版权所有者的标记或代码,以及能证实用户合法拥有数据的用户代码等基本信息,将它秘密地内嵌到数字产品中可能帮助识别确定产品的内容、著作权、使用权、完整性等。数字水印技术是信息隐藏学的一个重要分支。水印技术与传统的信息加密都是把对信息的保护转化为对密钥(Key)的保护。因此,水印技术沿袭了传统加密技术的一些基本思想和概念,但两者采用的保护信息手段不同:传统的加密算法一般是基于文本数据设计的,它把一段有意义的数据流(称为明文)转换成看起来没有意义的数据(成为密文),如DES(Data Encryption Standard数据加密标准)和RSA(以三个发明者的首位字母命名)。由于将明文数据加密成密文数据,使得在网络传递过程中非法拦截者无法从中获得信息,从而达到保密的目的。虽然,我们可以把多媒体数据作为文本数据流一样看待,使用传统的加密算法进行加密,但是,多媒体数据流具有的特性与文本数据的特性有很大不同。因此,目前的传统加密方法如DES、3-DES或RSA等也很难满足多媒体应用中的实时性等要求。而数字水印技术则是把一个有意义的信息隐藏在另一个称为载体信息(cover message)的公开信息中,而可能的监测者或非法拦截者难以从公开信息中判断机密信息是否存在或截获机密信息,从而保证机密信息的安全。22 数字水印的定义和基本原理水印可以定义为:可感知的或不可感知的形式嵌入到数字多媒体产品(图形和图像、文本、音频、视频等)中的,用于版权保护、内容检验或提供其它信息的信号。数字水印技术:是将代表数字媒体著作权人身份的特定信息、用户指定的标识或序列码等,按照某种方式嵌入到被保护的信息中,在产生版权纠纷时,通过相应的算法提取出该数字水印,从而验证版权的归属,确保媒体著作权人的合法利益,避免非法盗皈的威胁。被保护的信息可以是任何一种数字媒体,如软件、图像、音频、视频或一般性的电子文档等。数字水印是嵌在数字产品中的数字信号,水印的存在要以不破坏原数据的欣赏价值、使用价值为原则。数字水印技术是水印生成、嵌入、检测提取以有攻击等过程的统称。数字水印的基本原理是嵌入某些标识数据到宿主数据中作为水印,使得水印在宿主数据中不可感知和足够安全。为了保证由于水印的嵌入而导致的宿主数据失真不被觉察到,必须应用到某种感知准则。不管是隐性还是显性,但是必须的。因而作为不可觉察性的要求,宿主数据上的每个采样点的值(空间域和频率域)的改变程序与其自身相比应该相对比较小。为了保证水印算法的健壮性,水印信息在宿主数据上通常有很大的冗余度。这意味着水印信息可以从其部分数据中恢复出来。但如果在恢复过程中能提供更多的数据那么恢复的健壮性则更强。一般数字水印的通用模型包括水印嵌入和检测提取两个阶段。数字水印的嵌入阶段,嵌入方案的目标是使数字水印在不可见性和健壮性之间找到一个较好的折衷。检测阶段主要是设计一个相应于嵌入过程的检测算法。检测的结果或是原水印(如字符串或图标等),或是基于统计原理的检验结果以判断水印存在与否。检测方案的目标是使错判与漏判的概率尽量小。为了给攻击者增加去除水印的不可预测的难度,目前大多数水印制作方案都在嵌入、提取时采用了密钥,只有掌握密钥的人才能读出水印。23 实现数字水印的高效实用工具MATLABMATLAB是一种用于科学工程计算的高效高级语言,是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。MATLAB的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal processing)、控制系统(control system)、神经网络(neural network)、图像处理(image processing)、健壮控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)、虚拟现实(virtual reality)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,它把使用者从繁琐、无谓的底层编程中解放出来,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间,提高了工作效率。 在数字水印研究领域,MATLAB显示了强大的生命力,它有如下几个特点:1集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现,方便了数字水印算法设计和编码实现。2提供了强大的数学运算功能特别是矩阵运算功能,能够方便、高效地实现数字音频、视频处理过程中需要进行的大量矩阵运算。3提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。4能与Visual C+等语言有良好的接口,方便了开发设计出有实际价值的数字水印产品。5编程效率高。MATLAB语言简洁紧凑,使用灵活方便,程序书写形式自由。而且库函数十分丰富,避免了繁杂的子程序编程任务。3 数字图像水印技术31 数字水印基本框架从信号处理的角度看,嵌入载体对象的水印信号可以视为在强背景下叠加一个弱信号,只要叠加的水印信号强度低于入视觉系统(HVS)对比度门限或听觉系统(HAS)对声音的感知门限,HVS或HAS就无法感知信号的存在。由于HVS和HAS受空间、时间和频率频率特性的限制,因此通过对载体对象作一定的调整,就有可能在不引起人感知的情况下嵌入一些信息。从数字通信的角度看,水印嵌入可理解为在一仑宽带信道(载体对象)上用扩频通信技术传输一个窄带信号(水印)。尽管水印信号具有一定的能量,但分布到信道中任一频率上的能量是难以检测到的。水印的译码(检测)则是一个有噪声信道中弱信号的检测问题。下面根据Voyatzis和Pitas提出的思想,对数字水印的基本框架进行介绍。尽管数字水印有各种形式,通常可以定义水印为如下的信号W (3-1)这里,表示维数为d的水印信号域,d=l,2,3分别表示声音、静止图像和视频中的水印。水印信号可以是二值形式或高斯噪声形式。水印处理系统的基本框架可以定义为六元体(X,W,K,G,E,D),其中:(1)X代表所有要保护的数字产品X的集合。(2)W代表所有可能水印信号W的集合。(3)K是标识码(也称水印密钥)的集合。(4)G表示利用密钥K和待嵌入水印的X共同生成水印的算法,即 (3-2)(5)E表示将水印w嵌入数字产品中的嵌入算法,即 (3-3)这里代表原始的数字产品,代表嵌入水印后得到的数字产品。(6)D表示水印检测,即 (3-4) (3-5) 这里,代表二值假设,分别表示水印的有无。 在实际应用中一个完整水印系统的设计必然包括水印的生成、嵌入和提取三部分。1水印生成。水印信号的产生通常基于伪随机数发生器或混沌系统。产生的水印信号W往往需要进步的变换以适应水印嵌入算法。为了分析方便,我们把算子G分解为算法R和算法T两个部分: (3-6) (3-7) 子算法R输出原始水印,该原始水印只由密匙产生。当R基于伪随机数发生器时,密钥K直接映射为伪随机数发生器的种子。当R基于混沌系统时,密钥集由许多初始条件的适当变换而产生。这两种方法所产生的密钥集足够大并且满足密钥惟一性条件,而且由R产生的水印是有效的水印。此外,R是不可逆的。子算法T对原始水印进行修改以获得最后的依赖于产品的水印W。T应满足: (3-8)这里,表示原始产品,而表示嵌入水印的产品, 并且,M表示多媒体数据处理操作算法。原始水印信号可以预先指定,而在嵌入水印前对该水印信号可以做适当的变换或者不做变换,密匙可以在水印嵌入过程中产生。2水印嵌入。水印的嵌入过程如图3.1所示。密匙水印信息掩体对象水印嵌入隐藏对象图3.1 水印嵌入框图水印嵌入就是把水印信号嵌入到原始产品中,一般的水印嵌入规则可描述为: (3-9)其中为某种叠加操作,也可能包括合适的截断操作或量化操作。称为d维的水印嵌入掩码。最常用的嵌入准则如下: (3-10) (3-11)在这里,变量既可以指掩体对象采样的幅值(时域),也可以是某种变换的系数值(变换域);参数a可能随采样数据的不同而不同。本设计嵌入水印的步骤如下:(1)读取原始图像和黑白水印图像得到二维数组w0和f0;(2)将原始图像f0分割为互不覆盖的图像块;(3)取调制后的水印信号yp嵌入到原始图像中,并重构含水印的图像,得到含水印的图像f1。3水印提取或检测。水印提取或检测就是判断某一数据中是否含有指定的水印信号,并可能恢复出水印信息。提取或检测算法主要是设计一个相应于嵌入过程的检测算法。检测的结果或是原水印(如字符串或图像等),或是基于统计原理的只能判断水印存在与否。为了给攻击者增加去除水印的难度,目前大多数水印制作方案都在水印加入、提取时采用了密钥,只有掌握密钥的人才能读出水印。水印提取过程如图3.2所示,检测过程如图3.3所示。本设计的原体掩藏(原始信号)是MATLAB自带的图像cameraman.密匙隐藏对象原始掩体水印提取水印信息图3.2 水印提取框图密匙原体掩藏隐藏对象水印检测是否含有水印原始水印图3.3 水印检测框图本设计提取水印过程如下:首先将含水印的图像f1中提取出分组码,再对提取出来的分组码进行纠错解码,从而提取出水印。32 水印信号的设计和产生本设计的水印信号是伪随机实数序列,一般是均值为0,方差为l,即满足N(0,1)正态分布的伪随机实数序列。根据需要,给定一个“种子”作为伪噪声发生器的输入,就可以产生具有高斯分布的白噪声信号。这个“种子”可以是产品的序列号、生产日期,也可以是无任何意义的一个数字,但只能由设计本人保管,因为当序列发生器固定时,“种子”就是产生水印的密钥。在进行水印提取检测时,需要以此密钥来产生和与水印嵌入时相同的伪随机实数序列,用来确定待检测产品中是否含有该水印。对产生的的水印信号进行(7,4)汉明编码得到一组分组码,再对分组码进行位扩展,得到一组扩展序列,即为伪随机二值序列作为水印信号嵌入原始信号中。1汉明编码。汉明码是一种线性分组码,线性分码组是指将信息序列划分为长度为k的序列段,在每一段后面附加r位的监督码,且监督码和信息码之间构成线性关系。本设计是对水印信号进行(7,4)汉明编码得到一组分码组,再对该分码组进行位扩展后得到伪随机二值序列(-1和1)作为水印信号嵌入原始信号中,实现数字图像水印技术的嵌入过程。表示7个码元,其中是信息位,是监督位。(7,4)汉明码如表1:表1 (7,4)汉明码信息位监督位信息位监督位00000001000111000101110011000010101101001000111101011001010011011000010101101110101001100111110100011100011111112对水印信号进行位分解。对一幅大小为MN的8bit、256灰度级的图像,将其按位分解为8层位图,每层每个像素点对应的值只含有0或l。令X是大小为MN、灰度级为的图像,是图像的一个像素值。其中。位分解算法的描述如下: (3-12)其中表示位分解算子,。对的重构公式为 (3-13)4 数字图像水印技术的MATLAB函数MATLAB语言是当今国际上科学界(尤其是自动控制领域)最具影响力、也是最有活力的软件。它起源于矩阵运算,已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化界面设计、便捷的与其他程序和语言接口的功能。MATLAB语言在各国高等院校与研究单位发挥着重大的作用。MATLAB具有强大的数学运算能力、方便实用的绘图功能和语言的高度集成性,它在其他科学与工程领域的应用也越来越广,并且有着更广阔的应用前景和无穷无尽的潜能。如果有一种十分有效的工具能解决在教学和研究中遇到的问题,那么MATLAB语言正是这样的一种工具。它可以将使用者从繁琐、无谓的底层编程中解放出来,把有限的宝贵时间更多地花在解决问题中,这样无疑会提高工作效率。MATLAB工作环境包括:帮助系统、工作内存管理、指令和函数管理、搜索路径管理、操作系统、程序调试和性能剖析工具等。MATLAB改变了过去单纯依靠“在指令窗通过纯文本指令进行各种操作”面貌,引入了许多让使用者一目了然的图形界面,如在线帮助的交互型界面helpwin、管理工作内存的workspace、交互式的路径管理界面pathtool和指令窗显示风格设置界面等。它们的开启方式为为工具条图标开启、选择菜单项开启和直接“文本式”指令开启。在MATLAB50以后的版本中更进一步把图形显示窗改造成了交互操作的可编辑图形界面。在平常编程实践的基础上,结合数字图像水印技术的整个流程,本部分主要介绍MATLAB图像操作基本函数以及常用于数字图像水印技术的函数,函数的具体用法也可以通过命令:help(函数名)来获取。41 数据输入输出函数1imread( )和imwrite( ):可以读写bmp ,jpg/jpeg , tif/ tiff , png , hdf , pcx , wxd 格式文件。读索引文件时,还可以得到相应的调色板数据。其中图象格式文件在读写时要特别注意数据格式。语句A = imread(文件名,文件格式)的作用是从图象文件中读取数据矩阵并写入矩阵变量A中,这个矩阵变量一般为无符号八位整型( uint8 ) 。语句imwrite (A ,文件名,文件格式) 的作用是将数组A中的数据写入文件。若A的数据类型为无符号八位整型(uint8),那么可以直接写入;若A 为双精度类型(double) ,那么imwrite会自动完成转换为uint8,然后再写入文件。使用这两个函数,在操作不同类型的图象时,要注意格式是不一样的(特别注意索引图象要带上map)。2save( ):将内存变量中的图象保存到以mat为扩展名的文件中。3load( ):将以mat为扩展名的文件调入内存。4fread( ):当水印内容为文本时,可以实现以二进制读取文本。42 产生水印序列的函数很多算法是采用随机序列作为水印,恰当运用以下函数可以产生要求的水印。1rand( ):产生可控长度的随机序列,其元素在(0,1)之间服从均匀分布。2randn( ):产生可控长度的随机序列,其元素服从均值为0,方差为1的正态分布。另外,上面两个函数可以与fix(向0园整函数)、round(向最近整数圆整函数)、ceil(向无穷圆整函数)等配合产生二值水印序列。如floor ( 2 3(rand (1 ,1000) - 0. 5) ) 产生长度为1000 的 - 1 ,0序列;ceil (2 3 ( rand 1 ,1000) - 0. 5) ) 产生长度为1000 的0 ,1序列。43 图像显示和图象数据类型1imshow( ):显示一幅图像;显示不同类型的图象,格式不一样。在使用fft2 、ifft2 、dct2 、idct2对图像数据处理后, 数据格式会变为double 型,图像无法正常显示,可在使用imshow 时加入参数或使用uint8 ( )函数来解决此问题。2imfinfo( ):可以得到读入图像的信息。如文件的大小、格式、格式版本号、图象的高度、宽度、颜色类型(真彩色,灰度图还是索引图) 等。3isa( )、class( ):用于判断图象的数据类型。4uint8( )/im2unit8( ):用于将原来的数据转化为uint8型。注意它们之间的细微差别。另外MATLAB中的函数只有小部分是对uint8型有定义的,如遇到类型错误,要转换为double型处理。5double( )/im2double( ):用于将原来的数据转化为double型,可以提高精度。44 攻击函数对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。MATLAB中的许多函数可以直接用来做攻击测试。1旋转: ro2tate( )可以对图像进行任意角度的旋转。2剪裁: imcrop( )可以按精确定位的各点坐标进行剪裁。3滤波: filter( )和filter2( )可实现对一维信号和二维信号的滤波。4抖动: dither( )对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击。5jpeg压缩:imwrite( )中jpg和quality参数能对图像进行可控jpg压缩。6加各种噪声:imnoise( )可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击。7对比度调整:imadjust( )可以调整图象的对比度,来达到攻击目的。8放大/ 缩小:imresize( )可以以指定的插值方法来对图像进行放大和缩小。45 本设计所用MATLAB函数MATLAB含有丰富的库函数,大大简化了算法的实现,下面简要介绍本设计所用的一些常用MATLAB函数功能。rand:产生随机序列。randn:产生正态分布的随机序列。imread:从文件读取图像,图像文件可以使bm ,pdf, jpeg,pcx,tiff,xwd等格式。imwrite:把图像写成文件。imshow:用于显示图像。size:计算图像(矩阵)的大小。im2col:重排图像块为矩阵列。col2im:重排矩阵为图像块。std:计算标准方差。sum:对元素求和。sort:对给定的向量或矩阵排序。median:求向量元素的中位数。reshape:重新排列矩阵。sign:符号函数,获取数值的符号,返回值为0,1或者-1。mod:求除法后的模数。floor:朝负无穷大方向取整。corr2:计算图像间相关系数。max:找出数组的最大元素。fspecial:产生预定义滤波器。filter2:实现二维信号的滤波。histeq:用直方图均衡增强对比度。imadjust:调整图像的强度值或颜色。imnoise:给图像增加噪声(高斯白噪声、黑白像素点噪声、乘积性噪声)。5 程序运行结果在MATLAB中对于一些比较简单的问题,从命令窗口中直接输入指令进行计算是十分轻松简单的事。但随着指令数的增加,或随控制流复杂度的增加,以及重复计算要求的提出,直接从命令窗口进行计算就显得繁琐,而此时脚本文件(Script file)最为适宜。“脚本”本身反映一个事实:MATLAB只是按文件所写的指令执行。这种文件的构成比较简单,其特点是:它只是一串按用户意图排列而成的(包括控制流指令在内)MATLAB指令集合。脚本文件运行后,所产生的所有变量都驻留在MATLAB基本空间中。只要用户不使用clear指令加以清除,且MATLAB指令窗不关闭,这些变量将一直保存在基本工作间中。本设计的脚本文件命名为shuiyin.m,在MATLAB2007a中运行该脚本文件,试验结果及分析如下:51 嵌入水印 原始图像和嵌入水印后的图像,仿真结果表明具有很好的视觉效果,嵌入的水印对原始图像的改变很小,以至于不易觉察。如图5.1图5.1 水印的嵌入52 JPEG压缩及水印提取 首先对嵌入水印后的图像进行JPEG(Quality=30),而后从压缩的图像中提取出水印,如图5.2所示。图5.2 JPEG压缩和水印提取53 攻击试验数字水印在实际应用中可能会遭到各种各样的攻击,从JPEG攻击压缩后的图像中可以恢复出水印图像,下面给出其他几种攻击后的水印图像,如图5.3。图5.3 攻击试验54 噪声试验嵌入水印的图像加入均值为0,方差为0.01的高斯噪声、强度为0.02和0.04的椒盐噪声和乘性噪声后,仿真结果可以看出具有良好的抗攻击能力。如图5.4。imnoise( )函数可以对图像加入各种噪声,程序代码如下:imread(attackf.jpg);attackf=imnoise(f,gaussian,0,0.01);attackf=imnoise(f,salt & pepper,0.02);attackf=imnoise(f,speckle,0.04);图5.4 噪声试验6 总结本次设计利用MATLAB语言实现数字水印方便而快捷,大大提高了编程的效率,从而达到事半功倍的目的。从仿真的结果可以看出:嵌入水印信息后,原始图像与嵌入水印信息后的图像在视觉效果上没有明显分别,用肉眼几乎分辨不出,不影响图像的正常使用;嵌入水印后的图像经过参数“Quality”为30的JPEG压缩后,还能从中提取出来水印且非常清晰;对含水印的图像进行噪声攻击后,加入水印的图像虽然已经模糊,但是图像的抗攻击性仍然较好的。通过对数字水印技术的研究学习,发现数字水印技术在版权保护、信息隐藏方面有很大的优势和潜力,因此将会有越来越多的有识之士从事这一领域的研究,数字水印最终会有行业标准,实现产业化。数字水印作为信息安全领域中的新生事物,涉及密码学、信号处理数据融合等领域是涵盖多学科的交叉学科。作为一种与图像本身结合的新型加密手段,数字水印技术已经体现出了其在版权保护方面的独特优势,日益引起人们的关注。随着科学技术的发展和人们对版权保护意识的提高数字水印技术必将有更广的应用范围和更好的发展前景。在此,感谢刘老师在从本设计的选题到最后的定题给予的悉心指导!参考文献1邵佳 董辰辉编.MATLAB/Simulink通信系统建模与仿真实例精讲.电子工业出版社.2009.62刘卫国编.MATLAB程序设计教程(第二版).中国水利水电出版社.2010.23赵谦编.通信系统中MATLAB基础与仿真应用.西安电子科技大学出版社.20104邹玉蓉.数字图像水印技术及应用研究.同济大学工程硕士学位论文.2007.115杨忠泽.MATLAB数字水印工具箱实现.华南理工大学硕士学位论文.2005.56/附录 程序源代码%shuiyin.m%设计题目:基于MATLAB的数字图像水印技术%本设计包括数字图像水印技术的提取、嵌入过程以及对含有水印图像的攻击%name:% 由高斯正态分布序列 g1 产生 364的水印信号 w0,w0 由(0,1)组成。clearrandn(state,1106);g1=randn(36,4);for i=1:36 for j=1:4 if g1(i,j)=0 w0(i,j)=1; else w0(i,j)=0; end; end;end;subplot(1,3,1);imshow(w0);title(水印);% 对水印信号 w0 进行(7,4)汉明编码,得到一367 的分组码 x0。x0=w0;for i=1:36 s=8*x0(i,1)+4*x0(i,2)+2*x0(i,3)+x0(i,4); switch s case 0 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 1 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 2 x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 3 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 4 x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; case 5 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 6 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 7 x0(i,5)=0;x0(i,6)=1;x0(i,7)=0; case 8 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 9 x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 10 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 11 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 12 x0(i,5)=0;x0(i,6)=1;x0(i,7)=0; case 13 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 14 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 15 x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; end;end;% 对 x0 进行行向位扩展,得到一个由(-1,1)组成的扩展序列 y。其中cr 为扩展因子。cr=256;for i=1:252 if x0(i)=1 y(i,1:cr)=1; else y(i,1:cr)=-1; end;end;y(253:256,:)=0;% 以下产生伪随机序列 p。为此先设定密钥(1114)并产生高斯正态分布序列g2,再由g2产生由(-1,1)组成的伪随机序列 p。randn(state,1114);g2=randn(256,256);for i=1:256 for j=1:256 if g2(i,j)0 p(i,j)=1; else p(i,j)=-1; end; end;end;yp=y.*p;% 设定的每类块基准噪声阈值 jnd1 t1=1.7; t2=2.1; t3=2.5; t4=2.9;t5=3.3; t6=3.7; t7=4.1; t8=4.5;% 读入原图象并转换成双精度,k 是 88 图像块数。f0=imread(cameraman.tif);f0=double(f0);c,s=size(f0);k=c*s/64;% 计算每块的方差 std2 和能量 e,并对能量 e 按升序排列。cf0=im2col(f0,8,8,distinct);std1=std(cf0);std2=std1.2;for i=1:ke(i)=sum(cf0(:,i).2);end;e1,ind1=sort(e);% 按能量 e 的索引 ind1 顺序重排方差 std2,将结果存于 std3。j=1;for i=1:k z=ind1(i); std3(j)=std2(z); j=j+1;end;% 设定分类界限。m1=median(std3(1:k/4);m2=median(std3(k/4+1:k/2);m3=median(std3(k/2+1:3*k/4);m4=median(std3(3*k/4+1:k);n1=e1(k/4); n2=e1(2*k/4);n3=e1(3*k/4); n4=e1(k);% 按能量 e 和方差 std2 将原图像块分成 8 类,并给每类块赋基准噪声阈值。for i=1:k if e(i)=m1 jnd1(i)=t1; else jnd1(i)=t2; end; elseif (n1e(i)&e(i)=m2 jnd1(i)=t3; else jnd1(i)=t4; end; elseif(n2e(i)&e(i)=m3 jnd1(i)=t5; else jnd1(i)=t6; end; elseif (n3e(i)&e(i)=m4 jnd1(i)=t7; else jnd1(i)=t8; end; end;end;% 计算每类块的噪声阈值 jn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论