4

我正在尝试使用 C++ 和 OpenCV 编写一个程序,该程序计算与对象碰撞之前的剩余时间(帧)。作为示例视频,我有一个相机朝着黑板移动。

我对此的方法如下:

  1. 检测要跟踪的特征(尝试过 goodFeaturesToTrack() 或“手动”设置点)
  2. 通过 calcOpticalFlowPyrLK() 计算光流
  3. 通过 findFundamentalMat() 计算先前和当前找到的特征的基本矩阵
  4. 检查基本矩阵是否正确
  5. 计算极线和极线——视频中展开的重点

最后,我打算使用接触时间的方法来计算碰撞前的剩余帧数。

到目前为止,我最大的问题是找到正确的基本矩阵,从而找到极点。计算出的矩阵似乎是错误的,极线也是如此。我计划的方法是否正确?有没有人有一个从视频中获取 FoE 的工作示例或任何关于我必须做什么的演练?

我会很高兴得到任何帮助!

谢谢!

4

1 回答 1

0

我认为 LK 光流只会检测 2D 流。虽然原则上您可以从图像的一部分(即第一象限)的运动中推断出信息,但基本矩阵需要一对立体图像,而不是连续的图像。

从我的脑海中,我不知道解决您的问题的完美步骤。但我认为从运动中研究结构可能会对您有所帮助,因为这种技术解决了从运动中创建 3 维数据但没有立体相机对的问题。

于 2015-04-22T07:56:30.220 回答