我编写了一个对象跟踪器,它将尝试检测并跟踪录制视频中的移动对象。为了最大化检测率,我的算法使用了一堆检测和跟踪算法(级联、前景和粒子跟踪器)。每个跟踪算法都会返回一些point of interest
可能是我正在尝试跟踪的对象的一部分。让我们假设(为简单起见)我的对象是一个矩形,并且三个跟踪算法返回了点1
和:2
3
根据这三个点的关系/距离,可以计算出被跟踪物体的重心(X
上图中的蓝色)。因此,对于每一帧,我都可以对重心做出一些很好的估计。但是,对象可能会从一帧移动到下一帧:
在这个例子中,我只是旋转了原始对象。我的算法会给我三个新的兴趣点1'
:2'
和3'
。我可以再次根据这三个新点计算重心,但我会丢弃我从前一帧获得的重要信息:基于 points 1
,我已经知道这些点之间的关系,2
因此3
通过结合来自1
、2
和3
的信息1'
,我应该能够更好地估计重心2'
。3'
此外,下一帧可能会产生第四个数据点:
这就是我想做的(但我不知道怎么做):
基于从不同跟踪算法返回的各个点(以及它们之间的关系),我想建立一个localization map
被跟踪对象。直觉上,我觉得我需要提出 A)一个识别函数,它可以识别帧中的各个点,B)一些成本函数,它将确定跟踪点(以及它们之间的关系/距离)在帧之间的相似程度,但我无法理解如何实现这一点。或者,也许某种map
基于点的积累会起作用。但同样,我不知道如何处理这个问题。非常感谢任何建议(和示例代码)!
EDIT1 一个简单的粒子滤波器可能也可以工作,但我又不知道如何定义成本函数。用于跟踪某种颜色的粒子滤波器很容易编程:对于每个像素,您计算目标颜色和像素颜色之间的差异。但是我将如何做同样的事情来估计跟踪点之间的关系呢?
EDIT2直觉上我觉得卡尔曼滤波器也可以帮助预测步骤。请参阅此pdf的幻灯片 24 - 32 。还是我被误导了?