slam迷惑(记录,看我将来能不能想通)

目录

1.2 sim3优化既然是为了使单目slam的scale统一,那么双目回环之类的还需要sim3优化吗?

1.3 论文dso

先验具体指什么?由何而来?

1.4 滤波法和关键帧法的区别?地图特征点的关联?

已解决:

1)看论文看到的所谓深度信息辅助,使得2D-2D变成3D-2D:

2)  在已知相机运动的情况下,稠密建图中是否需要块匹配?还是根据位姿直接就可以得到匹配像素点?

资料:关于dR和dC:应该是深度信息。

1.2 仿射变换感想和思考:


1.2 sim3优化既然是为了使单目slam的scale统一,那么双目回环之类的还需要sim3优化吗?

sim3相关内容见ORB-SLAM(五)优化以及我的博客2.3条

1.3 论文dso

  • 先验具体指什么?由何而来?

来自高博的介绍:

DSO在解BA时,边缘化了所有点的信息,计算优化的更新量。然而,与传统BA不同的是,DSO的左上角部分,即公式中的  ,并非为对角块,而是有先验的。传统BA中,这部分为对角块,主要原因是不知道相机运动的先验,而DSO的滑动窗口,则通过一定手段计算了这个先验。这里的先验主要来自两个部分(不懂?不确定.我以为是dso本身的"点跟两个帧有关"导致的B不对角)::

  1. 边缘化某个点时,这个点的共视帧之间产生先验;
  2. 边缘化某个帧时,在窗口内其他帧之间产生先验;

这里的“边缘化”,具体的操作和上面讲的边缘化,是一样的。也就是说,通过舒尔补,用矩阵的一部分去消元另一部分。然而实际操作的含义却有所不同。在BA的边缘化中,我们希望用边缘化加速整个问题的求解,但是解完问题后,这些帧和点仍旧是存在于窗口中的!而滑动窗口中的边缘化,是指我们不再需要这个点/这个帧。当它被边缘化时,我们将它的信息传递到了之后的先验中,而不会再利用这个点/这个帧了!请读者务必理清这层区别,否则在理解过程中会遇到问题。我们不妨将后者称为“永久边缘化”,以示区分。

那么DSO如何永久边缘化某个帧或点?它遵循以下几个准则:

  • 如果一个点已经不在相机视野内,就边缘化这个点;
  • 如果滑动窗口内的帧数量已经超过设定阈值,那么选择其中一个帧进行边缘化;
  • 当某个帧被边缘化时,以它为主导的地图点将被移除,不再参与以后的计算。否则这个点将与其他点形成结构先验,破坏BA中的稀疏结构[10]。

在边缘化的过程,DSO维护了帧与帧间的先验信息(见EnergyFunctional::HM和bM),并将这些信息利用到BA的求解中去。

dso论文中提及dense方法时说到的map point先验(导致Hessian矩阵的右下角地图点矩阵不对角):

Dense vs. Sparse:Apart from the extent of the used image region however,a more fundamental – and consequential – difference lies in the addition of a geometry prior. In the sparse formulation, there is no notion of neighborhood, and geometry parameters (keypoint positions) are conditionally independent given the camera poses & intrinsics. Dense (or semi-dense) approaches on the other hand exploit the connectedness of the used image region to formulate a geometry prior, typically favouring smoothness. In fact, such a prior is necessarily required to make a dense world model observable from passive vision alone. In general, this prior is formulated directly in the form of an additional log-likelihood energy term.

1.4 滤波法和关键帧法的区别?地图特征点的关联?

采用滤波的方法进行SLAM,对于相机状态,历史的相机状态不予以考虑,只考虑当前的相机状态。对于地图特征,所有在将来可能被再次观测到的特征都被保留下来。结果是,地图不会随着时间任意的增加,在一定的环境中来回移动地图甚至不会增长,只有走到新的领域是才会增加新的地图特征。但是,可以明显的看到对于滤波法,地图特征之间是相互关联的这种关联必须被存储并且时时更新,当地图特征数目很多时,会造成很大的运算量,因此滤波法中地图特征的数目受到限制。

基于滤波算法的 SLAM 以 EKF-SLAM 为代表,采用扩展的卡尔曼滤波器将相机与地图特征的关系描述为运动模型与观测模型,并进行预测和更新。Davison提出的 Mono SLAM为其实现的代表。但是 EKF-SLAM 假设系统变量的分布是高斯的,并且系统的线性程度会影响滤波器的收敛效率。之后提出的Fast SLAM,以粒子滤波器为基础,通过随机抽样的方法可以逼近任何形式的概率分布,而不仅仅是高斯分布,并且可以描述任何非线性系统,收敛的效率几乎不受非线性特征的影响。但是以上两种滤波器的计算复杂度会随着维度的增大而迅速增加,为了减小运算量,又有人提出了稀疏扩展信息滤波算法,这里地图特征之间的关联采用稀疏矩阵来表示。

对于采用关键帧的方法,过去时刻的相机状态没有被全部忽略,而是选取了其中的关键帧保留了下来,与滤波方法相比,关键帧的方法产生的地图有更多元素,因为过去一些的相机状态被保留下来并且会出现更多的地图特征,但是地图特征之间的关联是稀疏的,比滤波效率要高。(反正我确实知道关键帧法的地图特征是稀疏的,Hessian矩阵对应地图点特征的那一块是对角阵)

已解决:

1)看论文看到的所谓深度信息辅助,使得2D-2D变成3D-2D:

以前因为不太懂PnP所以看不懂

slam迷惑(记录,看我将来能不能想通)_第1张图片

2)  在已知相机运动的情况下,稠密建图中是否需要块匹配?还是根据位姿直接就可以得到匹配像素点?

slam十四讲中,从323页开始讲述稠密建图,使用块匹配技术,来进行稠密深度图估计.

但在341中,提到"在块匹配之前,做一次图像到图像间的变换亦是一种常见的预处理方式"需要在块匹配之前,把参考帧与当前帧之间的运动考虑进来。

在推导过程中又说能得到Pc(即当前帧中像素点)的位置????:

slam迷惑(记录,看我将来能不能想通)_第2张图片

不能理解???既然得到了,那还要块匹配干什么啊???

答案:1)这个Pc只是大概的,根据相机位姿大概算出来的,但是不准确。

稠密建图中一般不是单目,以RGB-D举例,参考帧某一像素的深度信息是知道的,然后通过也已知的相对位姿,计算出当前帧的像素位置和深度信息(深度信息是通过先知道像素位置然后在深度图里面找的),虽然知道了Pc和dc 但是是不准的,所以还要通过块匹配和深度滤波器进行不断优化融合,计算正确的位置。

所以这一块跟前端的思路也是一致的,拿orb-SLAM举例,前端通过计算相机匀速运动模型(trackMotionModel),获得初始位置,然后再匹配,再计算正确的位姿(当然运动模型失败了还可以trackLocalMap. 这里是建图的线程,思路是,先通过前端的初始相对位姿,计算一波对应,然后通过块匹配和深度滤波器不断融合获取较准确的图像融合,同时还可以把前端的相机给优化了。

资料:关于dR和dC:应该是深度信息。

在一个融合了深度信息网络(DepthNet)和位姿估计网络(PoseNet)的SLAM系统中看到的。(论文见“深度语义同时定位与建图”在我的NE里是视觉导航——师弟文献中)

这个文献里面将“估计相机位姿”的CNN网络和“估计像素深度信息”的CNN网络结合形成了新SLAM网络,挺好的。

slam迷惑(记录,看我将来能不能想通)_第3张图片

slam迷惑(记录,看我将来能不能想通)_第4张图片

slam迷惑(记录,看我将来能不能想通)_第5张图片

 

1.2 仿射变换感想和思考:

一般来说仿射变换也是需要匹配点的,所以肯定也是需要匹配像素的.仿射变换是射影几何中的一种基本变换。仿射变换有6个自由度,分别是两个平移,两个旋转旋转,一个错切,和一个缩放。 (仿射变换具有6个自由度,如果要对仿射矩阵线性求解,至少需要6对点对应。如果没有6组点对应,但是有每个点关于空间的投影关系。利用这些关系也能求得仿射矩阵。 )

所以仿射变换只是利用已有的粗糙匹配先做一个大概的预处理,然后再进行精密估计.

与特征点法对比:当当前摄像机比源帧摄像机位置更靠近斑点时,面积更大。此时画面尺度变大,根据这个面积值大小决定使用源帧图像金字塔的那一层,以更好地和当前图像匹配。(只有特征点描述符才能有金字塔分层,像素就没有了) 

你可能感兴趣的:(SLAM算法,SLAM)