在搭建完dso slam方案的运行环境后,使用官方给定的数据集能够实现效果不错的三维重建。
由于官方给定的数据集已经进行了校准,这样的话,用我们自己构建的数据集会实现怎样的效果?
参照 JakobEngel/dso (GitHub 文档)。在配置安装过程中也遇到了一些问题,主要有下面三个方面:
最后不要忘记,每个库的安装编译最后都需要make install将可执行文件复制到最终的路径。不然在安装dso时会出现找不到指定的库的错误。
数据集下载:(Computer Vision Group - Datasets - Monocular Visual Odometry Dataset),每个视频序列文件夹以 sequence_XX 命名,其中包括如下的文件
运行:
cd dso
./build/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
参数解析:
在这些参数中主要关注的就是图像数据集文件夹images和相机参数文件camera.txt。
dso slam运行自己的数据集主要需要考虑两个方面:
使用iphone6s拍摄一段视频,然后经过拆帧获取大约几千张室内场景的图片。构建的图片需要满足一下要求:
单目相机配置要求(对应于官方文档中Calibration File for Pre-Rectified Images)
Pinhole fx fy cx cy 0
in_width in_height
"crop" / "full" / "none" / "fx fy cx cy 0"
out_width out_height
其中的参数:
fx fy cx cy 0
),或者具有自动裁剪图像到最大矩形、明确定义的区域 ( crop
) ,或者将保留完整的原始视野,主要用于调试( full
);第三行当设置模型为用户自定义的针孔模型 ( fx fy cx cy 0
),参数 ( fx fy cx cy 0
)和第一行的 ( fx fy cx cy 0
)并不一样,需要按照官方文档配置:
K(0,0) = width * fx
K(1,1) = height * fy
K(0,2) = width * cx - 0.5
K(1,2) = height * cy - 0.5
参考大佬的博文:
ORB-SLAM2 运行 —— ROS + Android 手机摄像头 https://www.cnblogs.com/MingruiYu/p/12404730.html
在没查到大佬的这篇文章时,试着用网上找的一段python程序进行相机标定。但是发现每次运行的标定结果都不一样,检查后发现并不是程序的问题 ,最后也没确定问题在哪,有大佬知道的话,还请不吝赐教。
在images同一级文件夹中建立一个 iphoneCamera.txt 文件,用于按照 DSO 要求的格式存放相机的参数。
iphoneCamera.txt 文件格式可参考上面提到的camera.txt文件。具体到本实现中,该标定文件的内容格式可为:
fx fy cx cy 0
1280 640
k1 k2 k3 k4 0
640 480
其中的参数:
fx fy cx cy 0
)是按照上面提到的教程获得的手机摄像头标定参数; k2 k3 k4 0
)是按照官方文档计算出来的参数。运行以及效果展示:
cd dso
./build/bin/dso_dataset \
files=XXXXX/sequence_XX/iphoneimages.zip \
calib=XXXXX/sequence_XX/iphoneCamera.txt \
gamma=XXXXX/sequence_XX/pcalib.txt \
vignette=XXXXX/sequence_XX/vignette.png \
preset=0 \
mode=0
发现:轨迹很飘,建图还行
openvSLAM安装笔记_南乔枝6060的博客-CSDN博客_openvslam
GitHub - JakobEngel/dso: Direct Sparse Odometry
Computer Vision Group - Datasets - Monocular Visual Odometry Dataset
DSO 安装及运行 —— dso_ros + Android 手机摄像头 - MingruiYu - 博客园