register_shot — 3D feature_register op

• 資料種類:points × points → pose

• 呼叫: import fullseye as fs; fs.ledger.register_shot(src, dst, radius=None, normal_k=16, ratio=0.9, ransac_iters=2000, inlier_thr=None, refine_icp=True, max_kp=400, device='cpu', seed=0)(要直接呼叫實作,import feat_shot; feat_shot.register_shot(src, dst, radius=None, normal_k=16, ratio=0.9, ransac_iters=2000, inlier_thr=None, refine_icp=True, max_kp=400, device='cpu', seed=0);從台帳取用則 ops3d.get("register_shot"))

用法

SHOT 描述子的稀疏特徵匹配 + RANSAC 剛體姿態估計(完整管線)。

無需初始估計,即可將大旋轉、部分重疊的 2 個點雲對應起來並回傳剛體變換(旋轉 R + 平移 t)。與稠密匹配(NCC/Hough/PCA)不同,在每個 ISS keypoint 上建立局部參考座標系(LRF),以球狀分割單元的法線角度直方圖(SHOT)描述 → 以 Lowe 比率測試 + 相互最近鄰匹配 → 以 RANSAC 對離群值穩健地估計位姿。得到的位姿也可用於為 ICP 提供粗初始值(coarse init)。

LRF 的符號歧義: 距離加權共變異數的特徵向量符號不確定, 因此將各軸(x=最大, z=最小 特徵值)對齊到鄰域向量 (p_i-p) 投影的多數方向(Tombari 的符號規則),並以 y=z×x 構成右手系。點法線也依同一規則統一為遠離鄰域質量的方向(局部向外),因此對旋轉共變,對部分重疊也穩定。對兩個點雲套用同一規則,以確保描述子的 repeatability。

參數:

src, dst: (N,3)/(M,3) 點雲(numpy 或 torch)。將 src 對齊到 dst。

radius: SHOT 支撐半徑。None 時為各點雲自身 bbox 對角線(取較小者)的 0.15 倍

(聯合 bbox 的對角線會因平移而虛增、使尺度失準,因此不使用)。

normal_k: 法線估計的 knn 數。

ratio: Lowe 比率測試閾值(越小越嚴格)。

ransac_iters: RANSAC 迭代次數。

inlier_thr: RANSAC 內點距離。None 時為 bbox 對角線的 0.03 倍。

refine_icp: 為 True 時以得到的位姿為初始值,以 Trimmed ICP(icp_point2point_3d)精化。

max_kp: keypoint 上限。

device: torch 裝置("cpu" 等)。在其上求解 SVD/ICP。

seed: RANSAC 亂數種子。

回傳值:

R: (3,3) numpy。滿足 dst ≈ src @ R.T + t 的旋轉(與 icp 同一慣例)。

t: (3,) numpy。平移。

info: dict。"n_kp_src","n_kp_dst","n_matches","n_inliers","inlier_ratio",

"icp_rmse"(refine_icp 時),"ok"(True=估計成功; 內點<4 時

視為不可信,回傳 False + 單位變換)。

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

• 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

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

fuse_to_voxel · pose_error · bundle_adjust · mean_reprojection_error · optimize_pose_graph · relative_pose · mean_edge_error · rotation_translation_error

同類別(feature_register)

harris3d_keypoints · iss_keypoints · compute_fpfh · shot_descriptor · register_spin · register_fpfh


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

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