数字水印算法包含完整程序.docx

上传人:b****4 文档编号:6889999 上传时间:2023-05-10 格式:DOCX 页数:31 大小:734.35KB
下载 相关 举报
数字水印算法包含完整程序.docx_第1页
第1页 / 共31页
数字水印算法包含完整程序.docx_第2页
第2页 / 共31页
数字水印算法包含完整程序.docx_第3页
第3页 / 共31页
数字水印算法包含完整程序.docx_第4页
第4页 / 共31页
数字水印算法包含完整程序.docx_第5页
第5页 / 共31页
数字水印算法包含完整程序.docx_第6页
第6页 / 共31页
数字水印算法包含完整程序.docx_第7页
第7页 / 共31页
数字水印算法包含完整程序.docx_第8页
第8页 / 共31页
数字水印算法包含完整程序.docx_第9页
第9页 / 共31页
数字水印算法包含完整程序.docx_第10页
第10页 / 共31页
数字水印算法包含完整程序.docx_第11页
第11页 / 共31页
数字水印算法包含完整程序.docx_第12页
第12页 / 共31页
数字水印算法包含完整程序.docx_第13页
第13页 / 共31页
数字水印算法包含完整程序.docx_第14页
第14页 / 共31页
数字水印算法包含完整程序.docx_第15页
第15页 / 共31页
数字水印算法包含完整程序.docx_第16页
第16页 / 共31页
数字水印算法包含完整程序.docx_第17页
第17页 / 共31页
数字水印算法包含完整程序.docx_第18页
第18页 / 共31页
数字水印算法包含完整程序.docx_第19页
第19页 / 共31页
数字水印算法包含完整程序.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数字水印算法包含完整程序.docx

《数字水印算法包含完整程序.docx》由会员分享,可在线阅读,更多相关《数字水印算法包含完整程序.docx(31页珍藏版)》请在冰点文库上搜索。

数字水印算法包含完整程序.docx

数字水印算法包含完整程序

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

武汉理工大学

题目:

数字水印算法设计

初始条件:

(1)Matlab应用软件的基本知识以及基本操作技能。

(2)高等数学、信号与系统等基础运算知识。

要求完成的主要任务:

(1)掌握一种数字水印的嵌入与提取算法原理。

(2)编写出水印嵌入算法的matlab程序,并给出水印嵌入前后的版权图像,并对嵌入效果进行分析说明。

(3)编写出水印提取算法matlab程序,并给出水印原图和提取出的水印图像,并对水印的提取效果进行分析说明。

(4)进行水印的抗攻击实验,噪声攻击,剪切攻击,缩放攻击,压缩攻击等。

测定提取前后水印的峰值信噪比(PSNR)和相关性(NC)。

时间安排:

6月20日到6月27日        理论设计与仿真

6月28日到7月3日         撰写报告

7月4日 答辩        

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

摘要

随着计算机及网络技术的飞速发展,数字作品传播和拷贝变得越来越方便,同时使得数字作品的信息安全保护和版权保护也成为迫切需要解决的实际问题。

数字水印是近年来在信息安全领域兴起的保护知识产权的新方法。

它通过在原始数据中嵌入一些重要信息为受到版权保护的媒体数据的完整性和所有权归属提供完全和可靠的证据,以此达到防止数字产品的盗版和篡改目的。

本文提出了一种基于傅立叶域的有意义水印算法,主要做了如下工作:

(1)为了提高水印的安全性,在嵌入水印之前首先对水印信息利用Arnold变换进行置乱。

(2)为了提高传统相关性检测方法的准确率,嵌入水印时采用嵌入两个不相关伪随机序列的方法,大大提高了检测的准确率。

(3)低频部分集中图像的大部分能量,修改这里容易引起失真,所以本文采用修改中高频部分的方法进行嵌入。

(4)本文水印的检测方法为半盲检测,只需要原始水印的部分信息的参与,所以具有重要的现实意义。

关键字:

数字水印;傅立叶变换;图像处理;信息安全

 

ABSTRACT

Alongwiththecomputerandnetworktechnologyrapiddevelopment,anddisseminationofdigitalworkshavebecomeincreasinglyeasytocopy,simultaneouslyallowdigitalworkstoprotectthesecurityofinformationandcopyrightprotectionhasbecomeanurgentneedtoaddresstherealissues.Inrecentyears,digitalwatermarkingisinthefieldofinformationsecurityemergingintellectualpropertyprotectionmethod.Itpassedintheoriginaldataembeddedinsomeimportantinformationprotectedbycopyrightforthedataintegrityofmediaownershipandattributionmentionforcompleteandreliableevidence,therebytopreventthepiracyofdigitalproductsandtamperingwithpurpose.ThispaperpresentsaFourier-domainbasedonthemeaningfulwatermarkingalgorithm,mainlyinthefollowing:

(1)Toenhancethesecuritywatermark,beforethewatermarkembeddedwatermarkonthefirstuseofArnoldtransformscrambling.

(2)Toimprovethetraditionaldetectionmethodsrelatedtotheaccuracy,usedembeddedwatermarkembeddingtwoarenotrelatedtothepseudo-randomsequence,greatlyimprovethedetectionaccuracy.

(3)low-frequencypartoftheimagemostconcentratedenergy;changeshereeasilyleadtodistortion,thereforethispaper,revisingpartofthehigh-frequencymethodforembedding.

(4)Thiswatermarkdetectionmethodforthesemi-blindtesting,onlypartoftheoriginalimageinformationin,thereforehaveimportantpracticalsignificance.

KeyWords:

Digitalwatermarking;Fouriertransform;Imageprocessing;

Informationsecurity

1.数字水印技术概述

1.1数字水印技术提出的背景

二十一世纪是数字时代,通信技术的迅速发展和计算机网络的普遍运用,使人们可以通过互联网收发信息,可以随时上传自己创作的数字图象、音乐、视频等作品,可以进行学术交流。

然而,也正是由于网络的这种便捷性、传播迅速的优点使其很容易被非法拷贝,导致数字产品的版权、完整性、有效性得不到保证,严重损害了创作者的利益。

而一些具有特殊意义的数字信息,如涉及司法诉讼、政府机要等信息,更是遭到了不法分子地恶意攻击和随意篡改等,这一系列问题给当今科学家带来了巨大挑战。

基于以上类似问题,数字水印技术可以说是信息时代的特有产物,是一种可以在开放网络环境下保护版权和认证来源及保障信息完整性的新型技术,在音频、图像、视频制品中迅速得到广泛的研究和发展。

1.2数字水印的基本特点

数字水印是加在数字图象、音频或视频中的微弱信号,这个信号是人们能够建立产品所有权、辨认购买者或提供数字产品的一些额外信息。

具体说来,它们都具有以下共同的特征:

1.不可感知性

对于数字水印的嵌入,应该对观察者没有视觉障碍,理想情况应该是水印图像与原始图像没有丝毫差别。

2.鲁棒性

鲁棒性是指一个数字水印能够承受攻击的能力,一般来说数字水印方法是针对特定的攻击进行设计。

3.安全性

水印技术的安全性是其最重要的特性,由于它的商业性,其算法必须公开,算法的安全性完全取决于密钥,而不对算法进行保密。

4.计算复杂度

不同应用中,对于水印的嵌入算法和提取算法的计算复杂度要求是不同的,复杂度直接与水印系统的实时性相关。

5.水印容量

水印容量是指载体数据字中可嵌入水印信息位的多少,可以从几兆到几个比特不等。

1.3数字水印的应用

数字水印是以不可感知的方式嵌入到数字信息中的,总体来说它有以下应用:

数字产品产权保护

这是数字水印最广泛的应用,将秘密的数字信号嵌入到有价值的数字文件中,这些数字信号是产权的标识,在不破坏数字文件的情况下不能被盗版者出去,起到了保护产权的作用。

1.数据库标识

有时一些文件中提示数据的标识信息往往比文件本身更重要或者一些音像文件需要将说明注释(如字幕等)与音像本身结合起来,这就可以通过数字水印技术加以解决。

2.文件内容鉴定

水印技术在鉴定数据建立者和鉴别数据内容有着特殊的运用,目的是检测数据是否被修改过或是否经过特殊的处理。

3.系统升级

日常生活中常常涉及到旧装系统升级情况,这可以通过将“增强层”嵌入到所发送的数据中来给传统的信号发射系统升级。

4.商务交易中的票据防伪

随着高质量图像输入输出设备的发展,使得货币、支票以及其他票据的伪造变得更加容易。

目前,美国、日本以及荷兰都已开始研究用于票据防伪的数字水印技术。

5.媒体侦破

这一运用的目的是提取对原始信号进行处理过的信息。

例如,鉴定方法可以发现一幅图像被篡改过,但无法发现是怎样篡改的。

媒体侦破技术就可以指出图像的哪部分被篡改了,指出被插入到原图像中的新对象等等。

 

2.MATLAB软件的介绍

MATLAB语言是一种非常强大的工程语言,被广泛应用于包括信号与图象处理、控制系统设计、通信、系统仿真等诸多领域。

2.1MATLAB研究数字水印的优点

MATLAB语言有不同于其他高级语言特点,它在研究数字水印有如下特点:

1.编程效率高

MATLAB语言是用数学形式的语言编写程序,用MATLAB编写程序犹如在演算纸上排列公式与求解问题。

由于它编写简单,所以编程效率高,易学易懂。

2.用户使用方便

与其他语言相比,MATLAB能在同一画面上进行灵活操作,快速排除输入程序中的书写错误、语法错误甚至语意错误,从而加快了用户编写、修改和调试程序的速度,便于操作。

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

MATLAB语言库函数丰富,用户还可以根据自己的需要方便地建立和扩充新的库函数,提高MATLAB使用效率和扩充功能。

良好的交互性使程序员可以使用以前编写过的程序,减少重复性工作。

4.移植性好,开放性好

MATLAB是用C语言编写的,而C语言的可移植性很好。

于是MATLAB可以很方便地移植到能运行C语言的操作平台上。

5.语言简单,内涵丰富

MATLAB语言中最基本最重要的成分是函数,同一函数名,不同数目的输入变量及不同数目的输出变量,代表着不同的含义。

这不仅使MATLAB的库函数功能更丰富,而且大大减少了需要的磁盘空间,使得MATLAB编写的M文件简单、短小而高效。

6.方便的绘图功能

MATLAB软件中有一系列绘图函数,在运用MATLAB软件时只需要调用不同的绘图函数,即可在图上标出图题、XY轴标注。

7.功能强大的工具箱是MATLAB的另一特色。

MATLAB工具箱中的信号处理、控制系统、神经网络、图象处理、鲁棒控制、非线性系统控制设计、系统辨识、最优化、模糊逻辑、小波、通信、统计(statistics等工具箱),这些工具箱给各个领域的研究和工程应用提供了有力的工具。

8.MATLAB的缺点

它和其他高级程序相比,程序的执行速度较慢。

由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

2.2MATLAB函数介绍

在研究水印技术时,我们处理的图像数据是二维信号,而声音是一维信号,所以在这里,我门只简单介绍与水印有关的函数。

1.数据输入输出函数

imread()和imwrite():

可以读写bmp,jpg/jpeg,tif/tiff,png,hdf,pcx,wxd格式文件。

读索引文件时,还可以得到相应的调色板数据。

2.图象显示

imshow():

显示一幅图像;imfinfo():

可以得到读入图像的信息。

如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等。

3.变换域函数

对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中的一维信号和二维信号分别提供了各种变换和逆变换函数。

1)离散余弦变换(DCT)

(1)dct(),dct2():

分别实现一维信号和二维信号的DCT(离散余弦变换);

(2)idct(),idct2():

分别实现一维信号和二维信号的IDCT(逆离散余弦变换);

2)离散傅立叶变换(DFT)

(1)fft(),fft2():

分别实现一维信号和二维信号的DFT(离散傅立叶变换);

(2)ifft(),ifft2():

分别实现一维信号和二维信号的IDFT(逆离散傅立叶变换);

4.攻击函数

对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。

MATLAB中的许多函数可以直接用来做攻击测试:

1)剪裁:

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

2)加各种噪声:

imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等。

 

3.傅立叶域水印理论基础

3.1傅立叶变换简述

傅立叶变换(FourierTransform)是研究信号的频谱方法,它架起了时域和频域之间的桥梁。

打个比方来说,傅立叶变换就好比描述函数的第二种语言,能讲两种语言的人常常会发现,在表达某些观点时,一种语言会比另一种语言优越。

类似地,图像处理者在解决某一问题时会在空域和频域之间来回切换。

傅立叶变换把一个时域信号函数分解为众多的频率成分,这些频率成分又以准确地重构成原来的时域信号,这种变换是可逆的且保持能量不变。

下面两个公式(3.1)、(3.2)给出了傅立叶变换及其逆变换:

从时域到频域称为Fourier变换,从频域到时域称为逆Fourier变换,信号函数f(t)和它的

Fourier变换F(ϖ)是同一能量信号的两种不同表现形式。

Fourier分析理论十分完善,既可以处理连续的信号也可以处理离散的信号。

计算机只能处

理离散的信号,于是离散Fourier变换(DFT)成为计算机实现Fourier变换的第一种形式。

下面我

们仅讨论一维离散傅立叶变换和二维离散傅立叶变换。

3.1.1一维离散傅立叶变换DFT

对一个连续函数f(t)等间隔采样得到一个离散序列。

设共采样N个数据。

则这个离散序列

可表示为{f(0),f

(1),L,f(N−1)},并令n为离散时域变量,k为离散频域变量,则可将傅立叶变

换对定义如下:

一般地,f(n)是实函数,F(k)是复函数,可以写成:

其中,R(k)、I(k)分别为复数的实部和虚部。

下式为幅度函数,称为f(n)的傅立叶谱:

ϕ(k)称为相位函数:

既可以在幅度函数F(k)上嵌入水印,也可以在相位函数ϕ(k)上嵌入水印。

DFT中,如果f(n)为实函数,则一共需要N×N次实数与复数的乘法,N×(N−1)次复数加法,一次实数与复数乘法需要两次实数乘法,一次复数加法需要两次实数加法,所以总共需要2N^2次实数乘法,2N×(N−1)次实数加法,因此时间复杂度为O(N^2),当n很大时,计算机是无法接受的。

因此人们想出了快速傅立叶变换。

3.1.2快速傅立叶变换FFT

1965年,美国的两位工程师Cooley和Tukey提出了快速傅立叶变换(FFT)。

FFT的基本思想是:

令序列f(n)的长度N为N=2^M,如果不满足,在尾部补零,没有任何影响。

按n的奇偶把f(n)分解为两个N/2点的子序列:

 

那么,

将(3.7)和(3.8)代入上式整理得:

上式右边的两部分恰好是长度(周期)为N/2的g1(m),h1(m)的傅立叶变换G1(k),H1(k)所以:

(3.12)和(3.13)可简记为图3.1的蝶式运算:

 

图3.1蝶式算法

这样一个长度为N的DFT就分解为两个长度为N/2的DFT,然后进行N/2次复数的蝶式运算,再运用分解-递归的思想,分解M=logN次,每一次均有N/2个蝶形运算,一个蝶形运算包含一次复数乘法和两次复数加法,所以FFT的时间复杂度为O(NlogN)。

 

3.1.3二维离散傅立叶变换

在数字图像处理中,图像信号是二维的,所以下面我们讨论二维离散傅立叶变换。

只要考虑两个变量,就很容易将一维离散傅立叶变换推广到二维。

二维离散傅立叶变换对如下:

二维离散傅立叶变换的傅立叶谱、相位、功率谱与一维的类似,分别如下:

傅立叶谱:

相位:

功率谱:

式(3.14)可分离为:

式(3.15)可分离为:

可见,一个二维傅立叶变换或反变换都可分解为二步进行,其中每一步都是一个一维傅立叶变换或反变换,也即先对图像进行一维行傅立叶变换(或列傅立叶变换),然后再进行一维列傅立叶变换(行傅立叶变换)。

3.2傅立叶变换性质

傅立叶变换的典型性质有下列三种:

3.2.1空间域平移性

空间域内的图像f(x,y)的原点平移到点(a,b)时,其对应的频谱变换关系为:

即频谱乘上一个负的指数项,造成相位平移,而幅度不改变。

因为

这表明图像在空间域的平移不改变傅立叶域的幅度谱,仅对相位角有影响。

3.2.2旋转不变性

在空间域中以极坐标r,θ取代x,y;在变换域以w,Φ代替u,v,使得:

显然,在DFT变换前图像为f(r,θ),DFT变换后为F(ϖ,Φ).可以证明存在以下变换对:

这表明,图像阵列f(r,θ)在空间域中旋转了0θ角度后,变换系数矩阵在频率域中也旋转同样的角度。

同样的,如果变换域系数阵列在频率域中旋转0θ角度后,则反变换后获得的空间域图像f(r,θ)必然旋转0θ角度。

3.2.3比例缩放性

函数f(x,y)的尺寸缩放到f(ax,by)时,其对应的频谱关系为:

这表明图像在空域按比例缩放,其傅立叶频域反方向缩放相同比例。

傅立叶变换的这三种典型性质在构造抵抗几何攻击的水印算法时十分有利。

 

4.基于傅立叶域相关性检测的半盲水印

4.1引言

目前,图像水印技术的研究对于水印鲁棒性的要求比较高,有相当一部分算法采用伪随机噪声来构造水印,与之相应,采用相关性检验来检测被检测图像中是否含有水印。

当被检测图像中所提取的待测序列与原始水印具有较强的相关性时,表示该被检测图像中含有水印,否则,不含有水印。

然而在另外一些情况下,对嵌入图像中的水印信息要求比较高。

比如要求所嵌入的信息是可读的或可视的,如有意义的信息(文字,图像等)。

这种有意义的水印具有无意义水印无可比拟的优点。

因此,本章结合伪随机序列与有意义水印,提出了基于傅立叶域相关性检测的水印算法。

为了提高水印的安全性,在嵌入水印前用Aronld变换对水印图像进行了置乱,下面先介绍Aronld变换。

4.2基于Arnold变换的图像置乱算法

Arnold变换,又称“猫脸”变换,是Arnold在研究遍历理论过程中提出的一种变换。

假设图像为S=[0,1]×[0,1],(x,y)⊂S。

这就是单位正方形上的Arnold变换。

实际上,可以令离散图像的像素坐标扩展到一幅图像上,对于一幅大小为N×N的图像,有下述的Arnold变换

由此做迭代变换,记

考虑其反馈,有

通过离散点的置换,同时把图像信息移植过来,当遍历了原图象的所有点之后,便产生了一副新的图像。

对于数字图像而言,我们所说的位置移动其实是对应点的灰度值或RGB颜色值的移动,即原来点(x,y)处象素对应的灰度值或RGB值移动至变换后的点(x′,y′)处。

如果我们对一个数字图像迭代地使用离散化的Arnold变换,即将左端输出作为下一次Arnold变换的输入,可以重复这个过程一直下去。

当迭代到某一步时,如果出现的图像符合我们对图像的“杂乱无章”标准的要求,这即是一幅基于Arnold变换的置乱图像。

注意到(4.2)式定义的Arnold变换实际上是一种点的位置移动,且这种变换是一一对应的。

此外,这种变换可以迭代地做下去。

类似的变换还有面包师变换。

需要注意的是,Arnold变换具有周期性,即当迭代到某一步时,将重新得到原始图像。

Dyson和Falk分析了离散Arnold变换的周期性,给出了对于任意N>2,Arnold变换的周期T≤N^2/2。

本算法采用的水印图像尺寸为40×40,变换周期为30。

即迭代的进行30次Arnold置乱后,水印图像将恢复原来面目。

下表为不同阶数N下,二维数字图像的Arnold变换周期。

表4.1Arnold变换周期

 

4.3水印算法

4.3.1算法原理

4.3.1.1嵌入算法原理

图4.1水印嵌入流程图

图4.1是嵌入算法流程图。

为了提高传统相关性检测方法的准确率,本算法采取嵌入两个不相关伪随机序列的方法,有效的提高了提取的准确率。

首先将原始图像划分子块,对每一图像块进行DFT变换,将二值水印图像用Arnold变换置乱。

产生两个伪随机序列。

置乱水印矩阵值为0时用一个伪随机序列与原始图像的幅度谱进行乘性叠加,矩阵值为1时,用另一个伪随机序列与原始图像幅度谱进行乘性叠加。

1.子块划分

将原始图像分成8×8的图像子块

 

2.对每一图像块进行DFT变换

然后做FFT平移,对于二维矩阵将一、三象限与二、四象限互换,使得直流分量位于中间。

3.将二值水印用Arnold变换置乱

4.产生两个不相关的伪随机序列

5.修改相应幅度谱值

由于DFT域的幅度谱具有对称性,为了水印嵌入后保持这种对称性不变,也为了确保恢复图像像素值为实数,嵌入水印时采用对称嵌入,即:

式中Amplotude()为取复数的幅度,δ为嵌入信息。

嵌入规则为当水印矩阵元素为‘0’时,将一个伪随机序列与幅度谱对应元素进行乘性叠加。

当水印元素为‘1’时,用另一个伪随机序列与幅度谱对应元素进行乘性叠加。

嵌入时以滤波矩阵选择嵌入块中的位置。

6.对每一图像块进行DFT逆变换,得到含水印图像

 

4.3.1.2提取算法原理

图4.2水印提取流程图

水印提取算法是嵌入算法的逆过程

1.子块划分

将嵌入水印图像分成8×8的图像子块:

2.对每一图像块进行DFT变换

3.产生两个不相关的伪随机序列。

4.计算嵌入水印幅度谱与伪随机序列的相关性,并按照嵌入时的规则产生水印矩阵。

5.将水印矩阵用Arnold变换进行置乱得到提取水印。

 

4.3.2算法的matlab实现步骤

4.3.2.1嵌入算法步骤

Step0.设置嵌入强度系数,滤波矩阵,分块大小并保存开始时间。

Step1.读入原始图像cover_object,并读出其尺寸为Mc×Nc。

Step2.读入水印图像message,并读出其尺寸为Mm×Nm。

Step3.对message进行Arnold置乱,并将置乱后水印图像重新排列为向量message_vector。

Step4.检查水印信息是否过大,如果水印信息过大返回错误信息,“水印信息过大”。

Step5.设置伪随机密钥key,并按照滤波矩阵的1的个数,生成两个不相关的伪随机序列pn_sequence_one,pn_sequence_zero。

Steo6.对原始图像进行8×8分块,并对每一分块进行二维傅立叶变换。

将低频部分移至中间,计算幅值与相位。

如果水印向量元素为零,则pn_sequence_zero嵌入滤波矩阵为1处所对应的幅值。

如果水印向量元素为零,则pn_sequence_one嵌入滤波矩阵为1处所对应的幅值。

Step7.对每一分块进行二维傅立叶逆

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2