farthest_point_sampling — 3D geodesic op

• Datenarten: points → indices

• Aufruf: import fullseye as fs; fs.ledger.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray (die Implementierung direkt: import geodesic3d; geodesic3d.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray; aus dem Register: ops3d.get("farthest_point_sampling"))

Verwendung

Farthest-Point-Sampling nach geodätischer Distanz (gleichmäßige Ausdünnung). → die Folge der gewählten Indizes (n,) int.

Ein Greedy-Verfahren (FPS), das start als ersten repräsentativen Punkt nimmt und jeweils 1 "Punkt mit dem größten geodätischen Abstand zur Menge der bereits gewählten Punkte" hinzufügt. Abstände werden mit Dijkstra auf dem ungerichteten kNN-Graphen von knn_graph(points, k) gemessen; der Abstand zur gewählten Menge wird als mind gehalten, das elementweise Minimum der Einzelquellen-Abstände der repräsentativen Punkte, und jedes Mal, wenn 1 repräsentativer Punkt hinzukommt, mit mind = min(mind, d_new) aktualisiert. Pro 1 repräsentativem Punkt läuft 1 Dijkstra, daher entspricht der Aufwand n Läufen kürzester Wege von einer Quelle. Es werden keine Zufallszahlen verwendet; deterministisch.

• points: (N,3)-Punktwolke. n: gewünschte Punktanzahl. Werte über N werden auf N gesetzt, negative auf 0 (0 ergibt ein leeres Array).

• k: Nachbaranzahl des kNN-Graphen (Standard 8). start: erster repräsentativer Punkt (mit start % N in den Bereich zurückgefaltet).

• Rückgabewert ist die Indexfolge in Auswahlreihenfolge (zuerst start). points[idx] liefert die repräsentativen Punkte.

Falle: Zerfällt der Graph in mehrere Zusammenhangskomponenten, haben unerreichbare Punkte den Abstand inf, sodass eine unerreichte Komponente zuerst gewählt wird (argmax greift inf). Das ergibt ein Verhalten "entfernte Haufen zuerst"; wer jede Komponente gleichmäßig ausdünnen will, trennt sie zuvor mit euclidean_cluster o. Ä.

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)

• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py

• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py

Typkompatible Folge-Operatoren (nehmen indices als Eingabe)

fuse_to_voxel

Gleiche Kategorie (geodesic)

geodesic_distances · geodesic_mesh · knn_graph


*Provenance: geodesic3d.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.