最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

DCT域的水印嵌入与提取论文1

来源:动视网 责编:小OO 时间:2025-10-02 17:42:15
文档

DCT域的水印嵌入与提取论文1

论文题目:基于DCT的图像数字水印嵌入与提取姓名:***学号:****班级:*****学院:***指导老师:*******2013/5/12摘要数字水印作品引发的盗版问题和版权纷争已成为日益严重的社会问题的今天,数字水印是实现数字产品版权保护和安全维护的有效办法,其在所有权水印标记搜索,拷贝复制,指纹识别等多方面得以应用。本文重点介绍了基于DCT域的数字水印的嵌入和提取实现方法,包括噪声攻击后的水印提取效果。关键词:数字水印信息隐藏离散余弦变换AbstractNowadays,disputes
推荐度:
导读论文题目:基于DCT的图像数字水印嵌入与提取姓名:***学号:****班级:*****学院:***指导老师:*******2013/5/12摘要数字水印作品引发的盗版问题和版权纷争已成为日益严重的社会问题的今天,数字水印是实现数字产品版权保护和安全维护的有效办法,其在所有权水印标记搜索,拷贝复制,指纹识别等多方面得以应用。本文重点介绍了基于DCT域的数字水印的嵌入和提取实现方法,包括噪声攻击后的水印提取效果。关键词:数字水印信息隐藏离散余弦变换AbstractNowadays,disputes
论文题目:基于DCT的图像数字水印嵌入与提取

姓   名:***

学   号:****

班   级:*****

学   院:***

指导老师:*******

                                                                2013/5/12

摘要

数字水印作品引发的盗版问题和版权纷争已成为日益严重的社会问题的今天,数字水印是实现数字产品版权保护和安全维护的有效办法,其在所有权水印标记搜索,拷贝复制,指纹识别等多方面得以应用。本文重点介绍了基于DCT域的数字水印的嵌入和提取实现方法,包括噪声攻击后的水印提取效果。

关键词:数字水印 信息隐藏 离散余弦变换

Abstract

Nowadays , disputes of digital entries caused by piracy and copyright have become an increasingly serious social problems, so digital watermarking has been applied into ownership Watermark Search, Copy control, fingerprint identification and other aspects. This paper introduces the implementation method of the digital watermark embedding and extraction based on DCT domain, including the watermark extraction effect of noise attack.

Key Words: Digital Watermark, Information hiding,

 Discrete Cosine Transformation(DCT)

目录

1.绪论    4

1.1信息隐藏技术的研究背景    4

1.2 信息隐藏的发展历程    5

1.3 信息隐藏技术国内外研究现状    7

2.系统关键技术介绍    8

2.1数字水印关键技术    8

2.2数字水印的特点    10

2.3最常见的分类方法有以下几种:    11

3. 水印的嵌入与提取    12

3.1 MATLAB简介    12

3.2    MATLAB语言的特点    12

3.4 工作环境的配置    16

4. 系统实现    16

4.1  matlab函数介绍    16

4.2 基于DCT数字水印算法的matlab实现源代码实例    17

4.3本章小结    21

5.总结    21

参考文献    22

程序实现的源代码    23

1.绪论

网络的推广和普及给人们的生活带来了极大的便利,多媒体信息的传输更加的快捷,人们获得各种数字化的产品,但是人们在享受着这些便利的同时,也对信息传递时的安全性提出了更高的要求,如何去保证信息在安全传递的同时又不会别窃取和篡改等等的攻击已经成为现代网络技术发展所需要解决的重要问题。最常见也是最古老的方法就是加密,但是随着各项相关技术的发展,人们已经可以破译了,所以说传统的加密方法已经不能满足人们对信息化的要求了,就在人们寻找新的方法时,信息隐藏技术出现了,成为解决这一问题的重要方法。

1.1信息隐藏技术的研究背景

二十世纪就是年代,网络和通信技术飞速发展,世界各地的信息传递变得更加的便捷和频繁。多媒体技术的应用和各种信息处理技术的发展,使得人们的生活和数字时代紧密的结合在一起。特别是在互联网技术的发展和普及以后,图像、视频、语音以及数字产品的制作、发布和共享都变得十分的常见。他们被广泛的应用在人们的生活之中,并且在经济、文化、政治、军事等方面都发挥了十分重要的作用。

现在是一个全球信息网络化和经济一体化的时代,只有掌握了足够多的信息才能运筹帷幄。但是在这个开放的网络体系下,存在着很多的安全隐患,例如,如何有效的保护互联网上用户的个人信息等问题。因此,人们在享受信息全球化便利的同时,还要考虑如何去保护企业、、等的机密文件的安全问题。信息的全球化和信息安全之间的矛盾日益的突出,引发了人们对于网络安全问题的深思。

以前人们通过加密的机制保护信息,但是加密数据时利用的不可见性暴露了秘密信息的存在,而且随着计算机技术的飞速发展,加密的机制在计算机超强的计算能力下也逐渐暴露出了它的缺陷。这使得传统的加密机制不能满足人们的使用要求,它的安全问题变得日益的突出。

信息隐藏技术作为一种解决网络信息安全问题的方案受到了信息安全界人士的广泛关注。信息隐藏技术,即将秘密信息隐藏在公开的非秘密数字载体之中进行传递,观察者或者检测系统无法观察到它的存在,载体可以是图像、语音或者视频文件等等。信息隐藏技术利用了图像、语音等载体的数据冗余特性以及人类的知觉器官的不敏感性,将秘密信息以一定的编码、调制或者加密方式隐藏在数字载体中。由于含有隐藏信息的媒体是公开的,而可能的检测者难以从公开的众多信息中判断隐藏信息是否存在,很难截获隐藏信息,从而保证了信息的安全。现在信息隐藏技术已经被应用到了许多的领域,例如医疗、军事等方面。信息隐藏技术是一种新型的信息安全技术,它把一个有意义的信息隐藏到载体信息中得到含有秘密信息的载体,非法获得者不知道这个看似普通的载体中是否隐藏了其他的信息,而且即使知道也难以提取或者去除隐藏的信息。

1.2 信息隐藏的发展历程

信息隐藏技术是一项古老的技术,可以说有了人类文明开始,人类就有保护秘密信息的想法。古代的时候人们用暗语或者暗号,这都可以被认为是信息隐藏的一种形式。十七世纪中叶的时候,出现了密码学和隐写术这两个词,他们都来自与希腊语。密码学可以理解为是将信息隐藏于其他的信息之中。隐写术是一门非常古老的艺术,它把秘密消息嵌入在看似普通的信息之中进行传送,来阻止第三方检测到信息。

古代有很多信息隐藏的典故,例如公元前440年有一个叫Histaieus的奴隶用头发掩盖叛乱信息,以及十七世纪的无形墨水,19世纪的微缩胶片这都证明人们一直想将信息隐藏起来。我国古代的藏头诗也是信息隐藏的一个应用。例如在我国四大名著中的《水浒传》第61回中,吴用诱使卢俊义将离合诗提于墙上,使卢俊义遭到官府逼上梁山。他所提的诗如下:

            卢花潭上有扁舟,

            俊杰黄昏独自游。

            义到尽头原有命,

            反弓逃难必无忧。

把每一句诗的第一个字连起来就是“卢俊义反”。

古典的信息隐藏可以归结为:把保密信息放在一个指定的位置,然后填一些其他无关的信息,让它表现出和真实信息看起来没有任何关系的形式,从而达到迷惑他人的目的,这也就是现代信息隐藏技术的前身。而现在随着计算机技术、信息处理技术以及因特网技术的发展,对信息安全也提出了新的更高的要求。相关技术的不断发展,已经使得信息隐藏技术逐渐成了一门的学科,它的研究范围也不断的在扩大,影响力也逐渐的在提升。现在信息隐藏技术作为一个广泛应用的研究课题,横跨了多媒体技术、图像信息处理、密码学、模拟识别等多个学科领域,吸引了众多的学者投入到这项课题的研究中。

1.3 信息隐藏技术国内外研究现状

信息时代的到来使得越来越多的学者投身到对信息隐藏技术的研究之中。1996年5月,国际上在剑桥大学召开了第一届信息隐藏研讨会,吸引了许多的学术组织。这次会议主要对信息隐藏的学科分支和部分的英文术语进行了规范和统一,推动了信息隐藏技术和理论的研究,它的成功举办标志着信息隐藏学的正式诞生。在此后的几年里,陆陆续续的召开了多次会议。1998年在美国的波特兰召开了第二届信息隐藏研讨会,1999年在德国召开了第三次信息隐藏研讨会。研究的内容逐渐由空域信息的隐藏转向频率域 的信息隐藏,从以数字水印为主的研究逐渐转向数据压缩等全面的理论和应用研究。1999年12月,我国顺利的召开了第一届全国信息隐藏学术研讨会,这次大会的召开引起了多所研究机构、大学以及安全部门等等的密切关注。2000年召开了全国第二届信息隐藏学术研讨会,2001年召开了全国第三届信息隐藏学术研讨会。另外,在2000年国家863计划智能计算机专家组,北京邮电大学信息安全中心和中国科学院自动化研究所一起成功的举办了数字水印技术研讨会,给国内研究信息隐藏技术的工作者提供了很好的交流机会。

现在信息隐藏技术已经发展成为了一个多领域、多学科、多技术交叉的课题,对它的研究存在着很大的科学、学术和商业价值,但是这项技术还存在着很多难点,还没有形成完整的理论体系,虽然说现阶段的信息隐藏技术已经取得了一定的成果,但是相对于信息隐藏技术总体来说,研究还处于初步阶段,还有很多问题有需要解决。但是随着对这项技术的深入研究,它的潜在价值会慢慢的体现出来,尤其是在数字水印和隐秘通信等方面,它都是密码技术所无法替代的。

2.系统关键技术介绍

2.1数字水印关键技术

离散余弦变换(DCT)   

较早的水印算法从本质上来说都是空间域上的,水印直接加载在数据上,载体数据在嵌入一水印信息前不需要经过任何处理。目前,变换域方法正日益普遍,因为在变换域嵌入的水印通常都具有很好的稳健性,对图像压缩、常用的图像滤波以及噪声叠加等都是一定的抵抗力。而且一些水印算法还结合了当前的图像和视频压缩标准,因而具有很大的实际意义。基于DCT域的图像数字水印算法就是一种基于变换域的图像数字水印算法。类似的还有傅里叶变换、小波变换、分形或其它变换域等等。在有损数字图像压缩系统中,最常用的变换方法是DCT,DCT被认为是性能接近K-L变换的准最佳变换,变换编码的主要特点有:

(1)在变换域里视频图像要比空间域里简单。

(2)视频图像的相关性明显下降,信号的能量主要集中在少数几个变换系数上,采用量化和熵编码可有效地压缩其数据。

(3)具有较强的抗干扰能力,传输过程中的误码对图像质量的影响远小于预测编码。通常,对高质量的图像,DMCP要求信道误码率,而变换编码仅要求信道误码率。

  对图像进行压缩,给高频系数大间隔量化,低频部分小间隔量化。DCT是正交变换,它可以将8×8图像空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件中都容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。

为什么采用8x8的图像块,其原因是由于计算量和像素之间关系的数量,许多研究表明,在15或20个像素之后,像素间的相关性开始下降。就是说,一列相似的像素通常会持续15到20个像素那么长,在此之后,像素就会改变幅度水平(或反向)。

一维DCT正交变换的公式为:

二维DCT逆变换公式:

 

2.2数字水印的特点

为了对版权进行保护和对产品内容进行鉴定,水印处理系统的基本框架还必须满足一些特定的条件,这些条件是:

(1)透明性。透明性包含两方面的意思:一方面指利用人类视觉或听觉系统的特征向数字作品中嵌入数字水印,在经过一系列处理后,隐藏对象没有明显的降质现象;另一方面指嵌入水印后对象与原载体对象具有一直性的特性,即使用统计方法也无法提取水印的或确定水印的存在。

(2)安全性。数字水印系统使用一个或多个密钥来确保安全,防止修改和涂擦水印。信息隐藏在多媒体内容中,并且不会因文件格式的转换而丢失,而且未经授权者不能检测出水印。

(3) 鲁棒性。所谓鲁棒性是指在经过多重无意或有意的信号处理后,数字水印仍能保持完整性或仍能被准确鉴别。其中,数字处理过程包括信道噪声、滤波、模拟数字转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。

(4) 可证明性。水印应能为受到版权保护的信息产品的归属提供完全可靠的证据。水印算法能够将所有者的有关信息嵌入到被保护的对象中,并在需要的时候将这些信息提取出来。水印可以用来判别对象是否受到保护,并能够监视被保护数据的传播、真伪鉴别以及非法拷贝控制等。

(5) 无歧义性。提取出的水印或水印判决的结果应该能够确切的表明所有权,不会发生多种所有权的纠纷。

(6) 计算有效性。水印处理算法应该比较容易用软、硬件实现。尤其是水印检测算法必须足够快,以满足在产品发行上对多媒体数据的管理要求。

2.3最常见的分类方法有以下几种:  

 (1)可见水印和不可见水印:这是基于人的主观感觉来划分的。可见水印是指嵌入水印后,我们可以看到嵌入的水印信息,而不可见水印是一种表面上不可察觉的水印,一般用户不知道使用的数字产品中是否已嵌入了水印。目前我们主要关注的是不可见水印。

(2) 空间域水印和变换域水印:这是按水印嵌入的方式来划分的。空间域水印是指直接在信号空间上叠加水印信息,而变换域水印是对变换域中系数做出改变从嵌入水印信息。一般来说,变换域算法中可以嵌入的水域数据庞大,安全性高。

(3) 非盲水印、半盲水印和盲水印:这是根据在水印检测时是否需要原始图像和原始水印来划分的。非盲水印是指在检测过程中需要原始图像和原始水印;半盲水印是指在检测过程中不需要原始图像,但需要原始水印;盲水印是指在检测过程中既不需要原始图像,又不需要原始水印,而只需要密钥。

(4) 脆弱水印、半脆弱水印和鲁棒水印:这是根据水印信息的抗攻击能力来划分的。脆弱水印会随着对象的修改而被破坏,半脆弱水印是指对某些图像处理方法有鲁棒性,而对其他的处理不具备鲁棒性,鲁邦水印是指对对常见的各种图像处理方法都具备鲁棒性。

(5) 私有水印和公开水印:私有水印是指只能被特定密钥的持有人提取或检测的水印,而公开水印则是指可以被公共提取或检测的水印。私有水印的安全性和鲁棒性优于公开水印,但公开水印更能方便声明版权信息和预防侵权。

(6) 对称水印和非对称水印:这是根据提取水印的算法来进行划分的。当水印嵌入提取或检测过程中所使用的密钥相同时,称为对称水印;否则称为非对称水印。

上述各类水印算法的分类并不是绝对孤立的,它们之间是相互联系着的,因此在理解各类水印时,我们只能根据它在某一特性上的不同表现形式而将其归类。此外,目前基本上不可见数字水印的算法主要分为两大类:空域算法和变换域算法,而变换域水印是未来发展的主流。

3. 水印的嵌入与提取

3.1 MATLAB简介

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

3.2MATLAB语言的特点

MATLAB主要有如下特点:

1.编程效率高

MATLAB是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列出公式与求解问题。因此,MATLAB语言也可通俗地称为演算纸式科学算法语言。由于它编写简单,所以编程效率高,易学易懂。

2.用户使用方便

MATLAB语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。人们用任何一种语言编写程序一般都要经过四个步骤:编辑、编译、链接,以及执行和调试。各个步骤之间是顺序关系,编程的过程就是在它们之间做瀑布型的循环。MATLAB语言与其他语言相比,较好的解决了上述问题,把编辑、编译、链接和执行融为一体。它能在同一画面上进行灵活操作,快速排除输入程序中的书写错误、语法错误以至语义错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。

具体的说,MATLAB运行时,如直接在命令行输入MATLAB语句(命令),包括调M文件的语句,每输入一条语句,就立即对其进行处理,完成编译、链接和运行的全过程。又如,将MATLAB源程序编辑为M文件,由于MATLAB磁盘文件也是M文件,所以编辑后的源文件就可以直接运行,而不需要进行编译和链接。在运行M文件时,如果有错,计算机屏幕上会给出详细的出错信息,用户经修改后再执行,直到正确为止。所以可以说,MATLAB语言不仅是一种语言,广义上讲是一种该语言的开发系统,即语言调试系统。

3.扩充能力强,交互性好

高版本的的MATLAB语言有丰富的库函数,在进行复杂的数序运算时可以直接调用,而且MATLAB的库函数同用户文件在形成上一样,所以用户文件也可作为MATLAB的库函数来调用。因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高MATLAB的使用效率和扩充它的功能。另外,为了充分利用FORTRAN、C等语言的资源,包括用户已编好的FORTRAN、C语言程序,通过建立Me调文件的形式,混合编程,方便地调用有关的FORTRAN、C语言的子程序,还可以在C语言和FORTRAN语言中方便地使用MATLAB的数值计算功能。这样良好的交互性使程序员可以使用以前编写过的程序,减少重复性工作,也使现在编写的程序具有重复利用的价值。

4.移植性和开放性很好

MATLAB是用C语言编写的,而C语言的可移植性很好。于是MATLAB可以很方便地移植到能运行C语言的操作平台上。MATLAB合适的工作平台有:Windows系列、UNIX、Linux、VMS6.1和PowerMac。除了内部函数外,MATLAB所有的核心文件和工具箱文件都是公开的,都是可读可写的源文件,用户可以通过对源文件的修改和自己编程构成新的工具箱。

5.语句简单,内涵丰富

MATLAB语言中最基本最重要的成分是函数,其一般形式为[a,b,c,...]=fun(d,e,f,...),即一个函数由函数名,输入变量d,e,f,...和输出变量a,b,c,...组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性)。这不仅使MATLAB的库函数功能更丰富,而且大大减少了需要的磁盘空间看,使得MATLAB编写的M文件简单、短小而高效。

6.高效方便的矩阵和数组运算

MATLAB语言像BASIC、FORTRAN和C语言一样规定了矩阵的算术运算符、关系运算符、罗技运算符、条件运算符,而且这些运算符大部分可以毫无改变地照搬到数组间的运算,有些如算术运算符只要增加“.”就可用于数组间的运算。另外,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其他高级语言所不能比拟的。在此基础上,高版本的MATLAB一定能名副其实地称为“万能演算纸”式的科学算法语言。

7.方便的绘图功能

MATLAB的绘图是十分方便的,它有一系列绘图函数(命令),例如线性坐标、对数坐标、半对数坐标及极坐标,均只需调用不同的绘图函数(命令),在图上标出图题、XY轴标注,格(栅)绘制也只需调用相应的命令,简单易行。另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。这种为科学研究着想的设计是通用的编程语言所不能及的。

3.3MATLAB的缺点

MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢,并且MA TLAB 的界面功能比较弱, 不能实现交互界面、数据采集和端口操作等功能。

3.4 工作环境的配置

本设计的运行环境如下

硬件环境:windows 7.0,内存2G, 硬盘320G

软件环境:matlab R2011a

4. 系统实现

4.1  matlab函数介绍

①数据输入输出函数

imread()和imwrite():可以读写bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd格式文件。读索引文件时,还可以得到相应的调色板数据。

②  图像显示

imshow():显示一幅图像;imfinfo():可以得到读入图像的信息。如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等。

③攻击函数

旋转:rotate()可以对图像进行任意角度的旋转;

剪裁:imcrop()可以按精确定位的各点坐标进行剪裁;

滤波:filter()和filter2()可实现对一维信号和二维信号的滤波;

抖动:dither()对图像进行抖动;抖动攻击考验水印鲁棒性的一个很好的攻击;

jpeg压缩:imwrite()中jpg和quality参数能对图像进行可控jpg压缩;

加各种噪声:imnoise()可以对图像加入各种噪声,如高斯噪声、椒盐噪等,加入噪声是对水印鲁棒性考验的一种常见的攻击;

放大/缩小:imresize()可以以指定的插值方法来对图像进行放大和缩小。

水印嵌入与提取的总体流程图如下:

4.2 基于DCT数字水印算法的matlab实现源代码实例

原图:

水印图片:

将水印嵌入到原图中,然后进行DCT域的变换与逆变换,提取出水印,结果如下所示:

将嵌入水印后的图片加入椒盐噪声,然后按照上述方法进行提取,结果如下所示,此时凸显出算法的抗噪性能不够好:

将嵌入水印后的照片加入高斯噪声,然后提取,水印基本已经看不出了:

将嵌入水印后的照片进行旋转45°,然后提取,水印基本已经看不出了。

将嵌入水印后的照片进行剪切,然后提取,水印基本也已经看不出了:

4.3本章小结

   本章实现了基于DCT域的数字水印技术,并且通过加入高斯噪声,椒盐噪声,旋转,剪切等一些列攻击手段,并显示原图像和嵌入水印后的图像,攻击后的水印图像的直观对比图。从实验结果的主观视觉效果看,我的算法的稳健性不够好呀!攻击后提取的水印基本已经看不出。

5.总结

信息隐藏是一项崭新的技术领域,也是多媒体技术、网络技术研究的前沿,应用前景十分广阔,必将吸引广大图像、语音、网络、人工智能等领域的研究者加入到这一行列,从而推动信息安全技术更快的发展。

通过实验,我学习了MATLAB的使用和编程:详细了解数字水印的知识,更主要的是掌握了DCT域的水印算法设计与实现的相关知识。总之,数字水印技术研究是近几年来发展很活跃的领域,随着研究的深入,数字水印正在发展为一门颇有意义的科学学科,我坚信数字水印技术必将有一个美好的明天。

  参考文献

[1] 金聪.数字水印理论与技术.北京:清华大学出版社,2008.8

[2] 董长虹等.Matlab 图像处理与应用.北京:国防工业出版社,2004.1

[3] 杨义先.数字水印基础教程.北京:人民邮电出版社,2007.6

[4] 黄达人,刘九芬,黄继武.小波变换域图像水印嵌入对策和算法.软件学报,2002,13(07)

[5]张军,等.数字图像的自适应公开水印技术.计算机学报.2002(12)

[6]郭,张宗橙.信息论与编码. 第2版. 北京:清华出版社.2009

[7]王丽娜、张焕国,信息隐藏技术与应用,北京:北京师范大学中文图书基藏库,2003

[8]

附录:

程序实现的源代码如下所示:

%%%%Embed the watermark

%dct algorithm

clc,clear all,close all;

C=zeros(512);

%read original image

subplot(221),

imshow(I);

title('original image');

I=double(I)/256;

%display watermarking image

J=imresize(im1,[,]);

subplot(222),

imshow(J);

title(' watermarking image ');

K=8;

for p=1:

    for q=1:

        x=(p-1)*K+1;

        y=(q-1)*K+1;

        BLOCK=I(x:x+K-1,y:y+K-1);

        BLOCK=dct2(BLOCK);

        if J(p,q)==0

            a=-1;

        else

            a=1;

        end

        BLOCK(1,1)=BLOCK(1,1)*(1+a*0.03);

        BLOCK=idct2(BLOCK);

        C(x:x+K-1,y:y+K-1)=BLOCK;

    end

end

subplot(223),

%figure,

imshow(C,[]);

title('waterembed');

 

%%%%%%%Extrat the watermark

%choose original picture

K=8;

for p=1:

    for q=1:

        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)~=0

            a=(BLOCK2(1,1)/BLOCK1(1,1))-1;

if a<0

                W(p,q)=0;

            else

                W(p,q)=1;

            end

        end

    end

end

display watermark

subplot(224);

%figure,

imshow(W,[]);

title('the watermark');

 %%%input noise 

%%input the the salt&pepper noise

I1=imnoise(I,'salt & pepper',0.01);

figure;

subplot(121);

imshow(I1);

title('salt&pepper noise waterembed image');

 

%%%%%%%Extrat the watermark

 

J=imresize(J,[512,512]);

M=size(I,1);

N=;

K=8;

for p=1:N

    for 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)~=0

            a=(BLOCK2(1,1)/BLOCK1(1,1))-1;

if a<0

                W(p,q)=0;

            else

                W(p,q)=1;

            end

        end

    end

end

%display watermark

subplot(122);

imshow(W);

title('the watermark');

 

%%input the the gaussian noise

 

I2=imnoise(I,'gaussian',0,0.01);

figure;

subplot(121)

imshow(I2);

title('gaussian noise waterembed image');

J=imresize(J,[512,512]);

M=size(I,1);

N=;

K=8;

for p=1:N

    for 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)~=0

            a=(BLOCK2(1,1)/BLOCK1(1,1))-1;

if a<0

                W(p,q)=0;

            else

                W(p,q)=1;

            end

        end

    end

end

%display watermark

subplot(122);

imshow(W);

title('the watermark');

%rotate the waterembedi image 

I3=imrotate(I,-45,'bilinear');

figure ;

subplot(121);

imshow(I3);

title('the rotate waterembed image');

 

%%%%%%%Extrat the watermark

J=imresize(J,[512,512]);

M=size(I,1);

N=;

K=8;

for p=1:N

    for 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)~=0

            a=(BLOCK2(1,1)/BLOCK1(1,1))-1;

if a<0

                W(p,q)=0;

            else

                W(p,q)=1;

            end

        end

    end

end

%display watermark

subplot(122);

imshow(W);

title('the watermark');

 

%cut the waterembed image

I4=imcrop(I,[70 80 250 300]);

figure ;

subplot(121);

imshow(I4);

title('the cut waterembed image');

 

%%%%%%%Extrat the watermark

J=imresize(J,[512,512]);

M=size(I,1);

N=;

K=8;

for p=1:N

    for 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)~=0

            a=(BLOCK2(1,1)/BLOCK1(1,1))-1;

if a<0

                W(p,q)=0;

            else

                W(p,q)=1;

            end

        end

    end

end

%display watermark

subplot(122);

imshow(W);

title('the watermark');

文档

DCT域的水印嵌入与提取论文1

论文题目:基于DCT的图像数字水印嵌入与提取姓名:***学号:****班级:*****学院:***指导老师:*******2013/5/12摘要数字水印作品引发的盗版问题和版权纷争已成为日益严重的社会问题的今天,数字水印是实现数字产品版权保护和安全维护的有效办法,其在所有权水印标记搜索,拷贝复制,指纹识别等多方面得以应用。本文重点介绍了基于DCT域的数字水印的嵌入和提取实现方法,包括噪声攻击后的水印提取效果。关键词:数字水印信息隐藏离散余弦变换AbstractNowadays,disputes
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top