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

📄 guangyi.m

📁 数字图象加密程序(编写的数字图象加密程序)
💻 M
字号:
clear all;

Image=double(imread('D:\work\lena.jpg'));

Ih=size(Image,1);%图像的长度
Iw=size(Image,2);%图像的宽度
Biao=(Ih*Iw)/256;
Junfang=double(zeros(1,1));
Guiyi=double(zeros(1,1));

% for(t=1:3)
figure(1)
subplot(2,1,1)
imshow(Image,[]);%显示原始图像
title('原始图像');
Image=uint8(Image);
figure(1)
subplot(2,1,2)
imhist(Image);
title('原始图像的直方图');


True=double(zeros(1,256));
Gailv=double(zeros(1,256));
M=double(zeros(1,256));
N=double(zeros(1,256));
Q=double(zeros(size(Image)));

Image=double(Image);
key1=4;
key2=0.7;
Kimage=double(zeros(size(Image)));
Limage=double(zeros(size(Image)));
Kimage1=double(zeros(size(Image)));
Kimage2=double(zeros(size(Image)));
Kimage3=double(zeros(size(Image)));
key=0;
% Himage=zeros(size(Image));

% Ih=size(Image,1);%图像的长度
% Iw=size(Image,2);%图像的宽度
% Kimage(1)=key2;

for(i=1:257)
    M(i)=sin(((i-1)*pi)/512);
end

for(i=1:Ih)
        for(j=1:Iw)
            key2=key1*(key2*(1-key2));
%             key=mod((key2*256),256);
%             Kimage1(i,j)=round(key);
%             Kimage2(i,j)=round(key);
%             Kimage3(i,j)=round(key);
             Kimage(i,j)=Kimage1(i,j)*Kimage2(i,j)+(1-Kimage(i,j))*Kimage3(i,j);
             Limage(i,j)=Kimage(i,j);
%              Image(i,j)=mod((Kimage(i,j)+Image(i,j)),256);
             for(k=0:256)
                  while (Kimage(i,j)<M(k+1))&(Kimage(i,j)>=M(k))
                       Kimage(i,j)=k;
                  end
            break
             end
             Image(i,j)=mod((Kimage(i,j)+Image(i,j)),256);
        end
end
  
% Image=mod((Kimage+Image),256);
figure(2)
subplot(2,1,1)
imshow(Image,[]);
title('加密图像');
Image=uint8(Image);
figure(2)
subplot(2,1,2)
imhist(Image);
title('加密图像的直方图');

for(i=1:Ih)
        for(j=1:Iw)
            for(k=1:256)
                if(Image(i,j)==(k-1))
                    True(k)=True(k)+1;
                end
            break
                if(Kimage(i,j)==(k-1))
                    Gailv(k)=Gailv(k)+1;
                end
            
            end
        end
    end
  for(k=1:256) 
      True(k)=(True(k)-Biao)^2;
      Junfang=Junfang+True(k);
  end
  Junfang=Junfang/(Ih*Iw);
  for(i=1:256)
      Guiyi=Guiyi+Gailv(i);
      N(i)=i;
      Q(i)=i;
  end
  for(i=1:256)
      Gailv(i)=Gailv(i)/Guiyi;
      
  end
    figure(3)
    subplot(2,1,1)
    plot(N,Gailv);
    title('伪随机序列离散化后统计值');
    figure(3)
    subplot(2,1,2)
    plot(Q,Limage);
    title('伪随机序列离散化前统计值');
% end
% for(k=1:3)
%  Junfang(k)=Junfang(k)/(Ih*Iw);
% end

⌨️ 快捷键说明

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