knn_graph — 3D geodesic op

• 数据种类:points → graph

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

用法

每点的 k 近邻索引与欧氏距离(不含自身)。→ (idx (N,k) int, dist (N,k) float)。

用 scipy.spatial.cKDTree 查找每个点的 k+1 个近邻,返回除去自身(距离 0)的 k 个。idx[i, j] 是距点 i 第 j 近的点的索引,dist[i, j] 是其 Euclid 距离(坐标单位), 各行按距离升序。

• points: (N,3) 等任意维度的坐标(转换为 float64)。不检验形状。

• k: 邻域数(默认 8)。超过 N-1 的值会被悄悄截断为 N-1。

• N < 2 时不抛出异常,返回 2 个形状为 (N,0) 的空数组。

陷阱: 坐标重复时,KD-tree 可能不会把自身返回在第 0 列。此时逐行查找自身的位置并去除,若 k+1 个中没有自身,则丢弃最远的 1 个(结果仍为 k 个)。geodesic_distances / farthest_point_sampling 把此结果作为邻接矩阵(有向 CSR, 在 Dijkstra 侧无向化),用于近似测地距离。

参考(示例数据、文献)

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

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

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

• pcl_geodesic — py -3.11 examples_3d/pcl_geodesic.py

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

fuse_to_voxel

同类别(geodesic)

geodesic_distances · geodesic_mesh · farthest_point_sampling


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

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