SLAM面经【一】

秋招伊始,发现很多东西虽然学过,也觉得自己懂,但是表达出来还是磕磕绊绊,所以在从新总结一下,利己利人。


如何对匹配好的点做进一步的处理,更好保证匹配效果 [1] ?

  1. 比值判断确定匹配的最小距离 d m i n d_{min} 和经验值 d e x d_{ex} ,设定筛选阈值 T = m a x ( 2 d m i n , d e x ) T = max (2d_{min} , d_{ex}) ,大于该值则保留,都则丢弃。
  2. RANSAC算法从匹配数据集中随机抽出4个样本并保证这四个样本之间不共线,找到最佳单应性矩阵,然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数)若此模型为最优模型,则对应的代价函数最小并根据模型筛选匹配对。(计算的单应性矩阵依赖于二次投影的准确性)
  3. KNN-matching算法,令K=2。则每个match得到两个最接近的descriptor,然后计算最接近距离和次接近距离之间的比值,当比值大于既定值时,才作为最终match。(使特征点更有区分度)
  4. 交叉匹配 [4, 5],针对暴力匹配,可以使用交叉匹配的方法来过滤错误的匹配。交叉过滤的思想很简单,再进行一次匹配,反过来使用被匹配到的点进行匹配,如果匹配到的仍然是第一次匹配的点的话,就认为这是一个正确的匹配。

描述 RANSAC?

  • RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写 [2] ,它可以从一组包含局外点的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。
  • RANSAC的基本假设是:数据由“局内点”组成,数据的分布可以用一些模型参数来解释;除此之外的数据属于噪声;“局外点”是不能适应该模型的数据。
  • 优缺点:RANSAC的优点是它能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。RANSAC的缺点是它计算参数的迭代次数没有上限。(如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。)RANSAC的另一个缺点是它要求设置跟问题相关的阀值。
  • RANSAC算法的输入是一组观测数据,一个可以解释或者适应于观测数据的参数化模型,一些可信的参数。RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证。这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用。
    1.有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
    2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
    3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
    4.然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。
    5.最后,通过估计局内点与模型的错误率来评估模型。

RANSAC算法用于消除图像误匹配原理 [3]

  • RANSAC算法是寻找一个最佳单应性矩阵H,矩阵大小为3*3,目的是找到最优的参数矩阵,使得满足该矩阵的数据点个数最多,通常令技术分享,由于单应性矩阵有8个未知参数,所以需要8个线性方程求解,对应到点位置信息上,一组点对可以列出两个方程,则至少包含4组匹配点对
   1. 随机从数据集中随机抽出4个样本数据(此四个样本之间不共线)计算出变换矩阵H,记为模型M;
   2. 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I;
   3. 如果当前内点集元素个数大于最优内点集,则更新模型,同时更新迭代次数k;
   4. 如果迭代次数大于k,则退出:否则迭代次数加1,并重复上述步骤

单目相机,F和H矩阵有何不同,E和F矩阵有何不同,只旋转不平移能不能求F,只旋转不平移能不能求H [1,6]?

  • E, F, H 都是2D对2D的场景,E和F满足对极约束: x 2 T E x 1 = p 2 T F p 1 x_2^TEx_1 = p_2^TFp_1 ;F(Fundamental Matrix)称为基础矩阵,满足 F = K T E K 1 F= K^{-T}EK^{-1} , E(Esssential Matrix)称为本质矩阵,满足 E = t^R;由以上可得E是两个归一化平面的关系(不包含内参)F是两个像素平面的关系(包含内参)。H(Homograpty)称为单应矩阵,描述了共面的特征点在两张图像之间的变换关系,若场景的特征点都落在同意平面上(墙,地面)则可以通过单应性来估计。特征点共面或者相机发生纯旋转时,基础矩阵自由度下降,就出现了所谓的退化。这时候如果继续用八点法求解,基础矩阵多出来的自由度就会由噪声决定。在相机只有旋转而没有平移的情况,此时t为0,E也将为0,导致无法求解R,这时可以使用单应矩阵H求旋转,但仅有旋转,无法三角化求深度。
  • 为了避免退化,我们通常同时计算单应矩阵和基础矩阵,选择重投影误差较小的作为最终的运动估计矩阵。

参考:
[1] : https://zhuanlan.zhihu.com/p/46694678
[2] : https://www.cnblogs.com/xrwang/archive/2011/03/09/ransac-1.html
[3] : https://blog.csdn.net/zhuquan945/article/details/79946868
[4] : https://blog.csdn.net/liu502617169/article/details/96831664
[5] : https://www.cnblogs.com/Jessica-jie/p/8622449.html
[6] : 视觉SLAM 14讲

发布了24 篇原创文章 · 获赞 2 · 访问量 6355

猜你喜欢

转载自blog.csdn.net/Xuesengxinyi/article/details/100085917
今日推荐