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

📄 wm.m

📁 Matlib 的一个数字水印代码 需要的朋友可以看看欢迎指点
💻 M
字号:
clear
X=double(imread('lena_512.bmp'));
[xc,xs]=wavedec2(X,3,'db1');
M=size(X,1);

Y=imread('mark.bmp');
[yc,ys]=wavedec2(Y,1,'db1');
N=size(Y,1);

m=M/(2^3);
sum1=0;
for i=1:m*4*m %计算xc(1:64)平均值ave
    sum1=sum1+xc(i);
end
ave=sum1/(m*m*4);
sum2=0;
for i=1:m*m*4
    tmp=xc(i)-ave;
    sum2=sum2+tmp^1.8;
end
st=sum2/(m*m*4);
j=1;
for i=1:1:N*N    %-1:N*N-(N/2)^2+1
    a=(xc(j)-ave)/st;
    xc(j)=xc(j)+(0.08-a)*yc(i);
    j=j+4;
end

im_m=waverec2(xc,xs,'db1');
figure 
subplot(121);imshow(X,[]);
subplot(122);imshow(im_m,[]);
imwrite(uint8(im_m),'lena512m.bmp');

Y=double(imread('lena512m.bmp'));
psnr_m=20*log10(512^2*255^2/sum(sum((X-Y)^2)))

    
    clear
X=double(imread('lena_512.bmp'));
[xc,xs]=wavedec2(X,3,'db1');
M=size(X,1);

Y=double(imread('lena512m.bmp'));
%Y(1:256,1:256)=0;
[yc,ys]=wavedec2(Y,3,'db1');
N=size(Y,1);

m=M/(2^3);
sum1=0;
for i=1:m*4*m %计算xc(1:64)平均值ave
    sum1=sum1+xc(i);
end
ave=sum1/(m*m*4);
sum2=0;
for i=1:m*m*4
    tmp=(xc(i)-ave);
    sum2=sum2+tmp^1.8;
end
st=sum2/(m*m*4);T=64;
wc=zeros(1,T*T);
j=1;
for i=1:1:T*T  
    a=(xc(j)-ave)/st;
    wc(i)=(yc(j)-xc(j))/(0.08-a);
    j=j+4;
end
ws=zeros(3,2);
ws(1:2,1:2)=T/2;ws(3,1)=T;ws(3,2)=T;
w_m=waverec2(wc,ws,'db1');
w=double(imread('mark.bmp'));

figure
imshow(Y,[]);
figure
imshow(w_m,[]);
imwrite(uint8(w_m),'remark.bmp');

psnr_im=20*log10(512^2*255^2/sum(sum((X-Y)^2)))
psnr_mark=20*log10(64^2*255^2/sum(sum((w-w_m)^2)))
clear
X=double(imread('lena_512.bmp'));
[xc,xs]=wavedec2(X,3,'db1');
M=size(X,1);
Z=imread('lena512m.bmp');
imwrite(Z,'lenajp.jpg','Q',40);
Y=double(imread('lenajp.jpg'));
%Y(1:256,1:256)=0;
[yc,ys]=wavedec2(Y,3,'db1');
N=size(Y,1);

m=M/(2^3);
sum1=0;
for i=1:m*4*m %计算xc(1:64)平均值ave
    sum1=sum1+xc(i);
end
ave=sum1/(m*m*4);
sum2=0;
for i=1:m*m*4
    tmp=(xc(i)-ave);
    sum2=sum2+tmp^2;
end
st=sum2/(m*m*4);T=64;
wc=zeros(1,T*T);
j=1;%64*64-32*32;
for i=1:1:T*T  
    a=(xc(j)-ave)/st;
    wc(i)=(yc(j)-xc(j))/(0.08-a);
    j=j+4;
end
ws=zeros(3,2);
ws(1:2,1:2)=T/2;ws(3,1)=T;ws(3,2)=T;
w_m=waverec2(wc,ws,'db1');

figure
imshow(Y,[]);
figure
imshow(w_m,[]);
imwrite(uint8(w_m),'remark.bmp');
w=double(imread('mark.bmp'));

psnr_im=10*log10(512^2*255^2/sum(sum((X-Y)^2)))
psnr_mark=10*log10(64^2*255^2/sum(sum((w-w_m)^2)))

⌨️ 快捷键说明

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