• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Matlab
  • 标签: Arnold  变换  

资源简介

Arnold 变换的典型算法, Matlab程序。

资源截图

代码片段和文件信息

function ZZP_Arnold(Imagekey)
%输入参数说明:
% Image:         待加密的图像文件名(注意写格式后缀),只能为二维
%   key:           图像需要变换迭代的次数(密钥)
%输出参数说明:
%         M: 置乱后图像数据矩阵
%     zzp.bmp:             输出由M对应的图像文件
%中间变量说明
%           N:              图像的阶数
%           T:              图像的周期  
%*********************图像数值矩阵Arnold转换函数****************************
%输入格式控制
if nargin<2                            %如果输入参数小于2
    disp(‘请按程序的输入参数格式输入参数!!!‘);
    return;
end
%----------------------------Arnold 变换-----------------------------------
message=double(imread(Image));          %读入文件
Size_Q = size(message);                 %计算原始图像的大小
Mm=size(message1);                     %计算原始图像矩阵的行数           
Nm=size(message2);                     %计算原始图像矩阵的列数   
%如果不是二维或三维数组,则不处理,返回
if (length(Size_Q) == 2) 
   if  Mm~=Nm  
      disp(‘不是方阵,不能Arnold转换‘);
      return
   end
else
   disp(‘不是二维数组,不进行Arnold变换‘);
   return 
end
tempImg=message;                       %图像矩阵赋给tempImg
for n=1:key                            %置乱次数
  for u=1:Mm
    for v=1:Nm
      temp=tempImg(uv);
      ax=mod((u-1)+(v-1)Mm)+1;        %新像素行位置
      ay=mod((u-1)+2*(v-1)Nm)+1;      %新像素列位置
      outImg(axay)=temp;
    end
  end
tempImg=outImg;
end
% 显示原始图像
figure(1)
subplot(121);
imshow(message[]);
title(‘原始图像‘);
%显示置乱后的图像
subpl

评论

共有 条评论