跟六哥学习ORB-SLAM2作业(三)

1、(问答题)  双目视差测距的应用。

利用双目视差可以实现很多实用的功能,比如在军事中可以用跳眼法进行测距。很多人应该记得在电视剧《亮剑》中的名场面,李云龙在和坂田作战时,迫击炮炮手王承柱同志用大拇指利用跳眼法测量了坂田指挥部的距离,然后用仅有的一颗炮弹干掉了坂田的指挥部。

跟六哥学习ORB-SLAM2作业(三)_第1张图片

这其中就用到了双目视差实现测距的原理。请问电视剧中的情节是否有科学依据,请结合双目视差分析它背后的原理及限制条件。

答:该情节有科学依据,这种方法称为“跳眼法”,原理如下:

跟六哥学习ORB-SLAM2作业(三)_第2张图片跟六哥学习ORB-SLAM2作业(三)_第3张图片

人两眼距离和手臂的长度已知,根据相似三角形等比公式,只需估计出被测物到大拇指所指位置的横向距离就可以计算出拇指到目标的距离,一般为10倍的横向距离,精度取决于估计的横向距离。有较大的误差。

双目相机的测距同样也是利用相似三角形,但是不存在估计值,精度取决于左右眼像素坐标值是否精确,以及基线的宽度。

2、(问答题)  SLAM中为什么要引入李群李代数,有什么作用?

答:SLAM问题是一个优化问题,我们要根据当前的观测求解一个最优的相机位姿,然而位姿的描述(R,t)是有约束的,这样一个带有约束的优化问题不便于求解,因此要引入李群李代数把原问题转化为无约束的优化问题。

优化问题少不了求导,李群不是线性空间,不满足加法,不能求导,而李代数可以,所以要用李代数来建立关系。

3、(问答题)  为什么单目视觉SLAM 会有尺度不确定性,而双目视觉SLAM却不会有?简述单目视觉SLAM尺度不确定的原因?

答:单目相机只是三维空间的二维投影,丢失的距离维度凭借单张图像理论上是无法恢复的,单目 SLAM 估计的轨迹和地图,将与真实的轨迹、地图,相差一个因子,也就是所谓的尺度(Scale)。由于单目 SLAM 无法仅凭图像确定这个真实尺度,所以又称为尺度不确定性。

双目视觉可以得到物体的距离,知道了距离,场景的三维结构就可以通过单个图像恢复出来,也就消除了尺度不确定性。

4、(问答题)  SLAM中为什么需要用关键帧?选择关键帧需要考虑哪些因素?你知道有哪些选择关键帧的方法,分别来自哪个SLAM的框架?

答:关键帧可以减少待优化的帧数,在保证跟踪质量的前提下,减少冗余,提高了计算速度。

  • 距离上一关键帧的帧数是否足够多(时间)。

比如我每隔固定帧数选择一个关键帧,这样编程简单,但效果不好。比如运动很慢的时候,就会选择大量相似的关键帧,冗余,运动快的时候又丢失了很多重
要的帧。

  • 距离最近关键帧的距离是否足够远(空间)/运动

比如相邻帧根据pose计算运动的相对大小,可以是位移也可以是旋转或者两个都考虑,运动足够大(超过一定阈值)就新建一个关键帧,这种方法比第一种好。但问题是如果对着同一个物体来回扫就会出现大量相似关键帧。

  • 跟踪局部地图质量(共视特征点数目)

记录当前视角下跟踪的特征点数或者比例,当相机离开当前场景时(双目或比例明显降低)才会新建关键帧,避免了第2种方法的问题。缺点是数据结构和逻辑比较复杂。

参考:https://www.cnblogs.com/CV-life/p/11159820.html

5、(问答题)  学习源码,请分析ORB-SLAM2如何保证稳定跟踪?

  • 关键帧。

大部分情况下使用恒速跟踪模型,对应函数Tracking::TrackWithMotionModel(),当使用运动模式匹配到的特征点数较少时,就会选用参考关键帧来跟踪,对应函数函数 Tracking::TrackReferenceKeyFrame()。

  • 重定位。

当TrackWithMotionModel 和 TrackReferenceKeyFrame 都没有跟踪成功,位置丢失后,需要重定位,对应函数Tracking::Relocalization()

你可能感兴趣的:(#,跟六哥学习SLAM,SLAM基础,学习心得,计算机视觉)