farthest_point_sampling — 3D geodesic op

• Data kinds: points → indices

• Call: import fullseye as fs; fs.ledger.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray (implementation को सीधे call करना हो तो import geodesic3d; geodesic3d.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray, registry से लेना हो तो ops3d.get("farthest_point_sampling"))

उपयोग

geodesic distance से farthest point sampling (समान रूप से पतला करना)। → चुने गए indices की series (n,) int।

start को पहला representative point मानकर, "पहले से चुने points के set से geodesic distance सबसे ज़्यादा वाला point" एक बार में 1 जोड़ने वाला greedy method (FPS)। दूरी knn_graph(points, k) के undirected kNN graph पर Dijkstra से मापी जाती है, और चुने गए set से दूरी हर representative point की single-source दूरियों के element-wise minimum mind के रूप में रखी जाती है, और हर 1 representative point जुड़ने पर mind = min(mind, d_new) से update होती है। हर 1 representative point पर 1 बार Dijkstra चलता है, इसलिए लागत n बार के single-source shortest path जितनी है। random numbers इस्तेमाल नहीं होते; deterministic है।

• points: (N,3) point cloud। n: चाहिए points की संख्या। N से अधिक हो तो N, ऋणात्मक हो तो 0 पर round किया जाता है (0 पर ख़ाली array)।

• k: kNN graph के neighbours की संख्या (default 8)। start: पहला representative point (start % N से सीमा के अंदर लपेटा जाता है)।

• return value चुनने के क्रम में index sequence है (पहला start)। points[idx] से representative points मिलते हैं।

सावधानी: अगर graph कई connected components में बँटा हो, तो न पहुँचने वाले points की दूरी inf होती है, इसलिए न पहुँचा component पहले चुना जाता है (argmax inf उठा लेता है)। इससे "दूर के ढेर पहले लो" वाला behaviour बनता है, इसलिए अगर हर component को समान रूप से subsample करना हो तो पहले euclidean_cluster आदि से अलग करके इस्तेमाल करें।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py

• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py

वे अगले ops जिनसे type जुड़ता है (indices को input के रूप में लेते हैं)

fuse_to_voxel

इसी category के (geodesic)

geodesic_distances · geodesic_mesh · knn_graph


*Provenance: geodesic3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.