Bagaimana saya bisa menambahkan tanda air yang tidak terlihat ke gambar pada commandline?

12

Pertanyaan serupa di sini tetapi untuk dokumen- Tex . Imagemagick menunjukkan cara-cara menandai air di sini, tetapi tidak bagaimana melakukannya dengan cara yang tidak terlihat. Saat ini saya hanya mengaburkan beberapa elemen fungsional menjadi foto sehingga sangat sulit untuk dihilangkan, tanpa mengganggu gambar itu sendiri. Apakah ada beberapa alat commandline untuk menambahkan tanda air yang tidak terlihat ke gambar, sesuatu seperti memeriksa dengan mikroskop mungkin tetapi masih dapat dibaca? Saya memiliki pohon besar gambar (dari varietas yang sangat berbeda sehingga watermark harus diadopsi ke dll) - beberapa alat baris perintah untuk menambahkan tanda air cepat tanpa terlihat pada setiap foto?

Komunitas
sumber
2
Saya pikir persyaratan tembus pandang Anda bertentangan dengan tujuan watermarking. Jika tanda air tidak terlihat oleh pemirsa normal, maka itu mungkin dapat dihapus dengan melakukan beberapa konversi JPEG pada gambar, karena dengan desain JPEG menghaluskan detail yang tidak akan dilewatkan orang.
Kyle Jones
@KyleJones: siapa yang membutuhkan JPEG sebagai format? Imagemagick hanya berisi contoh, tujuan saya adalah untuk mengaburkan tanda air menjadi gambar dengan menyembunyikannya sedikit seperti mengubah titik di Tex.
2
Maksud saya adalah bahwa konversi JPEG atau algoritma kompresi gambar lossy lainnya akan dapat menghapus tanda air seperti itu, bukan berarti gambar harus memulai sebagai JPEG.
Kyle Jones
Komentar yang tidak ada maksudnya salah & salah kaprah. Tentu, "tanda air yang tak terlihat" adalah sebuah oxymoron, tetapi ini adalah singkatan yang berguna untuk "pesan steganografi" yang musykil - yang hampir selalu akan di koreksi otomatis menjadi "stenografik" (yaitu, secara harfiah, steno). Berikut adalah latar belakang tentang kasus penggunaan: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/… dan satu contoh implementasi: howtoforge.com/tutorial/…
michael

Jawaban:

9

Saya percaya apa yang Anda cari adalah steganografi , cara untuk menyembunyikan pesan dalam konten yang tampak tidak bersalah.

Sepertinya tidak ada banyak alat di luar sana untuk ini di Linux, tetapi outguess 1 dan steghide 2 akan melakukan apa yang Anda inginkan. openstego adalah yang lain (dengan antarmuka baris perintah).

Contoh dengan outguess, saya menyalin / menempelkan teks pertanyaan Anda di 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

Gambar sumber (dari Tux.svg ):

JPG polos, tanpa tanda air

Gambar dengan pertanyaan Anda tersembunyi di dalamnya:

file dengan informasi tersembunyi

Gambar berbeda jika Anda perhatikan dengan seksama, tetapi sepertinya gambar kedua dihasilkan dengan tingkat kompresi JPEG yang lebih tinggi. Fakta bahwa teks lengkap pertanyaan Anda bercampur (dan dilindungi kata sandi) sama sekali tidak terlihat secara visual.
Semakin kecil pesan tersembunyi, gambar akan semakin sedikit berbeda. (Saya tidak dapat membedakan secara visual antara dokumen asli dan file dengan "Copyright YOU 2012" tertanam.)

1 tua, tetapi membangun dengan baik.
2 tidak membangun dengan kompiler C ++ modern, beberapa perbaikan sumber diperlukan.

Tikar
sumber
OpenStego memang memiliki CLI, saya mengedit jawaban Anda dan menautkannya.
awendt
0

Pasti ada cara untuk menanamkan watermark yang cukup stabil ke dalam gambar, DigiMark melakukannya misalnya dalam filter Photoshop - jadi mengapa tidak seharusnya alat baris perintah dapat melakukannya juga?

Ini bukan solusi, tetapi sebuah ide bagaimana cara kerjanya ... jika Anda membuat tanda air tak terlihat pada gambar putih kosong dan memadukan kode yang dihasilkan ke gambar lain, pembaca tanda air dapat mengekstraksi wartermark dari gambar yang dihasilkan lagi - bahkan ketika dimodifikasi / dipotong atau dicetak dan difoto lagi.

Jadi sebenarnya batch menambahkan kode gradien watermark yang diberikan tidak akan menjadi masalah - melainkan menemukan algoritma penandatanganan yang tepat dan sotware untuk mengekstrak watermark.

Marco Tarsia
sumber