用于在OpenCV上移动摄像机的运动检测器

时间:2015-02-03 20:23:09

标签: opencv camera motion motion-detection opencv3.0

当相机静止不动时,只需使用光流减去当前帧的前一帧即可轻松检测到移动:

但是如何在我们自己的动作中检测移动的物体?当相机移动时,前一帧和当前帧之间的任何差异(减去)都会给我们背景的移动。

此外,前景(极点,树木)将比背景(天空)移动得更快。如果我们看一下偏离运动平均值的所有东西,我们会发现这些极点和树木,但它们实际上是静止的。

当我们的相机移动时,如何检测其他物体的任何运动?

1 个答案:

答案 0 :(得分:1)

为了能够区分相机运动和场景运动,您需要同时估计两帧之间相机的姿势变化以及这些帧中的场景几何。

有一些方法可以实现这一目标,你应该研究运动结构(SfM)和基本矩阵估计。这些是复杂的方法,并且每个方法都有其自身的问题(例如,在小的翻译的情况下,场景深度的估计可能是不准确的)。但是,您需要这种方法,因为当您在世界坐标中查看其运动而不是图像坐标时,您的移动对象仅区别于场景。