Como posso adicionar marca d'água invisível às imagens na linha de comando?

12

Pergunta semelhante aqui, mas para o documento Tex . O Imagemagick mostra maneiras de fazer marca d'água aqui, mas não como fazê-lo da maneira mais invisível possível. Atualmente, apenas ofusco alguns elementos funcionais em fotos extremamente difíceis de remover, sem distorcer a própria imagem. Existe alguma ferramenta de linha de comando para adicionar marca d'água invisível às imagens, algo como verificar com o microscópio, mas talvez ainda seja legível? Eu tenho uma árvore enorme de imagens (de variedade muito diferente, de forma que a marca d'água deve adotar no ambiente etc) - alguma ferramenta de linha de comando para adicionar marcas d'água rapidamente invisivelmente em todas as fotos?

Comunidade
fonte
2
Penso que o seu requisito de invisibilidade está em desacordo com o objetivo da marca d'água. Se a marca d'água for invisível para um visualizador normal, provavelmente poderá ser removida fazendo algumas conversões JPEG na imagem, pois, por design, o JPEG suaviza os detalhes que as pessoas não sentirão falta.
Kyle Jones
@KyleJones: quem exigiu o JPEG como formato? Imagemagick contém apenas exemplos, meu objetivo é marcas d'água Ofuscação em fotos, escondendo-os um pouco como a mudança de um ponto no Tex.
2
O que quero dizer é que a conversão JPEG ou qualquer outro algoritmo de compactação com perda de imagem seria capaz de remover essa marca d'água, não que a imagem tivesse necessariamente que começar como JPEG.
Kyle Jones
O comentário de que isso não tem propósito está errado e equivocado. Certamente, "marca d'água invisível" é um oxímoro, mas é uma abreviação útil para a "mensagem esteganográfica" abstrusa - que quase sempre é corrigida automaticamente em "estenográfica" (ou seja, literalmente, abreviação). Aqui está um histórico de casos de uso: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/… e um exemplo de implementação: howtoforge.com/tutorial/…
michael

Respostas:

9

Acredito que o que você está procurando é esteganografia , uma maneira de ocultar uma mensagem em conteúdo de aparência inocente.

Não parece ser uma riqueza de ferramentas para fora lá para isso em Linux, mas outguess 1 e steghide 2 iria fazer o que quiser. O openstego é outro (com uma interface de linha de comando).

Exemplo com outguess, copiei / colei o texto da sua pergunta em 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

Imagem de origem (do Tux.svg ):

JPG simples, sem marca d'água

Imagem com sua pergunta oculta:

arquivo com informações ocultas

As imagens são diferentes se você olhar atentamente, mas é como se a segunda tivesse sido gerada com um nível de compactação JPEG mais alto. O fato de o texto completo da sua pergunta estar misturado (e protegido por senha) não é visível visualmente.
Quanto menor a mensagem oculta, menos visualmente as imagens serão. (Não consigo distinguir visualmente entre o original e um arquivo com "Copyright YOU 2012" incorporado).

1 velho, mas constrói muito bem.
2 não é compilado com um compilador C ++ moderno, são necessárias algumas correções de origem.

Esteira
fonte
O OpenStego possui CLI, editei sua resposta e vinculei a ela.
awendt
0

Deve haver uma maneira de incorporar uma marca d'água bastante estável na imagem, o DigiMark faz isso, por exemplo, nos filtros do Photoshop - então, por que uma ferramenta de linha de comando não deveria fazer isso também?

Isso não é solução, mas uma idéia de como pode funcionar ... se você criar uma marca d'água invisível em uma imagem em branco em branco e misturar o código resultante em qualquer outra imagem, o leitor de marca d'água poderá extrair a marca d'água da imagem resultante novamente - mesmo quando modificado / recortado ou impresso e fotografado novamente.

Portanto, adicionar um determinado código de gradientes de marca d'água em lotes não será o problema - é melhor encontrar um algoritmo de assinatura e um software adequados para extrair a marca d'água.

Marco Tarsia
fonte