3

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

我找到了带有 的轮廓cv2.findContours(),这给了我作为 numpy 矩阵列表的斑点。我想使用卡尔曼滤波器来跟踪这些斑点,因为它非常擅长在存在噪声的情况下预测斑点的位置。然而,在我看来,考虑到 KF 的性质,找到轮廓是一个不必要的步骤,特别是因为轮廓函数返回了很多非常有问题的 blob。

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

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

4

1 回答 1

6

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

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

于 2012-10-24T10:26:11.290 回答