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

上传人:李司机 文档编号:1131732 上传时间:2022-06-30 格式:DOC 页数:21 大小:185KB
返回 下载 相关 举报
基于DWT的图像压缩及数字水印设计.doc_第1页
第1页 / 共21页
基于DWT的图像压缩及数字水印设计.doc_第2页
第2页 / 共21页
基于DWT的图像压缩及数字水印设计.doc_第3页
第3页 / 共21页
基于DWT的图像压缩及数字水印设计.doc_第4页
第4页 / 共21页
基于DWT的图像压缩及数字水印设计.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于DWT的图像压缩及数字水印设计.doc》由会员分享,可在线阅读,更多相关《基于DWT的图像压缩及数字水印设计.doc(21页珍藏版)》请在三一办公上搜索。

1、摘 要随着网络带宽、计算能力、图像压缩技术和存储设备的快速开展,人们对图像压缩技术及数字图像水印技术提出了更高的要求,良好的图像压缩技术不仅能实现高压缩率和高保真度,还能满足图像存储及图像数据传输的现实要求。数字化图像数据的使用与传播的普及,为数字图像在保护、认证、防拷贝、防篡改、保障数据平安等方面提供了有效的技术手段。采用密码学的加密与解密技术虽然能够保护数字产品的平安传输,但不能保证数字产品解密后的盗版问题。为解决这一问题,在原图像中参加不可见的信息来标注是近年来图像技术研究领域的一个热点。目前提出的数字水印的嵌入方法大致可以分为空间域数字水印和变换域数字水印两大类。 从总体性能来看,变换

2、域的方法比空间域的方法有更多的优越性。基于变换域的数字水印技术又分为 DET离散傅氏变 换、DCT离散余弦变换、DWT离散小波变换等。由于小波变换具有很好的时域频域特性,作为一种多分辨率的分析方法,小波变换成为新一代静止图像压缩标准JPEG-2000和运动图像压缩标准MPEG-4 中的一种关键的技术,所以基于小波变换的数字水印研究是非常必要。MATLAB作为一款高性能的数值计算和可视化软件,为图像压缩及数字水印的嵌入与提取提供了方便。关键词:图像压缩,数字水印,MATLAB,小波变换,嵌入与提取目录1 引言42 基于DWT的图像压缩和数字水印方法42.1 基于DWT的图像压缩4图像压缩编码的目

3、的与可能性42.2 数字水印方法5数字水印系统的组成5基于DCT领域的鲁棒水印的实现7基于空域的脆弱水印实现8水印的提取及篡改检测93 基于DWT的图像压缩和数字水印的Matlab实现93.1基于DWT的图像压缩的Matlab实现9基于DWT的图像压缩的设计与实现93.2数字水印的Matlab实现14数字水印的嵌入与提取14基于空域的脆弱水印实现15水印的提取及篡改检测16数字水印嵌入与提取的比较与分析184 完毕语19参考文献20附录:程序源代码211 引言今天,计算机及网络的告诉开展为数字作品的传播提供了便利的途径。但人们在享受计算机技术带来便捷的同时又遇到了空前未有的作品传输速率与保护的

4、难题。人们既希望自己的作品能迅速传播和被他人便捷使用,又希望享有自己作品的,使自己的作品得到法律保护,防止非法复制和拷贝。显然,传播和保护是一对矛盾,是当今网络世界中出现的,又必须解决的新问题。图像压缩主要研究数据的表示、传输、变换和编码方法,目的是减少存储数据所需的空间和传输所用的时间。利用图像数据固有的冗余性和相关性,对图像数据按照一定的规则进展的将一个大的数据文件转换成较小的同性质的文件的变换和组合,从而到达在一定时间传输更多的信息的目的。数字图像未经压缩时,其数据量很大,既浪费空间,也不适于传输。这对计算机的存储以及网络传输都造成了极大的负担。可见,没有图像编码与压缩技术的开展,大容量

5、的图像信息的存储于传输是难以实现的。数字水印技术是通过一定的算法将一些标志性信息直接嵌入到多媒体容中,但不影响容的价值和使用,并且不能被人的感知系统觉察到或注意到,只有通过专用的检测器或阅读器才能提取的一种技术,嵌入的水印因袭隐藏于宿主文件中,不影响原始文件的可观性和完整性。在接收端,通过计算机水印信号被提取出来用于各种目的。因此数字水印被视做抵抗多媒体盗版的最后一道防线。因此从水印技术自身来说,它具有广泛的应用前景和巨大的经济价值。2 基于DWT的图像压缩和数字水印方法2.1 基于DWT的图像压缩2.1.1图像压缩编码的目的与可能性信息是现代社会的主要特征,而人们传递信息的重要媒介是图像,数

6、据量大是数字图像的一个显著特点,一幅具有中等分辨率640*480的彩色24bit/像素数字图像的数据量约7.37Mbit,这给数字图像的存储与传输带来极大的困难。因此,图像压缩就显得至关重要。它既是当代信息高速公路,HDTV,可视,图文 等技术的关键,又在航空遥感,资源探测及生物医学工程等领域起着非常重要的作用。图像数据压缩是指在满足一定图像的条件下,用尽可能少的数据量来表示图像,即如何最大限度地压缩图像数据,而又能保证利用这些数据所重建的图像是用户能承受的。组成图像的各像素之间,无论是在图像的行方向还是在列方向,都存在一定的相关性这样的相关性带来图像信息的冗余。常见的静态图像数据冗余包裹:空

7、间冗余,构造冗余,知识冗余,视觉冗余,图像区域的一样性冗余,纹理的统计冗余。图像的各种冗余为图像压缩编码提供了可能。而利用DWT变换进展压缩,它的小波变换的结果是将图像的二级小波分解示意图见图一,小波分解的结果是将图像分解成了子图像的集合,在第一级小波分解时,原始图像被分解成了一个低频子图像LL1对应原图像在低分辨率上的一个近似和三个高频子图像HL1,LH1和HH1分别对应水平方向,垂直方向和对角线方向的细节的集合,在第二集小波分解时,低频子图像LL1被继续分解为更低分辨率的一个低频子图像LL2和三个高频子图像HL2,LH2,HH2的集合,而原来的第一级分解得到的三个高频子图像不变。综上述分解

8、过程中可以一直继续下去,这样就得到越来越多的低尺度子图像,图像的小波重构正好相反,即用低尺度的子图像,逐级通过小波逆变换重构出一幅高尺度的图像,直至得到与原图像大小一样的重构图像图2.1 图像小波分解示意图2.2 数字水印方法数字水印的根本原理是往图像、声音、视频信号等多媒体数据中添加*些数字信息水印而不影响原始数据的视听效果,并且这些数字信息可以局部或全部从混合数据中恢复出来,以到达保护等作用。数字水印具有平安性、鲁棒性、透明性及保真性等特点。通俗的说,数字水印Digital Watermarking指把一些标识信息即数字水印直接嵌入数字载体当中或是间接表示,且不影响原载体的使用价值,也不容

9、易被探知和再次修改。数字水印可以被生产方识别和识别,通过隐藏在载体中的信息,可以到达确认容创立者、购置者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是保护信息平安、实现防伪溯源、保护的有效方法,是信息隐藏技术研究领域的重要分支和研究方向。2.2.1数字水印系统的组成在介绍数字水印系统设计之前,首先了解一下数字水印系统的组成。一个数字水印系统一般包括3个根本方面:水印的生成,水印的嵌入和水印的提取或检测。数字水印技术实际上是通过对水印载体媒质的分析、嵌入信息的预处理、信息嵌入点的选择、嵌入方式的设计、嵌入调制的控制等几个相关技术环节进展合理优化,寻求满足不可感知性、平安可靠性、稳健性等诸

10、条件约束下的准最优化设计问题。而作为水印信息的重要组成局部密钥,则是每个设计方案的一个重要特色所在n。往往可以在信息预处理、嵌人点的选择和调制控制等不同环节入手完成密钥的嵌人。图2.2数字水印嵌入过程根本框架示意图图2.3 水印检测的一般过程根本框图图2.2.展示了水印的嵌入过程。该系统的输入是水印信息W、原始载体数据I和一个可选的失钥/公钥K。其中原始载体数据I代表要保护的多媒体产品,如图像、文档、音频、视频等;水印信息W可以是任何形式的数据,如字符或栅格;二值图像、灰度图像或彩色图像;3D图像等等。水印生成算法G应保证水印的唯一性、有效性、不可逆性等属性。秘钥K可用来加强平安性,以防止未授

11、权的恢复和修复水印。所有的实用系统必须使用一个秘钥,有的甚至使用几个秘钥的组合。水印的嵌入算法很多,下式给出了定义水印嵌入过程的通用公式: 2-1式中,表示嵌入水印后的数据即水印载体数据;表示原始载体数据;W表示水印集合;K表示秘钥集合。这里密钥K是可选项,一般用于水印信号的再生。图二是水印的检测过程。由图2.3可以定义水印的检测过程的通用公式如下。需要原始载体数据进展检测: 2-2需要原始数据W进展检测: 2-3无需原始数据信息即可进展检测: 2-4式中, 表示是估计水印;D为水印检测算法; 表示在传输过程中受到攻击后的水印载体数据。检测水印的手段可以分为两种:一是在有原始信息的情况下,可以

12、做嵌入信号的提取或相关性验证;二是在没有原始信息的情况下,必须对嵌入信息做全搜索或分布假设检验等。如果信号为随机信号或伪随机信号,证明检测信号是水印信号的方法一般就是做相似度检验。水印相似度检验的通用公式为:或 2-5式中, 表示估计水印;W表示原始水印;Sim表示不同信号的相似度。2.2.2基于DCT领域的鲁棒水印的实现水印的嵌入,基于DCT的鲁棒水印嵌入流程图所示图2.4 基于DCT的鲁棒水印嵌入流程原始图像按8*8分块,首先计算所有子快的方差值,并选择方差最大的前n块的*n,然后依据系统密匙K在其DCT中嵌入随机序列pn_sequence_zero,最后通过子模块的DCT逆变换生成含水印

13、的图像具体步骤如下:1原始图像的分块DCT分块DCT变换为了与国际压缩标准兼容,以便算法可以在压缩中实现,将原始图像分割为互不重叠的8*8子块,再对每个子块进展DCT变换。2基于纹理掩蔽特性的块分类,根据人类视觉系统的照明掩蔽特性和纹理掩蔽性可知:背景的亮度越高,纹理越复杂,人类视觉系统对其轻微的变换就越不敏感,因此,为了实现原始图像和嵌入式水印后图像之间的感知相似性,应该将水印信号尽可能地嵌入到图像中纹理教复杂的子块,此处将子块的方差作为衡量子块纹理的复杂程度。计算子块的平均灰度m和方差,公式为 2-6 2-7方差的大小反响了块的平滑程度,当2较小时,块比较均匀,反之,则块包括着较复杂的纹理

14、子块,当将过多的信息嵌入到图像的平滑区域,容易引起块效应现象,导致品质的下降,根据对人眼视觉模型的分析,将水印图像嵌入到纹理复杂区域符合水印算法的要求,具体可使用MATLAB的SORT函数对方差值进展从小到大排序,以便将水印嵌入到纹理复杂的子块中。3水印的产生和嵌入,将二值水印图像组成一维矢量,作为水印信息。在水印的嵌入过程中,采用的是一种基于DCT中频的数字水印技术。通过对人类视觉系统的研究,发现人眼对于低频局部的噪声相对敏感,为了使水印不易被觉察,应将水印嵌入到较高频的局部;但是将水印信息嵌入到高频局部,很容易被量化、低通滤波等处理而丧失信息,影响水印的鲁棒性。为了解决低频和高频的矛盾,这

15、里采用折中的方法,将水印信息嵌入到宿主图像的中频局部。图中就是要嵌入水印的子块中频位置。具体嵌入位置由K与Sequence参数决定。图2.5 嵌入水印的子块中频位置基于空域的脆弱水印实现通过脆弱水印技术可以判断多媒体容如图像是否完整,防止非法篡改和伪造,即使图像发生轻微的变化,也能通过媒体对水印信息的检测来鉴定图像信息的真伪,判断是否发生篡改并对其篡改的局部进展定。因此,脆弱水印技术再电子商务,新闻出版,医学数据库等诸多领域具有广阔的应用前景。图2.6 LSB水印嵌入算法框架图水印嵌入步骤如下:1将原始图最低有效值LSB清0,并分为互不重叠的8*8图像快*.2计算每个8*8块分解如基于LU分解

16、后矩阵U的迹,并将其作为嵌入的水印信息C(S).3使用mean2()函数计算每个8*8块想邻近16邻近每图像块的均值,并嵌入到该8*8图像块特定的LSB位。为了减少该类纠错信息的嵌入量,提高水印信息的不可见性,仅取均值的十分位作为用于防止拼贴攻击的水印信息。4再将步骤2中的计算的水印信息Cs嵌入到由位置矩阵B决定的8*8图像块中相应的LSB位,嵌入判别公式为其中,0k7,0j7 2-82.2.4水印的提取及篡改检测篡改检测的框架如以下图图2.7 篡改检测算法框架图篡改检测步骤如下:1将待检测图像分为互不重叠的88图像块2与水印嵌入过程类似,计算出每个88块的水印信息(s)3将步骤2中计算的水印

17、信息与LSB平面提取得数值相(s)比较,假设相异则可发生篡改。篡改表示函数为 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)、垂直细节分量(

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

19、缩图像5为了验证本实验的正确性,进展了两次实验,对两组数据分析比较可发现本实验可以实现图像的压缩,且压缩率为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

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

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

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

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

24、。矩阵的LU分解与矩阵的QR分解类似,也是将矩阵*分解为两个矩阵的乘积形式,即*可分解成*=LU,其中U亦为上三角矩阵。矩阵的均值,奇异值分解值,QR分解值,LU分解值及矩阵的迹均可以作为每个图像块独有的特征。本节将具体结合图像块的分解值基于奇异值分解。QR分解或LU分解以及均值作为每个图像块的特定水印信息,完成脆弱水印的完整性认证。图3.13 原始图像及嵌入水印图的篡改后的图像3.2.3水印的提取及篡改检测测试图像提取水印提取特征测试图像判断检测水印信息有篡改给出篡改信息无篡改采用mean2算法对嵌入后的图像满足了脆弱水印对嵌入信息不可见性的要求,为了测试篡改图像的检测能力及定位能力,添加水

25、印后的图像也进展了相应的篡改,使用MATLAB中的mean2函数增加各子块间的相关性及系统的平安性,水印的提取及篡改检测的根本框架如下: 密钥 图3.14 根本框架图图3.15待提取水印图像及检测篡改图像图3.16检测篡改图像放大图像3.2.4数字水印嵌入与提取的比较与分析a原始lena图像b采用mean2算法嵌入水印后 Lena图 (c) 嵌入水印后图像发生篡改(d) 检测篡改效果图图3.17 数字水印嵌入与提取的比较与分析 图a为256*256的灰度图像lena,图(b)为嵌入水印后的lena图,该图具有较高的峰值信噪比,满足脆弱水印对嵌入信息不可见性的要求。将含水印179:250,183

26、:230区域的图像复制到65:136,209:256区域。图(d)中黑色局部代表该算法可以检测出篡改区域。实验结果说明,该算法不仅可以准确定位篡改的位置,而且由于使用了MATLAB中的mean2( )函数增加各子块间的相关性以及系统的平安性,从而有效的防止了拼贴攻击。4 完毕语本实验到达了前面引言中所提出目的,解决了作品传输速率与保护难的这个问题。本设计基于DWT的图像压缩,即离散小波变换小波分解。采取放弃变换域3个细节分量的方法,来进展压缩。而传统的基于DWT的压缩感知图像融合方法针对的是整个稀疏系数,由于小波系数的低频局部为非稀疏的,导致其压缩重构质量差。针对该问题,提出了一种基于DWT高

27、频系数压缩测量的融合方法,该压缩模式可以提高重构信号的质量,进而提高融合图像的效果。首先,对图像作小波稀疏变换,得到低频和高频系数,并对高频系数压缩测量得到测量值;然后,在小波域和压缩域分别进展融合,并对融合后的测量值进展重构得到融合后的高频系数;最后,经小波逆变换得到融合后的图像。实验结果说明,本压缩感知模式较传统的压缩感知模式在减少压缩数据量的同时提高了图像的融合效果。本实验中数字水印相关局部实现了预期期待功能。目前,数字水印技术的重点是:利用信息论、通信理论、信号处理理论、传统密码学理论和信息传输理论等知识来建立数学水印理论,形成完善并且合理的数字水印评价标准。整个实验过程加深了我们小组

28、对整个课题的立即,即首先对一副图像进展加水印,成功参加水印后获得新图像,再对获得的新图像进展水印提取,整个过程中由于图片名字及各式没有一一对应,中间走了很多弯路,查出原因后顺利地得出了结果。通过控制水印嵌入图像来控制水印的嵌入及提取过程,实际嵌入图像中的是根据一定规则生成的随机序列。也可以直接将文本图像嵌入到原始图像中。不过,两种算法都需要注意嵌入的水印的尺寸一定要小于原始图像的尺寸。此次实验使我们意识到当前学习的缺乏之处,也意识到有时候实验时无从着手的原因,在图像压缩机数字水印上还有很多需要我们学习的地方,我们将会在课下花更多时间去学习,以弥补当前学习的缺乏。参考文献1 龚声蓉, 纯平, 勋

29、杰等. 数字图像处理与分析M. : 清华大学, 2021 .1.2 圣和, 陆哲明. 数字水印处理技术J. 电子学报, 2000, 28(8): 85-90.3 董刚, 良等. 一种脆弱性数字水印算法J. 通信学报, 2003,24(1):33-38.4谦. 基于小波变换和纹理特征的水印算法J.:计算机工程与设计. 2006年,14期:2616-2619.5 施建平. 图像数字水印算法的研究.西北工业大学学报J, 2006,(1):27-28.6 恒伏, 孝威. 小波域鲁棒自适应公开水印技术J. 软件学报, 2003, 14(9): 1652-1660.7 E1-Din,S.N, and M.

30、 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(man.gif);*,map=gray2ind(double(I)/255,256);*=double(*);imshow(*,map);%H.color=1 1 1;figure(H);subplot(2,3,1);nbrow=

31、size(map,1);coded_*=wcodemat(*,nbrow);colormap(pink(nbrow);image(wcodemat(*,nbrow);a*is square;title(原图像);%ca1,ch1,cv1,cd1=dwt2(coded_*,db1);%coded_ca1=wcodemat(ca1,nbrow);coded_ch1=wcodemat(ch1,nbrow);coded_cv1=wcodemat(cv1,nbrow);coded_cd1=wcodemat(cd1,nbrow);h1=subplot(2,3,2);image(coded_ca1,code

32、d_ch1;coded_cv1,coded_cd1);a*is 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);a*is square;title(重构图像);imwrite(uint8(coded_ca1),E:2021下数字图像处理大作业DWTman压缩图像.gif);2. 基于DCT域的鲁棒水印水印的嵌入程序源代码:clear all;clck=20;blocksize

33、=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=double(imread(watermark1.bmp);%读入水印图像subplot(1,3,2);imshow(message);title(水印图像)Mm=size(message,1);Nm=size(message,2)

34、;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/8;m=c*d;*=1;for j=1:c for i=1:d pjhd(*)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8); fc(*)=1/64*sum(sum

35、(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-pjhd(*).2); *=*+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*d; end endendmessage_vector=fc_o;watermarked_image=cover_object;rand(state,7); %设置一样的随机数生成器状态J,作为检测时的系统密钥Kpn_sequence_zero=

36、round(rand(1,sum(sum(midband); %生成一样的伪随机序列提取水印*=1;y=1;for(kk=1:m) %原始图像和待检测图像分别分块DCT变换 dct_block=dct2(cover_object(y:y+blocksize-1,*:*+blocksize-1); ll=1; if(message_vector(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=

37、ll+1; end end end end watermarked_image(y:y+blocksize-1,*:*+blocksize-1)=idct2(dct_block); if(*+blocksize)=Nc *=1;y=y+blocksize; else *=*+blocksize; endendwatermarked_image_int=uint8(watermarked_image);imwrite(watermarked_image_int,dct2_watermarked.bmp,bmp);*sz=255*255*Mc*Nc/sum(sum(cover_object-wat

38、ermarked_image).2);psnr=10*log10(*sz)subplot(1,3,3);imshow(watermarked_image_int,)title(嵌入水印后的图像)figure(2)imshow(watermarked_image_int,)title(嵌入水印后的图像)3. 基于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,1,1,1,0,0,0; 1,1,1,1,0

39、,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)%读取待检测额图像watermarked_image=double(I); subplot(1,3,1);imshow(I);title(待提取水印图像)Mw=size(watermarked_image,1);Nw=size(watermarked_image,2); %计算图像的高度和宽度c=

40、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,作为检测时的系统密钥Kpn_sequence_zero=round(rand(1,sum(sum(midband); %生成一样的伪随机序列提取水印*=1;y=1;for(kk=1:m) %原始

41、图像和待检测图像分别分块DCT变换 dct_block1=dct2(watermarked_image(y:y+blocksize-1,*:*+blocksize-1); dct_block2=dct2(cover_object(y:y+blocksize-1,*:*+blocksize-1); ll=1; for ii=1:blocksize 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 =

42、0 ) %计算两个序列的相关性 correlation(kk)=0; else correlation(kk)=corr2(pn_sequence_zero,sequence); end if(*+blocksize)=Nw *=1;y=y+blocksize; else *=*+blocksize; endend %相关性大于0.5嵌入0,不大于0.5则说明曾经被嵌入for(kk=1:m) if(correlation(kk)0.5) message_vector(kk)=0; else message_vector(kk)=1; endend%计算原始图像的方差*=1;for j=1:c

43、for i=1:d pjhd(*)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8); fc(*)=1/64*sum(sum(cover_object(1+(j-1)*8):j*8,(1+(i-1)*8):i*8)-pjhd(*).2); *=*+1; 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(ori

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号