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

时间:2012-11-21 08:40:03

标签: opencv computer-vision

我正在努力并需要帮助。

我想从现实世界物体的已知运动(实际上相机正在移动)计算光流速。这是我在上一个问题(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是扁平的或已知的。相机正在道路上行驶并垂直于地面。

请有人帮我解答以下问题:

  1. 如何获得物体Z值的深度?我需要额外的技术吗?
  2. 还有什么方法可以找到相机运动与图像光流之间的关系吗?
  3. 有人试过上面的等式吗?当相机向一个方向移动时它是否有效?
  4. 非常感谢。

    [如果你觉得这个问题太模糊,请告诉我,以便我能提供更多细节。]

1 个答案:

答案 0 :(得分:3)

也许这有助于...中佛罗里达大学计算机视觉集团的视频讲座:

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

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

另请参阅该书的第5.4章,如果您使用相机拍摄图像,然后在x方向上稍微移动相机并拍摄另一张图像,您可以使用这两张图像计算出一个称为“视差图”的图像。说明图像中的前后对比是什么。这有点像找出z方向。你已经尝试过的东西,以及一些关于立体成像的评论。

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