点集对齐
语义关键点、同一 surfel、NOCS 坐标或轨迹时间戳已经给出点的身份。目标函数固定,SVD 可一次求解。
Problem Contract
本站使用列向量与 {}^T T_S 记号:它把 source frame 中的点变换到 target frame。源点记为 qi,目标点记为 pi;同一公式可表示 CAD→相机、前一帧→当前帧、扫描→地图或相机→机器人基座。
语义关键点、同一 surfel、NOCS 坐标或轨迹时间戳已经给出点的身份。目标函数固定,SVD 可一次求解。
原始点云没有同序关系。必须通过最近邻、局部描述子或概率模型推断哪些观测属于同一表面位置。
遮挡、视场与扫描路径导致非重叠区域。强迫每个源点匹配目标,必然把外点拉进解中。
要被移动的数据;例如 CAD、当前扫描、相机帧 t−1。
将 source 表达改写到 target frame 的刚体变换。
固定参考;例如观测点云、地图、相机帧 t 或机器人 base。
STT = [Rᵀ, −Rᵀt];交换源目标必须求逆。
Closed-form Alignment
Kabsch / Orthogonal Procrustes 在已知对应、各向同性平方误差下求最优刚体旋转和平移。Umeyama 在同一结构上增加全局尺度,并显式保证旋转不含镜像。
常指中心化点集的最优旋转步骤;配上质心平移就是完整刚体对齐。
文献中可能允许平移、尺度或反射。看到“Procrustes”时要继续核对允许的变换群。
适合单目轨迹尺度对齐、类别级规范坐标;RGB-D / CAD 同为米时通常关闭尺度估计。
Minimal geometry
只约束平移组合,旋转完全不可观。
约束一条方向,但绕连线的旋转仍自由。
无噪声、带身份的三点可定义有手性的刚体 frame。
秩不足或条件数差;即使残差很小,某些旋转方向仍不可信。
如果每个点的精度不同,可对质心与协方差使用置信度权重。若误差具有方向性,例如深度沿视线更不确定,则单个标量权重不够,应使用协方差、GICP 或完整的最大似然目标。鲁棒核适合重尾噪声,但大量离群对应仍优先用 RANSAC 建立共识。
Interactive Lab
闭式视图对合成 3D 对应执行 3×3 SVD,可开关尺度与镜像;鲁棒视图实际抽取非共线三点、评分全部对应并用全内点重估;ICP 视图在二维切片上执行与三维 point-to-point 相同的“最近邻 ↔ 刚体更新”交替机制,用来直接观察吸引域。
Interactive · 3D–3D Registration
Centroid
Spectrum
Handedness
Scale / translation
Fit
Consensus
Residual
Pose error
Sampling
Correspondence
Residual
Estimated transform
Convergence
Robust Paired Alignment
语义关键点、特征匹配或网络预测的 3D–3D 对应都可能含粗大误差。此时不应直接把全部点送入 SVD,而应让最小集提出模型、全体对应建立共识,再对共识集重估。
同时检查源三角形和目标三角形的面积、边长比例与重复索引;病态样本不进入模型估计。
估计 R、t,并拒绝数值异常、det(R) 偏离 +1 或明显超出任务先验的候选。
按三维残差形成内点集;可使用截断损失、M-estimator 或由点协方差归一化后的 Mahalanobis 距离。
最小三点只负责提出假设。最终 R、t 必须用最佳共识集重新做 SVD,并再次更新内点和质量指标。
From Unknown Pose to Coarse Alignment
若 source 与 target 没有对应且相对位姿较大,最近邻通常是错的。全局阶段通过局部几何描述子和鲁棒一致性建立宽基线假设,目标不是做到最后一毫米,而是进入局部优化器的正确吸引域。
确认 source / target 的方向、frame、米或毫米、时间戳、深度尺度与坐标轴;先裁掉任务无关背景。
用与物体尺寸和传感器噪声匹配的 voxel 下采样;估计法向时记录半径、近邻数与朝向规则。
计算 FPFH 或学习型局部描述子,互检特征对应;用 RANSAC、FGR 或其他鲁棒全局方法提出粗变换。
检查边长保持、法向夹角、最大对应距离、变换合法性、重叠区域和对称等价,而不只看特征相似度。
从粗到细减小 voxel 与对应阈值;在点到面、GICP 或彩色 ICP 中配合鲁棒核与对应过滤。
报告 fitness、inlier RMSE、阈值、重叠、姿态误差与失败原因;需要时加入渲染、轮廓、碰撞或闭环一致性检查。
Canonical global-to-local chain
货架、齿轮、圆柱与规则孔阵列会产生大量局部外观相同的描述子,需要全局几何或对称感知。
描述子匹配数量可能很多,但真正来自公共可见表面的对应很少;要显式估计 overlap。
FPFH 与 point-to-plane 都依赖法向。朝向翻转、半径错误或跨边界邻域会破坏匹配与优化。
物体对称时多个变换都能同样对齐几何;任务应保留等价类,而不是把另一个正确对称姿态算作失败。
Local Registration
经典 ICP 从当前位姿变换源点,寻找目标最近邻,过滤不可信对应,求解增量变换,再重复直到代价或位姿更新足够小。由于对应随位姿变化,整体目标非凸,初值直接决定会落入哪个吸引域。
用当前 T 移动 source
最近邻或投影对应
距离、法向、边界与互检
估计 ΔT 并复合
代价、增量与迭代上限
| 方法 | 输入 | 主要目标 | 初值 | 优势 | 主要风险 |
|---|---|---|---|---|---|
| Kabsch / Orthogonal Procrustes | 已知、同序的 3D–3D 对应 | 点到点平方误差 | 不需要 | SVD 闭式解;适合无离群或 RANSAC 内点重估 | 对应错误会直接污染解;必须处理 det(R) = −1 |
| Umeyama | 已知、同序的 3D–3D 对应 | 相似变换点到点平方误差 | 不需要 | 可同时估计尺度;常用于轨迹、NOCS 与跨尺度对齐 | 度量点云通常应固定 s = 1;尺度会吸收错误单位或模型偏差 |
| Point-to-point ICP | 两组原始点云 | 最近邻点到点距离 | 通常需要接近真值 | 实现简单;不依赖法向 | 沿平面滑动收敛慢,易受密度差、部分重叠和局部最优影响 |
| Point-to-plane ICP | 点云 + 目标法向 | 沿目标法向的有符号距离 | 通常需要接近真值 | 在光滑表面附近通常比点到点收敛快 | 法向方向、邻域尺度和局部平面质量决定结果 |
| Generalized ICP | 点云 + 局部协方差 | 协方差加权的局部平面误差 | 通常需要粗初值 | 统一点到点与点到面思想,利用两侧局部结构 | 协方差估计与邻域设置敏感,计算成本更高 |
| Colored ICP | 带颜色点云 + 法向 | 几何项 + 光度项 | 通常需要粗初值 | 几何退化区域可由颜色梯度补充切向约束 | 曝光、白平衡、非朗伯反射和跨帧颜色差会误导优化 |
| NDT | 源点云 + 目标体素高斯 | 点落入局部概率分布的似然 | 一般仍受初值影响 | 目标被压缩为体素分布;常见于激光扫描匹配 | 体素分辨率与优化步长决定平滑程度、速度和局部极值 |
| FPFH + RANSAC / FGR | 下采样点云 + 法向 + 局部描述子 | 特征一致性与几何一致性 | 可从未知位姿开始 | 为 ICP 提供全局或宽基线初值 | 重复结构、低重叠与法向/尺度设置不当会产生伪匹配 |
过小会在初值较差时没有对应;过大会把非重叠区域和错误表面拉入优化。多尺度逐步收紧更稳妥。
Huber、Cauchy、Tukey 等通过 IRLS 降低残余外点权重,但不能凭空制造正确对应或修复无重叠。
已知大致重叠率时,可丢弃最大一部分残差;重叠率估计错误也会删除真对应或保留外点。
较大 voxel 平滑局部几何并降低计算量,随后逐层减小 voxel 与对应阈值恢复细节。
Evaluation & Acceptance
配准可以从对应残差、点云覆盖、真值位姿、表面距离和下游任务多个层面评估。不同层面回答的问题不同,应避免用一个漂亮的 RMSE 掩盖低重叠、对称或错误局部解。
看 RMS、median、P90/P95 与残差直方图;平均值会掩盖长尾和局部错误。
双向最近邻、overlap 与空间分布共同检查,避免只对齐一个局部平面。
在有真值时报告旋转、平移、尺度误差,并处理坐标方向和对称等价。
重建看闭环与表面一致性;抓取看 TCP、碰撞与接近方向;6D pose 看 CAD 渲染和可见轮廓。
Recommended log contract
source→target · units · voxel · normal radius · init source · solver · max correspondence · robust loss · iterations · inlier/all · fitness · RMSE/P95 · ΔR/Δt · overlap · stop reason Across Application Domains
分割目标深度、反投影为相机点云,以网络位姿或全局特征作初值,再用几何/颜色 ICP 精修 CTO。必须处理可见表面与完整 CAD 的部分重叠。
连续帧提供较好运动初值,ICP、GICP 或 NDT 恢复相对运动;错误匹配会累积为漂移,最终还需回环与 pose graph 优化。
对应几何体或扫描之间的刚体变换进入 base–camera–tool 链。时间同步、结构挠曲和单位错误常比求解器误差更大。
把离线 CAD 抓取位姿随 sceneTmodel 迁移到现场;局部表面对齐正确仍不保证物体全局姿态、碰撞和夹爪可达性正确。
Engineering recipe · Open3D Python
# source -> target
source_down, source_fpfh = preprocess(source, voxel)
target_down, target_fpfh = preprocess(target, voxel)
coarse = o3d.pipelines.registration.registration_ransac_based_on_feature_matching(
source_down, target_down, source_fpfh, target_fpfh,
mutual_filter=True,
max_correspondence_distance=1.5 * voxel,
estimation_method=o3d.pipelines.registration.TransformationEstimationPointToPoint(False),
ransac_n=3,
checkers=checkers,
criteria=criteria,
)
fine = o3d.pipelines.registration.registration_icp(
source, target, 0.4 * voxel, coarse.transformation,
o3d.pipelines.registration.TransformationEstimationPointToPlane(),
) 多数库返回把 source 送到 target 的 4×4 变换;把参数顺序交换后,结果应与原结果互逆,而不是只差平移符号。
point-to-plane 前必须确认目标法向存在、尺度合理且方向稳定;下采样后通常需要重新估计或正确聚合法向。
保存 coarse、fine、每层指标和对齐点云。只保存最终矩阵会让全局失败与局部失败无法区分。
Debug Protocol
配准错误常来自方向、单位、深度反投影、点云筛选和法向,而不只是优化参数。建立从单点、已知变换、无离群闭式解到真实未知对应的分层测试,可以快速定位问题落在哪一层。
比较 AABB、质心、点间距中位数与深度范围。米/毫米错误会让所有阈值失效,也可能被误开的尺度估计暂时掩盖。
手算 p = Rq+t,确认库输出确实是 source-to-target;再验证 T⁻¹(Tq)=q。
Kabsch 应把残差降到数值精度,det(R)≈+1。若失败,优先检查 H 的方向、矩阵乘法侧和质心平移。
一次只改变一个因素,记录内点率、姿态误差和退化样本数,避免在真实场景中同时猜十个参数。
若 coarse 落在错误对称分支,ICP 精修得再漂亮也不会回到真值;若 coarse 正确而 fine 变坏,检查对应门限、法向和非重叠区域。
长线集中在轮廓/遮挡处提示部分重叠;沿同一方向偏移提示外参或同步;跨重复结构连线提示描述子歧义。
检查 CAD 渲染、表面覆盖、位姿跳变、碰撞或闭环,而不只接受 “converged=true”。
Next systems topic · 08