watermark op• Data kinds: image2d × phash → table
• Call: import imgforensics; imgforensics.watermark_capacity(image, bits, strengths=(0.02, 0.05, 0.1, 0.2, 0.4), wavelet: 'str' = 'haar', level: 'int' = 1, jpeg_quality=None) -> 'dict' (or opsimgforensics.get("watermark_capacity"))
Sweep the trade-off between embedding strength and PSNR / BER. `table`.
> The detailed description below is the original text — the summary and the headings are translated.
各 `strength` について埋め込み → 抽出を実際に走らせ、
`psnr_db 原画像と透かし入り画像の PSNR(値域 [0, 1] 基準、MAX=1`)
`ber 抽出のビット誤り率(:func:hash_distance` で数える)
`clipped` 透かし入り画像が [0, 1] からはみ出した画素の割合。
はみ出しは保存時に必ず失われるので、PSNR だけ見て強度を
上げると「測っていない劣化」が増える
`jpeg_quality` に品質を渡すと、透かし入り画像を 本物の JPEG に通してから
抽出した `ber_jpeg` も入る(Pillow 必須。省略時は列ごと入らない ——
環境によって返る列が変わらないようにするため、既定では走らせない)。
返りは `{"capacity_bits": int, "n_bits": int, "rows": [...], "caveats": [...]}`。
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• image_forensics_audit — py -3.11 examples/image_forensics_audit.py
table as input)watermark)watermark_embed · watermark_extract
*Provenance: imgforensics.py — IMGFORENSICS operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.