【问题标题】:OpenCV recoverPose from essential matrix EOpenCV recoverPose 从基本矩阵 E
【发布时间】:2021-01-18 09:15:41
【问题描述】:

使用Opencv 3.0,我得到了具有函数的基本矩阵:

E = findEssentialMat(points2, points1, focal, pp, RANSAC, 0.999, 1.0, mask);

看看掩码值,内点的数量真的很高。

使用recoverPose函数后:

recoverPose(E, points2, points1, R, t, focal, pp, mask);

但我注意到通过的内点数(查看掩码)非常少(通常为零)。

我的问题是: 有没有办法从recoverPose 函数中获得更多的内点?如果没有,还有其他方法可以获取 R 和 t(不使用 recoverPose 函数)?

非常感谢!

【问题讨论】:

    标签: opencv slam visual-odometry


    【解决方案1】:

    如果没有更多细节,真的很难判断发生了什么。 RecoverPose 必须解决的主要任务是在给定基本矩阵估计的情况下选择 4 种不同的平移和旋转解决方案。

    步骤大致如下:

    • 估计 4 种可能的解决方案
    • 所有内点的 3D 三角剖分
    • 手性检查:基本上检查三角点是否在两个摄像头前面(opencv 坐标系的正 z 坐标)
    • 选择一个解决方案并将所有未通过手性检查的内点标记为异常值。

    因此,在手性检查期间似乎出了点问题。您实际上可以很容易地自己实现 RecoverPose。您可以查看我在当前项目中是如何做到的(查找 DecomposeEssentialMat):https://github.com/makra89/Visual-Odometry-Cpp/blob/master/src/Utils/src/ImageProcessingUtils.cpp

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2014-02-09
      • 2013-12-26
      • 1970-01-01
      • 2013-12-26
      • 2019-11-06
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      相关资源
      最近更新 更多