MATLAB数字水印算法设计

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('提取的水印');

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值