问题标签 [visual-odometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1106 浏览

c++ - OpenCV - findEssentialMat 后正确恢复姿势

我在连续帧之间有正确的对应关系,并且需要估计它们之间的转换以生成轨迹。下面的 C++ 管道,生成的轨迹毫无意义。

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

0 投票
1 回答
220 浏览

matlab - 立体图像的图像校正

我的最终目标是进行视觉里程计。为此,我将收集我自己的图像数据集。但首先,我正在尝试使用Malaga Dataset的原始图像进行图像校正。数据集是立体图像数据集。我已经下载了 malaga-urban-dataset-extract-07.zip 文件,并尝试使用原始图像进行图像校正。我使用了MATLAB 代码

但它给了我第 152 帧的错误:

除了这个错误之外,经过修正的图像(从第 1 帧到第 151 帧)已经与 Malaga 数据集的原始修正图像不相似。例如; 如果我分别给你看一下马拉加原始图像数据集的第20帧,我使用的Matlab代码的校正结果和马拉加数据集的原始校正图像: 马拉加数据集原始图像的第 20 帧 Matlab代码第20帧校正结果 马拉加数据集第 20 帧的原始校正图像

我知道我对未校准的相机使用了 Matlab 纠正代码。但是,它已经是马拉加数据集中的校准原始图像数据集。另一个整改 matlab 代码是这个但是马拉加数据集图像(或我将收集的数据集)不包含棋盘。所以,我无法理解如何将此代码与不包含棋盘格的图像一起使用。

我有三个问题:

  1. 如何解决我在上面写的错误问题?
  2. 为什么 Matlab 校正的结果与原始校正图像不相似?
  3. 我怎样才能用另一种方式纠正原始图像?
0 投票
1 回答
221 浏览

python - 如何使用 KITTI 里程计数据集评估单目视觉里程计结果

我正在尝试使用 KITTI 开放数据集进行深度单目视觉里程计我尝试使用这个repo

它使用此代码将姿势转换为 6DoF

模型输出也采用相同的格式(6DoF)

问题是如何评估 6DoF 结果,因为此评估工具 ( kitti-odom-eval ) 仅支持以下两种格式

0 投票
0 回答
28 浏览

opencv - 错误 C3861:“findEssentialMat”:找不到标识符 - 带有 Visual c++ 2010 的 Opencv 2.4.9

在我的代码中,我有以下内容:

和代码:

但是使用带有 Visual c++ 2010 的 Opencv 2.4.9 我得到了编译错误:

如何解决它们?

谢谢!

0 投票
0 回答
241 浏览

python - 在没有 PnP 的情况下在单目视觉里程计中查找相对比例

我正在实现一个标准的 VO 算法,并进行了一些更改,即提取特征、匹配特征点、找到基本矩阵并分解以获得姿势。然而,在初始化之后,我没有对后续帧使用 3D-2D 运动估计 (PNP),而是使用相同的 2D-2D 运动估计(使用基本矩阵)。我发现 2D-2D 估计似乎比 3D-2D 准确得多。为了找到第二个姿势相对于第一个姿势的相对比例,我可以找出共同点(对两个帧对进行三角剖分)。根据视觉里程计教程,Scaramuzza,可以通过找到公共点对之间的相对距离的比率来找到相对比例。

如果f13D并且f23D是来自后续帧对的三角化 3D 点,我会随机选择点对并计算距离,这是相同的粗略代码片段。

我还尝试用线性 ransac 估计器替换最后一行。然而,由于比例三角测量并不完美,这些值非常嘈杂,因此使用不同的 numpy 种子时,比例估计也有很大差异。

这是在文章中描述的在单目 VO 中实现相对比例的正确方法吗?如果没有,最好的方法是什么(我不希望使用 PNP,因为旋转似乎不太准确)

0 投票
0 回答
142 浏览

opencv - 具有单目视觉里程计轨迹的像素到像素

我有一个用单目视觉里程计算法计算的轨迹(比例未知)。在我的第一张图片中,我标记了对象 P(x,y) 的中间。是否可以通过使用具有未知比例的轨迹将对象的中间(像素 P(x,y))投影到其他帧中?

已知比例我可以使用opencv函数“cv2.projectPoints”,但是没有比例可以吗?

-depth1-3 未知

-P1(x1,y1) 已知

-轨迹已知(无比例)

-P2 和 P3 是我想要得到的结果

在此处输入图像描述

0 投票
1 回答
317 浏览

opencv - OpenCV recoverPose 从基本矩阵 E

使用 Opencv 3.0,我获得了具有以下功能的基本矩阵:

查看掩码值,内点的数量非常高。

在我使用了 recoverPose 函数之后:

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

我的问题是:有没有办法从recoverPose 函数中获得更多的内点?如果没有,是否有替代方法来获取 R 和 t(不使用 recoverPose 函数)?

非常感谢!

0 投票
1 回答
42 浏览

scale - 使用 IMU 数据和/或距离计解决 Visual Odometry 中的绝对比例问题

视觉里程计给我 x,y,z 位置,除非是绝对比例。我也可以有 IMU 数据(例如获取滚动、偏航信息)。我也可以有一个测距仪(以获得与当前物体的不同距离)

有没有一种简单的方法可以结合这些信息并获得相关的量表?

谢谢!

0 投票
0 回答
55 浏览

python - 在 ROS 模拟中使用 OpenCV 尝试 KLT 时的问题

我正在尝试使用 ROS + Gazebo 和 OpenCV 的 KLT 算法制作一些视觉里程计项目。

我的代码运行得不太好。使用视频文件作为源可以正常工作,就像在本教程中一样,但是当我尝试使用 ROS 主题/图像作为输入时,效果并不好。即使我可以跟踪特征点,视图也会冻结(我必须单击 esc 几次才能刷新)并且在移动时没有绘制点路径。

我还尝试更改模拟相机的帧速率,因为处理时间太快了,但没有成功。

我想我犯了一些基本错误,与回调或事件“旧框架”与“新框架”关系有关,但不知道如何解决。

如果有人能在这个问题上提供一些支持,我将不胜感激。

我的代码如下:

0 投票
0 回答
22 浏览

computer-vision - 智能手机相机运动估计 - 检测退化情况

我有一个系统,它使用智能手机摄像头视频作为输入来重建物体的 3D 模型(我会注意到我可以在物体旁边放置已知大小的标记)。

我想检测视频中没有足够运动的扫描,对于 3d 重建实际上退化的情况,例如纯旋转的情况。最初的想法是执行SFM并计算实际完成了多少运动,但这里有一个问题,因为从一开始这些都是执行 SFM 有问题的情况(退化情况)。

你会推荐我做什么?

我还会注意到我使用智能手机,所以我也可以选择它的 IMU。

谢谢