OpenCV基于图像的光流场

时间:2013-10-24 06:38:12

标签: c++ opencv image-processing motion-detection

我正在寻找一种简单的算法来检测整个输入的光流。 在OpenCV中,Lucas-Kanade点跟踪功能非常好,但是对于少数点来说它非常慢。我正在寻找基于图像的结果,而不是基于点的结果。我能找到的唯一信息是关于LK跟踪。

我可以根据简单的帧差分计算运动的幅度,但我也想知道方向。我基本上想要得到一个光流场纹理,我可以将其输入到流体模拟中。

必须有一些基于基本运动检测器的简单算法。类似于帧差分,缩放和模糊以及3个连续帧的组合。

为了非常清楚,我不想要有关Lucas-Kanade方法的信息。

1 个答案:

答案 0 :(得分:2)

OpenCV有一个BackgroundSubtractor类进行帧差分,我想你必须自己做模糊部分。然而,这并非严格意义上的光流计算。

Farneback有一种密集光流的方法,通过cv::calcOpticalFlowFarneback(..)方法在OpenCV中实现。它将生成具有幅度和方向分量的矩阵“流”。 Horn-Schunck方法不是OpenCV中的内置方法。

PS:Lukas Kanade不是很慢。这可能是特征点的提取很慢。尝试使用cv :: FAST探测器。