mls_smooth — 3D preprocess op

• Datenarten: points → points

• Aufruf: import fullseye as fs; fs.ledger.mls_smooth(points, radius: 'float', order: 'int' = 2) (die Implementierung direkt: import pcl_filter; pcl_filter.mls_smooth(points, radius: 'float', order: 'int' = 2); aus dem Register: ops3d.get("mls_smooth"))

Verwendung

Reduziert Rauschen, indem jeder Punkt auf eine lokale Polynomfläche projiziert wird (Moving-Least-Squares-Glättung).

Sammelt für jeden Punkt die Nachbarn im Radius radius, schätzt per gewichteter PCA eine lokale Ebene (Normale n und die 2 Achsen der Tangentialebene) und passt an die Nachbarn "Koordinate (u,v) in der Tangentialebene → Höhe h in Normalenrichtung" eine Polynomfläche vom Grad order per gaußgewichteter kleinster 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) in Normalenrichtung verschoben und so auf die Fläche projiziert. Die Form der Fläche bleibt erhalten, nur das Sensorrauschen wird geglättet.

Parameters

points : array_like, shape (N, 3)

Eingabe-Punktwolke.

radius : float

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

order : int

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

Returns

ndarray, shape (N, 3)

Die geglättete Punktwolke (Reihenfolge und Punktzahl erhalten). Punkte mit weniger Nachbarn als Polynomterme bleiben an ihrer Position.

Notes

Es ist ein Näherungsverfahren. Punkte mit weniger Nachbarn als Terme / mit entarteter lokaler Ebene werden nicht bewegt und behalten ihre Position (eine Sicherheitsmaßnahme gegen Ausreißer an Löchern und Rändern). radius <= 0 löst ValueError aus, leere Eingabe ergibt eine leere Ausgabe.

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• depth_sensors — Tiefensensoren — Messprinzipien, Werte realer Geräte, wie Messlücken entstehen

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.

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

• pcl_geodesic — py -3.11 examples_3d/pcl_geodesic.py

Typkompatible Folge-Operatoren (nehmen points als Eingabe)

points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d

Gleiche Kategorie (preprocess)

statistical_outlier_removal · radius_outlier_removal · voxel_grid_downsample · volume_downsample


*Provenance: pcl_filter.py — 3D 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.