算法1.把图像的数据重塑成一维的形式,对其进行置乱;
clear
close
clc
G=imread('F:\Fatiao.jpg');
G=rgb2gray(G)
subplot(1,3,1);
imshow(G);
title('原图');
A=G(:);
A1=G(end: -1:1);乱
subplot(1,3,2);
A1=reshape(A1,256,256)
imshow(A1);
title('一维置乱'); %title一下
A2=A1(end:-1:1);
A2G=reshape(A2,256,256);
subplot(1,3,3) ;
imshow(A2G)
title('置乱恢复'); %title一下
算法2.把图像看成二维的形式,采用二维坐标的形式对其进行置乱;
clear
close
clc
G=imread('F:\Fatiao.jpg');
G=rgb2gray(G)
subplot(1,3,1);
imshow(G);
title('原图') %title一下原图
Gadd=fix(256*rand(256,256));
for i=1:256
for j=1:256
G1(i,j)=0.1*G(i,j)+0.9*Gadd(i,j);
end
end
subplot(1,3,2);
imshow(G1);
title('置乱后的图像') ;
for i=1:256
for j=1:256
G2(i,j)=(G1(i,j)-0.9*Gadd(i,j))./0.1;
end
end
subplot(1,3,3)
imshow(G2); %显示图像
title('恢复后的图像');
算法3.利用arnold变换(猫脸变换)对图像进行置乱,并检验arnold的周期性(即变换周期为N时,采用arnold变换N次后,可以恢复原有图像)
clear
close
clc
G=imread('F:\Fatiao.jpg');
subplot(2,2,1);
imshow(G);
title('原图');
for k=1:12
for x=1:256
for y=1:256
x1=x+y;
y1=x+2*y;
if x1>256
x1=mod(x1,256);
end
if y1>256
y1=mod(y1,256);
end
if x1==0;
x1=256;
end
if y1==0;
y1=256;
end
G_TR(x1,y1)=G(x,y);
end
end
G=G_TR
if k==1
subplot(2,2,2);
imshow(G_TR);
title('一次迭代');
end
if k==2
subplot(2,2,3);
imshow(G_TR);
title('二次迭代');
end
end
subplot(2,2,4);
imshow(G_TR);
title('192次迭代复原');