面对实际交付,我看probreg的重点不在星标,而在这项能力:使用概率模型进行点云配准的Python包(相干点漂移,GMMReg,SVR,GMMTree,FilterReg,贝叶斯CPD)。实际做部署与运行环境时,经常会碰到权限、依赖和环境差异会放大维护成本,所以功能列表并不能代替验证。我建议在非生产环境复现一次安装与运行,重点记录依赖锁定、权限边界、日志、回滚和资源消耗,再与现有方案比较。我的判断是,它更适合愿意维护环境并重视故障恢复的工程团队;若眼下没有这类需求,先保留观察即可。

Probreg 是一个使用 probablistic 模型实现点云 registration 算法的库。
使用随机模型的点集配准算法比ICP(迭代最近点)更加鲁棒。 该软件包使用随机模型实现了多种算法,并提供了与 Open3D 的简单接口。
核心特点
算法
转换
| 类型 | CPD | SVR, GMMReg | GMMTree | FilterReg | BCPD(实验) |
|---|---|---|---|---|---|
| 刚性 | 比例+6D姿势 | 6D 姿势 | 6D 姿势 | 6D姿势 </br>(点对点,</br>点对平面,</br> FPFH-) | - |
| NonRigid | 仿射,MCT | TPS | - | 可变形运动 </br>(实验) | 组合型号 </br>(刚性+刻度+NonRigid-term) |
CUDA 支持
你需要安装cupy。
pip install cupy
安装
您可以使用 pip 安装 probreg。
pip install probreg
或者从源代码安装 probreg。
git clone https://github.com/neka-nat/probreg.git --recursive
cd probreg
pip install -e .
开始使用
这是读取 PCD 文件并调用 CPD 注册的示例代码。 您可以轻松地从 Open3D 点云对象执行注册并绘制结果。
import copy
import numpy as np
import open3d as o3
from probreg import cpd
# load source and target point cloud
source = o3.io.read_point_cloud('bunny.pcd')
source.remove_non_finite_points()
target = copy.deepcopy(source)
# transform target point cloud
th = np.deg2rad(30.0)
target.transform(np.array([[np.cos(th), -np.sin(th), 0.0, 0.0],
[np.sin(th), np.cos(th), 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 1.0]]))
source = source.voxel_down_sample(voxel_size=0.005)
target = target.voxel_down_sample(voxel_size=0.005)
# compute cpd registration
tf_param, _, _ = cpd.registration_cpd(source, target)
result = copy.deepcopy(source)
result.points = tf_param.transform(result.points)
# draw result
source.paint_uniform_color([1, 0, 0])
target.paint_uniform_color([0, 1, 0])
result.paint_uniform_color([0, 0, 1])
o3.visualization.draw_geometries([source, target, result])
资源
结果
比较算法
| CPD | SVR | GMMTree | FilterReg |
|---|---|---|---|
噪音测试
| ICP(Open3D) | CPD | FilterReg |
|---|---|---|
非严格登记
| CPD | SVR | 过滤器寄存器 | BCPD |
|---|---|---|---|
基于特征的注册
| FPFH FilterReg |
|---|
时间测量
执行测量时间的示例脚本。
OMP_NUM_THREADS=1 python time_measurement.py
# Results [s]
# ICP(Open3D): 0.0014092829951550812
# CPD: 0.038112225010991096
# SVR: 0.036476270004641265
# GMMTree: 0.10535842599347234
# FilterReg: 0.005098833993542939
引用
@software{probreg,
author = {{Kenta-Tanaka et al.}},
title = {probreg},
url = {https://probreg.readthedocs.io/en/latest/},
version = {0.1.6},
date = {2019-9-29},
}