pickup.m

来自「利用同一密钥的混沌序列对经过置乱的水印信息实现双重加密」· M 代码 · 共 69 行

M
69
字号
clc;
clear;
%读取水印信息
Wfile_name='\shuiyin.jpg';
ma=double(imread(Wfile_name))/255;
%[m,n]=size(ma);
m=64;
n=64;
%得到嵌入的起始位置S=5,T1,T2
p1=22;
p2=22;
T1=2;
T2=4;
%读取图像信息
Cfile_name='\ImTemp.bmp';

WC_image=imread(Cfile_name);

%小波变换
[cA1,cH1,cV1,cD1] = dwt2(WC_image,'db4');
for i=p1+1:p1+96
    for j=p2+1:p2+96
       temp(i-p1,j-p2)=mod(cA1(i,j),5);
    end
end
for i=1:96
   for j=1:96
       if abs(temp(i,j))>=(T1+T2)/2
       WTemp(i,j)=1;
       else
           WTemp(i,j)=0;
       end
    end
end

randmtx=randCL(96,96,0.5,3.6);
%置换的序列同混沌序列做异或运算
for i=1:96
    for j=1:96
        if randmtx(i,j)>0.30
            randmtx(i,j)=1;
        else
            randmtx(i,j)=0;
        end
    end
end
WTemp=xor(WTemp,randmtx)
[matrix,row1,col1]=chaos(WTemp,3,96,12);
for i=1:m
    for j=1:n
        P_Temp(i,j)=matrix(i,j);
    end
end

figure(1);
%subplot(1,2,1);
imshow(WTemp),title('置乱水印');
figure(2)
imwrite(P_Temp,'jzh.bmp','bmp');
image1=imread('\jzh.bmp','bmp');
        
image1=imnoise(image1,'gaussian',0.0005);
imwrite(image1,'jzh1.bmp','bmp');
image=double(imread('\jzh1.bmp','bmp'))/255;

imwrite(image,'jzh2.bmp','bmp');
image2=imread('\jzh2.bmp','bmp');
imshow(image2),title('加躁后还原后水印');
        

⌨️ 快捷键说明

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