dc_structure_texture — 2D decomposition op

• Datenarten: image → image

• Aufruf: fullseye.apply(img, "dc_structure_texture", a=0.5, b=0.5) (das 2-D-Modell ist ein Bild plus zwei skalare Regler a,b∈[0,1])

dc_structure_texture: input → output

*Die Abbildung ist die tatsächliche Ausgabe auf einer synthetischen 128×128-Eingabe. Links Eingabe, rechts Ausgabe. Punktwolken als Draufsicht-Streudiagramm (Helligkeit = z), 1-D-Reihen als Linie, Volumen als Maximum-Projektion entlang z, Videos als mittleres Bild, komplexe Bilder als Betrag; Rückgabewerte, die kein Bild ergeben, werden als Werte gezeigt.*

*Die Ausgabe ist in einer viridis-artigen Falschfarbe dargestellt (dunkles Violett = klein, Gelb = groß), damit ein Feld von Größen — Abstand, Phase, Orientierung, Tiefe — lesbar ist.*

Regler a durchfahren (0,1 / 0,5 / 0,9, der andere Regler auf Standard):

▸ dc_structure_texture: Regler a durchfahren (Doku-Website)

*Regler b ändert die Ausgabe nicht (gemessen: identisch bei 0,1 / 0,5 / 0,9).*

Auf anderen Bildern (synthetische Szene / Foto / Münzen. Obere Reihe: Eingaben, untere Reihe: deren Ausgaben. Regler auf Standard):

▸ dc_structure_texture: andere Eingaben (Doku-Website)

*Die 4. Spalte ist eine Farb-Eingabe (H,W,3). Dieser Op verarbeitet Farbe, ohne Kanäle zu vermischen (er faltet den Farbkanal nicht als dritte Raumachse).*

Verwendung

Struktur-/Cartoon-Anteil des Bildes (TV-L2, Chambolle).

Zerlegt das Bild in "Struktur (cartoon) + Textur" und gibt den Strukturanteil zurück. Das ROF/TV-L2-Modell min_u ||u - f||^2 / (2*weight) + TV(u) wird mit Chambolles (2004) dualem Projektionsverfahren in fest 120 Iterationen (tau=0.125) gelöst. Mit weight = 0.02 + 0.28*a gilt: je größer a, desto glatter (flache Felder breiten sich aus, feine Muster verschwinden); auch bei a=0 wird eine sehr schwache Glättung angewandt. b wird nicht verwendet.

Die Eingabe wird auf 2-D-float64 in [0,1] gebracht (3-D per Kanalmittelung, NaN→0, ±Inf→1/0). Rückgabewert ist float64 in der Form der Eingabe, auf [0,1] begrenzt. Sofern keine Sättigung eintritt, gilt dc_structure_texture + (dc_texture_residual - 0.5) == input. Winzige Bilder wie 1xN / Nx1, für die keine 2-D-Divergenz definiert ist, geben die Eingabe unverändert zurück (Struktur = Eingabe, Textur = 0.5). Bei einer Ausnahme greift fail-soft: eine geclippte Version der Eingabe wird zurückgegeben und im backend_safe-Register (Ledger) vermerkt (im strict-Modus erneut ausgelöst).

Anders als ein Gauß-Weichzeichnen bewahrt es Kanten (Stufen) und entfernt nur Muster und Rauschen. Da die Iterationszahl fest ist, konvergiert es bei großen Bildern eventuell nicht vollständig (der Rest erscheint im Texturanteil). Wer nur den Texturanteil will, nimmt dc_texture_residual. Einsetzbar als Vorverarbeitung zur Entfernung periodischer Muster oder zur Defekterkennung, gefolgt von threshold oder dyn_threshold. Ist der Hintergrund niedrigrangig (Streifen, Verläufe), ist auch dc_rpca_lowrank ein Kandidat.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie gallery2d_texture_freq

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• blas_threads_and_memory — Warum Matrixzerlegungen langsam sind — BLAS-Threads, Caches, Speicherlayout

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.

In Studio ausprobieren

Das Programm unten ist nachweislich lauffähig (gleiche Eingabe wie die Abbildung). In der Studio-Hilfe wird dieser Block zu Schaltflächen, die es sofort laden und ausführen.

dc_structure_texture 0.50 0.50

▸ Diese Pipeline laden  ·  Laden & ausführen

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

• gallery2d_texture_freq — py -3.11 examples/gallery2d_texture_freq.py

• poc_fiber_orientation — py -3.11 examples/poc_fiber_orientation.py

Typkompatible Folge-Operatoren (nehmen image als Eingabe)

identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter

Gleiche Kategorie (decomposition)

dc_texture_residual · dc_rpca_lowrank · dc_rpca_sparse · dc_retinex · dc_local_contrast_norm · dc_homomorphic


*Provenance: ops.py — 2D 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.