有没有办法在不知道深度 Z 的情况下从现实世界物体的运动中找到光流速度?

Posted

技术标签:

【中文标题】有没有办法在不知道深度 Z 的情况下从现实世界物体的运动中找到光流速度?【英文标题】:Are there any way to find optical flow velocity from motion of real-world object without knowing depth Z? 【发布时间】:2012-11-21 08:40:03 【问题描述】:

我很挣扎,需要帮助。

我想根据现实世界物体的已知运动(实际上是相机在移动)计算光流速度。这是我在上一个问题 (Determining if a feature is part of a moving object from sparse optical flow (KLT)) 中提出的问题的一部分。

无论如何,我已经使用cvGoodFeaturesToTrack()cvCalcOpticalFlowPyrLK() 完成了光流计算。

我只是想检查一下我计算出的流量在理论上是否正确(对应于相机的运动)。

让我的相机只在 Z 轴上移动(暂时忽略偏航率)。假设我的相机移动到 Vz(在 Z 方向)。

我可以通过

找到光流
vx = x * Vz / Z    
vy = y * Vz / Z

(假设 Vx,Vy = 0 --> x 和 y 轴上没有相机运动)

这是我主要从http://www.cse.psu.edu/~rcollins/CSE486/lecture22_6pp.pdf学习的。

问题是要解决这个问题,我必须有 Z。就我而言,我不能假设表面 Z 是平坦的或已知的。摄像头在道路上移动并垂直于地面。

请任何人帮我回答以下问题:

    如何获取物体的深度 Z 值?我需要额外的技术吗? 或者还有其他方法可以找到相机运动和图像光流之间的关系吗? 有人试过上面的公式吗?相机只向一个方向移动时是否有效?

非常感谢。

[如果您觉得这个问题太模糊,请告诉我,以便我提供更详细的信息。]

【问题讨论】:

如果您有多个摄像头,您可以使用立体视觉来确定距离。如果您有一个已知距离的参考对象,您可以计算另一个对象的视差并使用它来找到它的距离。除此之外,我担心任意物体的距离即使不是不可能也很难确定。 感谢您的 cmets。我的问题是针对单台相机的,我对其他参考对象一无所知。我已经尝试了多张图像,并假设前几对图像的光流是可靠的,并使用它们来计算 Z。无论如何,我发现这也是一个问题。 理论上您可以通过使用 8 点或 5 点方法估计基本矩阵并分解基本矩阵来获得 Z,但正如他们所说的“道路充满危险”。对于您尝试使用光流解决的问题,它可能也是一个更复杂的解决方案。 虽然你可以计算基本矩阵并将其分解为旋转和平移,但它始终是按比例缩放的,这意味着对于不同的连续图像对你得到的比例是不同的,所以您无法以这种方式获得相机的“真实”运动。最简单的解决方案是仅考虑主平面(地面)的光学矢量。如果没有,推理方法,如粒子过滤器(参见 Monoslam code.google.com/p/monoslam)可以完成这项工作。 【参考方案1】:

也许这会有所帮助……来自中佛罗里达大学计算机视觉小组的视频讲座:

Chapter 6 - Optical Flow(您要求的方程式在视频的 31:00 分钟) Chapter 8 - Motion Models(处理偏航、倾斜、旋转的各种方法) Chapter 9 - Global Motion(解决自我运动问题,即移动相机)

来自 Jan Erik Solem 的其他 python 代码:Programming Computer Vision with Python。

阅读第 10.4 章,它很可能会回答你所有的问题。

另请参阅该书的第 5.4 章,如果您使用相机拍摄图像,然后在 x 方向上稍微移动相机并拍摄另一张图像,您可以使用这两个图像计算称为“视差图”的东西说明图像中的正面和背面分别是什么类型的东西。这有点像弄清楚 z 方向。类似于您已经尝试过的内容以及一些 cmets 提到的有关立体成像的内容。

第 4.3 章解释了使用平面标记进行姿态估计。您可以使用放置在相机前面已知距离的物体来校准相机。这很可能是您应该首先查看的内容。

【讨论】:

以上是关于有没有办法在不知道深度 Z 的情况下从现实世界物体的运动中找到光流速度?的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 COM 的情况下从 C++ 调用 C# 方法

有没有办法在不导入 csv 的情况下从 .csv 创建 JSON?

有没有办法在不创建视频标签的情况下从 URL 获取 MediaStream

有没有办法在不使用图像选择器的情况下从照片应用程序呈现默认的 iOS 编辑视图?

有没有办法在不加入公会的情况下从提及中获取用户的 ID?

有没有办法在不使用画布 API 的情况下从图像文件中获取二进制数据?