携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情 >>
VSLAM算法
VSLAM 是 SLAM(视觉同步定位与地图构建)的一个子类,是指只利用自身视觉传感器创建一个与环境一致的地图,并同时确定自身在地图中的位置。
盲点——输入
而当前关于SLAM的学习资料在介绍VSLAM的时候,往往就默认了已知数据输入部分,缺少了对该部分的介绍和学习,可是如不过不了解输入,就不知道算法需要处理什么样的数据。
是什么导致了不重视输入的状况呢? 我猜测可能是因为现在已经有了权威的SLAM公开数据集。大部分学术论文都默认运行在公开数据集上面。而网上相关的开源项目也不会特地规划摄像头参数,而是直接对接开放数据库格式的接口。
但是实际工业应用上往往使用的是定制化的摄像头和图像数据,因此我们必须理清对于SLAM算法而言,哪些参数才是关键的部分。这样当我们开发SLAM算法时才能给出采集图像的具体参数。
开源数据集的格式
以开源的SLAM数据集 TUM_Mono_VO 数据集格式为例,vision.in.tum.de/mono-datase….,数据集中包含
- 图像和相机的参数文件
- 图像数据文件
- Gamma文件
- Vignette文件
如果时视频数据集,轨迹文件中包含
- 文本文件中的每一行都包含一个姿势。
- 每行的格式是 '时间戳 tx ty tz qx qy qz qw'
- 时间戳。
- tx ty tz(3 个浮点)给出了彩色相机的光学中心相对于运动捕捉系统定义的世界原点的位置。
- qx qy qz qw(4 个浮点)以单位四元数的形式给出彩色相机的光学中心相对于动作捕捉系统定义的世界原点的方向。
实际案例中的输入
以《单目视觉在智能汽车导航中的应用研究》论文中实际测试中用到的的模型的输入为例,实际模型中会用到:
- 公开 TUM_Mono_VO 数据集 sequence_03\14\34\49;
- 分辨率为 1920×1080(但实际使用为 1280×1024),BMP 格式;
- 视频格式,时长 147 s,共有 4263 帧图像,视频码率 29.97 fps,分辨率 1920×1080;