2012-10-14 57 views
3

我不理解使用python來跟蹤和標記多個移動對象的過程。通過將每幀轉換爲灰度,然後模糊,然後進行BGS,我能夠隔離移動的對象(儘管二進制圖像仍然包含大量噪音)。卡爾曼過濾器如何跟蹤Opencv python中的多個對象?

我找到了cv2.findContours()的輪廓,它給了我blob作爲numpy matricies列表。我想用卡爾曼濾波器來跟蹤這些斑點,因爲它非常適合在存在噪聲的情況下預測斑點的位置。然而,在我看來,鑑於KF的性質,找到輪廓線是不必要的一步,尤其是輪廓函數返回了很多高度可疑的斑點。

我查看了kalman filter的代碼,我看不出我如何告訴它跟蹤斑點,更不用說告訴過濾器斑點在哪裏(或者如何使用KF單獨創建斑點)。

我的問題是,如果KF事先不知道什麼或哪些blob在哪裏(這就是爲什麼我得到輪廓,但是這個結果有點可怕),KF如何處理多個對象跟蹤。而且,一旦KF確實開始跟蹤對象,它如何存儲斑點以便可以輕鬆標記?

回答

6

卡爾曼濾波器本身不包含多個對象跟蹤機械。爲此,您需要一個額外的算法:例如,在Reid 1979中的多假設跟蹤(MHT),如果您有未知數/不同數量的對象或聯合概率數據關聯(如果您有已知數量的對象)。

請注意,爲了實際執行MHT,您需要在Cox和Hingorani 1996中引入其他改進,「Reid的多假設跟蹤的有效實現...」