kalman过滤器如何在Opencv python中跟踪多个对象?

时间:2012-10-14 04:38:30

标签: python opencv kalman-filter

我不了解使用python跟踪和标记多个移动对象的过程。通过将每个帧转换为灰度,然后模糊,然后进行BGS,我能够隔离移动物体(尽管二进制图像仍包含大量噪声)。

我找到了cv2.findContours()的轮廓,它给了我blob作为numpy matricies列表。我想使用卡尔曼滤波器跟踪这些斑点,因为它非常善于预测斑点在存在噪声时的位置。然而,在我看来,鉴于KF的性质,找到轮廓是不必要的步骤,特别是因为轮廓函数返回了许多高度可疑的斑点。

我查看了kalman filter的代码,我看不出如何告诉它跟踪blob,更不用说告诉过滤器blob在哪里(或者如何使用KF单独创建blob )。

我的问题是,如果KF事先不知道blob是什么或在哪里(这就是为什么我得到了轮廓,但这个结果有点可怕),KF如何处理多个对象跟踪。并且,一旦KF开始跟踪对象,它如何存储blob以便它可以轻松标记?

1 个答案:

答案 0 :(得分:6)

卡尔曼滤波器本身不包含多个对象跟踪机制。为此,您需要一个额外的算法:例如,如果您有未知/不同数量的对象,则在Reid 1979中使用多假设跟踪(MHT),如果您已知对象数量,则需要联合概率数据关联。

请注意,为了实际实施MHT,您需要在Cox和Hingorani 1996中引入其他改进,“Reid多重假设跟踪的有效实施......”