首页 DCT数字图像水印算法MATLAB仿真代码

DCT数字图像水印算法MATLAB仿真代码

举报
开通vip

DCT数字图像水印算法MATLAB仿真代码DCT数字图像水印算法MATLAB仿真代码 DCT数字图像水印算法MATLAB仿真代码 大家好: 为了解决很多同学学习数字图像水印技术的需求,整理了matlab图像水印代码,利用matlab提供的强大图像处理数学函数来进行水印的嵌入和提取。 MATLAB程序代码加注释如下(方便大家直接粘贴代码运行程序特整理为DOC格式):以后本人会陆续把本科的学习资料上传至本人javaewb的百度文库,百度空间博客。 注:本文的水印算法是半盲水印和脆弱水印模型。半盲水印模型提取水印时需要原始图像,而盲水印算法则不需要 m...

DCT数字图像水印算法MATLAB仿真代码
DCT数字图像水印算法MATLAB仿真代码 DCT数字图像水印算法MATLAB仿真代码 大家好: 为了解决很多同学学习数字图像水印技术的需求,整理了matlab图像水印代码,利用matlab提供的强大图像处理数学函数来进行水印的嵌入和提取。 MATLAB程序代码加注释如下(方便大家直接粘贴代码运行程序特整理为DOC格式):以后本人会陆续把本科的学习资料上传至本人javaewb的百度文库,百度空间博客。 注:本文的水印算法是半盲水印和脆弱水印模型。半盲水印模型提取水印时需要原始图像,而盲水印算法则不需要 m=256;%图像大小,图像格式必须是8位灰度图像,大小是的方阵。 256256, 88,3232,n=32;%水印嵌入块的个数,即256/8=32,即每个图像块的大小是的方阵,一共有个。 k=8; %水印嵌入块的大小 %初始化变量 i=zeros(m,m);j=zeros(n,n); block=zeros(k,k); %处理块的大小 subplot(3,2,1);i=imread('lena256.bmp','bmp');imshow(i);%读取水印载图即原始图像 title('原始公开图像'); 3232,subplot(3,2,2);j=imread('flag32.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);%对每个块进行DCT if j(p,q)==0 a=-1; else a=1; end block=block*(1+a*0.05);%嵌入系数越大越明显且压缩提取效果好 小于0.006提取水印效果不 好%且压缩提取效果差 大于0.012压缩提取可辨认提取水印效果好。 block=idct2(block); i(x:x+k-1,y:y+k-1)=block; end end %% subplot(3,2,3);imshow(i);title('嵌入水印后的图像 '); % 保存嵌入水印的图像 imwrite(i,'watermarked.bmp','bmp'); %% 提取水印过程 i=imread('lena256','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=dct2(block1); block2=dct2(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(3,2,4); imshow(w); title('从含水印的图像中提取的水印'); imwrite(w,'withdraw.bmp','bmp'); %% 下面是对嵌入水印的图像进行JPEG压缩攻击的测试过程 m=256;n=32;k=8; i=zeros(m,m);j=zeros(m,m);w=zeros(n,n); block1=zeros(k,k);block2=zeros(k,k); l=imread('watermarked.bmp','bmp'); imwrite(l,'attack.jpg','jpeg','quality',70);%matlab的图像写函数可以选择格式和参数,JPFG的格式% 和参数具体参考MATLAB的imwrite帮助 j=imread('attack.jpg','jpeg'); subplot(3,2,5);imshow(j);title('压缩后图像'); i=imread('lena256','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=dct2(block1); block2=dct2(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(3,2,6); imshow(w); title('从经过压缩的图象中提取的水印'); imwrite(w,'yati.bmp','bmp'); 完
本文档为【DCT数字图像水印算法MATLAB仿真代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:16KB
软件:Word
页数:4
分类:企业经营
上传时间:2017-10-10
浏览量:67