watermark op• Datenarten: image2d × phash → table
• Aufruf: 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' (die Implementierung direkt: 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'; aus dem Register: opsimgforensics.get("watermark_capacity"))
Durchläuft den Kompromiss zwischen Einbettungsstärke und PSNR / BER. table.
Für jede strength wird Einbetten → Extrahieren tatsächlich ausgeführt, mit
psnr_db PSNR zwischen Original und Bild mit Wasserzeichen (Wertebereich [0, 1] als Basis, MAX=1)
ber Bitfehlerrate der Extraktion (gezählt mit hash_distance)
clipped Anteil der Pixel des Bildes mit Wasserzeichen, die aus [0, 1] herausfallen.
Der Überlauf geht beim Speichern immer verloren; wer die Stärke nur nach der PSNR
erhöht, vergrößert die "nicht gemessene Verschlechterung"
Wird in jpeg_quality eine Qualität übergeben, kommt auch ber_jpeg hinzu, extrahiert nachdem das Bild mit Wasserzeichen durch ein echtes JPEG gelaufen ist (Pillow erforderlich. Ohne Angabe fehlt die Spalte ganz —— damit die zurückgegebenen Spalten nicht von der Umgebung abhängen, läuft es per Default nicht).
Die Rückgabe ist {"capacity_bits": int, "n_bits": int, "rows": [...], "caveats": [...]}.
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• image_forensics_audit — py -3.11 examples/image_forensics_audit.py
table als Eingabe)watermark)watermark_embed · watermark_extract
*Provenance: imgforensics.py — IMGFORENSICS Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.