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

Probreg 是一个使用 probablistic 模型实现点云 registration 算法的库。
使用随机模型的点集配准算法比ICP(迭代最近点)更加鲁棒。 该软件包使用随机模型实现了多种算法,并提供了与 Open3D 的简单接口。
核心特点
- Open3D接口
- 刚性与非刚性变换
算法
- 当目标点云或源点云是观测数据时的最大似然
- 相干点漂移 (2010)
- 扩展相干点漂移 (2016)(在 CPD 之前添加对应关系)
- 颜色相干点漂移 (2018)
- FilterReg (CVPR2019)
- 变分贝叶斯推理
- 贝叶斯相干点漂移 (2020)
- 两个概率分布的距离最小化
- GMMReg (2011)
- 支持向量配准 (2015)
- 分层随机模型
- GMMTree (ECCV2018)
转换
| 类型 | 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
- 刚性 CPD
- 仿射 CPD
安装
您可以使用 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},
}
相关文章
- 无畏契约手游是打瓦吗 无畏契约手游达瓦意思要点讲了什么-主要信息 09-11
- 江湖悠悠酒谱全部配方-主要信息和内容重点 09-11
- ngx-virtual-scroller:实践指南 09-11
- statsd_exporter:实践指南 09-11
- 无畏契约手游id怎么抢 无畏契约手游抢ID有哪些-风格分类和名称 09-11
- informed:实践指南 09-11