Создан заказ №804835
15 ноября 2015
Стеганография PYTHON
Как заказчик описал требования к работе:
Выполните задания, изображения для манипуляций находятся в прикреплённых файлах (серый, цветные и текстовые). Нужны подробные комментарии в тексте программ.
В файле 2 пдф - оригинал задания.
Задание 1
- Создать кодирующую программу, которая принимает изображение в оттенках серого (8-бит) и 8-бит
ное двоичное (чёрный и белый) изображение-сообщение и выводит их совмещённую версию (на принятое изображение надо наложить сообщение). Сделать это надо путям добавления 0 (для чёрного бита) и +1 (для белого бита). Нужно придумать, что будет делать программа при добавлении +1 к 255: лучшая опция ничего не делать с этим битом в этом случае.
- Сделать программу, что будет получать зашифрованное сообщение из изображений, полученных в первой (кодирующей) программе. Программа должна выводить 8-битное двоичное (чб) изображение с 255 (белый) для фона и 0 (чёрный) для текста
- С помощью декодирующей (второй) программы надо расшифровать:
1) carriers/grayscale_carrier-00007.png
2) encoded.png
Предполагается, что у закодированного изображения и у изображения на которое накладывается сообщение одинаковое разрешение.
Формат сдачи: сделать папку, в которой будет храниться код обеих программ, пример закодированной и пример раскодированное картинки (одна и та же картинка) и сообщения из закодированный картинок из третей части, как комментарии в исходном файле.
Задание 2
Проблема в первом задании заключается в том, что любой человек может получить зашифрованное сообщение из закодированной картинки использую базовые инструменты обработки изображений. Для того чтобы это исправит нужно использовать генератор случайных числе, который будет присваивать случайные места, в которые нужно добавлять закодированные пиксели.
Подходящий генератор случайных чисел есть в Python https://docs.python.org/2/library/random.html
Прочитав документацию, становится понятным, что надо сделать:
1) Запросить пользователя ввести string пароль
2) Передать пароль функции random.seed()
Самый простой способ сгенерировать случайные места это создать array включающий все возможные места в изображении, и потом перемешать их в случайном порядке, чтобы дать порядок, в котором они будут использованы для кодирования.
Нужно iterate по этому array, случайно меняя адреса пикселей.
- Нужно написать шифровальную и дешифровальную программу (кодирующую и декодирующую), использую то, что обсуждалось выше. Не забывайте, что каким-либо образом надо решить что делать, если значение пикселя исходного изображения – 255.
- Используя декодер из задания 1 напишите программу, что визуализирует расположение зашифрованных пикселей.
Формат сдачи: сделать папку в которой будет храниться код обеих программ (кодер и декодер), пример закодированное и декодированного изображения вместе с исходным изображением, а также закодированное изображение из второй части задания вместе с изображением, показывающем распределение зашифрованных пикселей.
Задание 3:
- Использую Gaussian noise distribution (гауссовое распределение шума), напишите программу, выдающую изображение с добавлением этого шума (использую генератор случайных чисел).
- Integrate your password-based random number seeding approach from Part B to allow a
sender/receiver pair to generate such common noise distribution on any available image from a
common password input. – Я если честно не понимаю что именно просится, как я понимаю, надо создать одинаковый шум на всех картинках, использую ваш подход к генератору случайных чисел из прошлой программы.
Способ сдачи: код в отдельной папке, пример изображений без и с шумом (сгенерированном вами)
Задание 4:
Задание 2 использует только серые изображения, здесь надо модифицировать для цветных
Теперь у нас в три раза больше мест для кодирования (Ширина Х Высота Х 3 канала цвета) – можно использовать для решения проблем с битами значение которых 255. Для этого:
Для каждого места-адреса (i, j) в изображении:
1) Используйте генератор случайных чисел (который генерирует их из string пароля) для того чтобы выбрать случайный адрес (c, r) в исходном изображении (сначала c, потом r)
2) Используйте тот же генератор случайных чисел, чтобы выбрать случайный канал цвета i – 1, 2 или 3.
3) Если адрес (c, r, i) уже использовался или его значение 255 – генерируйте другой адрес, пока не найдётся подходящий
4) Закодируйте в найденном адресе пиксель из изображения-сообщения
- Напишите кодирующую и декодирующую программу, которая использует данный подход. Помните, что теперь исходное изображение цветное, а не серое. Разрешение обоих изображений всё так же одинаковое.
- Используйте вашу программу из задания 3, чтобы перед кодированием изображения добавлялся шум в изображение
Формат сдачи: в отдельной папке код кодера/декодера
подробнее
Заказчик
заплатил
заплатил
500 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
18 ноября 2015
Заказ завершен, заказчик получил финальный файл с работой
5
Стеганография PYTHON .docx
2020-12-07 19:57
Последний отзыв студента о бирже Автор24
Общая оценка
4.1
Положительно
Все отлично: соотношение цена/качество/скорость исполнения на высоте. Нужно было чуть-чуть подправить текст, но это нормально - читать работу перед отправкой преподавателю. Всем рекомендую Сергея в качестве автора работ.