watermark_capacity — IMGFORENSICS watermark op

• Data kinds: image2d × phash → table

• Call: import fullseye as fs; fs.ledger.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' (to call the implementation directly, 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'; from the registry, opsimgforensics.get("watermark_capacity"))

• GPU: none (CPU reference implementation only)

Usage

Sweep the trade-off between embedding strength and PSNR / BER. table.

Actually run embed → extract for each strength,

psnr_db PSNR of original image and watermarked image (range [0, 1] standard, MAX=1) Bit error rate of ber extraction (counted by hash_distance) clipped Percentage of pixels in the watermarked image that fall outside [0, 1].

The overhang will always be lost when saving, so the strength can only be determined by looking at the PSNR.

If you raise it, "unmeasured deterioration" will increase.

Passing the quality to jpeg_quality will pass the watermarked image through a real JPEG and then The extracted ber_jpeg is also included (Pillow is required. If omitted, the entire column will not be included. (It is not run by default to ensure that the returned columns do not change depending on the environment).

Returns {"capacity_bits": int, "n_bits": int, "rows": [...], "caveats": [...], "ll_shape": tuple}.

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• image_forensics_audit — py -3.11 examples/image_forensics_audit.py

Ops the type connects to (they accept table as input)

evidence_quantile

Same category (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.