版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025航空空域行业市场供需分析及投资评估规划分析研究报告
- 2025航空客运行业市场现状供需分析及投资评估规划分析研究报告
- 2025航空制造行业高端装备分析及供应链投资策略研究报告
- 2025航空制造行业市场供需分析及投资评估规划分析研究报告
- 2025航海船舶制造业市场研究分析现状供需态势条件投资评估项目融资发展报告
- 房地产项目合同管理流程指南
- 网球促销活动方案策划(3篇)
- 如何策划舆论活动方案(3篇)
- 酒店营造活动策划方案(3篇)
- 长城夜市活动策划方案(3篇)
- 科技园区入驻合作协议
- 电大专科《个人与团队管理》期末答案排序版
- 山东科技大学《基础化学(实验)》2025-2026学年第一学期期末试卷
- 2025年河北邯郸武安市公开招聘食品检测专业技术人员4名笔试考试参考题库及答案解析
- 2025年吐鲁番辅警招聘考试题库必考题
- 急诊科护理教案
- 胸外科诊疗指南技术操作规范
- 护理放射科小讲课
- 2025-2026学年冀教版二年级数学上册(全册)教学设计(附目录)
- 2025年生态环境监测系统建设可行性研究报告及总结分析
- 桥下开挖施工方案
评论
0/150
提交评论