Jak mogę dodać niewidoczny znak wodny do zdjęć w wierszu poleceń?

12

Podobne pytanie tutaj, ale dla dokumentu Tex . Imagemagick pokazuje tutaj sposoby znakowania wodnego , ale nie pokazuje, jak zrobić to tak niewidocznie, jak to możliwe. Obecnie zaciemniam niektóre funkcjonalne elementy na zdjęciach, tak bardzo trudne do usunięcia, bez zniekształcania samego obrazu. Czy jest jakieś narzędzie wiersza polecenia do dodawania niewidzialnego znaku wodnego do obrazów, coś w rodzaju sprawdzenia mikroskopem, ale wciąż czytelnego? Mam ogromne drzewo obrazów (bardzo różnych odmian, więc znak wodny powinien zostać dostosowany do env itp.) - Jakieś narzędzie wiersza polecenia, aby szybko dodawać znaki wodne na każdym zdjęciu?

Społeczność
źródło
2
Myślę, że twój wymóg niewidzialności jest sprzeczny z celem znaku wodnego. Jeśli znak wodny jest niewidoczny dla normalnej przeglądarki, prawdopodobnie można go usunąć, wykonując kilka konwersji JPEG na obrazie, ponieważ projekt JPEG wygładza szczegóły, których ludzie nie umkną.
Kyle Jones,
@KyleJones: kto wymagał formatu JPEG? Imagemagick zawiera tylko przykłady, moim celem jest zaciemnienie znaków wodnych na zdjęciach, ukrywając je trochę jak zmianę kropki w Tex.
2
Chodzi mi o to, że konwersja JPEG lub jakikolwiek inny algorytm kompresji stratnych obrazów byłby w stanie usunąć taki znak wodny, nie że obraz musiałby zaczynać się jako JPEG.
Kyle Jones,
Komentarz, że nie ma to żadnego celu, jest błędny i mylący. Jasne, „niewidzialny znak wodny” jest oksymoronem, ale jest przydatnym skrótem dla zawężającego „komunikatu steganograficznego” - który prawie zawsze zostanie automatycznie skorygowany w „stenograficzny” (tj. Dosłownie, skrót). Oto tło dotyczące przypadków użycia: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/... i jedna przykładowa implementacja: howtoforge.com/tutorial/…
michael

Odpowiedzi:

9

Uważam, że szukasz steganografii , sposobu na ukrycie wiadomości w skądinąd niewinnie wyglądających treściach.

Wydaje się, że nie ma tam wielu narzędzi do tego w Linuksie, ale outguess 1 i steghide 2 zrobiłyby to, co chcesz. openstego to kolejny (z interfejsem wiersza poleceń).

Przykład z outguess, skopiowałem / wkleiłem tekst twojego pytania w 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

Obraz źródłowy (z Tux.svg ):

zwykły JPG, bez znaku wodnego

Obraz z ukrytym w nim pytaniem:

plik z ukrytymi informacjami

Obrazy wyglądają inaczej, jeśli przyjrzysz się uważnie, ale wygląda to tak, jakby drugi został wygenerowany z wyższym poziomem kompresji JPEG. Fakt, że cały tekst pytania jest wmieszany (i chroniony hasłem), nie jest wcale widoczny.
Im mniejsza jest ukryta wiadomość, tym mniej różnią się wizualnie obrazy. (Nie mogę wizualnie odróżnić oryginału od pliku z osadzonym „Copyright YOU 2012”).

1 stary, ale dobrze się buduje.
2 nie buduje się przy pomocy nowoczesnego kompilatora C ++, konieczne jest kilka poprawek źródłowych.

Mata
źródło
OpenStego ma CLI, zredagowałem twoją odpowiedź i podłączyłem do niej.
awendt
0

Musi istnieć sposób na osadzenie dość stabilnego znaku wodnego na obrazie, DigiMark robi to np. W filtrach Photoshopa - dlaczego więc narzędzie wiersza poleceń nie powinno być w stanie tego zrobić?

To nie jest rozwiązanie, ale pomysł, jak to może działać ... jeśli utworzysz niewidoczny znak wodny na pustym białym obrazie i połączysz wynikowy kod z dowolnym innym obrazem, czytnik znaku wodnego będzie mógł wyodrębnić wartermark z powstałego obrazu ponownie - nawet po zmodyfikowaniu / przycięciu lub wydrukowaniu i ponownym sfotografowaniu.

Tak więc dodanie partii danego kodu gradientu znaku wodnego nie będzie problemem - raczej znalezienie odpowiedniego algorytmu podpisywania i oprogramowania do wyodrębnienia znaku wodnego.

Marco Tarsia
źródło