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

📄 mylena_e_d.m

📁 multi_wavelet An Image Digital Watermarking Algorithm Based on Bit-Plane-Decomposition and Multi-
💻 M
字号:
%杨 军1 ,佘 堃2,钟守铭<一种基于位平面分解的多分辨率数字水印算法>
%2007第36卷,第3期,电子科技大学学报
clc;
clear all;
                  %图像的小波分解
XX=imread('_lena_std.bmp');%figure(1);imshow(XX,[]);title('图4-2(a)原载体图象')
 X=double(XX);M=size(X,1);
ch='db1';
[c1,h1,v1,d1]=dwt2(X,ch);
[c2,h2,v2,d2]=dwt2(c1,ch);
[c3,h3,v3,d3]=dwt2(c2,ch);
                  %灰度水印的金字塔分解
G0=imread('baboon64.bmp');%figure(2);imshow(G0,[]);title('G0图象')uestc.bmp');%
G1=G_P_dec(G0);
G2=G_P_dec(G1);%figure(3);imshow(G2,[]);title('G2图象')%G2:灰度水印金字塔分解的第0层
G1_1=expand(G1);
G2_2=expand(G2); 
L0=G0-G1_1;%figure(4);imshow(L0,[]);title('L0图象')%L0:灰度水印金字塔分解的第0层
L1=G1-G2_2;%figure(5);imshow(L1,[]);title('L1图象')%L1:灰度水印金字塔分解的第1层
%G0_0=L0+expand(L1+expand(G2));figure(5);imshow(G0_0,[]);
                       
       %多分辨水印的位平面分解
 % G2_coef;G_2=bit_dec(coef_G2);%为16*16的电子科技大学图标值 
G_2=bit_dec(double(G2));%%G2的位平面分解(得到8个位平面)
% % GG_2=bit_rec(G_2);figure(6);imshow(uint8(GG_2),[]);title('位平面重构G2图象')
 % L1_coef;L_1=bit_dec(coef_L1);%为32*32的电子科技大学图标值 
L_1=bit_dec(double(L1));
% % LL_1=bit_rec(L_1);figure(7);imshow(uint8(LL_1),[]);title('位平面重构L1图象')
% L0_coef;L_0=bit_dec(coef_L0);%为64*64的电子科技大学图标值
L_0=bit_dec(double(L0));
% % LL_0=bit_rec(L_0);figure(8);imshow(uint8(LL_0),[]);title('位平面重构L0图象')
              %将水印的位平面作为掩码信息嵌入到对应的多分辨分解图像的小波系数中
              step=8;
[Q_v3,A_v3]=qual_emb1(G_2(:,:,1),G_2(:,:,2),G_2(:,:,3),G_2(:,:,4),v3,step);%step=8代表量化步长
[Q_h3,A_h3]=qual_emb1(G_2(:,:,5),G_2(:,:,6),G_2(:,:,7),G_2(:,:,8),h3,step);
[Q_v2,A_v2]=qual_emb1(L_1(:,:,1),L_1(:,:,2),L_1(:,:,3),L_1(:,:,4),v2,step);
[Q_h2,A_h2]=qual_emb1(L_1(:,:,5),L_1(:,:,6),L_1(:,:,7),L_1(:,:,8),h2,step);
[Q_v1,A_v1]=qual_emb1(L_0(:,:,1),L_0(:,:,2),L_0(:,:,3),L_0(:,:,4),v1,step);
[Q_h1,A_h1]=qual_emb1(L_0(:,:,5),L_0(:,:,6),L_0(:,:,7),L_0(:,:,8),h1,step);
             %IDWT重构出嵌入水印之后的图像
c_2_=idwt2(c3,Q_h3,Q_v3,d3,ch);
c_1_=idwt2(c_2_,Q_h2,Q_v2,d2,ch);
x=idwt2(c_1_,Q_h1,Q_v1,d1,ch);
xx=uint8(x);
figure(9);imshow(xx,[]);title('图4-2(b)嵌入水印之后的载体图像')

               %计算PSNR
mse=sum(sum((x-X).^2))/(M*M);
PSNR=10*log10(255^2/mse);
disp('PSNR=');disp(PSNR);
              
               %提取水印的程序
[c_1,h_1,v_1,d_1]=dwt2(x,ch);
[c_2,h_2,v_2,d_2]=dwt2(c_1,ch);
[c_3,h_3,v_3,d_3]=dwt2(c_2,ch);
N=16;
[G2_1,G2_2,G2_3,G2_4,A1]=qual_det1(v_3,2*N,step);
[G2_5,G2_6,G2_7,G2_8,A2]=qual_det1(h_3,2*N,step);
GG2=zeros(N,N,8);
GG2(:,:,1)=G2_1;GG2(:,:,2)=G2_2; GG2(:,:,3)=G2_3; GG2(:,:,4)=G2_4;
GG2(:,:,5)=G2_5;GG2(:,:,6)=G2_6; GG2(:,:,7)=G2_7; GG2(:,:,8)=G2_8;

 [L1_1,L1_2, L1_3, L1_4,A3]=qual_det1(v_2,4*N,step);
 [L1_5,L1_6, L1_7, L1_8,A4]=qual_det1(h_2,4*N,step);
 LL1=zeros(2*N,2*N,8);
 LL1(:,:,1)=L1_1;LL1(:,:,2)=L1_2; LL1(:,:,3)=L1_3;LL1(:,:,4)=L1_4;
 LL1(:,:,5)=L1_5;LL1(:,:,6)=L1_6;LL1(:,:,7)=L1_7; LL1(:,:,8)=L1_8;
 
 [L0_1,L0_2, L0_3, L0_4,A5]=qual_det1(v_1,8*N,step);
 [L0_5,L0_6, L0_7, L0_8,A6]=qual_det1(h_1,8*N,step);
 LL0=zeros(4*N,4*N,8);
 LL0(:,:,1)=L0_1;LL0(:,:,2)=L0_2; LL0(:,:,3)=L0_3;LL0(:,:,4)=L0_4;
 LL0(:,:,5)=L0_5;LL0(:,:,6)=L0_6;LL0(:,:,7)=L0_7; LL0(:,:,8)=L0_8;

                %由位平面重构出多分辨水印
  GG_2=uint8(bit_rec(GG2));
  LL_1=uint8(bit_rec(LL1));
  LL_0=uint8(bit_rec(LL0));

                %由多分辨水印重构出原始水印
GG_0=LL_0+expand(LL_1+expand(GG_2));figure(10);imshow(GG_0,[]);title('图4-2(d)重构出水印图像')
    
              %计算NC(归一化相关系数)
NC=sum(sum(G0.*GG_0))/sum(sum((G0.*G0)));
disp('NC=');disp(NC);          

⌨️ 快捷键说明

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