基于DCT的数字水印算法(1)(5)

2019-04-13 22:12

第二章 离散余弦变换(DCT)算法的介绍

8×8分块

DCT变换

提取每块的水印信息

合并分块水印得到完整水印

2.5分块的离散傅里叶变换

1. 离散傅里叶变换

在图象处理的广泛领域中,傅里叶变换起着非常重要的作用,包括图象增强、图象分析、图象复原和图象压缩等。在图象数据的数字处理中常用的是二维离散傅里叶变换,它能把空间时域的图象变换到空间频域上进行研究,从而能很容易的了解到图象的各个空间频域成分,进行相应的处理。

- 26 -

第二章 离散余弦变换(DCT)算法的介绍

2.水印嵌入算法

数字图像水印算法选择二值化灰度图像作为水印信息,根据水印图像的二值性选择不同的嵌入系数,并将载体图像进行8×8的分块,将数字水印的灰度值直接植入到载体灰度图像的DFT变换域中,实现水印的嵌入。具体方法如下: 设I是M×N大小的原始图像,J是水印图像大小为P×Q,M和N分别是P和Q的偶数倍,把水印J加载到图像I中,算法分以下几步进行:

1. 将I分解为(M/8)×(N/8)个8×8大小的方块B;同时,J也分解为 (M/8)×(N/8)个(8P/M)×(8Q/N)大小的方块V; 2. 对每一个B进行DFT变换:DB=DFT(B);

3. 加载水印对每一个DB和V,s(i)为从DB的中频选出的加载的位置 , 1≤i≤(8P/M)×(8Q/N), t(i)为水印V的位置坐标 , 1≤i≤(8P/M)×(8Q/N),DB’(s)=A×V,其中A是加权系数,用DB’(s)来代替DB,得到加载水印后的图像DBC;

4. 对以上得到的每一个DBC进行逆DFT变换:IDBC=IDFT(DBC)并将各方块IDBC合并为一个整图I’,即加载了水印的新图像。

3.水印提取算法

设图像D为已经加载了水印的载体图像,现要将所加载的水印从D中提取出来,其过程为上述加载水印算法的逆运算:

1. 将D分解为(M/8)×(N/8)个8×8大小的方块BD; 2. 对每一个BD进行二维DFT变换:DBD=DFT(BD); 3. 提取数据对每一个DBD,按照式V’=1/A×DBD得到V’; 4. 将上面得到的所有V’合并成一个水印整图J’。

- 27 -

第三章 离散余弦变换(DCT)算法的MATLAB程序及运行结果比较

第三章 离散余弦变换(DCT)算法的MATLAB程序及运行

结果比较

3.1 MATLAB程序

1 size=512; N=32;K=8; D=zeros(size);E=0.01; 2 I=imread('f:\\lena.bmp'); 3 subplot(2,2,1); 4 imshow(I); 5 title('原始图像');

6 I=double(I)/512;%读入水银 7 J=imread('f:\\1234.bmp'); 8 subplot(2,2,2); 9 imshow(J); 10 title('水印图像'); 11 %对水印缩放

12 J=double(imresize(J,[64,64])); 13 subplot(2,2,3); 41 imshow(J);

15 title('缩放水印图像'); 16 %嵌入水印 17 for p=1:size/K

- 28 -

第三章 离散余弦变换(DCT)算法的MATLAB程序及运行结果比较

18 for q=1:size/K

19 x=(p-1)*K+1; y=(q-1)*K+1; 20 I_dct=I(x:x+K-1,y:y+K-1); 21 I_dct1=dct2(I_dct); 22 if J(p,q)==0 23 alfa=-1; 24 else 25 alfa=1; 26 end

27 I_dct2=I_dct1+alfa*E; 28 I_dct=idct2(I_dct2); 29 D(x:x+K-1,y:y+K-1)=I_dct; 30 end 31 end

32 subplot(1,3,3); 33 imshow(D,[]); 34 Title('含水印的图象');

35 %%%%%%对加入水印的图像进行各种攻击 36 %%%低通滤波攻击

37 %hh=fspecial('gaussian',3,0.2); 38 %hh=fspecial('gaussian',3,0.35); 39 %hh=fspecial('gaussian',3,0.4);

- 29 -

第三章 离散余弦变换(DCT)算法的MATLAB程序及运行结果比较

40 QQ=filter2(hh,D); 41%%%旋转攻击

42 R=imrotate(D,10,'bilinear','crop'); 43 %R=imrotate(D,20,'bilinear','crop'); 44 %R=imrotate(D,45,'bilinear','crop'); 45 %%%%%剪切攻击

46 %D(1:32,1:32)=0; Q2=D; 47 %D(1:64,1:64)=0; Q2=D; 48 %D(1:128,1:128)=0; Q2=D; 49 % 提取水印 50 for p=1:size/K 51 for q=1:size/K 52 x=(p-1)*K+1; 53 y=(q-1)*K+1;

54 I1=I(x:x+K-1,y:y+K-1); 55 I2=QQ(x:x+K-1,y:y+K-1); 56 I_dct1=dct2(I1); 57 I_dct2=dct2(I2); 58 if I_dct2>I_dct1 59 W(p,q)=1; 60 else

61 W(p,q)=0;

- 30 -


基于DCT的数字水印算法(1)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:市卫生局科教工作总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: