如何在蒙板图像上进行基于网格(密集)的光流?

时间:2016-02-18 18:24:32

标签: opencv computer-vision opencv3.0 opticalflow

我正在尝试使用摄像机跟踪多人。我不想使用blob分割技术。 我想做什么:

  1. 进行背景扣除以获得隔离人们的面具。运动。

    1. 在这些区域执行基于网格的光流 - 什么是我最好的选择?
  2. 我正在努力实施。我已经尝试过斑点检测以及一些基于光流的示例(稀疏),稀疏并没有真正为我做这件事,因为我没有从goodfeaturestotrack()获得足够的特征点 - 我想最终得到每个人至少有20个跟踪能点,这就是为什么我认为基于网格的方法对我来说会更好,我会使用获得的运动向量来对不同的人进行分类(可能会对大小和方向进行聚类?)

    我在Python 3.5中使用opencv3 - 但在这个领域我还是很吵。 非常感谢一些指导!

1 个答案:

答案 0 :(得分:3)

对于稀疏光流(在OpenCV中采用金字塔形Lucas Kanade方法),您不需要良好的特征 - 跟踪强制性以获得位置。 calcOpticalFlowPyrLK函数允许您估计预定位置的运动,这些也可以由您给出。 所以只需要自己初始化一个cv :: Point2f的网格,例如创建一个点列表并将位置设置到位于blob的网格点,然后运行calcOpticalFlowPyrLK()。

良好的特征到跟踪方法的想法是,它为您提供了calcOpticalFlowPyrLK()结果更可能准确的点,这是在具有边缘的图像位置上结构。但根据我的经验,这并不总是提供最佳的特征点集。我更喜欢使用常规网格作为特征点集。