【实验】SurfelMeshing 调用 ElasticFusion
实验代码链接(GitHub)
SurfelMeshing与ElasticFusion简要介绍
SufelMeshing
- 论文地址,演示视频(youtube)
- 实现功能
1. 输入数据为 深度图集合 rgb图集合 每一帧的位姿 2. 根据已知位姿,将深度测量,融合至全局点云图 3. 将点云图 三角化 和 再三角化 获得mesh网格图 4. 输出为mesh网格图 - 代码地址
ElasticFusion
- 论文地址 ,演示视频
- 实现功能
- 输入为
深度图集合 rgb图集合 - Tracking:利用ICP计算几何误差,直接法计算颜色误差。跟踪确定每一帧的位姿
- Mapping: 以深度相机的测量为尺度,建立面元模型,用面元来表示地图模型
- LoopClosing:分为全局回环与局部回环,修正几何误差的同时修正当前帧的位姿
- 输出为surfel面元图,以及每一帧的位姿估计值
- 代码地址
二者结合
结合方法
- ElasticFusion可以根据rgb、depth集合计算出每一帧的位姿
- SurfelMeshing需要
深度图集合 rgb图集合 和 每一帧的位姿 - 可以对每一帧rgb图和depth图,先经过ElasticFusion计算位姿,再送给SurfelMeshing建图
- 这样SurfelMeshing只需要输入
深度图集合 rgb图集合 就可以得出mesh网格图了
使用方法
-
配置环境
-
下载tum数据集
-
下载地址 TUM RGB-D benchmark -
进入数据集文件夹新建 calibration.txt 文件,内容为: 525.0 525.0 319.5 239.5
-
运行如下命令,生成associated.txt 文件 python associate.py rgb.txt depth.txt > associated.txt
-
编译运行 mkdir build && cd build
cmake ..
make
./applications/surfel_meshing/SurfelMeshing “tum数据集路径”
运行效果:
-
帧率在15帧左右 -
运行截图
-
运行效果与SurfelMeshing源代码对比
|