명령줄에서 이미지에 보이지 않는 워터마크를 추가하는 방법은 무엇입니까?

명령줄에서 이미지에 보이지 않는 워터마크를 추가하는 방법은 무엇입니까?

비슷한 질문이 여기에 있지만텍스-문서. Imagemagick에서 워터마킹 방법을 보여줍니다.여기하지만 가능한 한 보이지 않게 만드는 방법을 모르겠습니다. 저는 현재 이미지 자체를 왜곡하지 않고는 제거하기 매우 어려운 일부 기능적 요소를 사진에 혼동하고 있습니다. 이미지에 보이지 않는 워터마크를 추가할 수 있는 명령줄 도구가 있습니까? 예를 들어 현미경으로는 읽을 수 있습니다. 저는 거대한 이미지 트리를 가지고 있습니다(종류가 매우 다양하므로 워터마크는 환경을 고려해야 합니다). 각 사진에 워터마크를 빠르고 눈에 띄지 않게 추가하는 명령줄 도구가 있습니까?

답변1

나는 당신이 찾고 있는 것이 무엇이라고 믿습니다.스테가노그래피, 겉으로는 무해해 보이는 콘텐츠 속에 메시지를 숨기는 방법입니다.

Linux에는 이를 달성할 수 있는 도구가 많지 않은 것 같습니다.추측하다1스테드2 당신이 원하는 것을 할 것입니다.오픈 스테고또 다른 것입니다(명령줄 인터페이스 사용).

예를 들어 outguess, 귀하의 질문 텍스트를 복사하여 다음 위치에 붙여넣었습니다 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

소스 이미지(출처:턱시도.svg):

일반 JPG, 워터마크 없음

질문의 숨겨진 이미지:

숨겨진 정보가 포함된 파일

자세히 보면 이미지가 다르지만 두 번째 이미지는 거의 더 높은 JPEG 압축 수준을 사용하여 생성되었습니다. 질문의 전체 텍스트가 혼합되어 있고 비밀번호로 보호되어 있다는 사실이 시각적으로 전혀 눈에 띄지 않습니다.
숨겨진 정보가 작을수록 이미지의 시각적 차이도 작아집니다. (원본 파일과 "Copyright YOU 2012"가 포함된 파일을 시각적으로 구분할 수 없습니다.)

1은 오래되었지만 잘 만들어졌습니다. 2는 최신 C++ 컴파일러로 빌드
할 수 없으므로 일부 소스 수정이 필요합니다.

답변2

합리적으로 안정적인 워터마크를 이미지에 삽입할 수 있는 방법이 있어야 하며 DigiMark는 Photoshop 필터 내에서 이를 수행할 수 있습니다. 그런데 명령줄 도구로는 왜 동일한 작업을 수행할 수 없습니까?

이것은 해결책이 아니라 어떻게 작동하는지에 대한 아이디어입니다... 빈 흰색 이미지에 보이지 않는 워터마크를 만들고 생성된 코드를 다른 이미지에 혼합하면 워터마크 리더가 생성된 이미지에서 워터마크를 추출할 수 있습니다. 이미지 다시 - 다시 수정/자르거나 인쇄하고 사진을 찍은 경우에도 마찬가지입니다.

따라서 실제로 주어진 워터마크 그라디언트 코드를 일괄 추가하는 것은 문제가 되지 않습니다. 오히려 워터마크를 추출하기 위한 적절한 서명 알고리즘과 소프트웨어를 찾는 것입니다.

관련 정보