open3d重建工作+复现Choi2015

本文详细记录了在Ubuntu 18.04环境下,使用Python 3.6和open3d 0.12.0版本复现Choi_cvpr2015室内重建工作的过程,包括软件安装、数据集准备、关键步骤和遇到的open3d版本兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

最近使用open3d实现了对Choi_cvpr2015中工作的复现,参考的pipeline为基于open3d的室内重建
本文记录了复现过程和出现的问题。

1. 软件要求及安装

1.1 软件版本

软件版本要求如下:
ubuntu18.04+
python 3.6/3.7/3.8
open3d-0.12.0(低版本行不行没有试过)

我使用的python3.6为ubuntu自带,ubuntu版本为18.04,open3d版本为0.12.0。
强烈建议使用open3d-0.12.0,我出的主要问题在于第一次使用open3d-0.11.2版本报错,后面细说。

1.2 open3d-0.12.0的安装

open3d-0.12.0推荐使用官网open3d的安装包,链接图片如下,可以根据自己的系统和python版本选择(可能官网里的链接会出错,我在文末把安装包上传到百度网盘了):
在这里插入图片描述
之所以选择官网下载,是因为使用如下命令会默认安装open3d-0.11.2版本,会为复现带来很多麻烦。

pip3 install open3d

下载完open3d安装包后,开始安装:

1.2.1 配置pip国内源

首先配置pip的国内源,加快open3d一些依赖项的安装速度。

sudo  gedit  ~/.pip/pip.conf

在~/.pip/pip.conf文件中输入:

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

具体参考博客pip更换国内源

1.2.2 安装

在open3d安装包的位置打开终端,输入

pip3 install open3d-0.12.0+6aeebf1-cp36-cp36m-linux_x86_64.whl

等待…
安装完成后,输入如下代码测试open3d是否安装成功。

python -c "import open3d as o3d"

2.运行过程

代码从这里下载:open3d重建-代码链接

数据集准备

有很多网上的RGBD数据集:the SceneNN dataset 、 Redwood data等等。
我们需要RGB图像数据集和对应深度图像数据集。将RGB数据集和深度图数据集分别放置于如下文件夹:examples/python/reconstruction_system/dataset/tutorial/image和examples/python/reconstruction_system/dataset/tutorial/depth

在这里插入图片描述

在这里插入图片描述

2.1 make fragments

第一步:从RGBD图像数据集生成一些点云片段(这里是14个)。

在代码根目录打开终端,运行如下命令:

cd examples/python/reconstruction_system/
python3 run_system.py    config/tutorial.json --make

运行结果存储在examples/python/reconstruction_system/dataset/tutorial/fragments,包含一系列.ply点云文件和.json文件。
每一个.json文件存储了100个节点从首到尾两两之间的information6 * 6特征信息矩阵、100个节点从首到尾两两之间的transformation4 * 4转换矩阵、100个节点的4 * 4位姿矩阵。
最后一个.json文件存储的节点数是64个,矩阵数对应。
在这里插入图片描述

2.2 register

第二步:对齐这些点云片段。
在代码根目录打开终端,运行如下命令:

cd examples/python/reconstruction_system/
python3 run_system.py    config/tutorial.json --register

运行结果存储在examples/python/reconstruction_system/dataset/tutorial/scene,包含两个.json文件:global_registration_optimized.json和global_registration.json.

每一个.json文件存储了被对齐的点云片段两两之间的information6 * 6特征信息矩阵、被对齐的点云片段两两之间的的transformation4 * 4转换矩阵、14个点云片段的4 * 4位姿矩阵。

(不是任意两个点云片段都能够对齐,即产生回环约束)

global_registration_optimized.json的点云片段的4 * 4位姿矩阵得到了优化,仅此和global_registration.json不同。

在这里插入图片描述

2.3 refine register

第三步:在上一步对齐基础上,进一步 更高精度地对齐点云。
在代码根目录打开终端,运行如下命令:

cd examples/python/reconstruction_system/
python3 run_system.py    config/tutorial.json --refine

运行结果存储在examples/python/reconstruction_system/dataset/tutorial/scene,同样包含两个.json文件:refine_registration_optimized.json和refine_registration.json

每一个.json文件存储了被对齐的点云片段两两之间的information6 * 6特征信息矩阵、被对齐的点云片段两两之间的的transformation4 * 4转换矩阵、14个点云片段的4 * 4位姿矩阵。

(2.3refine 中被对齐的点云片段对 真包含于(真子集) 2.2register中 被对齐的点云片段对 )

refine_registration_optimized.json和refine_registration.json的不同在于:前者的点云片段的4 * 4位姿矩阵得到了优化
refine_registration_optimized.json和global_registration.json的4 * 4位姿矩阵不同。
在这里插入图片描述

2.4 integrate scene

第四步:得到整个室内完整点云图,重建室内环境。
在代码根目录打开终端,运行如下命令:

cd examples/python/reconstruction_system/
python3 run_system.py    config/tutorial.json --integrate

运行结果存储在examples/python/reconstruction_system/dataset/tutorial/scene,包含一个完整的.ply点云文件和trajectory.log相机关键帧轨迹。
在这里插入图片描述
最后的点云图如下:
在这里插入图片描述

3.出现的问题

1、问题主要出现在2.2步,报错时open3d版本为0.11.2,报错如下:
在这里插入图片描述
具体报错是:open3d.pipelines.registration.RANSACConvergenceCriteria()的参数使用错误。

在确保复现的代码无误的情况下,卸载open3d-0.11.2,按照1.2的步骤安装了open3d-0.12.0,错误消失。

2、期间一度对joblib/parallel.py的报错感兴趣,经过对代码逐行调试,打消对joblib/parallel.py的怀疑,认定是open3d的版本问题。

4. open3d_0.12安装包

链接: https://pan.baidu.com/s/1PZLoPQh76Ly8-M12E9p1MA
提取码: h2vv

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值