transport_plan_1d — COLORTRANSPORT transport op

• Datenarten: signal × signal → transport_plan

• Aufruf: import fullseye as fs; fs.ledger.transport_plan_1d(u_values, v_values) (die Implementierung direkt: import colortransport; colortransport.transport_plan_1d(u_values, v_values); aus dem Register: opscolortransport.get("transport_plan_1d"))

Verwendung

Der exakte 1-D-Transportplan (Nordwest-Ecken-Regel). Liefert eine (n, m)-Massenmatrix.

Zeilensummen sind 1/n, Spaltensummen 1/m -- das ist konstruktionsbedingt exakt, und es weicht außer durch numerische Fehler nie ab (per Test festgenagelt).

Ablauf: u (n Werte) und v (m Werte) jeweils aufsteigend sortieren und vom kleinsten an der Reihe nach die Masse min(Rest u, Rest v) zuweisen (monotone Kopplung). Die Masse jeder Stichprobe ist gleichmäßig 1/n bzw. 1/m (gewichtete werden nicht angenommen). In 1 Dimension ist, solange eine konvexe Funktion des Abstands die Kosten bildet, diese monotone Kopplung optimal, daher erhält man denselben Transport wie wasserstein_1d als Matrix "welche Stichprobe wohin geht".

• u_values, v_values: auf 1 Dimension abgeflacht (ravel). Die Längen dürfen verschieden sein. Leer ergibt MetricContractError. Endlichkeit wird nicht geprüft (NaN landet beim Sortieren am Ende und wird stillschweigend gekoppelt).

• Rückgabewert: float64 der Form (n, m) (Typ transport_plan). plan[i, j] ist die Masse, die in der ursprünglichen Eingabereihenfolge von u[i] nach v[j] transportiert wird. Höchstens n + m - 1 Elemente ungleich null. Bei n == m eine Permutationsmatrix / n (eins-zu-eins-Zuordnung).

• Der Aufwand ist eine O((n + m) log)-Sortierung + ein O(n + m)-Durchlauf, aber die zurückgegebene Matrix ist eine dichte n × m-Matrix, daher ungeeignet für Stichproben in der Größenordnung von Pixelzahlen (dann histogram_match oder sinkhorn).

apply_transport(plan, v) liefert den Zielwert (Schwerpunkt) jeder Stichprobe auf der u-Seite, transport_cost(plan, cost) die Gesamtkosten.

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 transport_plan als Eingabe)

transport_cost · apply_transport

Gleiche Kategorie (transport)

wasserstein_1d · sinkhorn · sinkhorn_distance · sinkhorn_divergence


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