【问题标题】:OpenCV - Correctly recoverPose after findEssentialMatOpenCV - findEssentialMat 后正确恢复姿势
【发布时间】:2020-06-26 22:26:35
【问题描述】:

我在连续帧之间有正确对应关系,并且需要估计它们之间的转换以生成轨迹。下面的C++流水线,生成的轨迹就没意义了。

auto EssentialMatrix = cv::findEssentialMat(points_previous,
                                            points_current, 
                                            camera_focal_length, 
                                            camera_principal_point,
                                            cv::RANSAC, 
                                            0.999, 
                                            1.0, 
                                            mask);

auto inliers = cv::recoverPose(EssentialMatrix, 
                points_previous, 
                points_current, 
                CameraMatrix, 
                R, 
                t, 
                mask);

t_pos_ = t_pos_ + 1.0 *(R_pos_*t);  
R_pos_ = R * R_pos_;             

所以,我的问题是:如何正确使用 C++ OpenCV 实用程序恢复两个连续帧之间的转换?是否需要额外的步骤来执行此操作?

【问题讨论】:

  • 你能展示你的工作python代码吗?什么是 R_pos_ 和 t_pos_?它们是如何初始化的?
  • 所以第一次调用后 R 和 R_pos_ 以及 t 和 t_pos_ 相等?你能尝试从你的python代码中分离出相同的功能部分吗?你没有在 python 中使用 opencv 来完成这项任务吗?
  • 你没有扭曲这些观点吗? stackoverflow.com/questions/31290414/…
  • 如果 python 和 C++ 管道做的一样,你能尝试比较中间结果吗?可能 findEssentialMat 或 recoverPose 会为您的 python 功能提供不同的结果,或者输入不同。如果可以隔离问题,请尝试在实现中找到差异(也许参数必须以不同的方式使用?也许 opencv 优化降低了质量?)

标签: c++ opencv visual-odometry


【解决方案1】:

我真的不知道你的问题是什么。 试着给出输入是什么,“你的预期输出”是什么,实际输出是什么。

但我知道在哪里可以找到样本https://github.com/avisingh599/mono-vo

尝试在此处查看示例。它是纯 2D 到 2D 基于 opencv 的估计。唯一不同的是他们使用数据集 saclaing 来调整平移向量比例。 2D 到 2D 仅给出相对平移。

http://www.youtube.com/watch?v=homos4vd_Zs

【讨论】:

  • 这是什么东西出来????你一直说什么是正确的方法或没有意义。什么数据让你觉得毫无意义? det(R) = 1?如果是这样,那是没有意义的。如果不。你没有清楚地表达你的问题
  • 是的,继续举例。跳跃是什么意思? R值突然给出90度偏航或其他什么?正确的 R 应该是相同的。 t 值可能会不时变化
  • 你好@袁博士。我有与 OP 类似的问题,但不完全是。对于recoverPose,如果我将相机内在函数作为参数传递,我注意到返回的点数(通过手性检查)为零或接近于零。但是当我不通过相机内在函数时,返回的点数很多。完全看不懂,能不能帮帮我?
  • @ShrutheeshRamanIyer 你能打开一个新问题吗?添加你的python代码。你原始输入2张图片。和你的相机矩阵?使用 cout 函数打印出来。可能性太多,不看细节,无法猜测
  • 嘿@袁博士。我打开了一个新问题,但没有得到回应。我也在 github 上提出了一个问题。 github.com/opencv/opencv/issues/17690 如果可能请看一下。谢谢!
猜你喜欢
  • 2015-11-25
  • 2013-11-05
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2021-08-28
  • 2011-12-26
  • 1970-01-01
  • 2013-02-15
相关资源
最近更新 更多