Wie kann ich Bildern in der Befehlszeile ein unsichtbares Wasserzeichen hinzufügen?


11

Ähnliche Frage hier aber für Tex- Dokument. Imagemagick zeigt hier Möglichkeiten des Wasserzeichens , aber nicht, wie man es so unsichtbar wie möglich macht. Ich verschleiere derzeit nur einige Funktionselemente in Fotos, die so schwer zu entfernen sind, ohne das Bild selbst zu verzerren. Gibt es ein Befehlszeilenprogramm, mit dem Sie unsichtbare Wasserzeichen zu Bildern hinzufügen können, beispielsweise mit dem Mikroskop überprüfen, aber immer noch lesbar? Ich habe einen riesigen Baum von Bildern (von sehr unterschiedlicher Vielfalt, daher sollte das Wasserzeichen in env usw. übernommen werden) - ein Befehlszeilenprogramm, mit dem Wasserzeichen schnell und unsichtbar auf jedem Foto hinzugefügt werden können?


2
Ich denke, Ihre Unsichtbarkeitsanforderung steht im Widerspruch zum Zweck des Wasserzeichens. Wenn das Wasserzeichen für einen normalen Betrachter unsichtbar ist, kann es wahrscheinlich durch einige JPEG-Konvertierungen des Bildes entfernt werden, da JPEG von Natur aus Details glättet, die Menschen nicht verpassen.
Kyle Jones

@KyleJones: Wer hat JPEG als Format benötigt? Imagemagick enthält nur Beispiele. Mein Ziel ist es, Wasserzeichen in Bildern zu verschleiern, indem ich sie ein wenig verstecke, als würde ich einen Punkt in Tex ändern.

2
Mein Punkt ist, dass die JPEG-Konvertierung oder ein anderer verlustbehafteter Bildkomprimierungsalgorithmus ein solches Wasserzeichen entfernen kann, nicht dass das Bild unbedingt als JPEG beginnen muss.
Kyle Jones

Der Kommentar, dass dies keinen Zweck hat, ist falsch und falsch. Sicher, "unsichtbares Wasserzeichen" ist ein Oxymoron, aber es ist eine nützliche Abkürzung für die abstruse "steganografische Nachricht" - die fast immer automatisch in "stenografisch" (dh wörtlich Kurzschrift) korrigiert wird. Hier ist ein Hintergrund zu Anwendungsfällen: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/… und eine Beispielimplementierung: howtoforge.com/tutorial/…
michael

Antworten:


8

Ich glaube, was Sie suchen, ist Steganographie , eine Möglichkeit, eine Nachricht in ansonsten unschuldig aussehenden Inhalten zu verbergen.

Unter Linux scheint es dafür keine Fülle von Tools zu geben, aber Outguess 1 und Steghide 2 würden tun, was Sie wollen. openstego ist eine andere (mit einer Befehlszeilenschnittstelle).

Beispiel mit outguess: Ich habe den Text Ihrer Frage kopiert / eingefügt in 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

Quellbild (von Tux.svg ):

einfaches JPG, kein Wasserzeichen

Bild mit Ihrer darin versteckten Frage:

Datei mit versteckten Informationen

Die Bilder sind unterschiedlich, wenn Sie genau hinschauen, aber es ist ziemlich so, als ob das zweite mit einer höheren JPEG-Komprimierungsstufe erzeugt worden wäre. Die Tatsache, dass der vollständige Text Ihrer Frage eingemischt (und passwortgeschützt) ist, ist visuell überhaupt nicht erkennbar.
Je kleiner die versteckte Nachricht ist, desto weniger visuell unterschiedlich sind die Bilder. (Ich kann visuell nicht zwischen dem Original und einer Datei mit eingebettetem "Copyright YOU 2012" unterscheiden.)

1 alt, aber gut gebaut.
2 wird nicht mit einem modernen C ++ - Compiler erstellt, es sind einige Quellkorrekturen erforderlich.


OpenStego hat CLI, ich habe Ihre Antwort bearbeitet und mit ihr verknüpft.
Awendt

0

Es muss eine Möglichkeit geben, ein recht stabiles Wasserzeichen in das Bild einzubetten. DigiMark tut dies beispielsweise in Photoshop-Filtern. Warum sollte ein Befehlszeilenprogramm dies nicht auch können?

Dies ist keine Lösung, aber eine Idee, wie es funktionieren könnte. Wenn Sie ein unsichtbares Wasserzeichen auf einem leeren weißen Bild erstellen und den resultierenden Code in ein anderes Bild mischen, kann der Wasserzeichenleser das Wartermark aus dem resultierenden Bild extrahieren wieder - auch wenn geändert / beschnitten oder gedruckt und erneut fotografiert.

Das tatsächliche Hinzufügen eines bestimmten Wasserzeichen-Verlaufscodes im Stapel wird also nicht das Problem sein - vielmehr wird ein geeigneter Signaturalgorithmus und eine geeignete Software zum Extrahieren des Wasserzeichens gefunden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.