iss_keypoints — 3D feature_register op

• 資料種類:points → indices

• 呼叫: import fullseye as fs; fs.ledger.iss_keypoints(points, radius, nms_radius=None, gamma21=0.99, gamma32=0.99, max_kp=400, min_neighbors=8)(要直接呼叫實作,import feat_shot; feat_shot.iss_keypoints(points, radius, nms_radius=None, gamma21=0.99, gamma32=0.99, max_kp=400, min_neighbors=8);從台帳取用則 ops3d.get("iss_keypoints"))

用法

ISS(Intrinsic Shape Signatures,相當於 3D Harris)關鍵點偵測。

以局部共變異數的最小特徵值 λ3 作為 saliency,只把特徵值 distinct(方向 well-defined)的點作為候選,並以 NMS 稀疏地選取。旋轉不變。回傳值=點 index 陣列。

參數:

• points (N,3)。radius: saliency 用的鄰域球半徑(與點雲單位相同)。

• nms_radius: 非極大值抑制的距離。None 時為 0.6*radius。

• gamma21、gamma32: 特徵值比 λ2/λ1、λ3/λ2 的上限(預設 0.99)。兩者都

小於此值的點才是候選(排除比接近 1=等向性、方向無法確定的點)。

• max_kp: 回傳的上限。min_neighbors: 鄰域少於此數的點不作為候選(預設 8)。

步驟: 在各點收集 radius 內的鄰域,求以關注點為原點的 2 階矩矩陣 (qᵀq)/n 的特徵值 λ1≥λ2≥λ3(λ1 在 1e-12 以下則排除)。以 λ3 作為 saliency 依降序掃描,捨棄距已採用點小於 nms_radius 的點的貪婪 NMS。回傳值為 int64 的點索引陣列(saliency 降序)。無候選時長度為 0。

注意: 鄰域以關注點為中心(而非質心)。平面上的點,其關注點也在同一平面上,因此 λ3 理論上為 0,捨入殘渣(λ3/λ1 ≤ 1e-9)不作為候選。這是對所有點做鄰域搜尋的 Python 迴圈,因此超過數萬點的點雲應先以 voxel_grid_downsample 抽稀後再使用。直接作為 shot_descriptor 的關鍵點輸入,register_shot 以 saliency 半徑 0.6*radius、NMS 半徑 0.3*radius 呼叫(radius 為 register_shot 的支撐半徑)。

背景知識指南(該運算子背後的物理與規範)

• blas_threads_and_memory — 矩陣分解為何慢 —— BLAS 執行緒、快取、記憶體配置

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• feature_register — py -3.11 examples_3d/feature_register.py

型別可銜接的下一個運算子(可接受 indices 作為輸入)

fuse_to_voxel

同類別(feature_register)

harris3d_keypoints · compute_fpfh · shot_descriptor · register_spin · register_fpfh · register_shot


*Provenance: feat_shot.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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