Как вернуть перемешанный массив в Python с PRNG по умолчанию и индексами? - PullRequest
0 голосов
/ 12 мая 2018

Перемещая изображение в массив, затем выравнивая его и перетасовывая с заданным x семенем, должно быть легко отменить перемешивание с данным семенем и индексами из процесса перетасовки.

  • читать изображение IMG.jpg
  • random.seed(x) и shuffle -> индексы, shuffle_img.jpg
  • unshuffle

Однако этот РЕЗУЛЬТАТ показывает, что результирующее IMG является одинаковым, а не 1: 1 в качестве входного изображения с этим зернистым шумом.

Почему отмена перемешивания дает столько шума, если это не ГСЧ, а только ГСЧ?

1 Ответ

0 голосов
/ 12 мая 2018

Это не имеет ничего общего с вашими случайными числами.

Обратите внимание, что вы используете генератор случайных чисел только один раз при создании перемешанных индексов. Когда вы загружаете индексы из файла, генератор случайных чисел не используется, поскольку читается только файл.

Ваша проблема возникает в другом месте: вы сохраняете зашифрованную Лену как .jpg. Таким образом, скремблированное изображение бедной Лены сжимается, и значения цвета немного меняются. Когда вы снова загружаете изображение и переупорядочиваете индексы, вы не получаете исходные цвета, а только значения после сжатия.

Решение: сохраните ваши изображения как *.png, и все получится.

Если у вас возникли проблемы с альфа-каналом, просто преобразуйте изображение обратно в RGB: scrambled_img = Image.open(img_path).convert("RGB")

...