数字水印课程设计.docx
《数字水印课程设计.docx》由会员分享,可在线阅读,更多相关《数字水印课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
![数字水印课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/31/04fcfb6e-4550-4eae-a848-8b1710e4e47a/04fcfb6e-4550-4eae-a848-8b1710e4e47a1.gif)
数字水印课程设计
单片机应用实习任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
数字水印算法设计
初始条件:
计算机;matlab软件等。
要求完成的主要任务:
通过课程设计,培养学生根据需要选学参考书,查阅手册,图表和文献资料的自学能力,通过独立思考﹑深入钻研有关问题,学会自己分析解决问题的方法。
培养严谨的工作作风和科学态度,使学生逐步建立正确的生产观点,经济观点和全局观点。
每个学生在课程设计选题中选做一个专题,学会用MATLAB语言编写信号与系统及数字信号处理的仿真程序;认真分析每个题目的具体要求;上机前初步编好程序,上机时认真调试程序;课程设计结束时提交符合格式要求的课程设计报告。
学习掌握一种数字水印算法,选择两幅图像分别作为版权图像和水印图像,采用水印嵌入算法成生含水印图像。
采用水印提取算法,提取出嵌入水印。
并对水印算法的鲁棒性进行测试。
时间安排:
2012年6月20日---2012年7月5日
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
随着数字技术和互联网技术的迅速发展,许多媒体都采用了数字化的储存方式,并且通过互联网来发布,这给信息的传播带来了很大的便利。
但是数字媒体很容易被非法复制,其版权保护逐渐成为需要迫切解决的问题。
数字水印技术被认为是解决此问题最有效的方法,作为版权保护的重要手段而得到了广泛的研究和应用,是信息领域的一个研究热点。
数字水印技术涉及到大量图像处理算法数学计算工具等,用普通编程工具实现上述算法将要花费大量的时间。
MATLAB语言是MathWorks公司推出的一种简单高效功能极强的高级语言,具有高性能数值计算能力和可视化计算环境许多复杂的计算问题只需短短的几行代码就可在中实现。
本文基于典型的DCT离散余弦变换数字水印算法过程,用MATLAB实现数字水印的嵌入提取和攻击测试。
关键词:
数字水印,DCT,MATLAB
Abstract
AlongwiththedigitaltechnologyandtherapiddevelopmentofInternettechnology,manymediahaveadopteddigitalstorage,andthroughtheInternettorelease,whichgiveinformationtransmissionhasbroughtgreatconvenience.However,digitalmediacanbeillegallycopied,itscopyrightprotectionhasbecomeanurgentneedtoaddresstheproblem.Digitalwatermarkingtechnologyisconsideredtobethemosteffectivemethodtosolvethisproblem,asanimportantmeansofcopyrightprotectionhasbeenwidelystudiedandapplied,isaresearchhotspotinthefieldofinformation.Digitalwatermarkingtechnologyinvolvesalargenumberofimageprocessingalgorithmsmathematicaltools,usingordinaryprogrammingtoolstoachievetheabovealgorithmwillhavetospendalotoftime.TheMATLABlanguageisMathWorkscompanyintroducedasimpleefficientandhighlyfunctionallanguage,withahighperformancenumericalabilityandvisualcomputingenvironmentmanycomplexcomputingproblemsinonlyafewlinesofcodecanrealizeinthe.BasedonthetypicalDCTdiscretecosinetransformdigitalwatermarkingalgorithm,usingMATLABrealizedigitalwatermarkingembeddingandextractingandattacktest.
Keywords:
digitalwatermarking,DCT,MATLAB
1引言
1.1选题背景
数字水印技术是目前信息安全技术领域的一个新方向,是一种可以在开放的网络环境下保护版权和认证来源及完整性的新型技术。
它是信息隐藏学的一个重要分支,它用信号处理的方法在多媒体数据中嵌入特制的隐蔽的标记,这种标记的嵌入不会引起宿主媒体主观质量下降,不易察觉,人们无法从表面上感知水印,只有专用的检测器或计算机软件才可以检测出隐藏的数字水印,并且水印具有很强的对抗非法破解的能力。
为了保护版机人的经济利益在数字作品上直接标识版权人的信息会明显损害作品的质量,而利用文件的附加信息标识版权又很不安全。
相比之下,在不过多损害作品质量的前提下,使用数字水印技术将版权管理信息秘密嵌入数据中,是一个非常理想的解决方案。
从学术研究角度而言,数字水印技术是一项横跨信息处理、图像处理、多媒体技术、密码学等多学科领域的高新技术前沿课题,包括数字水印在内的信息隐藏技术尚未形成完整的学科理论体系。
因此,这是一项重要的应用基础研究。
同时它又是一项与实际应用密切结合的高新技术,其成果将成为拥有自主知识产权的技术,发展为具有自身特色的软件产品和专用芯片,随着信息产业的发展,有着一份广阔的应用市场。
数字水印的提出引起了学术界极大的兴趣,到现在短短的几年时间,就有大量的数字水印算法被提出来。
那么,如何既方便又高效的实现这些算法呢?
数字水印算法涉及大量图像处理、数学计算等,如果仅仅采用普遍编程工具所提供的功能严实再次地花费大量的时间用在上述算法的编程及调试上。
因此选择一种高性能的科学与工程计算软件是很在必要的。
目前,在工程计算上应用十分广泛的MATLAB软件是首选的编程语言。
MATLAB是一个适合多个学科使用的功能强大的软件,含有十分浩大的函数,MATLAB语言是Mathworks公司推出的一种简单、高效、功能极强的高级语言,具有高性能数值计算能力和可视化计算环境。
许多复杂的计算问题只需短短的几行代码就可在MATLAB中实现。
本文介绍典型的数字水印算法,用MATLAB实现数字水印的嵌入、提取和攻击测试的方法。
1.2数字水印技术的研究动态
数字时代的到来,多媒体数字世界丰富多彩,数字产品几乎影响到每一个人的日常生活。
信息媒体的数字化为信息的存取提供了极大的使得,同时也显著地提高了信息表达的效率和准确度。
计算机网络通信技术特别是互联网的蓬勃发展,使得数据的交换和传输变成了一个相对简单且快捷的过程。
人们借助计算机、数字扫描仪、打印机等电子设备可以方便、迅速地将数字信息传达到世界各地,在国际互联网上发布自己的作品,传递重要的信息,进行各种学术交流和电子商务活动等等。
如何保护这些与我们息息相关的数字作品,如版权保护、信息安全、数据认证以及访问控制等等,就被日益重视并变得迫切需要了。
借鉴普通水印的含义和功用,人们采用类似的概念保护诸如数字图像、数字音乐、数字文本等这样的数据,因此数字水印在今天的计算机和互联网时代大有可为。
数字水印技术是近十年才发展起来的,它是信息隐藏学的一个分支(如图1.1)。
随着国内信息化程度的提高和电子商务逐渐走向实用,数字水印技术将会拥有更加广阔的应用前景。
图1.1信息隐藏技术的分类
2数字图像水印技术综述
数字水印是一种数字标记,可以是数字、序列号、文字、图像标志等标识或版权信息,一般包括版权所有者的标记或代码,以用能证实用户合法拥有数据的用户代码等基本信息,将它秘密地内嵌到数字产品中可能帮助识别确定产品的内容、著作权、使用权、完整性等。
水印技术与传统的信息加密都是把信息的保护转化为对密钥的保护。
因此,水印技术沿袭了传统加密技术的一些基本思想和概念,但两者采用的保护信息手段不同:
传统的加密算法一般是基于文本数据设计的,它把一段有意义的数据流转换成看起来没有意义的数据,如DES(DataEncryptionStandard)和RSA(以三个发明者的首位字母命名)。
由于将明文数据加密成密文数据,使得在网络传递过程中非法拦截者无法从中获得信息,从而达到保密的目的。
虽然,我们可以把媒体数据作为文本数据流一样看待,使用传统的加密算法进行加密,但是,多媒体数据流具有的特性与文本数据的特性有很大不同。
因此,目前的传统加密方法如DES、3-DES或RSA等也很难满足多媒体应用中的实时性等要求。
而数字水印技术则是把一个有意义的信息隐藏在另一个称为载体信息的公开信息中,而可能的监测者或非法拦截者难以从公开信息中判断机密信息是否存在或截获机密信息,从而保证机密信息的安全。
2.1数字水印的定义和基本原理
从信号处理的角度看,在载体图像中嵌入数字水印可以视为在强背景(即原始图像)下叠加一个视觉上看不到的弱信号(水印),由于人的视觉系统(HVS),分辨率受到一定的限制,只要叠加信号的幅度低于HVS的对比度门限,HVS就无法感觉到信号的存在,因此,通过对载体对象作一定的调整,就有可能在不引起人感知的情况下嵌入一些信息。
所有水印系统都包括两个基本的构造模块:
水印嵌入模块和水印提取或检测模块。
数字水印技术实际上是通过对水印载体媒质的分析、嵌入信息的预处理、信息嵌入点的选择、嵌入方式的设计、嵌入调制的控制等几个相关技术环节进行合理优化,寻求满足不可感知性安全可靠性稳健性等诸条件约束下的最优化设计问题。
2.1.1水印嵌入模块
水印嵌入模块就是把水印信号w嵌入到原始图像I,从而得到含水印信号
。
水印嵌入过程如图2.1所示。
图2.1水印嵌入框图
2.1.2水印提取或检测模块
水印提取或检测就是判断某一数据中是否含有指定的水印信号,并可能恢复出水印信息。
提取或检测算法主要是设计一个相应于嵌入过程的检测算法。
检测的结果或是原水印(如字符串或图像等),或是基于统计原理的只能判断水印存在与否。
检测方案的目标是使错判与漏判的概率尽量小。
为了给攻击者增加去除水印的难度,目前大多数水印制作方案都在水印加入、提取时采用密钥,只有掌握密钥的人才能读出水印。
水印的提取过程如图2.2所示,检测过程如图2.3所示。
图2.2水印提取框图
图2.3水印检测框图
2.2基于DCT域的数字水印技术
离散余弦变换(DiscreteCosineTransform)属于正交变换图像编码方法中的一种。
正交变换图像编码始于1968年。
当时安德鲁斯(Andrews)等人发现大多数自然图像的高频分量相对幅度较低,可完全舍弃或者只用少数码字编码,提出不对图像本身编码,只对其二维傅立叶(DFT)系数进行编码和传输。
但DFT是一种正交变换,运算量很大,常常使实时处理发生困难,第二年他们就用Walsh-Hadamard变换(WHT)取代DFT可以使运算量明显减少,这是因为WHT变换只有加减法而无需乘法。
但是更有意义的是离散余弦变换和离散正旋变换的出现,它们具有快速算法,精确度高。
其中最重要的是1974年提出的DCT,因为其变换矩阵的基向量很近似于托伯利兹矩阵的特征向量,而托伯利兹矩阵又体现了人类语言及图像信号的相关性。
因此,DCT常常被认为是语音与图像信号变换的准最佳变换。
图像是二维的,所以在研究时主要用到二维DCT,以及二维IDCT来对图像进行处理。
2.2.1离散余弦变换(DCT)的定义
数字图像X(m,n)是具有M行N列的一个矩阵。
为了同时减弱或去除图像数据相关性,可以运用二维DCT,将图像从空间域转换到DCT变换域。
根据定义,二维离散余弦变换(DCT)定义如下:
(1)
式中:
m,k=0,1,…,M-1;n,
=0,1,…,N-1。
二维逆离散余弦变换(IDCT)的定义如下:
(2)
式中:
m,k=0,1,…,M-1;n,
=0,1,…N-1。
2.2.2离散余弦变换的特点
在基于DCT的变换编码中,图像是先经分块(8×8或16×16)后再经DCT,这种变换是局部的,只反映了图像某一部分的信息。
当然也可以对整幅图像的特点,但是运算速度比分块DCT要慢。
图像经DCT后,得到的DCT图像有三个特点:
一是系数值全部集中到0值附近(从直方图统计的意义上),动态范围很小,这说明用较小的量化比特数即可表示DCT系数;
二是DCT变换后图像能量集中在图像的低频部分,即DCT图像中不为零的系数大部分集中在一起(左上角),因此编码效率很高。
三是没有保留原图像块的精细结构,从中反映不了原图像块的边缘、轮廓等信息,这一特点是由DCT缺乏时局域性造成的。
图像DCT变换后大部分参数接近于零,只有左上角的低频部分有较大的数值,中频部分参数值相对较小,而大部分高频参数值非常小,接近于零。
2.3工具选择
2.3.1简介
Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。
它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。
Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。
由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signalprocessing)、控制系统(controlsystem)、神经网络(neuralnetwork)、图像处理(imageprocessing)、鲁棒控制(robustcontrol)、非线性系统控制设计(nonlinearsystemcontroldesign)、系统辨识(systemidentification)、最优化(optimization)、模糊逻辑(fuzzylogic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。
2.3.2MATLAB研究数字水印的优点
1集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。
2强大的数学运算功能。
能够方便、高效地实现音频、视频中的大量矩阵运算。
3提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。
用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。
4MATLAB与目前最强大的编程工具——VisualC++具有良好的接口。
2.3.3MATLAB函数介绍
在介绍函数之前,我们必须明确一点:
作水印程序时,处理的图像数据是二维信号,而声音信号是一维信号。
这里,我们仅仅简单介绍与水印有关的函数。
1数据输入输出函数
imread()和imwrite():
可以读写bmp,jpg/jpeg,tif/tiff,png,hdf,pcx,wxd格式文件。
读索引文件时,还可以得到相应的调色板数据。
auread()、auwrite()、wavread()和wavwrite():
可以方便地读写au和wav文件,并可控制其中的位及频率。
图像显示
imshow():
显示一幅图像;imfinfo():
可以得到读入图像的信息。
如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型(真彩色,灰度图还是索引图)等。
变换频函数
对信号采用不同的变换,是实现频域法水印的至关重要的一步,MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。
◆离散余弦变换(DCT)
dct(),dct2():
分别实现一维信号和二维信号的DCT(离散余弦变换);
idct(),idct2():
分别实现一维信号和二维信号的IDCT(逆向离散余弦变换);
攻击函数
对算法进行攻击测试是对水印鲁棒性检测的一种重要手段,一个好的水印算法必须经过各种攻击测试才能对之做出客观的评价。
MATLAB中的许多函数可以直接用来做攻击测试。
剪裁:
imcrop()可以按精确定位的各点坐标进行剪裁;
jpeg压缩:
imwrite()中jpg和quality参数能对图像进行可控jpg压缩;
加各种噪声:
imnoise()可以对图像加入各种噪声,如白噪声、椒盐噪声等,加入噪声是对水印鲁棒性考验的一种常见的攻击;
放大/缩小:
imresize()可以以指定的插值方法来对图像进行放大和缩小
3系统实现
3.1水印的嵌入算法
设X=f(x,y)为原始宿主图像,大小为
;flag为水印图像,大小为
。
、
分别是
、
的偶数倍。
水印的嵌入步骤如下:
Step1:
将原始宿主图像分成互不覆盖的子块,块的大小为8x8,记为Xm=fm(
)。
其中m=1,2,…,(
/8)x(
/8),0≤
,
≤8。
Step2:
并根据载体图像的块数,将大小为
、
水印图像w(x,y)分成互不覆盖的子块,块的大小为(
x8/
)x(
x8/
),记为Wm=wm(
)。
Step3:
将载体图像块逐一DCT变换,记为
Ym=DCT(Xm)=Fm(u,v),
其中Fm(u,v)为第m个图像离散余弦变换后空间频率(u,v)处的大小。
Y为从Fm(u,v)中频选出的加载的位置,1≤r≤(
x8/
)x(
x8/
);Wb(r)为水印Wm=wm(
)位置坐标。
按照加法准则,将水印块嵌入其中。
公式如下:
。
其中,
为强度因子,然后用
来代替嵌入水印后的DCT中频系数。
Step4:
对各子块DCT反变换,得到嵌入水印后的图像
。
3.2水印的提取算法
水印提取是水印算法中的关键部分,是水印嵌入的逆过程。
水印提取过程如下:
首先将含水印图像分别分成互不覆盖的子块,块的大小为8×8,记为X’m=f’(x’,y’)。
其中m=1,2…,(
/8)x(
/8),0≤x’,y’≤8
对每一个子块进行二维DCT反变换,然后提取水印嵌入位置的中频系数,利用公式wb(r)=Yr/
计算出水印信息,最后合并成整图。
4.MATLAB仿真
MATLAB中对一维信号和二维信号分别提供了各种变换和逆变换函数。
例如dct()、dct2()分别实现一维信号和二维信号的DCT(离散余弦变换),idct()、idct2()分别实现一维信号和二维信号的IDCT(逆向离散余弦变换)。
它们是实现频域水印算法必不可少的工具。
下面以256×256的灰度图像lena为原始宿主图像、以32×32的二值图像flag为水印图像为例,给出利用MATLAB实现数字水印的过程。
4.1水印嵌入与提取程序运行结果
图4.1水印嵌入与提取
比较【含水印的图像】和【原始公开图像】,仿真结果表明,嵌入水印后图像仍有很好的视觉效果,水印对原始图像的视觉表达几乎没有影响,以至于不易觉察。
比较【水印图像】和【提取的水印】,仿真结果表明,从图像中提取出来的水印图像可以清晰精准识别,验证了嵌入和提取算法的稳定性和有效性。
4.2水印攻击实验
由于数字水印在实际应用中可能会遭到各种各样的攻击,因此对算法进行攻击测试是衡量一个水印算法优劣的重要手段,并测定提取前后水印的峰值信噪比(PSNR)和相关性。
4.2.1压缩攻击
imwrite(J1,'watermarked1.jpg','jpeg','quality',40')
图4.1压缩攻击实验
相关系数为:
0.98265信噪比为:
64.00000
攻击后的图像及压缩攻击后提取出的水印清晰可辨,相关系数趋近于1,信噪比也较高,
说明算法的抗压缩攻击性能良好
4.2.2噪声攻击
1)高斯噪声攻击实验
I2=imnoise(J2,'gaussian',0,0.002);
图4.2高斯噪声攻击实验
相关系数为:
0.91698信噪比为:
10.89362
加入均值为0,方差为0.002的高斯噪声后图像微变模糊,攻击后提取出来的水印有较大变化,虽然模糊但仍可辩认,相关系数接近1,信噪比为10.89362,说明算法具有较好的抗高斯噪声性能。
2)椒盐噪声攻击实验
I3=imnoise(J3,'salt&pepper',0.02);
图4.3椒盐噪声攻击实验
相关系数为:
0.83024信噪比为:
6.02353
加入强度为0.02的椒盐噪声后,图像出现许多黑白小斑点,攻击后提取的水印也出现许多斑点,但仍勉强可以辨认出来,相关系数为0.83024,信噪比6.02353,说明算法能有效抵抗椒盐噪声的攻击。
4.2.3剪切攻击
I4(1:
100,1:
100)=255;
图4.4剪切攻击实验
相关系数为:
1.00000信噪比为:
29.25714
对图像进行剪切攻击,剪切去图像的一个角,提取出的水印清晰可辨,但也缺了一个角,相关系数达到1,信噪比高达29.25714,说明算法抗剪切攻击性能良好,但剪切程度越高,水印也会丢失越高。
4.2.4缩放攻击
1)缩小攻击实验
I5=imresize(J5,0.5);
图4.5缩小攻击实验
相关系数为:
1.00000没有噪声
对图像进行缩小处理后,提取出来的水印清晰可辨,相关系数达到1,说明算法具有优秀的抗缩小攻击性能。
2)放大攻击实验:
图4.6放大攻击的图片图4.7放大攻击实验结果
相关系数为:
1.00000没有噪声
对图像进行放大处理后,提取出来的水印清晰可辨,相关系数达到1,说明算法具有优秀的抗放大攻击性能。
6总结
数字水印技术在多媒体,尤其是图像的内容认证中得到了广泛的使用,也引起了人们越来越多的重视。
本文针对DCT域的图像数字水印进行了全面的学习和研究,实现了一个基于DCT域的图像数字水印,并模拟各种攻击验证该水印算法的鲁棒性。
在实验过程中,学习MATLAB的使用和编程;详细了解了数字水印的知识,从数字水印的发展历史到目前最新的研究方向,数字水印的特点、分类以及几种主要的算法都有涉及到;针对本课题,更主要的掌握了关于DCT域水印算法的设计和实现的相关知识,基于变换域的水印算法的设计方法,HVS在基于变换域水印算法设计中的应用,通用的水印测试方式和主要采取的攻击方式等等。
实验表明,基于DCT域的水印算法,可保证水印的不可见性,保持的健壮性,并易于应用。
总之,数字水印技术的研究是近几年发展很快也很活跃的领域,随着研究的深入,数字水印技术正在发展成一门颇有现实意义的技术学科,我们有理由认为,作为一门新的迅猛发展的技术,数字水印技术必将拥有一个美好的明天。
7参考文献
1.王炳锡,陈琦,邓峰森.数字水印技术.西安电子科技大学出版社.2003.7
2.王家文,曹宇编著.MATLAB6.5图形图像处理.国防工业出版社.2004