geodesic op• 数据种类:points → indices
• 调用: import fullseye as fs; fs.ledger.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray(要直接调用实现,import geodesic3d; geodesic3d.farthest_point_sampling(points: numpy.ndarray, n: int, k: int = 8, start: int = 0) -> numpy.ndarray;从台账取用则 ops3d.get("farthest_point_sampling"))
按测地距离的最远点采样(均匀抽稀)。→ 选中索引序列 (n,) int。
以 start 为第 1 个代表点,每次 1 个地添加"到已选点集的测地距离最大的点"的贪心法(FPS)。距离用 knn_graph(points, k) 的无向 kNN 图上的 Dijkstra 测量,到已选集合的距离保存为各代表点单源距离的逐元素最小值 mind,每增加 1 个代表点就用 mind = min(mind, d_new) 更新。每 1 个代表点执行 1 次 Dijkstra,因此计算量为 n 次单源最短路径。不使用随机数,是确定性的。
• points: (N,3) 点云。n: 需要的点数。超过 N 时取 N,为负时取 0 (0 时为空数组)。
• k: kNN 图的邻域数(默认 8)。start: 第 1 个代表点(用 start % N 折回到范围内)。
• 返回值是按选择顺序排列的索引序列(开头是 start)。points[idx] 即为代表点群。
陷阱: 图分为多个连通分量时,不可达的点距离为 inf,因此未到达的分量会被优先选中(argmax 取到 inf)。会出现"先取远处的块"的行为,因此若想按分量均匀抽稀,请先用 euclidean_cluster 等分开后再使用。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py
• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py
indices 作为输入)geodesic)geodesic_distances · geodesic_mesh · knn_graph
*Provenance: geodesic3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.