MATLAB实现256色灰度图像的Arnold置乱
下面的程序实现256色灰度图像的Arnold置乱。以前用VC做很麻烦,但在matlab中却显得非常简洁。matlab不愧是一款很受欢迎的辅助研究工具。
-------------------------------------------------
% 文件名:Arnold.m
% 编 写:向德生 7/31/2010
% 功 能:MATLAB实现256色灰度图像的Arnold置乱
clc;
clear all;
data=imread('lena.bmp');
% 显示原图像
subplot(3,3,1);
imshow(uint8(data));
title('原图像');
% 进行Arnold置乱,i为置乱加密次数;
% Arnold变换参数: a=1,b=1,c=1,d=2;
% x0=0,y0=0;
[M,N]=size(data);
data=double(data);
data0=data;
for i=1:8
x0=0;
y0=0;
for x=1:M
for
y=1:N
x1=x+y+x0;
y1=x+2*y+y0;
x1=mod(x1,M);
y1=mod(y1,N);
if x1==0
x1=M;
end
if y1==0
y1=N;
end
data1(x1,y1)=data0(x,y);
end
end
subplot(3,3,i+1);
imshow(uint8(data1));
title(strcat('Arnold置乱',num2str(i),'次后'));
% ------Arnold置乱图像以文件形式存入指定路径------begin
if ~exist('d:\outfile')
mkdir('d:\outfile')
end
t1=num2str(i); ss=strcat('d:\outfile\file',t1); ss=strcat(ss,'.bmp');
dataw=uint8(data1);
imwrite(dataw,ss,'bmp');
% ------Arnold置乱图像以文件形式存入指定路径------end
data0=data1;
end
-------------------------------------------------
在MATLAB 7.1中的运行结果如下图所示:
-------------------------------------------------