geodesic_distances — 3D geodesic op

• 数据种类:points → signal

• 调用: import fullseye as fs; fs.ledger.geodesic_distances(points: numpy.ndarray, source: int, k: int = 8) -> numpy.ndarray(要直接调用实现,import geodesic3d; geodesic3d.geodesic_distances(points: numpy.ndarray, source: int, k: int = 8) -> numpy.ndarray;从台账取用则 ops3d.get("geodesic_distances"))

用法

从 source 到全部点的测地距离(kNN 图上 Dijkstra)。→ (N,) float(不可达为 inf)。

将用 knn_graph(points, k) 构建的 k 近邻图(边权 = 点间 Euclid 距离 = 弦长)以 directed=False 无向化,用 scipy.sparse.csgraph.dijkstra 求解单源最短路径。d[i] 是从 source 到点 i 的图上路径长度,d[source] = 0,与 source 不相连的连通分量中的点为 inf。单位与坐标单位相同。

• points: (N,3) 点云(转换为 float64)。

• source: 起点的索引(0..N-1 的整数。超出范围时由 scipy 侧抛出异常)。

• k: 邻域数(默认 8)。过小时图会被分割,inf 增多;过大时会产生直接连接相距较远的面的 "捷径",得到不沿曲面的距离(薄板的正反面、折返的面等)。

精度: 边是弦长,因此会略微低估弧长,另一方面路径的锯齿会造成高估(参见模块 docstring 中 Bernstein 等人的夹逼评估)。若有三角网格(mesh),请使用不依赖邻域数的 geodesic_mesh。要按此距离均匀抽稀,使用 farthest_point_sampling。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py

类型可衔接的下一个算子(可接受 signal 作为输入)

fuse_to_voxel

同类别(geodesic)

geodesic_mesh · farthest_point_sampling · knn_graph


*Provenance: geodesic3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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