littlebot
Published on 2025-04-10 / 1 Visits
0

【源码】基于C++的DSO直接稀疏视觉里程计

项目简介

本项目是基于C++语言实现的直接稀疏视觉里程计(Direct Sparse Odometry, DSO)算法。DSO是一种用于相机位姿估计和场景结构恢复的视觉里程计方法,它使用稀疏的特征点集和直接光度测量,无需预先构建3D地图,从而实现了实时的相机位姿估计。

项目的主要特性和功能

  1. 稀疏特征点集:只处理图像中的关键点,减少计算量,提升算法效率。
  2. 直接光度测量:利用图像的直接光度测量,避免重建3D地图的复杂过程,实现实时相机位姿估计。
  3. 全局优化:采用全局优化方法,通过迭代优化更新相机位姿和场景结构,提高估计精度。
  4. 图像金字塔:采用多尺度处理,增强算法的鲁棒性和适应性。
  5. 可视化工具:可展示DSO算法的运行结果,包括相机位姿、点云、深度图等。

安装使用步骤

1. 复制项目

bash cd dso

2. 安装依赖

2.1 必需依赖

bash sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev

2.2 可选依赖

  • OpenCV(强烈推荐) bash sudo apt-get install libopencv-dev
  • Pangolin(强烈推荐) bash cd Pangolin mkdir build cd build cmake .. make sudo make install
  • ziplib(推荐) bash sudo apt-get install zlib1g-dev cd dso/thirdparty tar -zxvf libzip-1.1.1.tar.gz cd libzip-1.1.1/ ./configure make sudo make install sudo cp lib/zipconf.h /usr/local/include/zipconf.h
  • sse2neon(ARM 构建必需) bash git submodule update --init

3. 构建项目

bash mkdir build cd build cmake .. make -j4

4. 运行示例

bash bin/dso_dataset \ files=XXXXX/sequence_XX/images.zip \ calib=XXXXX/sequence_XX/camera.txt \ gamma=XXXXX/sequence_XX/pcalib.txt \ vignette=XXXXX/sequence_XX/vignette.png \ preset=0 \ mode=0

5. 其他命令行选项

  • mode=X
  • mode=0:使用光度校准(如 TUM monoVO 数据集)。
  • mode=1:不使用光度校准(如 ETH EuRoC MAV 数据集)。
  • mode=2:图像无光度畸变(如合成数据集)。
  • preset=X
  • preset=0:默认设置(2k 点等),不强制实时执行。
  • preset=1:默认设置(2k 点等),强制 1x 实时执行。
  • preset=2:快速设置(800 点等),不强制实时执行。警告:覆盖图像分辨率为 424 x 320。
  • preset=3:快速设置(800 点等),强制 5x 实时执行。警告:覆盖图像分辨率为 424 x 320。
  • nolog=1:禁用日志记录(提高性能)。
  • reverse=1:反向播放序列。
  • nogui=1:禁用 GUI(提高性能)。
  • nomt=1:单线程执行。
  • prefetch=1:在运行 DSO 之前将所有图像加载到内存并进行校正。
  • start=X:从第 X 帧开始。
  • end=X:在第 X 帧结束。
  • speed=X:强制以 X 倍实时速度执行(0 = 不强制实时)。
  • save=1:保存大量图像用于视频创建。
  • quiet=1:禁用大部分控制台输出(提高性能)。
  • sampleoutput=1:注册一个“SampleOutputWrapper”,将一些示例输出数据打印到命令行。用于示例。

6. 访问数据

可通过创建自己的 Output3DWrapper 并将其添加到系统中来访问 DSO 计算的数据(如位姿、点云等)。具体实现可参考 IOWrapper/Output3DWrapper.hIOWrapper/OutputWrapper/SampleOutputWrapper.h

7. 注意事项

  • 初始化器较慢且偶尔失败,建议初始化时保持相机运动缓慢且平稳。
  • 性能较差的计算机,建议使用“快速”设置或不强制实时运行。
  • 确保几何校准准确,否则会影响算法精度。

许可证

DSO 由慕尼黑工业大学和英特尔开发,开源版本基于 GNU 通用公共许可证版本 3(GPLv3)。对于商业用途,还提供专业版本,详情请访问 http://vision.in.tum.de/dso

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】