




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上DWT水印源码1%DWT水印源码%完全根据DCT1修改,只为了抛砖引玉%人生在于尝试,快乐。%有错误的地方希望大家指正%嵌入源码clcclear all;% 保存开始时间start_time=cputime;k=20; blocksize=8; % 设置块的大小% 读入原图像file_name='_lena_std_bw.bmp'cover_object=double(imread(file_name);% 原图像的行数与列数Mc=size(cover_object,1);
2、0; %原图像行数Nc=size(cover_object,2); %原图像列数% 最大嵌入信息量max_message=Mc*Nc/(blocksize2);% 读入水印图像file_name='c.bmp'message=double(imread(file_name);%水印图像的行数与列数Mm=size(message,1); %水印行数Nm=size(message,2);
3、 %水印列数message_vector=reshape(message,1,Mm*Nm);% 检查水印信息是否过大if (Mm*Nm> max_message) error('水印太大')end%将随机数发生器的状态置为1100randn('state',1100);% 产生watermarked_image,并写入原图信息watermarked_image=cover_object;% 将图像分块嵌入% 当 (2,2) > (2,3) 且 message
4、_pad(kk)=0% 当 (2,2) < (2,3) 且 message_pad(kk)=1%经过分析可以得出结论:在提取水印时,如果cD1(2,2)>cD1(2,3)便是嵌入了水印的黑色像素,%反之则是嵌入了白色像素x=1;y=1;h=waitbar(0,'嵌入水印,请等待');for (kk = 1:length(message_vector) % 对块进行DWT变换 cA1,cH1,cV1,cD1 = dwt2(cover_object(x:x+blocksize-1,y:y+blocksize-1),'haar');
5、 a=cD1; % 如果 message_pad(kk)= 0 if (message_vector(kk) = 0) % 且(2,2) < (2,3) ,交换它们 if (cD1(2,2) < cD1(2,3) temp=cD1(2,3); cD1(2,3)=cD1(2,2); cD1(2,2
6、)=temp; end % 如果message_pad(kk) = 1, elseif (message_vector(kk) = 1) % 且(2,2) > (2,3) ,交换它们 if (cD1(2,2) >= cD1(2,3) temp=cD1(2,3); cD1(2,3)=cD1(2,2);
7、60; cD1(2,2)=temp; end end % 检查(2,2) , (2,3)的差是否>= k if cD1(2,2) > cD1(2,3) if cD1(2,2) - cD1(2,3) < k cD1(2,2)=cD1(2,2)+(k/2); cD1(2,3)=cD1(2,3)-(k/2);
8、; end else if cD1(2,3) - cD1(2,2) < k cD1(2,3)=cD1(2,3)+(k/2); cD1(2,2)=cD1(2,2)-(k/2); end end %IDWT watermarked_image(x:x+blocksize-1
9、,y:y+blocksize-1)= idwt2(cA1,cH1,cV1,cD1,'haar',Mc,Nc); % 移动到下一块 if (x+blocksize) >= Nc x=1; y=y+blocksize; else x=x+blocksize; end waitbar(kk/length(message_vector),h);endclose(h);% 转换为uint8并写入dwt_watermarked.bmpwaterma
10、rked_image_uint=uint8(watermarked_image);imwrite(watermarked_image_uint,'dwt_watermarked.bmp','bmp');% 显示运行时间elapsed_time=cputime-start_time,% 计算psnr值psnr=psnr(cover_object,watermarked_image), % 显示图像figure(1)imshow(message,);title('水印');figure(2)subplot(1,2,1);imshow(watermar
11、ked_image,)title('嵌入水印图像')subplot(1,2,2);imshow(cover_object,);title('原图');%提取源码clear all;% 保存开始时间start_time=cputime;blocksize=8; % 设置块的大小% 读入嵌入水印图像file_name='dwt_watermarked.bmp'watermarked_image=double(imread(file_name);% 嵌入水印图像的行数与列数Mw=size(watermarked_image,1);
12、60; %嵌入水印图像的行数Nw=size(watermarked_image,2); %嵌入水印图像的列数% 最大嵌入信息量max_message=Mw*Nw/(blocksize2);% 读入原始水印file_name='c.bmp'orig_watermark=double(imread(file_name);% 原始水印的行数与列数Mo=size(orig_watermark,1); %原始水印的行数No=size(orig_watermark,2
13、); %原始水印的列数% 将图像分块提取水印x=1;y=1;h=waitbar(0,'水印提取中,请等待');for (kk = 1:max_message) % 对块进行dwt变换 cA1,cH1,cV1,cD1 = dwt2(watermarked_image(x:x+blocksize-1,y:y+blocksize-1),'haar'); % 如果cD1(2,2) > cD1(3,3) 那么 message_vector(kk)=0 % 否则 message_v
14、ector(kk)=1 if cD1(2,2)>cD1(3,3) message_vector(kk)=0; else message_vector(kk)=1; end % 移动到下一块 if (x+blocksize) >= Mw x=1; y=y+blocksize; else x=x+blocksize; end waitbar(kk/max_message,h);endclose(h);% 将message重新排列message_vector=message_vector(1,1:Mo*No); %只需前Mo*N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆转让与驾驶培训合同
- 纺织器材承揽加工合同书(30篇)
- 和法院的合同6篇
- 园区工厂场地租赁合同3篇
- 第三方购房合同4篇
- 生猪屠宰合作合同协议书
- 建筑工人劳务合同与建筑工人劳务合同模板5篇
- 砂石运输简单版的合同
- 量子信息科学与复杂系统交叉研究-洞察阐释
- 脚本语言在区块链治理-洞察阐释
- 期中词性转换专练 2023-2024学年牛津上海版(试用本)八年级英语下册
- 北京市海淀区2023-2024学年九年级上学期期末练习英语试题
- FMECA方法及工程应用案例
- Premiere影视剪辑习题及答案
- 10kV配电室施工方案及技术措施
- 2023年专业英语四级真题试卷及答案(二)
- 数据链系统与技术(第2版) 课件 第3、4章 Link-4、Link-11和Link-22数据链;Link-16数据链
- 联合协议书模板
- 猴痘防控工作方案
- 厂房租赁合同2
- 人教版高中生物必修二复习提纲
评论
0/150
提交评论