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.