Як додати невидимий водяний знак до зображень у командному рядку?


12

Подібне питання тут, але для Tex -документа. Imagemagick показує способи водяного маркування тут, але не як зробити це якомога непомітніше. Наразі я просто затуплюю деякі функціональні елементи на фотографіях, які надзвичайно важко видалити, не спотворюючи саме зображення. Чи є якийсь інструмент командного рядка для додавання невидимих ​​водяних знаків до зображень, щось на кшталт перевірки за допомогою мікроскопа, можливо, але все-таки читабельний? У мене є масивне зображення зображень (дуже різного розмаїття, тому водяний знак повинен застосовуватися до env тощо) - якийсь інструмент командного рядка, щоб швидко помітити водяні знаки на кожній фотографії?


2
Я думаю, що ваша вимога невидимості суперечить меті водного маркування. Якщо водяний знак невидимий для звичайного глядача, він, ймовірно, може бути видалений, зробивши на зображенні пару перетворень JPEG, оскільки за допомогою дизайну JPEG згладжує деталі, які люди не пропустять.
Кайл Джонс

@KyleJones: кому потрібен JPEG як формат? Imagemagick містить лише приклади, моя мета - приховати водяні знаки на зображеннях, приховавши їх трохи, як змінити крапку в Tex.

2
Моя думка полягає в тому, що конверсія JPEG або будь-який інший алгоритм стиснення зображень втрачає змогу видалити такий водяний знак, а не те, що зображення обов'язково повинно починатися як JPEG.
Кайл Джонс

Коментар, що це не має жодної мети, є помилковим та неправильним. Звичайно, "невидимий водяний знак" - це оксиморон, але це корисна стенограма для неяскравого "стеганографічного повідомлення" - яке майже завжди буде автоматично скореговане на "стенографічне" (тобто, буквально, скорочене). Ось довідник із випадків використання: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/… та один приклад реалізації: howtoforge.com/tutorial/…
michael

Відповіді:


9

Я вважаю, що ви шукаєте - стеганографія , спосіб приховати повідомлення в іншому невинному вигляді.

Здається, для Linux на цьому не існує безлічі інструментів, але outguess 1 і steghide 2 зробили б що ви хочете. openstego - це ще одне (з інтерфейсом командного рядка).

Наприклад outguess, я копіюю / вставляю текст вашого запитання в Q.txt:

$ ../src/outguess/outguess -k 'Unix&Linux' -d Q.txt Tux.jpg Tux_steg.jpg
Reading Tux.jpg....
JPEG compression quality set to 75
Extracting usable bits:   10126 bits
Correctable message size: 5008 bits, 49.46%
Encoded 'Q.txt': 4592 bits, 574 bytes
Finding best embedding...
    0:  2274(49.2%)[49.5%], bias  2008(0.88), saved:     2, total: 22.46%
    3:  2269(49.1%)[49.4%], bias  2007(0.88), saved:     3, total: 22.41%
   13:  2268(49.0%)[49.4%], bias  1977(0.87), saved:     3, total: 22.40%
   62:  2237(48.4%)[48.7%], bias  1992(0.89), saved:     7, total: 22.09%
   78:  2216(47.9%)[48.3%], bias  1964(0.89), saved:    10, total: 21.88%
78, 4180: Embedding data: 4592 in 10126
Bits embedded: 4624, changed: 2216(47.9%)[48.3%], bias: 1964, tot: 10119, skip: 5495
Foiling statistics: corrections: 1437, failed: 746, offset: 198.494881 +- 300.529142
Total bits changed: 4180 (change 2216 + bias 1964)
Storing bitmap into data...
Writing Tux_steg.jpg....
$ ../src/outguess/outguess -k 'Unix&Linux' -r Tux_steg.jpg out.txt
Reading Tux_steg.jpg....
Extracting usable bits:   10126 bits
Steg retrieve: seed: 78, len: 574
$ diff out.txt Q.txt 
$ echo $?
0

Вихідне зображення (від Tux.svg ):

звичайний JPG, без водяного знака

Зображення із запитанням, прихованим всередині нього:

файл із прихованою інформацією

Зображення відрізняються, якщо придивитись уважно, але це приблизно так, як якщо б друге було сформовано з більш високим рівнем стиснення JPEG. Той факт, що весь текст вашого запиту змішаний (і захищений паролем), візуально не помітний.
Чим менше приховане повідомлення, тим менш візуально будуть різні зображення. (Я не можу візуально розрізнити оригінал та файл із вбудованим файлом "Copyright YOU 2012".)

1 старий, але будується просто чудово.
2 не створюється за допомогою сучасного компілятора C ++, потрібно кілька виправлень джерела.


У OpenStego є CLI, я відредагував вашу відповідь і зв’язався з нею.
awendt

0

Повинен бути спосіб вставити досить стійкий водяний знак у зображення, DigiMark робить це, наприклад, у фільтрах Photoshop - так чому ж не повинен бути в змозі зробити також інструмент командного рядка?

Це не рішення, а ідея, як це може працювати ... якщо створити невидимий водяний знак на чистому білому зображенні і змішати отриманий код з будь-яким іншим зображенням, водяний знак-зчитувач зможе витягти Wartermark з отриманого зображення ще раз - навіть коли їх змінили / обрізали чи надрукували та сфотографували знову.

Тож фактично пакетне додавання заданого коду градієнтів водяних знаків не буде проблемою - скоріше знайти відповідний алгоритм підпису та програмне забезпечення для вилучення водяного знака.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.