Intrinsic3D 使用教程
1. 项目介绍
Intrinsic3D 是由 NVIDIA Corporation 和 Technical University of Munich 合作开发的一种方法,可以从低成本 RGB-D 传感器获得高质量的 3D 重构。该算法通过同时优化重构几何形状、表面反照率、相机姿态和场景光照,恢复细粒度的几何细节和锐利的表面纹理。
Intrinsic3D 的源代码遵循 BSD-3-Clause 许可,所有的数据集都遵循 Creative Commons 4.0 归属许可(CC BY 4.0),除非另有说明。
2. 项目快速启动
环境准备
Intrinsic3D 的构建需要以下第三方库:CMake、Eigen、OpenCV 4、Boost 和 Ceres Solver(Windows 下需要 CXSparse)。
在 Ubuntu 系统中,可以使用以下命令安装依赖:
sudo apt install cmake libeigen3-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libopencv-dev
接着,安装 Ceres Solver:
mkdir third_party && cd third_party
sudo apt install libgoogle-glog-dev libatlas-base-dev libsuitesparse-dev
wget http://ceres-solver.org/ceres-solver-2.1.0.tar.gz
tar xvzf ceres-solver-2.1.0.tar.gz
cd ceres-solver-2.1.0
mkdir build-ceres && cd build-ceres
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/../../ -DCXX11=ON -DSUITESPARSE=ON -DCXSPARSE=ON -DEIGENSPARSE=ON -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF
make -j6
make install
cd ../../../
构建项目
使用标准的 CMake 方法编译 Intrinsic3D:
mkdir build
cd build
cmake .. -DCeres_DIR=$PWD/../third_party/lib/cmake/Ceres
make -j6
数据准备
从 Intrinsic3D 数据集中下载一个 RGB-D 序列,或者将自有数据集转换为指定的数据格式。
以下示例使用 Intrinsic3D 方法重构和优化 Lion 序列:
cd ../data
mkdir lion && cd lion
wget https://vision.in.tum.de/_media/data/datasets/intrinsic3d/lion-rgbd.zip
unzip lion-rgbd.zip
mv lion-rgbd rgbd
配置文件
将默认的 YAML 配置文件复制到数据文件夹:
cp ../*.yml .
运行应用
在 data/lion/
文件夹中,按照以下步骤运行 Intrinsic3D 应用程序:
- 关键帧选择:
../../build/bin/AppKeyframes -s=sensor.yml -k=keyframes.yml
- SDF 融合:
../../build/bin/AppFusion -s=sensor.yml -f=fusion.yml
- Intrinsic3D 优化:
../../build/bin/AppIntrinsic3D -s=sensor.yml -i=intrinsic3d.yml
3. 应用案例和最佳实践
关键帧选择
在关键帧选择过程中,可以调整配置文件 keyframes.yml
中的 window_size
参数来选择合适的关键帧。
SDF 融合
在 SDF 融合过程中,推荐在配置文件 fusion.yml
中设置 crop_*
参数来裁剪 3D 重构,以减少计算量。
Intrinsic3D 优化
在 Intrinsic3D 优化过程中,可以通过配置文件 intrinsic3d.yml
调整各种参数,例如正则化项的超参数。
4. 典型生态项目
Intrinsic3D 的生态项目包括但不限于以下几种:
- 使用 Intrinsic3D 进行高质量 3D 重构的研究项目。
- 集成 Intrinsic3D 的机器人视觉系统。
- 利用 Intrinsic3D 进行虚拟现实和增强现实的应用开发。