之前我们分享过视觉SLAM找工作、面试经历,见《2018年SLAM、三维视觉方向求职经验分享》,《经验分享 | SLAM、3D vision笔试面试问题》。
从零开始学习SLAM知识星球里,会定期发布一些常见的SLAM问题引导大家讨论,并给出参考解答。以下列举几个已经发布的问题及回答。
1、视觉SLAM方法一般分为特征点法和直接法。请简述一下特征点法和直接法的概念,以及对应的优缺点。
特征点法,根据提取、匹配 特征点来估计相机运动,优化的是重投影误差,对光照变化不敏感 ,是比较成熟的方案。常见的开源方案 比如ORBSLAM
优点:
(1)特征点本身对光照、运动、旋转比较不敏感,所以比较稳定
(2)相机运动较快(相对直接法来说)也能跟踪成功,鲁棒性好一些
(3)研究时间较久,方案比较成熟
缺点:
(1)关键点提取、描述子、匹配耗时长
(2)特征点丢失场景无法使用
(3)只能构建稀疏地图
直接法,根据相机的亮度信息估计相机的运动,可以不需要计算关键点和描述子,优化的是光度误差,根据使用像素数量可分为稀疏、半稠密、稠密三种。常见开源方案有SVO, LSD-SLAM
优点:
(1)速度快,可以省去计算特征点、描述子时间
(2)可以用在特征缺失的场合(比如白墙),特征点法在该情况下会急速变差
(3)可以构建半稠密乃至稠密地图
缺点:
(1)因为假设了灰度不变,所以易受光照变化影响
(2)要求相机运动较慢或采样频率较高(可以用图像金字塔改善)
(3)单个像素或像素块区分度不强,采用的是数量代替质量的策略
2、视觉SLAM常用的相机包括,单目,双目,RGB-D相机,请分别说说它们本身的优缺点、常用的相机型号等。
以下是我使用时的一些总结,可能有疏漏错误,欢迎补充指正。
单目相机:
常用型号:有非常多的种类可以选择
优点:
1、应用最广,成本可以做到非常低。
2、体积小,标定简单,硬件搭建也简单。
3、可以用于室内和室外(有适当光照条件下)。
缺点:
1、具有纯视觉传感器的通病:在光照变化较大,纹理特征缺失、快速运动导致模糊的情况下无法使用(睁眼瞎)。
2、SLAM过程使用单目相机有尺度不确定性,需要专门初始化。
3、必须通过运动才能估计深度(帧间匹配三角化)
双目相机:
常用型号:Indemind,小觅,ZED等
优点:
1、相比于单目,在静止时就能够根据左右相机视差图计算深度。
2、可测量距离可以根据基线调节。基线距离越大,测量距离越远。
3、可以用于室内和室外(有适当光照条件下)。
缺点:
1、双目相机标定相对复杂
2、用视差计算深度比较消耗资源
3、具有纯视觉传感器的通病:在光照变化较大,纹理特征缺失、快速运动导致模糊的情况下无法使用(睁眼瞎)。
RGB-D相机:
常用型号:Kinect系列、Realsense系列、Orbbec、Pico等
优点:
1、使用物理测距方法测量深度,所以避免了纯视觉传感器的通病,在没有光照的情况下、快速运动的情况下都可以测距。这是非常大的优势。
2、相对双目,输出帧率较高,更适合运动场景。
3、输出深度值比较准,结合RGB信息,容易实现手势识别、人体姿态估计等应用。
缺点:
1、测量范围窄,易受日光干扰,通常只能用于室内场景
2、在遇到透射材料、反光表面、黑色物体情况下表现不好,造成深度图缺失
3、通常分辨率无法做到很高,目前主流分辨率VGA(640x480)
4、标定比较复杂。
3、关键帧在SLAM里应用非常多,很多知名的开源算法都使用了关键帧。请你用自己的语言描述一下关键帧是什么?有什么用?如何选择关键帧?