这里再根据Logistic混沌进行另一种置乱:位置置乱。
位置置乱,顾名思义就是把图像中某一像素点的位置,移动到另一目的点。我们知道这个目的点当然是越随机越好。这个过程,所有像素的灰度值都没有改变,只是进行了位置的置乱,所以其直方图不会发生改变。
生成混沌序列
Logistic迭代了
M*N
次,得到M*N
个(0,1)之间的浮点数序列(记做序列A),将序列A中的每个元素乘以M*N
,也就是说将A扩展到了(0,MN)的浮点数了,然后我们对其取整数得到(0,MN)之间的整数序列B。用这个序列来产生随机坐标(也就是目的点)
1
2列坐标:y=B(i)/N;
行坐标:x=B(i)%N;待加密图像中的第一个点的灰度值搬移到第一个随机坐标中的,一次类推,当所有灰度都经过移动之后,置乱结束,便完成了一次置乱加密。
注意:
按道理说这(0,MN)个值肯定是没有重复的,但是由于*计算机精度和类型转化,所以肯定存在重复的值,也就是随机坐标点存在重复的!!!这肯定是不行的,那么怎么避免呢?我们一般这样来处理:在迭代过程中,每迭代一次,产生一个随机坐标点,判断这个坐标点有没有被占用,若没有则打一个占用标志,若已被占用,则放弃该点继续迭代,直到找到没有没占用的坐标点,如此下去,直到找到*M\N个不重复的坐标点。