MATLAB数字水印算法设计
一、课题背景
数字水印技术是目前信息安全技术领域的一个新方向,是一种可以在开放的网络环境下保护版权和认证来源及完整性的新型技术。它是信息隐藏学的一个重要分支,它用信号处理的方法在多媒体数据中嵌入特制的隐蔽的标记,这种标记的嵌入不会引起宿主媒体主观质量下降,不易察觉,人们无法从表面上感知水印,只有专用的检测器或计算机软件才可以检测出隐藏的数字水印,并且水印具有很强的对抗非法破解的能力。为了保护版机人的经济利益在数字作品上直接标识版权人的信息会明显损害作品的质量,而利用文件的附加信息标识版权又很不安全。相比之下,在不过多损害作品质量的前提下,使用数字水印技术将版权管理信息秘密嵌入数据中,是一个非常理想的解决方案。
二、参考文献
1.王炳锡,陈琦,邓峰森.数字水印技术.西安电子科技大学出版社.2003.7
2.王家文,曹宇编著.MATLAB6.5图形图像处理.国防工业出版社.2004.7
3.飞思科技产品研发中心编著.MATLAB6.5辅助图像处理.电子出版社.2003.1
4.王爱铃等编著.MATLAB R2007.电子工业学出版社.2008.1
5.杨忠泽.MATLAB数字水印工具箱实现.华南理工大学硕士学位论文.2005.5
6.黄继武,Yun Q SHI,程卫东.DCT域图像水印嵌入对策和算法[J].电子学报.2000.2
7.邵佳,董辰辉编.MATLAB/Simulink通信系统建模与仿真实例精讲.电子工业出版社.2009.6
三、参考代码
1.水印嵌入算法程序
M=256;
N=32;
K=8;
subplot(2,2,1);I=imread('lena.bmp','bmp');imshow(I);title('原始公开图像');
subplot(2,2,2);J=imread('flag.bmp','bmp');imshow(J);title('水印图像');
for p=1:N
for q=1:N
x=(p-1)*K+1;y=(q-1)*K+1;
BLOCK=I(x:x+K-1,y:y+K-1);
BLOCK=dct2(BLOCK);
if J(p,q)==0
a=-1;
else
a=1;
end
BLOCK=BLOCK*(1+a*0.02);
BLOCK=idct2(BLOCK);
I(x:x+K-1,y:y+K-1)=BLOCK;
end
end
subplot(2,2,3);imshow(I);title('含水印的图像')
imwrite(I,'watermarked.bmp','bmp');
2.水印提取算法程序
N=32;
K=8;
I=imread('lena.bmp','bmp');
J=imread('watermarked.bmp','bmp');
for p=1:N
for q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1=I(x:x+K-1,y:y+K-1);
BLOCK2=J(x:x+K-1,y:y+K-1);
BLOCK1=idct2(BLOCK1);
BLOCK2=idct2(BLOCK2);
a=BLOCK2(1,1)/BLOCK1(1,1)-1;
if a<0
W(p,q)=0;
else
W(p,q)=1;
end
end
end
subplot(2,2,4);imshow(W);title('提取的水印');