use*_*915 3 python opencv kalman-filter
我不了解使用python跟踪和标记多个移动对象的过程.通过将每个帧转换为灰度,然后模糊,然后进行BGS,我能够隔离移动物体(尽管二进制图像仍包含大量噪声).
我找到了轮廓cv2.findContours()
,它给了我blob作为numpy matricies列表.我想使用卡尔曼滤波器跟踪这些斑点,因为它非常善于预测斑点在存在噪声时的位置.然而,在我看来,鉴于KF的性质,找到轮廓是不必要的步骤,特别是因为轮廓函数返回了许多高度可疑的斑点.
我查看了kalman过滤器的代码,我看不出如何告诉它跟踪blob,更不用说告诉过滤器blob在哪里(或者如何单独使用KF创建blob).
我的问题是,如果KF事先不知道blob是什么或在哪里,那么KF如何处理多个对象跟踪(这就是为什么我得到了轮廓,但这个结果有点可怕).并且,一旦KF开始跟踪对象,它如何存储blob以便它可以轻松标记?
卡尔曼滤波器本身不包含多个对象跟踪机制.为此,您需要一个额外的算法:例如,Reid 1979中的多假设跟踪(MHT),如果您有未知/不同数量的对象或联合概率数据关联,如果您有已知数量的对象.
注意,为了实际实现MHT,您需要在Cox和Hingorani 1996中引入额外的改进,"Reid多重假设跟踪的有效实现......"