⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watermark.m

📁 实现小波数字水印
💻 M
字号:
clear;clc;

%读取水印
w=imread('watermark.jpg');
figure
imshow(w)
title('原始水印');

%水印置乱
Ln=10;
w=Arnold(w,Ln);
figure
imshow(w)
title('置乱水印');

%位图分解
wb=Bitdecom(w);

%重新组合
wb1=[wb(:,:,1) wb(:,:,2) wb(:,:,3) wb(:,:,4)];
wb2=[wb(:,:,5) wb(:,:,6) wb(:,:,7) wb(:,:,8)];
wb3=[wb1;wb2];

%化为二进制数据流
wbs=reshape(wb3,1,64*64*8);

%读取宿主图像
o=imread('lena.jpg');
figure
imshow(o)
o=double(o);
title('原始宿主图像');

%量化数组的长度
N=3;

%嵌入水印
[WLoc,CA,CH,CV,CD]=Embed(o,wbs,N);

%重构嵌入水印后的宿主图像
r=IDWT2(CA,CH,CV,CD,'haar');
r=uint8(r);
figure
imshow(r)
title('嵌入水印后宿主图像');

%计算宿主图像峰值信噪比
r=double(r);
PSNRH = sum(sum((r-o).^2))/512/512;
PSNRH = 10*log10(255^2/PSNRH)


%提取二进制数据流
wbsr=Extract(r,WLoc,N);

%转为为矩阵
wb3r=reshape(wbsr,128,256);

%重新组合
for i=1:8
    rm=ceil(i/4);
    cn=i-(rm-1)*4;
    wbr(:,:,i)=wb3r(1+64*(rm-1):64+64*(rm-1),1+64*(cn-1):64+64*(cn-1));
end

%位图重构
wr=Bitrecon(wbr);

%计算水印峰值信噪比
w=double(w);
PSNRW = sum(sum((wr-w).^2))/64/64;
PSNRW = 10*log10(255^2/PSNRW)

%显示提取的置乱水印
wr=uint8(wr);
figure
imshow(wr)
title('提取的置乱水印');

%进行置乱逆变换,显示水印
wr=iArnold(wr,Ln);
figure
imshow(wr)
title('提取的水印');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -