dc_rpca_sparse — 2D decomposition op

• Datenarten: image → image

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

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

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

▸ dc_rpca_sparse: 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_rpca_sparse: 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

Sparse-(Defekt-/Anomalie-)Residuum der Robust-PCA = Eingabe - Low-Rank, bei 0,5 zentriert.

Führt dieselbe inexact-ALM-PCP-Zerlegung M = L + S wie dc_rpca_lowrank aus und gibt den dünnbesetzten Term S um 0.5 zentriert zurück (clip(S + 0.5, 0, 1)). Pixel, die dem Hintergrund gleichen, sind 0.5, isolierte Punkte heller als der Hintergrund liegen über 0.5, dunklere darunter: ein vorzeichenbehaftetes Residuum, und im ungesättigten Bereich gilt dc_rpca_lowrank + (this output - 0.5) == input. a bestimmt das Sparse-Gewicht λ = (0.5 + 1.5*a)/sqrt(max(m, n)); je größer, desto dünner besetzt ist S (kleine Residuen werden auf 0 gerundet, nur deutliche Defekte bleiben), bei a=0 erhält fast jedes Pixel ein Residuum. b wird nicht verwendet.

Bei Bildern, deren längere Seite 64 überschreitet, wird L auf einem verkleinerten Bild gelöst, und S wird in Originalauflösung als S = soft(M0 - L_up, λ/μ_final) neu berechnet (weil das Vergrößern eines verkleinerten S 1-Pixel-Defekte verschmieren und ihre Amplitude verlieren würde). Die Eingabe wird auf 2-D in [0,1] gebracht; Rückgabewert ist float64 derselben Form, in [0,1]. Bei einem Bild aus lauter Nullen ist S = 0 und das Ergebnis gleichmäßig 0.5. Bei einer Ausnahme greift

fail-soft: eine geclippte Version der Eingabe wird zurückgegeben und im Register (Ledger) vermerkt.

Nachgelagert ist |output - 0.5| die Defektstärke; mit einem Op der threshold-Familie werden also Pixel fern von 0.5 ausgewählt (ob die helle oder die dunkle Seite erfasst wird, bestimmt die Richtung des Schwellwerts). Gedacht für die Erkennung von Punktdefekten und Kratzern auf periodischen Hintergründen (Gewebe, Gitter, Displays); bei nichtperiodischen Hintergründen mischen sich die Unebenheiten des Hintergrunds unverändert in das Residuum.

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_rpca_sparse 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

Typkompatible Folge-Operatoren (nehmen image als Eingabe)

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

Gleiche Kategorie (decomposition)

dc_structure_texture · dc_texture_residual · dc_rpca_lowrank · 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.