farthest_point_sampling — 3D 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 作為輸入)

fuse_to_voxel

同類別(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.