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

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

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


person Behzad Barzin    schedule 11.05.2016    source источник
comment
Я предполагаю, что цель домашнего задания состоит в том, чтобы решить проблему, на которую вы намекаете в своем последнем предложении. Тем не менее, этот вопрос слишком широк для StackOverflow. Вам нужна книга, а не абзац или 2.   -  person MSalters    schedule 11.05.2016
comment
К сожалению, я ничего не знаю как о Matlab, так и об обработке изображений. – похоже, это и есть твоя настоящая проблема. Я рекомендую остановиться и потратить время на изучение. Пройдите несколько учебных пособий и посмотрите видео.   -  person horchler    schedule 11.05.2016
comment
Мы не собираемся делать за вас домашнее задание, но я предлагаю начать с этот пост из блога Стива Эддинса.   -  person gnovice    schedule 12.05.2016
comment
Спасибо, ребята, за ваше время. Я не ясно выразился выше, я на самом деле искал что-то, чтобы прочитать и изучить это сам, а не сам код.   -  person Behzad Barzin    schedule 12.05.2016


Ответы (3)


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

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

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

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

С Уважением

person KlausCPH    schedule 11.05.2016
comment
Спасибо, Собственно это то, что мне нужно. Я не знал, что искать. - person Behzad Barzin; 12.05.2016

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

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

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

person Robin Owelov    schedule 11.05.2016

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

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

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

Связанная тема:
Стеганография изображений

person Gabriel Ambrósio Archanjo    schedule 11.05.2016
comment
Большое спасибо за ваш ответ. - person Behzad Barzin; 12.05.2016