📄 recover.m
字号:
close all;
clear all;
%读入待测的图像
file_name='dwt_watermarked.jpg';
watermarked_image=imread(file_name);
[image_size_v,image_size_h]=size(watermarked_image);
figure(1);
imshow(watermarked_image);
%读入宿主图像
file_name='lena.jpg';
image_original=imread(file_name);
figure(2);
imshow(image_original);
file_name='watered_double.dat';
fid=fopen(file_name);
watered_image = fscanf(fid,'%e\t',inf);
fclose(fid);
for num_i=1:1:image_size_v;
for num_j=1:1:image_size_h;
position_=(num_i-1)*image_size_h+num_j;
dwt_watered_image(num_j,num_i)=watered_image(position_);
end;
end;
figure(3);
%image(dwt_watered_image);
imshow(uint8(dwt_watered_image));
colormap;
%imshow(uint8(watered_image));
%[wtd_lla,wtd_lha,wtd_hla,wtd_hha]=dwt2(double(watermarked_image),'haar');%待检测的图像一级小波变换
[wtd_lla,wtd_lha,wtd_hla,wtd_hha]=dwt2(dwt_watered_image,'haar');%待检测的图像一级小波变换
figure(4);
subplot(2,2,1);
%imshow(uint8(wtd_lla));
image(wtd_lla);
subplot(2,2,2);
imshow(wtd_lha);
subplot(2,2,3);
imshow(wtd_hla);
subplot(2,2,4);
imshow(wtd_hha);
[wtd_llb,wtd_lhb,wtd_hlb,wtd_hhb]=dwt2(image_original,'haar');%原始宿主图像一级小波变换
%提取输出水印
waterm_r=0.03;
watermark_hh=(wtd_hha-wtd_hhb)./waterm_r; %xor(uint8(wtd_hha),uint8(wtd_hhb));
for i=1:64;
for j=1:64;
watermark_a(i,j)=watermark_hh(i,j);
end
end
figure(5);
imshow(uint8(watermark_hh));
figure(6);
imshow(uint8(watermark_a));
%image(watermark_ll);
%生成并输出嵌入水印后的图像
title('Recovered Watermark');
imwrite(watermark_hh ,'watermark_R.jpg','jpg');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -