1 / 7
文档名称:

小波实验报告dwt水印.doc

格式:doc   大小:119KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

小波实验报告dwt水印.doc

上传人:WonderA 2021/7/19 文件大小:119 KB

下载得到文件列表

小波实验报告dwt水印.doc

文档介绍

文档介绍:一、题目:dwt水印
二、目的:编程实现水印的嵌入与还原
三、算法及其实现:水印的嵌入与还原
小波变换具有空间-频率的多尺度性,对图像的分解可以连续地从低分辨率过渡到高分辨率,也可以对图像整体进行变换,DWT还具有多分辨率特性,可以很好地与人类视觉系统(HVS)特性相匹配。
本算法将载体图像进行小波分解,利用公式实现水印信息的嵌入。将2值图像中0和1的值变成-1和1。。将水印入宿主图形重要的小波系数上。
水印的提取完全是水印嵌入的逆过程。
四、实现工具:Matlab
五、程序代码:
(1)
%嵌入源码
clc
clear all;
% 保存开始时间
start_time=cputime;
k=20;
blocksize=8; % 设置块的大小
% 读入原图像
file_name='';
cover_object=double(imread(file_name));
% 原图像的行数与列数
Mc=size(cover_object,1); %原图像行数
Nc=size(cover_object,2); %原图像列数
% 最大嵌入信息量
max_message=Mc*Nc/(blocksize^2);
% 读入水印图像
file_name='';
message=double(imread(file_name));
%%水印图像的行数与列数
Mm=size(message,1); %水印行数
Nm=size(message,2); %水印列数
message_vector=reshape(message,1,Mm*Nm);
% 检查水印信息是否过大
if (Mm*Nm> max_message)
error('水印太大')
end
%将随机数发生器的状态置为1100
randn('state',1100);
% 产生watermarked_image,并写入原图信息
watermarked_image=cover_object;
% 将图像分块嵌入
% 当 (2,2) > (2,3) 且 message_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');
a=cD1;
% 如果 message_pad(kk)== 0
if (message_vector(kk) == 0)