语义SLAM与深度相机
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自|新机器视觉
浅谈语义在SLAM中的应用:
Simultaneous Localization And Mapping(同时建图与定位)
▪可以分为四大部分:
initialization, tracking, local mapping, global optimization
视觉SLAM主要涉及的知识
▪多视角几何:投影几何,相机模型
▪图像处理:特征提取,特征点跟踪
▪优化算法:非线性优化算法(Levenberg-Marquardt法)
▪INITIALIZATION
▪一般将第一张图像进入系统时的相机位姿作为V-SLAM系统的参考坐标系
▪选取之后输入的某张图像计算和第一张图像匹配角点并三角化获取深度,生成候选的初始化MAP
▪重投影计算误差,如果误差太大则重新选取图像
▪直到误差小于阈值,进行一次优化,得到初始化MAP
▪TRACKING
▪计算当前图像和之前相近图像的关系(特征点匹配,光流法,边缘跟踪等等)
▪根据计算出的关系,通过相应算法估计当前相机的大概位置
▪其中“直接法”将前面两部合并为一步来执行
▪LOCAL MAPPING
▪可以采取滑动窗口的方式或者挑选某些关键帧来建立局部地图
▪当某一帧图像根据策略算法选为关键帧后,添加到局部地图的关键帧队列中
▪管理局部地图中存在的点云
▪进行局部的Bundle Adjustment(BA)
▪最后进行关键帧的管理
▪GLOBAL OPTIMIZATION
▪利用BOW挑选出候选回环帧
▪对候选回环帧进行验证,确保是正确的回环
▪根据回环帧计算累积漂移误差
▪最后进行全局优化
语义SLAM
▪为什么要语义?
▪对环境的鲁棒性(动态环境)
▪获取地图的先验信息,得到更高精度(添加语义约束)
▪更好地回环检测
▪人机交互(如CAD制图)
传统回环检测
▪目前比较主流的回环检测方法一般都依赖于BoW(bag of visual words)方法
▪开源库:
DBoW2:
https://github.com/dorian3d/DBoW2(当然还有DBoW3,fbow)
▪连续帧匹配DLoopDetector:https://github.com/dorian3d/DLoopDetector
▪ORB-SLAM,VINS等都使用了DBoW2
▪其他检索方式:
LSH(Locality-Sensitive Hashing)
LLC(Locality-constrained Linear Coding)
语义能够给SLAM系统带来的好处
▪支持中长期的tracking
▪环境适应性更强(鲁棒性)
▪潜在的人机交互特性
语义SLAM系统和传统SLAM系统对比
由于我们 人类见过大量的图像,形成了一种天生的直觉,对大部分场景都有一个直观的距离感 (空间感),它可以帮助我们判断图像中物体的远近关系。
1.平移之后才能计算深度
2.无法确定真实尺度
原因是通过单张图像无法确定深度。
深度相机(称RGB-D相机)最大的特点是可以通过红外结构光或Time-of-Flight(ToF) 原理,像激光传感器那样,通过主动向物体发射光并接收返回的光,测出物体与相机之间的距离。这部分是通过物理的测量手段来解决的,所以不需要大量的算力。
ToF
基本原理是通过连续发射光脉冲(一般为不可见光)到被观测物体上,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。
结构光
结构光测距是用一个光源(常用是红外)将一定的图案投射到物体上,再用摄像头收集变形后的图案进行深度计算。
这种方法比纯双目匹配好的地方在于,参考图像不是获取的,而是经过专门设计的图案 ,因此特征点是已知的,而且更容易从测试图像中提取。结构光采用三角视差测距,基线(光源与镜头光心的距离)越长精度越高。由于是主动光,无法在室外使用。
不论是一般结构光还是散斑结构光,缺点是它所使用的激光器发出的编码光斑容易被太阳光淹没掉, 工作距离短,室外阳光下不工作。
结构光方案中的激光器寿命较短,难以满足7x24小时的长时间工作要求,其长时间连续工作很容易损坏。而因为单目镜头和激光器需要进行精确的标定,一旦损坏,替换激光器时重新进行两者的标定是非常困难的,所以往往导致整个模块都要一起被换掉。
现在多数 RGB-D 相机还存在测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质等诸多问题,在 SLAM 方面,主要用于室内,室外则较难应用。
立体视觉
VSLAM(Mono)
优势:成本低、搭建简单
劣势:
1) 需要专门初始化
2) 尺度问题
在单张图片里,无法确定一个物体的真实大小。它可能是一个很大但很远的物体,也可能是一个很近很小的物体。
3) 深度计算存在缺陷
a. 3D假图问题
b. 机器学习的样本问题
VSLAM(Stereo)
优势:
1) 不需要专门初始化
2) 能够计算深度
3) 能够用于室内和室外
劣势:
1) 标定较为复杂
2) 视差计算比较耗资源,需要GPU/FPGA 或 专门的ASIC芯片 协助
下载1:OpenCV-Contrib扩展模块中文版教程
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~