Matlab - Скрыть файл размером 1 МБ в бесценных битах изображения (водяные знаки)

Я должен сохранить файл слова размером 1MByte в изображении 512x512 пикселей, используя Matlab, и извлечь его снова. Единственное, что я знаю, - это то, что мы должны удалить бесценные фрагменты изображения (те, которые все являются шумами) и сохранить там свою тьфу. К сожалению, я ничего не знаю ни о Matlab, ни об обработке изображений.

Спасибо всем.

3 ответа

Решение

Учитывая предоставленные номера, вы не можете. 512x512 дают 6,2 Мбит / с с учетом 24 бит на пиксель. Таким образом, ваш документ больше, чем изображение, в котором вы его скрываете.

Если мы игнорируем вышесказанное, то это то, что вы должны сделать:

  • Загрузите изображение и конвертируйте в uints.
  • Маскируйте количество битов LSB в каждом пикселе.
  • Загрузите документ как двоичный файл и заполните эти биты там, где вы маскировали остальные.

Теперь из вышесказанного в реальный код немного работы. Если у вас нет опыта работы с Matlab, это будет нелегко. Попробуйте прочитать о imread() и битовых операциях в matlab. Если у вас есть какой-то код и работает, то разместите его здесь для помощи.

С уважением

Я думаю, что вы ищете стеганографию вместо водяных знаков.

Стеганография:
https://en.wikipedia.org/wiki/Steganography

Вот пример изображения с файлом внутри него: http://marvinproject.sourceforge.net/en/plugins/steganography.html

Связанная тема:
Имиджевая стеганография

В Matlab вы можете читать изображения с imread()(подробности на: http://de.mathworks.com/help/matlab/ref/imread.html?s_tid=gn_loc_drop)

Image = imread("Filename.jpg") 
figure()
imshow(Image)

Этот код покажет вам изображение в окне.

Другие вопросы по тегам