📄 dwtwatermark.txt
字号:
/*****************************************
图像先进行DWT一级分解,用两个不相关的伪随机序列分别代表水印信息中的0和1,潜入到小波分解后的LH和HL两个字图上。
注:整个算法分水印嵌入和水印提取两个部分。
/*****************************
%小波扩频水印嵌入部分
k=2;
file_name='';
cover_object=double(imread(file_name));
Mc=size(cover_object,1);
Nc=size(cover_object,2);
file_name='';
message=double(imread(file_name));
Mm=size(message,1);
Nm=size(message,2);
message_vector=round(reshape(message,Mm*Nm,1)./256);
file_name='';
key=double(imread(file_name))./256;
%产生PN序列密钥
rand('state',key);
[cA1,cH1,cV1,cD1]=dwt2(cover_object,'haar');
%将PN序列嵌入到小波分解后的LH分量和HL分量上
for(kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mc/2,Nc/2)-0.5));
pn_sequence_v=round(2*(rand(Mc/2,Nc/2)-0.5));
if(message(kk)==0)
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_h;
end
end
%小波反变换
watermarked_image=idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);
watermarked_image_uint8=uint8(watermarked_image);
imwrite(watermarked_image_uint8,'dwt_watermarked.bmp','bmp');
psnr=PSNR(cover_object,watermarked_image_uint8,Mc,Nc),
%显示图像
figue(1)
imshow(watermarked_image_uint8,[])
title('Watermarked Image')
%小波扩频水印提取部分
file_name='dwt_watermarked.bmp';
watermarked_image=double(imread(file_name));
Mw=size(watermarked_image,1);
Nw=size(watermarked_image,2);
file_name='_copyright.bmp';
orig_watermark=double(imread(file_name));
Mo=size(orig_watermark,1);
No=size(orig_watermark,2);
file_name='_key.bmp';
key=double(imread(file_name))./256;
rand('state',key);
message_vector=ones(1,Mo*No);
[cA1,cH1,cV1,cD1]=dwt2(watermarked_image,'haar');
for(kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mw/2,Nw/2)-0.5));
pn_sequence_v=round(2*(rand(Mw/2,Nw/2)-0.5));
correlation_h(kk)=Similar(cH1,pn_sequence_h);
correlation_v(kk)=Similar(cV1,pn_sequence_v)
end
for(kk=1:length(message_vector))
if(correlation(kk)>mean(correlation))
message_vector(kk)=0;
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_h;
end
end
figure(2)
message=reshape(message_vector,Mo,No);
imshow(message,[])
title('Recovered Watermark')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -