?? mylena_e_d.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 + -