用MATLAB数字图像水印5页_第1页
用MATLAB数字图像水印5页_第2页
用MATLAB数字图像水印5页_第3页
用MATLAB数字图像水印5页_第4页
用MATLAB数字图像水印5页_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用MATLAB数字图像水印摘要:介绍了数字水印的原理和应用方法,研究了基于离散余弦变换(DCT)的数字图像水印算法,并借助MATLAB编S-Y-具,实现数字水印的嵌入、提取和攻击测试。实验结果表明,对于通常的压缩编码,该算法具有足够的鲁棒性。关键词:数字图像,数字水印,DCT,MATLAB一、引言随着Intemet的普及,信息的安全保护问题日益突出。如何有效地防止数据的非法复制和鉴别数字媒体的知识产权,成为亟需解决的问题。1993年Caronni提出了数字水印的概念,并应用于数字图像,此后,研究人员将数字水印的概念扩展到电视图像和声音等领域,数字水印技术作为版权保护的重要手段而得到了广泛的研究

2、和应用。数字水印技术涉及到大量图像处理算法、数学计算工具等,用普通编程工具实现上述算法将要花费大量的时间,MATLAB语言是MathWorks公司推出的一种简单、高效、功能极强的高级语言,具有高性能数值计算能力和可视化计算环境。许多复杂的计算问题只需短短的几行代码就可在MATIAB中实现。本文基于典型的DCT (离散余弦变换)数亨水印算法过程,详细介绍用MATLAB实现数字水印的嵌入、提取和攻击测试的方法。数字水印技术从信号处理的角度看,在载体图像中嵌入数字水印可以视为在强背景(即原始图像)下叠加一个视觉上看不到的弱信号(水印),由于人的视觉系统(Human Visual System,HVS

3、)分辨率受到一定的限制,只要叠加信号的幅度低于HVS的对比度门限,HVS就无法感觉到信号的存在,因此,通过对载体对象作一定的调整,就有可能在不引起人感知的情况下嵌入一些信息。1数字水印的嵌入水印嵌入就是把水印信号W:(c)J嵌入到原始图像Xo=xo(K)中。水印嵌入过程如图1所示水印嵌入准则分为:)】H法准贝U:x (K)=xn(K)+OtOJ(K)乘法准贝U:x (K)=Xo(K)(1+ (o(K)为强度因子,为保证在水印不可见的前提下,尽可能提高嵌入水印的强度。的选择必须考虑图像的性质和视觉系统的特性。2,水印的提取与检测在某水印系统中,水印可以被精确地提取出来,这一过程被称作水印提取。例

4、如在完整性确认的应用中,必须能够精确地提取出嵌入的水印,并且通过水印的完整性来确认多媒体数据的完整性如果提取出的水印发生了部分的变化,最好还能够通过变化的水印的位置来确定原始数据被篡改的位置。水印在提取检测时可以需要原始图像的参与,也可以不需要原始图像的参与。但将水印技术用于图像的网络发布和传播时,如果检测时需要使用原始图像则是个缺陷,因此,当前大多数的水印检测算法不需要原始图像的参与。图2、图3分别是水印提取和检测的框图,虚线部分表示在提取或判断水印信号时原始图像不是必需的。三、DOT域数字图像水印算法从技术k讲目前的数字水印算法可以分成两类:空域水GRAPHiCS PROG咖印算法和频域(

5、变换域)水印算法。空域水印算法是指将水印信号直接嵌入在原始数据巾。频域水印算法首先将原始的数据进行DCT或小波变换, 频域嵌入水印信息,然后经反变换输m。征检测水印时,也受首先对信号作相应的数学变换,然后通过相关运算枪测水印选择二值化灰度图像作为水印信息,根据水印图像的二值性选择不M的嵌入系数,并将原始图像进行88的分块,将数字水印的灰度值直接植入到原始灰度图像的DCT变换域中,实现水印的嵌入具体方法如下:1水印嵌入设x是M N大小的原始图像,w是水印图像,大小为P Q,M和N分别足P和Q的偶数倍。把水印w 加载到图像x L1|,算法分以下几步进行:将X分解为fM8) 【N8)个88大小的方块

6、BX (m,1t) , 同时,将w 也分解为(M8j (N8)个(8PM)(8QNj大小的方块BW (Ill,I1),1mM8,1nN8,对每一个BX (m n)进行DCT变换:DBX (Ill,n)=DCT(BX【m n1)对每一个DBX fm,T1)和Bw (m,n),Si为从DBX (m,I1)的中频选出的加载的位置,li(8PM1 (8QN),ti为水印B (m,n1的位置坐标li 8PM)$(8QN)DBX”fm,I1)【si)=dBWfm,I1)fti), 其中d是加权系数,用DBX (nt11j【si)来代替DBX (m,n)(si)得到加载水印后的图像。刈以J 得到的每.个DB

7、CI”(m,n)进行逆DCT变换:IDBX(m ): IDCT(DBX (m,it)。并将各方块IDBX(m,n)合并为一个整x ,即加裁了水印的新图像。2水印提取设图像x 为已经加栽了水印的载体图像。现要将所加载的水印从x 中提取出来。其过程为上述加载水印算法的逆运算:将X 分为(M8) (N8)个88大小的方块BX (m,n),1m M81rlN8。对每一个BX (vii,r1)进行二维DCT反变换:BX(m,n):iDCTBX (m,n J)。对每一个BX(m,n),按照式BW(m,n)(ti): 10c$BX(m,n)(si)得到BW(m,n)。将上西得到的所有BW(m-t)合并成一个

8、整圈w 。四、数字水印的嵌入与提取MATLAB rf1对一维和二维信号分别提供了各种变换和逆变换函数。例如dct()、dot2(J分别实现一维信号和二维信号的DCT(离散余炫变换),idct()、idct2()分别实现一维信号和=维信号的IDCT(逆向离散余弦变换),它们是实现频域水印算法必不叮少的工具。下以一个在频域嵌人和提取黑白图像水印程序为例,给出使用MATLAB实现数字水印的过程嵌入水印的算法描述:读取原始图像和黑自水印图像列二维数组I与J;将原始图像1分割为互不覆盖的图像块block1 x,Y),1 x,Y8,L:1,2. M M64,对blockL(x,Y)进行DCT变换,得到dc

9、t blockL(u,v);取黑白水印图像中的一个元素J(P,q)嵌入原始图像块的DCT的低频系数中;对嵌入水印信息后的图像块dct_blockL(u ,v)进行反DCT变换;得到blockl (x,Y);合并图像块,得到嵌入黑白水印后的图像。下面是嵌入与提取水印的程序实例,运行结果如图4所示:嵌入水印的程序代码M =256; 原图像长度N=32; 水印图像长度K=8;I=zeros(M,M ); J=zeros(N,N);BLOCK =zeros(K,K): 显示原图像subplot(3,2,1) imread( monabmp , bmp ;imshow(I);title( 原始公开图像)

10、; 显示水印图像Subplot(3,2,2) J=imread( flagBmp , bmp); imshow(J);title( 水印图像)水印嵌入for P=1:Nfor q=1:Nx=(P-1)K+1;Y=fq-1) K+1;BLOCK=I(x:x+K-1 ,y:Y+K-1); BLOCK=dct2(BL0CK);if (J(P,q)= =0) a=-1;else a=1;endBL0CK=BL0CK*(1+a*0 03);BL0CK=idct2(BL0CK)I(x:x+K-1 ,y:y+K一1)=BLOCK;endend 显示嵌入水印后的图像subplot(3,2,3) imshow(

11、I):title(嵌入水印后的图像);imwrite(I, watermarkedBmp , bmp ):从嵌八水印的图像中提取水印I=imread( mona , bmp);J=imread( watermarked. Bmp , bmp );forP=1:Nforq=1:NX=(P一1)*K+1;Y=(q一1)*K+1;BLOCK1=l(x:x +K-1,y:y+K一1);BLOCK2=J(:X+K一1,y:Y+K一1);BL0CK1=idct2(BL0CK1);BL0CK2=idct2(BL0CK2);A=BLOCK2(1,1)BL0CK1(1,1)-1:if a0W(P,q)=O;el

12、seW (P,q)=1;endendend 显示提取的水印subplot(3,2,4)imshow(W );title( 从含水印图像中提取的水印);五、水印攻击测试由于数字水印在实际应用中可能会遭到各种各样的攻击,因此对算法进行攻击测试是衡量一个水印算法优劣的重要手段。下面是一个水印攻击与水印提取的程序实例,首先对嵌入水印后的图像进行JPEG压缩(一种水印攻击),而后从压缩的图像中提取出水印,如图5所示从图中可以看到DCT域的水印算法抵抗JPEG压缩攻击的效果是比较好的:水印攻击测试M =256;N =32;K=8:I=zeros(M,M ):J=zeros(M,M):W =zeros(N,

13、N):BL0CK1=zeros(K,K):BLOCK2=zeros(K,K):对嵌入水印后的图像进行JPEG压缩L:imread( watermarkedbmp , bmp )imwrite(L, attackjPg , jpeg , Quality ,45)J=imread( attackjPg , jpeg ):subplot(3,2,5):imshow(J):title( 压缩后的图像):l=imread( mona , bmp ):从压缩的图像中提取水印forP=1:Nforq=1:NX=(P一1) K+1:Y=(q一1)K+1:BLOCK1=I(x:X+K一1,v:Y+K一1);BL

14、OCK2=Jlx:X+K一1,v:Y+K一1):BL0CK1=idct2(BL0CK1)BL0CK2=idct2(BL0CK2):a:BL0CK2(1,1)BL0CK1(1,1)一1ifa0W (P,q):O:elseW (P,q)=1:endendend显示提取的水印subplot(3,2,6) imshow(W) title( 从经过压缩的图像中提取的水印):六、结语从罔4巾呵叫看出:嵌入水印信息后,原图与嵌入水印信息晤的图像在视觉效果上没有明显分别,用fj眼几乎分辨不出,这说明这种算法充分利用r人限的视觉HVS特性, 利用DCT域嵌入水印后,水印的不口I见性相当好,图像在嵌入水印前后视觉效果改变不大, 影响罔像的正常使用从图5可明显看出:嵌入水印后的【矧像经过参数“Quali

温馨提示

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

评论

0/150

提交评论