Arnold置乱变换
实现(HHU2021/03/16网络安全作业)
需要的512*512的灰度图下载链接:https://download.csdn.net/download/dukangming/15865275
512*512图像384次迭代复原
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
import math
img = mpimg.imread('dkm.jpg') # 读取和代码处于同一目录下的
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
imgn =np.empty([512,512])
#前383次
for i in range(383):
for y in range(512):
for x in range(512):
xx =((x)+(y))%512
yy =((x)+2*(y))%512
imgn[yy,xx]=img[y,x]
img=np.copy(imgn)
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
#第384次
for y in range(512):
for x in range(512):
xx =((x)+(y))%512
yy =((x)+2*(y))%512
imgn[yy,xx]=img[y,x]
img=np.copy(imgn)
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()