watermark_embed — IMGFORENSICS watermark op

Datenarten: image2d × phashimage2d

Aufruf: import imgforensics; imgforensics.watermark_embed(image, bits, strength: 'float' = 0.1, wavelet: 'str' = 'haar', level: 'int' = 1) -> 'np.ndarray' (oder opsimgforensics.get("watermark_embed"))

Verwendung

DWT-DCT-Wasserzeichen-Einbettung. Liefert das markierte Bild `(H, W). image2d`.

> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.

1 段 DWT(既定 haar)の LL 副帯域を 8x8 に切り、各ブロックの直交 DCT-II の

中帯域係数の対 `(3,1)(1,3)` の大小関係で 1 ビットを表す

(Hsu & Wu 1999 の中帯域係数対法)。差が `strength` 未満なら差が

`strength` になるまで 対称に動かす(片方だけ動かすとブロックの

エネルギーが偏る)。抽出に原画像は要らない(ブラインド)。

容量は `(LL の高さ // 8) * (LL の幅 // 8) ビット。bits` がそれより短ければ

先頭から埋め、残りのブロックは触らない。長ければ :class:ValueError

`bits は bool の 1-D(phash` 語彙)。0/1 の int 配列も受けるが、

float は受けない(丸めの向きを黙って決めない)。

強度と画質のトレードオフは :func: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 必須(:class:ImportError)。

Referenzen (Beispieldaten, Literatur)

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

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

image_forensics_auditpy -3.11 examples/image_forensics_audit.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

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

Gleiche Kategorie (watermark)

watermark_extract · watermark_capacity


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