基于DWT的图像压缩及数字水印设计

上传人:每**** 文档编号:56112877 上传时间:2022-02-20 格式:DOC 页数:36 大小:1.41MB
收藏 版权申诉 举报 下载
基于DWT的图像压缩及数字水印设计_第1页
第1页 / 共36页
基于DWT的图像压缩及数字水印设计_第2页
第2页 / 共36页
基于DWT的图像压缩及数字水印设计_第3页
第3页 / 共36页
资源描述:

《基于DWT的图像压缩及数字水印设计》由会员分享,可在线阅读,更多相关《基于DWT的图像压缩及数字水印设计(36页珍藏版)》请在装配图网上搜索。

1、“数字图像处理”课程设计基于DWT的图像压缩及数字水印系统设计班级:13电信A1组长:高利组员:余世芝、石燕、张冰 王娜娜、蒋锐2016年1月4推荐精选摘 要随着网络带宽、计算能力、图像压缩技术和存储设备的快速发展,人们对图像压缩技术及数字图像水印技术提出了更高的要求,良好的图像压缩技术不仅能实现高压缩率和高保真度,还能满足图像存储及图像数据传输的现实要求。数字化图像数据的使用与传播的普及,为数字图像在版权保护、认证、防拷贝、防篡改、保障数据安全等方面提供了有效的技术手段。采用密码学的加密与解密技术虽然能够保护数字产品的安全传输,但不能保证数字产品解密后的盗版问题。为解决这一问题,在原图像中加

2、入不可见的信息来标注版权是近年来图像技术研究领域的一个热点。目前提出的数字水印的嵌入方法大致可以分为空间域数字水印和变换域数字水印两大类。 从总体性能来看,变换域的方法比空间域的方法有更多的优越性。基于变换域的数字水印技术又分为 DET(离散傅氏变 换)、DCT(离散余弦变换)、DWT(离散小波变换)等。由于小波变换具有很好的时域频域特性,作为一种多分辨率的分析方法,小波变换成为新一代静止图像压缩标准JPEG-2000和运动图像压缩标准MPEG-4 中的一种关键的技术,所以基于小波变换的数字水印研究是非常必要。MATLAB作为一款高性能的数值计算和可视化软件,为图像压缩及数字水印的嵌入与提取提

3、供了方便。关键词:图像压缩,数字水印,MATLAB,小波变换,嵌入与提取推荐精选目录1 引言42 基于DWT的图像压缩和数字水印方法42.1 基于DWT的图像压缩42.1.1图像压缩编码的目的与可能性42.2 数字水印方法52.2.1数字水印系统的组成52.2.2基于DCT领域的鲁棒水印的实现72.2.3基于空域的脆弱水印实现82.2.4水印的提取及篡改检测93 基于DWT的图像压缩和数字水印的Matlab实现93.1基于DWT的图像压缩的Matlab实现93.1.1基于DWT的图像压缩的设计与实现93.2数字水印的Matlab实现143.2.1数字水印的嵌入与提取143.2.2基于空域的脆弱

4、水印实现153.2.3水印的提取及篡改检测163.2.4数字水印嵌入与提取的比较与分析184 结束语19参考文献20附录:程序源代码21推荐精选1 引言今天,计算机及网络的告诉发展为数字作品的传播提供了便利的途径。但人们在享受计算机技术带来便捷的同时又遇到了空前未有的作品传输速率与保护的难题。人们既希望自己的作品能迅速传播和被他人便捷使用,又希望享有自己作品的版权,使自己的作品得到法律保护,防止非法复制和拷贝。显然,传播和保护是一对矛盾,是当今网络世界中出现的,又必须解决的新问题。图像压缩主要研究数据的表示、传输、变换和编码方法,目的是减少存储数据所需的空间和传输所用的时间。利用图像数据固有的

5、冗余性和相关性,对图像数据按照一定的规则进行的将一个大的数据文件转换成较小的同性质的文件的变换和组合,从而达到在一定时间内传输更多的信息的目的。数字图像未经压缩时,其数据量很大,既浪费空间,也不适于传输。这对计算机的存储以及网络传输都造成了极大的负担。可见,没有图像编码与压缩技术的发展,大容量的图像信息的存储于传输是难以实现的。数字水印技术是通过一定的算法将一些标志性信息直接嵌入到多媒体内容中,但不影响内容的价值和使用,并且不能被人的感知系统察觉到或注意到,只有通过专用的检测器或阅读器才能提取的一种技术,嵌入的水印因袭隐藏于宿主文件中,不影响原始文件的可观性和完整性。在接收端,通过计算机水印信

6、号被提取出来用于各种目的。因此数字水印被视做抵抗多媒体盗版的“最后一道防线”。因此从水印技术自身来说,它具有广泛的应用前景和巨大的经济价值。2 基于DWT的图像压缩和数字水印方法2.1 基于DWT的图像压缩2.1.1图像压缩编码的目的与可能性信息是现代社会的主要特征,而人们传递信息的重要媒介是图像,数据量大是数字图像的一个显著特点,一幅具有中等分辨率(640*480)的彩色(24bit/像素)数字图像的数据量约7.37Mbit,这给数字图像的存储与传输带来极大的困难。因此,图像压缩就显得至关重要。它既是当代信息高速公路,HDTV,可视电话,图文传真等技术的关键,又在航空遥感,资源探测及生物医学

7、工程等领域起着非常重要的作用。图像数据压缩是指在满足一定图像的条件下,用尽可能少的数据量来表示图像,即如何最大限度地压缩图像数据,而又能保证利用这些数据所重建的图像是用户能接受的。组成图像的各像素之间,无论是在图像的行方向还是在列方向,都存在一定的相关性这样的相关性带来图像信息的冗余。常见的静态图像数据冗余包裹:空间冗余,结构冗余,知识冗余,视觉冗余,图像区域的相同性冗余,纹理的统计冗余。图像的各种冗余为图像压缩编码提供了可能。 而利用DWT变换进行压缩,它的小波变换的结果是将图像的二级小波分解示意图见图一,小波分解的结果是将图像分解成了子图像的集合,在第一级小波分解时,原始图像被分解成了一个

8、低频子图像LL1(对应原图像在低分辨率上的一个近似)和三个高频子图像HL1,LH1和HH1(分别对应水平方向,垂直方向和对角线方向的细节)的集合,在第二集小波分解时,低频子图像LL1被继续分解为更低分辨率的一个低频子图像LL2和三个 高频子图像HL2,LH2,HH2的集合,而原来的第一级分解得到的三个高频子图像不变。 综上述分解过程中可以一直继续下去,这样就得到越来越多的低尺度子图像,图像的小波重构正好相反,即用低尺度的子图像,逐级通过小波逆变换重构出一幅高尺度的图像,直至得到与原图像大小相同的重构图像推荐精选 图2.1 图像小波分解示意图2.2 数字水印方法 数字水印的基本原理是往图像、声音

9、、视频信号等多媒体数据中添加某些数字信息(水印)而不影响原始数据的视听效果,并且这些数字信息可以部分或全部从混合数据中恢复出来,以达到版权保护等作用。数字水印具有安全性、鲁棒性、透明性及保真性等特点。 通俗的说,数字水印(Digital Watermarking)指把一些标识信息(即数字水印)直接嵌入数字载体当中或是间接表示,且不影响原载体的使用价值,也不容易被探知和再次修改。数字水印可以被生产方识别和辨认,通过隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是保护信息安全、实现防伪溯源、版权保护的有效办法,是信息隐藏技术研究领域的重要分支

10、和研究方向。2.2.1数字水印系统的组成 在介绍数字水印系统设计之前,首先了解一下数字水印系统的组成。一个数字水印系统一般包括3个基本方面:水印的生成,水印的嵌入和水印的提取或检测。数字水印技术实际上是通过对水印载体媒质的分析、嵌入信息的预处理、信息嵌入点的选择、嵌入方式的设计、嵌入调制的控制等几个相关技术环节进行合理优化,寻求满足不可感知性、安全可靠性、稳健性等诸条件约束下的准最优化设计问题。而作为水印信息的重要组成部分密钥,则是每个设计方案的一个重要特色所在n。往往可以在信息预处理、嵌人点的选择和调制控制等不同环节入手完成密钥的嵌人。推荐精选图2.2 数字水印嵌入过程基本框架示意图 图2.

11、3 水印检测的一般过程基本框图图2.2.展示了水印的嵌入过程。该系统的输入是水印信息W、原始载体数据I和一个可选的失钥/公钥K。其中原始载体数据I代表要保护的多媒体产品,如图像、文档、音频、视频等;水印信息W可以是任何形式的数据,如字符或栅格;二值图像、灰度图像或彩色图像;3D图像等等。水印生成算法G应保证水印的唯一性、有效性、不可逆性等属性。秘钥K可用来加强安全性,以避免未授权的恢复和修复水印。所有的实用系统必须使用一个秘钥,有的甚至使用几个秘钥的组合。水印的嵌入算法很多,下式给出了定义水印嵌入过程的通用公式: (2-1)式中,表示嵌入水印后的数据(即水印载体数据);表示原始载体数据;W表示

12、水印集合;K表示秘钥集合。这里密钥K是可选项,一般用于水印信号的再生。图二是水印的检测过程。由图2.3可以定义水印的检测过程的通用公式如下。需要原始载体数据进行检测:推荐精选 (2-2)需要原始数据W进行检测: (2-3)无需原始数据信息即可进行检测: (2-4)式中, 表示是估计水印;D为水印检测算法; 表示在传输过程中受到攻击后的水印载体数据。检测水印的手段可以分为两种:一是在有原始信息的情况下,可以做嵌入信号的提取或相关性验证;二是在没有原始信息的情况下,必须对嵌入信息做全搜索或分布假设检验等。如果信号为随机信号或伪随机信号,证明检测信号是水印信号的方法一般就是做相似度检验。水印相似度检

13、验的通用公式为: 或 (2-5)式中, 表示估计水印;W表示原始水印;Sim表示不同信号的相似度。2.2.2基于DCT领域的鲁棒水印的实现 水印的嵌入,基于DCT的鲁棒水印嵌入流程图所示图2.4 基于DCT的鲁棒水印嵌入流程原始图像按8*8分块,首先计算所有子快的方差值,并选择方差最大的前n块的Xn,然后依据系统密匙K在其DCT中嵌入随机序列pn_sequence_zero,最后通过子模块的DCT逆变换生成含水印的图像具体步骤如下:(1)原始图像的分块DCT分块DCT变换为了与国际压缩标准兼容,以便算法可以在压缩中实现,将原始图像分割为互不重叠的8*8子块,再对每个子块进行DCT变换。推荐精选

14、(2)基于纹理掩蔽特性的块分类,根据人类视觉系统的照明掩蔽特性和纹理掩蔽性可知:背景的亮度越高,纹理越复杂,人类视觉系统对其轻微的变换就越不敏感,因此,为了实现原始图像和嵌入式水印后图像之间的感知相似性,应该将水印信号尽可能地嵌入到图像中纹理教复杂的子块,此处将子块的方差作为衡量子块纹理的复杂程度。计算子块的平均灰度m和方差,公式为 (2-6) (2-7)方差的大小反应了块的平滑程度,当2较小时,块比较均匀,反之,则块包括着较复杂的纹理子块,当将过多的信息嵌入到图像的平滑区域,容易引起块效应现象,导致品质的下降,根据对人眼视觉模型的分析,将水印图像嵌入到纹理复杂区域符合水印算法的要求,具体可使

15、用MATLAB的SORT函数对方差值进行从小到大排序,以便将水印嵌入到纹理复杂的子块中。(3)水印的产生和嵌入,将二值水印图像组成一维矢量,作为水印信息。在水印的嵌入过程中,采用的是一种基于DCT中频的数字水印技术。通过对人类视觉系统的研究,发现人眼对于低频部分的噪声相对敏感,为了使水印不易被察觉,应将水印嵌入到较高频的部分;但是将水印信息嵌入到高频部分,很容易被量化、低通滤波等处理而丢失信息,影响水印的鲁棒性。为了解决低频和高频的矛盾,这里采用折中的办法,将水印信息嵌入到宿主图像的中频部分。图中就是要嵌入水印的子块中频位置。具体嵌入位置由K与Sequence参数决定。图2.5 嵌入水印的子块

16、中频位置2.2.3基于空域的脆弱水印实现通过脆弱水印技术可以判断多媒体内容(如图像)是否完整,防止非法篡改和伪造,即使图像发生轻微的变化,也能通过媒体对水印信息的检测来鉴定图像信息的真伪,判断是否发生篡改并对其篡改的部分进行定。因此,脆弱水印技术再电子商务,新闻出版,医学数据库等诸多领域具有广阔的应用前景。推荐精选图2.6 LSB水印嵌入算法框架图水印嵌入步骤如下:(1)将原始图最低有效值(LSB)清0,并分为互不重叠的8*8图像快X.(2)计算每个8*8块分解(如基于LU分解)后矩阵U的迹,并将其作为嵌入的水印信息C(S).(3)使用mean2()函数计算每个8*8块想邻近16邻近每图像块的

17、均值,并嵌入到该8*8图像块特定的LSB位。为了减少该类纠错信息的嵌入量,提高水印信息的不可见性,仅取均值的十分位作为用于防止拼贴攻击的水印信息。(4)再将步骤(2)中的计算的水印信息C(s)嵌入到由位置矩阵B决定的8*8图像块中相应的LSB位,嵌入判别公式为其中,0k7,0j7 (2-8)2.2.4水印的提取及篡改检测篡改检测的框架如图所示 图2.7 篡改检测算法框架图篡改检测步骤如下:(1)将待检测图像分为互不重叠的88图像块(2)与水印嵌入过程类似,计算出每个88块的水印信息(s)(3)将步骤(2)中计算的水印信息与LSB平面提取得数值相(s)比较,若相异则可发生篡改。篡改表示函数为推荐

18、精选 (2-9)与水印嵌入过程类似,使用mean2()函数计算每个88块邻近16邻近每图像块的均值。与该88图像块特定的LSB位提取出的信息相比较,若相异也判断发生篡改。3 基于DWT的图像压缩和数字水印的Matlab实现3.1基于DWT的图像压缩的Matlab实现3.1.1基于DWT的图像压缩的设计与实现本实验是基于DWT的图像压缩,即离散小波变换(小波分解)。采取放弃变换域3个细节分量的方法,来进行压缩。 图3.1 实验流程图(1)调用dwt2函数将原始图像进行一级分解,得出近视分量(ca1)及水平细节分量(ch1)、垂直细节分量(cv1)和对角线细节分量(cd1)。推荐精选 图3.2 图

19、像一级分解示意图(2)一级分解后,得到的近似分量就是原始图像的低频分量,其对于图像的整体内容并没有多大的改变。只是降低了图像的分辨率。当图像分辨率降低时,即实现了图像的压缩。由此可知,只要图像重构时,保留近似分量,放弃三个细节分量,即可得到压缩后的图像。(3)重构即小波变换的反变换,调用idwt2函数进行图像的一级重构。将代表三个细节分量的系数置零,实现放弃变换域3个细节分量。得到DWT压缩后的图像。,(4)调用imwrite函数将得到的图像存盘,对比和原始图像的内存大小。分析可得,通过本实验实现了图像压缩。 图3.3 图像存盘示意图推荐精选 图3.4 原图像图3.5 压缩图像(5)为了验证本

20、实验的正确性,进行了两次实验,对两组数据分析比较可发现本实验可以实现图像的压缩,且压缩率为29.8%。实验结果图i.压缩lena.jpg实验结果图图3.6 压缩lena.jpg实验结果图 推荐精选图3.6 压缩lena.jpg 实验结果图ii.压缩cameraman.tif实验结果图图3.7 压缩cameraman.tif 实验结果图图3.8 压缩cameraman.tif 实验结果图推荐精选表3.1实验结果图片lena.jpgcameraman.tif 原大小 17KB64KB 压缩后大小 5KB 17KB通过对不同图片格式的压缩试验可知,本实验可以实现对图像的压缩。3.2数字水印的Matl

21、ab实现3.2.1数字水印的嵌入与提取数字水印的嵌入与提取框图如下:图3.9 数字水印的嵌入与提取框图(1)水印的嵌入过程嵌入过程中设计多个一维数组,在具体的实现过程中,先将一维数组fc_o全职为1,方差数组fc按降序排序得到方差最大的前n数值,组成数组B;其次,修改方差最大的图像块对应的fc_o(i)值,使得fc_o(i)=message(1);修改方差次之的图像块对应的fc_o(i)值,fc_o(i)=message(2);依次类推,修完m个数值得到一堆数组message_vector;最后message_vector(i)为0的块作为实际嵌入水印的图像块,当选定的图像进行DCT逆变换,生

22、产含水印图像。 图3.10 水印嵌入前后及嵌入的水印图像(2)水印的提取过程推荐精选基于DCT的数字水印提取过程设计的环节,先将嵌入水印的待检测图像在DCT域进行求差运算,比较相关性,确定序列message_vector,接着根据图像块的方差值得大小确定纹理块,从而确定曾经水印的嵌入位置,然后与嵌入时的步骤相似,根据序列message_vector以及纹理块复杂度的次序形成一堆水印序列,最后将水印序列重新组成二维水印恢复图像,并据此进行图像的版权认证。图3.11 待提取水印图像与水印图像及提取的水印图像(3)嵌入水印后的攻击性实验鲁棒水印的主要目的在于保护数字作品的版权,它要求嵌入后的水印能经

23、受各种常用的信号处理操作,即图像的攻击。鲁棒水印在经过各种处理后,只要宿主信息没有被破坏到不可使用的程度,都应该能够检测出来。本实验的目的在于验证以上观点,验证鲁棒水印的鲁棒性,说明经过鲁棒水印的图像,修改该图像依旧能检测到水印。本实验利用Laplacian算子对已经嵌入水印的图像进行边缘增强处理,即攻击图像。详细程序见附件4。得到的实验结果如下图所示。由实验结果可知,本实验验证了水印的鲁棒性。图3.12 攻击实验结果图3.2.2基于空域的脆弱水印实现 基于空域的数字水印算法一般修改图像的像素值,将水印信息直接加载在数据上,该类方法最具有代表性的是最低有效位(LBS)法.最低有效位是指通过修改

24、图像像素值的最低有效位,以达到将水印信息嵌入到宿主图像;一旦图像被篡改,最低有效位的信息也随之改变,就能通过相应的检测程序定位发生篡改的区域。此过程中用于完成脆弱水印的主要函数如下:(1) 函数名:scd格式:svd(X)功能:实现矩形X的奇异值分解。如【U,S,V】=svd(ZM(9:17,1:8)其功能为将矩阵ZM中指定的矩阵(ZM中第9-17行,第1-8列)进行奇异值分解,生成3个矩阵U,S和V,使得X=U*S*V,其中S为对角矩阵,V推荐精选为V的转置阵。(2) 函数名:qr格式:qr(X)功能:实现矩阵X的QR分解。如【Q,R】=qr(ZM(9:17,1:8) 其功能为将矩阵ZM中指

25、定的矩阵进行QR分解,生成两个矩阵Q和R,使得X=QR,其中R为上三角矩阵。 矩阵的LU分解与矩阵的QR分解类似,也是将矩阵X分解为两个矩阵的乘积形式,即X可分解成X=LU,其中U亦为上三角矩阵。 矩阵的均值,奇异值分解值,QR分解值,LU分解值及矩阵的迹均可以作为每个图像块独有的特征。本节将具体结合图像块的分解值(基于奇异值分解。QR分解或LU分解)以及均值作为每个图像块的特定水印信息,完成脆弱水印的完整性认证。图3.13 原始图像及嵌入水印图的篡改后的图像3.2.3水印的提取及篡改检测测试图像提取水印提取特征测试图像判断检测水印信息有篡改给出篡改信息无篡改 采用mean2算法对嵌入后的图像

26、满足了脆弱水印对嵌入信息不可见性的要求,为了测试篡改图像的检测能力及定位能力,添加水印后的图像也进行了相应的篡改,使用MATLAB中的mean2()函数增加各子块间的相关性及系统的安全性,水印的提取及篡改检测的基本框架如下: 密钥 图3.14 基本框架图推荐精选 图3.15 待提取水印图像及检测篡改图像 图3.16 检测篡改图像(放大图像) 推荐精选3.2.4数字水印嵌入与提取的比较与分析 (a)原始lena图像 (b)采用mean2算法嵌入水印后 Lena图 (c) 嵌入水印后图像发生篡改 (d) 检测篡改效果图图3.17 数字水印嵌入与提取的比较与分析 图(a)为256*256的灰度图像“

27、lena”,图(b)为嵌入水印后的“lena”图,该图具有较高的峰值信噪比,满足脆弱水印对嵌入信息不可见性的要求。 将含水印(179:250,183:230)区域的图像复制到(65:136,209:256)区域。图(d)中黑色部分代表该算法可以检测出篡改区域。实验结果表明,该算法不仅可以精确定位篡改的位置,而且由于使用了MATLAB中的mean2( )函数增加各子块间的相关性以及系统的安全性,从而有效的防止了“拼贴攻击”。推荐精选4 结束语本实验达到了前面引言中所提出目的,解决了作品传输速率与保护难的这个问题。本设计基于DWT的图像压缩,即离散小波变换(小波分解)。采取放弃变换域3个细节分量的

28、方法,来进行压缩。而传统的基于DWT的压缩感知图像融合方法针对的是整个稀疏系数,由于小波系数的低频部分为非稀疏的,导致其压缩重构质量差。针对该问题,提出了一种基于DWT高频系数压缩测量的融合方法,该压缩模式可以提高重构信号的质量,进而提高融合图像的效果。首先,对图像作小波稀疏变换,得到低频和高频系数,并对高频系数压缩测量得到测量值;然后,在小波域和压缩域分别进行融合,并对融合后的测量值进行重构得到融合后的高频系数;最后,经小波逆变换得到融合后的图像。实验结果表明,本压缩感知模式较传统的压缩感知模式在减少压缩数据量的同时提高了图像的融合效果。本实验中数字水印相关部分实现了预期期待功能。目前,数字

29、水印技术的重点是:利用信息论、通信理论、信号处理理论、传统密码学理论和信息传输理论等知识来建立数学水印理论,形成完善并且合理的数字水印评价标准。整个实验过程加深了我们小组对整个课题的立即,即首先对一副图像进行加水印,成功加入水印后获得新图像,再对获得的新图像进行水印提取,整个过程中由于图片名字及各式没有一一对应,中间走了很多弯路,查出原因后顺利地得出了结果。通过控制水印嵌入图像来控制水印的嵌入及提取过程,实际嵌入图像中的是根据一定规则生成的随机序列。也可以直接将文本图像嵌入到原始图像中。不过,两种算法都需要注意嵌入的水印的尺寸一定要小于原始图像的尺寸。此次实验使我们意识到当前学习的不足之处,也

30、意识到有时候实验时无从着手的原因,在图像压缩机数字水印上还有很多需要我们学习的地方,我们将会在课下花更多时间去学习,以弥补当前学习的不足。推荐精选参考文献1 龚声蓉, 刘纯平, 赵勋杰等. 数字图像处理与分析M. 北京: 清华大学出版社, 2015.1.2 孙圣和, 陆哲明. 数字水印处理技术J. 电子学报, 2000, 28(8): 85-90.3 董刚, 张良等. 一种脆弱性数字水印算法J. 通信学报, 2003,24(1): 33-38.4 李谦. 基于小波变换和纹理特征的水印算法J. 北京:计算机工程与设计. 2006年, 14期: 2616-2619.5 施建平. 图像数字水印算法的

31、研究.西北工业大学学报J, 2006,(1):27-28.6 杨恒伏, 陈孝威. 小波域鲁棒自适应公开水印技术J. 软件学报, 2003, 14(9): 1652-1660.7 E1-Din,S. N, and M. Moniri. Fragile and Semi-Fragile Image Authentication Based On Image Self-Similarity. IEEE Int. Coff. on Image Processing ICIP2002. 2002: (2): 897-900推荐精选附录:程序源代码1.基于DWT的图像压缩程序源代码:I=imread(ma

32、n.gif);X,map=gray2ind(double(I)/255,256);X=double(X);imshow(X,map);%H.color=1 1 1;figure(H);subplot(2,3,1);nbrow=size(map,1);coded_X=wcodemat(X,nbrow);colormap(pink(nbrow);image(wcodemat(X,nbrow);axis square;title(原图像);%ca1,ch1,cv1,cd1=dwt2(coded_X,db1);%coded_ca1=wcodemat(ca1,nbrow);coded_ch1=wcode

33、mat(ch1,nbrow);coded_cv1=wcodemat(cv1,nbrow);coded_cd1=wcodemat(cd1,nbrow);h1=subplot(2,3,2);image(coded_ca1,coded_ch1;coded_cv1,coded_cd1);axis square;title(一级分解图像);%ch1=ch1.*0;cv1=cv1.*0;cd1=cd1.*0;a0=idwt2(ca1,ch1,cv1,cd1,db1,nbrow);%h2=subplot(2,3,3);image(wcodemat(a0,nbrow);axis square;title(重构

34、图像);imwrite(uint8(coded_ca1),E:2016下数字图像处理大作业DWTman压缩图像.gif);2. 基于DCT域的鲁棒水印水印的嵌入程序源代码:clear all;clc推荐精选k=20;blocksize=8; %设定图像的分块大小为8定图midband= 0,0,0,1,1,1,1,0; %定义DCT中频系数的选取 0,0,1,1,1,1,0,0; 0,1,1,1,1,0,0,0; 1,1,1,1,0,0,0,0; 1,1,1,0,0,0,0,0; 1,1,0,0,0,0,0,0; 1,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0;message

35、=double(imread(watermark1.bmp);%读入水印图像subplot(1,3,2);imshow(message);title(水印图像)Mm=size(message,1);Nm=size(message,2);n=Mm*Nm;message=round(reshape(message,1,n);I=imread(lena.jpg);cover_object=double(I);subplot(1,3,1);imshow(I);title(原始图像)Mc=size(cover_object,1); Nc=size(cover_object,2);c=Mc/8;d=Nc/

36、8;m=c*d;xx=1;for j=1:c for i=1:d pjhd(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8); fc(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-pjhd(xx).2); xx=xx+1; endendA=sort(fc);B=A(c*d-n+1):c*d);fc_o=ones(1,c*d);for g=1:n for h=1:c*d if B(g)=fc(h) fc_o(h)=message(g); h=c*

37、d; end endendmessage_vector=fc_o;推荐精选watermarked_image=cover_object;rand(state,7); %设置相同的随机数生成器状态J,作为检测时的系统密钥Kpn_sequence_zero=round(rand(1,sum(sum(midband); %生成相同的伪随机序列提取水印x=1;y=1;for(kk=1:m) %原始图像和待检测图像分别分块DCT变换 dct_block=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1); ll=1; if(message_vector(

38、kk)=0) for ii=1:blocksize for jj=1:blocksize if(midband(jj,ii)=1) dct_block(jj,ii)=dct_block(jj,ii)+k*pn_sequence_zero(ll); ll=ll+1; end end end end watermarked_image(y:y+blocksize-1,x:x+blocksize-1)=idct2(dct_block); if(x+blocksize)=Nc x=1;y=y+blocksize; else x=x+blocksize; endendwatermarked_image_

39、int=uint8(watermarked_image);imwrite(watermarked_image_int,dct2_watermarked.bmp,bmp);xsz=255*255*Mc*Nc/sum(sum(cover_object-watermarked_image).2);psnr=10*log10(xsz)subplot(1,3,3);imshow(watermarked_image_int,)title(嵌入水印后的图像)figure(2)imshow(watermarked_image_int,)title(嵌入水印后的图像)3. 基于DCT域的鲁棒水印水印的提取程序源

40、代码:clear all; clcblocksize=8; %设定图像的分块大小为8定图midband= 0,0,0,1,1,1,1,0; %定义DCT中频系数的选取 0,0,1,1,1,1,0,0; 0,1,1,1,1,0,0,0; 1,1,1,1,0,0,0,0;推荐精选 1,1,1,0,0,0,0,0; 1,1,0,0,0,0,0,0; 1,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0 ;cover_object=double(imread(lena.jpg); %读取原始图像I=imread(dct2_watermarked.bmp)%读取待检测额图像watermark

41、ed_image=double(I); subplot(1,3,1);imshow(I);title(待提取水印图像)Mw=size(watermarked_image,1);Nw=size(watermarked_image,2); %计算图像的高度和宽度c=Mw/8;d=Nw/8;m=c*d;Z=imread(watermark1.bmp) %读入水印图像orig_watermark=double(Z); subplot(1,3,2);imshow(Z);title(水印图像)Mo=size(orig_watermark,1);No=size(orig_watermark,2);n=Mo*

42、No;rand(state,7); %设置相同的随机数生成器状态J,作为检测时的系统密钥Kpn_sequence_zero=round(rand(1,sum(sum(midband); %生成相同的伪随机序列提取水印x=1;y=1;for(kk=1:m) %原始图像和待检测图像分别分块DCT变换 dct_block1=dct2(watermarked_image(y:y+blocksize-1,x:x+blocksize-1); dct_block2=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1); ll=1; for ii=1:block

43、size for jj=1:blocksize if(midband(jj,ii)=1) sequence(ll)=dct_block1(jj,ii) - dct_block2(jj,ii); ll=ll+1; end end end if(sequence =0 ) %计算两个序列的相关性 correlation(kk)=0; else correlation(kk)=corr2(pn_sequence_zero,sequence); end if(x+blocksize)=Nw x=1;y=y+blocksize; else x=x+blocksize; end推荐精选end %相关性大于

44、0.5嵌入0,不大于0.5则表明曾经被嵌入for(kk=1:m) if(correlation(kk)0.5) message_vector(kk)=0; else message_vector(kk)=1; endend%计算原始图像的方差xx=1;for j=1:c for i=1:d pjhd(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8); fc(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-pjhd(xx).2); xx=xx+1;

45、 endend%取出方差最大的前n块A=sort(fc);B=A(c*d-n+1):c*d);%根据原始图像方差最大的前n块的位置把水印信息提取出来fc_o=ones(1,n);for g=1:n for h=1:c*d; if B(g)=fc(h) fc_o(g)=message_vector(h); h=c*d; end endendmessage_vector=fc_o;message=reshape(message_vector(1:Mo*No),Mo,No); %重组嵌入的图像信息sim=corr2(orig_watermark,message) %计算提取的水印和原始水印的相似程度

46、imwrite(message,message.bmp,bmp); subplot(1,3,3) imshow(message,); title(提取的水印图像); figuresubplot(1,2,1)imshow(Z);title(水印图像)subplot(1,2,2)imshow(message,); title(提取的水印图像);推荐精选4. 基于DCT域的鲁棒水印攻击性实验源程序代码clear all; clcblocksize=8; %设定图像的分块大小为8定图midband= 0,0,0,1,1,1,1,0; %定义DCT中频系数的选取 0,0,1,1,1,1,0,0; 0,1

47、,1,1,1,0,0,0; 1,1,1,1,0,0,0,0; 1,1,1,0,0,0,0,0; 1,1,0,0,0,0,0,0; 1,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0 ;cover_object=double(imread(lena.jpg); %读取原始图像I=imread(dct2_watermarked.bmp)%读取待检测额图像h=-1 -1 -1 -1 8 -1 -1 -1 -1;G=abs(imfilter(I,h); %边缘增强,攻击嵌入水印后的图像watermarked_image=double(G); subplot(1,3,1);imshow(G

48、);title(待提取水印图像)Mw=size(watermarked_image,1);Nw=size(watermarked_image,2); %计算图像的高度和宽度c=Mw/8;d=Nw/8;m=c*d;Z=imread(watermark1.bmp) %读入水印图像orig_watermark=double(Z); subplot(1,3,2);imshow(Z);title(水印图像)Mo=size(orig_watermark,1);No=size(orig_watermark,2);n=Mo*No;rand(state,7); %设置相同的随机数生成器状态J,作为检测时的系统密

49、钥Kpn_sequence_zero=round(rand(1,sum(sum(midband); %生成相同的伪随机序列提取水印x=1;y=1;for(kk=1:m) %原始图像和待检测图像分别分块DCT变换 dct_block1=dct2(watermarked_image(y:y+blocksize-1,x:x+blocksize-1); dct_block2=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1); ll=1; for ii=1:blocksize for jj=1:blocksize if(midband(jj,ii)=1

50、) sequence(ll)=dct_block1(jj,ii) - dct_block2(jj,ii);推荐精选 ll=ll+1; end end end if(sequence =0 ) %计算两个序列的相关性 correlation(kk)=0; else correlation(kk)=corr2(pn_sequence_zero,sequence); end if(x+blocksize)=Nw x=1;y=y+blocksize; else x=x+blocksize; endend %相关性大于0.5嵌入0,不大于0.5则表明曾经被嵌入for(kk=1:m) if(correla

51、tion(kk)0.5) message_vector(kk)=0; else message_vector(kk)=1; endend%计算原始图像的方差xx=1;for j=1:c for i=1:d pjhd(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8); fc(xx)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-pjhd(xx).2); xx=xx+1; endend%取出方差最大的前n块A=sort(fc);B=A(c*d-n+1):c

52、*d);%根据原始图像方差最大的前n块的位置把水印信息提取出来fc_o=ones(1,n);for g=1:n for h=1:c*d; if B(g)=fc(h) fc_o(g)=message_vector(h); h=c*d; end endend推荐精选message_vector=fc_o;message=reshape(message_vector(1:Mo*No),Mo,No); %重组嵌入的图像信息sim=corr2(orig_watermark,message) %计算提取的水印和原始水印的相似程度imwrite(message,message.bmp,bmp); subpl

53、ot(1,3,3) imshow(message,); title(提取的水印图像); figuresubplot(1,2,1)imshow(Z);title(水印图像)subplot(1,2,2)imshow(message,); title(提取的水印图像);5.基于空域的脆弱水印的嵌入程序源代码:I=imread(lena512.bmp);Z=double(I);subplot(1,2,1);imshow(I);title(原始图像);Mc=size(Z,1); %图像的高度Nc=size(Z,2); %图像的宽度c=Mc/8; d=Nc/8; m=c*d; n=(c-2)*(d-2);

54、 blocksize=8;%设定嵌入信息的位置矩阵B= 1 0 1 0 1 1 0 1; 1 0 1 0 1 0 1 1; 0 1 1 0 0 0 0 0; 0 1 0 1 1 1 0 0; 0 1 0 0 0 1 0 0; 1 0 0 1 1 1 1 1; 0 1 1 1 0 0 1 0; 1 0 1 1 1 1 1 0;ZM=floor(Z./2)*2; %下取整ZC=ZM;blo=blocksize/2;x=9;y=9;for (kk=1:n); mean=mean2(ZC(y-4:y+blocksize-1+4,x-4:x+blocksize-1+4); mean=mod(floor(mean*10),10); %取小数位后第一位 meann=mean; i=0; while(meann=0) ZM(y+blocksize-1,x+blocksize-4+i)=ZM(y+blocksize-1,x+blocksize-4+i)+mod(meann,2);推荐精选 meann=floor(meann/

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!