poisson_blend — COLORTRANSPORT blend op

• Datenarten: image2d × image2d × mask → image2d

• Aufruf: import fullseye as fs; fs.ledger.poisson_blend(src, dst, mask, offset=(0, 0)) (die Implementierung direkt: import colortransport; colortransport.poisson_blend(src, dst, mask, offset=(0, 0)); aus dem Register: opscolortransport.get("poisson_blend"))

• Rückgabewert über das Register: fullseye.ledger.poisson_blend(...) liefert nur den Wert des deklarierten Out-Typs image2d (die zugrunde liegende Funktion gibt zusätzlich Hilfsinformationen zurück). Wird das Verworfene gebraucht, nutze fullseye.ledger.poisson_blend.raw(...) oder rufe colortransport.poisson_blend direkt auf.

Verwendung

Nahtloses Compositing, das das Gradientenfeld überträgt (Pérez, Gangnet & Blake, SIGGRAPH 2003).

Innerhalb von mask wird der Gradient von src beibehalten und ein Bild gelöst, das auf dem Rand den Werten von dst entspricht. Die Ausgabe erfüllt daher die folgenden 2 Eigenschaften konstruktionsbedingt, und genau das dient als Gegenprobe der Korrektheit:

• der Laplace-Operator im Inneren stimmt mit dem Laplace-Operator von src überein (bis auf das Residuum der Lösung)

• außerhalb der Maske stimmt sie exakt mit dst überein (kein 1 Pixel wird angefasst)

Die Farbe des eingefügten Objekts ändert sich. Genau das ist Zweck der Operation, aber wer sie unverändert für "die Farbe des eingefügten Objekts messen" verwendet, misst in Wahrheit die Farbe des Ziels. Der Rückgabewert ist (blended, info); info["changed_pixels"] und info["max_shift"] geben an, wie viel sich tatsächlich bewegt hat.

Parameters

src : array_like

Das einzufügende Bild. (H, W) oder (H, W, C).

dst : array_like

Das Ziel. Mindestens so groß wie src.

mask : array_like

Boolesch, gleiches (H, W) wie src. Sie darf den Rand nicht berühren

(wird ausdrücklich abgewiesen, da sich keine Randbedingung bilden lässt).

offset : (int, int)

(row, col), an dem die linke obere Ecke von src in dst platziert wird.

Returns

(ndarray, dict)

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• colorimetry — Farbmetrik und Spektren — Farbe ist nur durch Spektrum × Lichtart × Beobachter bestimmt

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)

• color_transport — py -3.11 examples/color_transport.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

histogram_match

Gleiche Kategorie (blend)

—


*Provenance: colortransport.py — COLORTRANSPORT 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.