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.