watermark_embed — IMGFORENSICS watermark op

• 데이터 종류: image2d × phash → image2d

• 호출: import fullseye as fs; fs.ledger.watermark_embed(image, bits, strength: 'float' = 0.1, wavelet: 'str' = 'haar', level: 'int' = 1) -> 'np.ndarray'(구현을 직접 호출하려면 import imgforensics; imgforensics.watermark_embed(image, bits, strength: 'float' = 0.1, wavelet: 'str' = 'haar', level: 'int' = 1) -> 'np.ndarray', 원장에서 가져오려면 opsimgforensics.get("watermark_embed"))

사용법

DWT-DCT 워터마크 삽입. 워터마크가 든 이미지 (H, W) 를 돌려줍니다. image2d.

1단 DWT(기본값 haar)의 LL 부대역을 8x8로 자르고, 각 블록의 직교 DCT-II의 중대역 계수 쌍 (3,1)과 (1,3)의 대소 관계로 1비트를 나타낸다(Hsu & Wu 1999의 중대역 계수 쌍 법). 차이가 strength 미만이면 차이가 strength가 될 때까지 대칭으로 움직인다(한쪽만 움직이면 블록의에너지가 치우친다). 추출에 원 화상은 필요 없다(블라인드).

용량은 (LL의 높이 // 8) * (LL의 폭 // 8)비트. bits가 그보다 짧으면앞에서부터 채우고, 나머지 블록은 건드리지 않는다. 길면 ValueError.

bits는 bool의 1-D(phash 어휘). 0/1의 int 배열도 받지만, float는 받지 않는다(반올림의 방향을 조용히 정하지 않는다).

강도와 화질의 트레이드오프는 watermark_capacity가 스윕하여 표로 반환한다. 실측(256x256의 텍스처 화상·128비트, LL은 128x128 = 용량 256비트. tests/test_imgforensics.py::test_watermark_strength_psnr_tradeoff):

========= ========== ====== ================= =================

strength PSNR (dB) BER BER(JPEG 품질 90) BER(JPEG 품질 75)

========= ========== ====== ================= =================

0.02 45.48 0.000 0.008 0.195

0.05 44.48 0.000 0.000 0.008

0.10 42.95 0.000 0.000 0.000

0.20 40.32 0.000 0.000 0.000

0.40 36.37 0.000 0.000 0.000

========= ========== ====== ================= =================

이것이 트레이드오프의 실체이다. 무가공이면 가장 약한 0.02라도 오류 0이지만, JPEG 품질 75를 거치면 19.5%가 깨진다. 기본값 0.1은 "품질 75까지 오류 0, PSNR 42.95 dB"인 점으로 골라 두었다(clipped는 어느 강도에서도 0).

PyWavelets 필수(ImportError).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• image_forensics_audit — py -3.11 examples/image_forensics_audit.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

perceptual_hash · fingerprint_correlate · error_level_map · jpeg_quality_estimate · jpeg_ghost_map · noise_inconsistency_map · copy_move_regions · watermark_extract

같은 카테고리(watermark)

watermark_extract · watermark_capacity


*Provenance: imgforensics.py — IMGFORENSICS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.