Comment puis-je append un filigrane invisible aux images sur la command line?

Question similaire ici mais pour Tex- document. Imagemagick montre des moyens de tatouage ici mais pas comment le faire aussi invisible que possible. Actuellement, je ne fais que masquer certains éléments fonctionnels dans des photos si difficiles à enlever, sans déformer l'image elle-même. Y at-il un outil de command line pour append un filigrane invisible aux images, quelque chose comme vérifier avec microscope peut-être mais toujours lisible? J'ai un énorme tree d'images (de très différentes variétés, donc filigrane devrait adopter env …) – un outil en command line pour append des filigranes rapidement invisible sur chaque photo?

Je crois que ce que vous cherchez est la stéganographie , une façon de cacher un message dans un contenu par ailleurs innocent.

Il ne semble pas y avoir une multitude d'outils là-bas pour cela sur Linux, mais outguess 1 et steghide 2 ferait ce que vous voulez. openstego est un autre (avec une interface de command line).

Exemple avec outguess , j'ai copié / collé le text de votre question dans 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 resortingeve: seed: 78, len: 574 $ diff out.txt Q.txt $ echo $? 0 

Image source (de Tux.svg ):

JPG ordinaire, pas de filigrane

Image avec votre question cachée à l'intérieur:

fichier avec des informations cachées

Les images sont différentes si vous regardez de près, mais c'est comme si le second avait été généré avec un niveau de compression JPEG plus élevé. Le fait que le text complet de votre question soit mélangé (et protégé par mot de passe) n'est pas visible du tout.
Plus le message caché est petit, less les images seront visuellement différentes. (Je ne peux pas distinguer visuellement entre l'original et un file avec "Copyright YOU 2012" embedded.)

1 vieux, mais construit très bien.
2 ne construit pas avec un compilateur C ++ moderne, quelques corrections de sources sont nécessaires.

Il doit y avoir un moyen d'incorporer un filigrane assez stable dans l'image, DigiMark le fait par exemple dans les filters Photoshop – alors pourquoi un outil de command line ne devrait-il pas être capable de faire aussi bien?

Ce n'est pas une solution, mais une idée de comment cela peut fonctionner … si vous créez un filigrane invisible sur une image blanche vierge et que vous fusionnez le code résultant en une autre image, le filigrane est capable d'extraire le filigrane de l'image résultante encore une fois – même modifié / recadré ou imprimé et photographié à nouveau.

Donc, en fait, l'ajout d'un code de dégradés de filigrane donné ne sera pas le problème – plutôt find un algorithm de signature approprié et un logiciel pour extraire le filigrane.