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)
Этот код покажет вам изображение в окне.