tb_mls_smooth — 2D typed op

• Datenarten: points → points

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

tb_mls_smooth: 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):

▸ tb_mls_smooth: Regler a durchfahren (Doku-Website)

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

Stufen (die vorangehenden Ops → dieser Op, von links nach rechts):

▸ tb_mls_smooth: Stufen (Doku-Website)

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

▸ tb_mls_smooth: andere Eingaben (Doku-Website)

Verwendung

Projiziert jeden Punkt auf eine lokale Polynomfläche, um Rauschen zu entfernen (Moving-Least-Squares-Glättung).

Sammelt für jeden Punkt die Nachbarn innerhalb des Radius radius, schätzt per gewichteter PCA die lokale Ebene (Normale n und die 2 Achsen der Tangentialebene) und passt an die "Tangentialebenen-Koordinaten (u,v) → Höhe h entlang der Normalen" der Nachbarn eine Polynomfläche vom Grad order per Gauß-gewichteter Methode der kleinsten Quadrate an. Der betrachtete Punkt selbst liegt im Ursprung (0,0) der lokalen Koordinaten, daher wird er um die Höhe der angepassten Fläche bei (0,0) (= konstanter Term) entlang der Normalen verschoben und so auf die Fläche projiziert. Nur das Sensorrauschen wird geglättet, die Form der Fläche bleibt erhalten.

Parameters

points : array_like, shape (N, 3)

Eingabe-Punktwolke.

radius : float

Radius der Nachbarschaftskugel (> 0). Der Träger der lokalen Fläche.

order : int

Grad des lokalen Polynoms (Standard 2). Die Zahl der Terme ist (order+1)(order+2)/2.

Returns

ndarray, shape (N, 3)

Geglättete Punktwolke (Reihenfolge und Punktzahl bleiben erhalten). Punkte mit weniger Nachbarn als Polynomtermen bleiben an Ort und Stelle.

Notes

Es ist ein Näherungsverfahren. Punkte mit weniger Nachbarn als Termen / mit entarteter lokaler Ebene werden nicht bewegt und behalten ihre ursprüngliche Position (eine Sicherheitsmaßnahme, damit es an Löchern und Rändern nicht ausufert). radius <= 0 führt zu ValueError, leere Eingabe ergibt Leeres.

Die in die 2-D-Evolutionsregistrierung überbrückte 3d-op mls_smooth. Die Implementierung ist dieselbe, nur die Aufrufkonvention ist an op(v, a, b) angepasst. a variiert order (Standard 2). b wird nicht verwendet.

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.

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.

img_to_points 0.50 0.50
tb_mls_smooth 0.50 0.50

▸ Diese Pipeline laden  ·  Laden & ausführen

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

Die folgenden Beispiele rufen den zugrunde liegenden Ledger-Op mls_smooth auf. Dieser Brücken-Op ist dieselbe Implementierung, angepasst an die Konvention fn(v, a, b); das Verhalten gilt unverändert (nur die Aufrufform unterscheidet sich).

• pcl_geodesic — py -3.11 examples_3d/pcl_geodesic.py

Typkompatible Folge-Operatoren (nehmen points als Eingabe)

identity · tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal

Gleiche Kategorie (typed)

tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample


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