gpt4 book ai didi

opencv - 用于多目标跟踪的粒子滤波器

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:55 25 4
gpt4 key购买 nike

我正在研究计算机视觉中的人员跟踪。我有观察结果(blob 作为背景减法后 blob 检测的输出),我想推断产生这些观察结果的对象。

我在处理一些卡尔曼滤波器代码时遇到了麻烦。这对我来说很清楚,但我的问题是多目标跟踪:我的问题是有时观察不完整/嘈杂。让我更好地解释一下——在一项观察清晰的测试中,我为每个人准备了 1 个 Blob 。卡尔曼滤波器可以帮助我将人的嘈杂路径平滑成平滑的曲线。但是,这不是我的问题;问题是有时 blob 检测并不完美,我有 2 个 blob 用于 1 个人(例如,如果我要跟踪的人穿着与背景颜色相同的 T 恤),或者有时我有 1 个 blob 用于 2人(例如,如果两个人拥抱自己或彼此靠得太近)。

我搜索了一些理论,发现了很多论文都在用粒子滤波器解决目标跟踪问题。所以我研究了贝叶斯过滤器,蒙特卡洛方法,重要性采样并且它有点清晰(我没有概率的数学知识来理解一切但想法很清楚)。

无论如何,我仍然不明白粒子过滤器如何帮助我检测 2 个 Blob 对应 1 个对象或 1 个 Blob 对应 2 个对象的情况。

有人可以帮助理解这个问题吗?

最佳答案

嗯,首先,OpenCV VideoSurveillance project 是开始处理您的问题的好方法。

正如您所说,它对检测响应进行数据关联。此外,它通过一种简单的机制(初始化也基于帧阈值和删除)处理误报(如您所说,2 个 Blob 到 1 个对象) .另一个问题,正如你提到的,大约 1 个 blob 对应 2 个对象通常称为遮挡(使用 VideoSurveillance 项目中的术语“碰撞”,但现在已经过时了)。 VideoSurveillance 使用基于 3D 颜色直方图建模的粒子过滤器实现来解决这种情况。

简单解释:如何根据外表(衣着)区分两个不同的目标?您可以存储它们的颜色直方图并在以后的帧中使用它,对吗?但是,您如何进行搜索?您可以在下一帧中搜索所有可能的质心,或者使用散布在您认为对象所在区域周围的 200 个随机点。这200个点就是粒子。它们是如何工作的?他们比较他们关注的区域并产生物体在那里的概率。距离越近,可能性就越大。最后,您总结所有可能性并找到“平均”质心。

简单来说就是将每个目标的着装建模在概率函数内,通过粒子滤波的思想实现了近乎实时的计算。

最后,卡尔曼滤波器是一个预测器,它可以帮助跟踪器仅使用运动数据。它会“过滤”极端的运动行为,以防粒子过滤结果变得比应有的疯狂。 VideoSurveillance 也包括这个。它是外观的补充,同时使用两者时跟踪器会更加复杂。

编辑:它对多目标跟踪有何用处?假设我们有一个具有数据关联的简单跟踪器,假设两个对象即将“碰撞”。跟踪器工作正常,直到对象被合并。在“合并”期间,跟踪器只看到一个对象。另一个丢失了。过了一会儿,它们分开了,跟踪器将旧对象检测为新对象!我们如何解决这个问题?这次让我们重新开始粒子过滤和外观建模:

  • 在合并之前,我们有 2 个物体相互靠近。对象是独立的,跟踪器可以清楚地看到它们。在此期间,外观建模器(一种“记住”对象外观的机制)正在学习这两个对象的外观。当然,随着画面的推移,两个物体的外观都会发生轻微的变化。这就是为什么建模者有一个“学习率”,可以让他随着时间的推移调整他的“内存”。

  • 在合并的时候,这次我们把tracker设置的比较有耐心,不会像之前那样轻易的杀死第二个物体。跟踪器让两个对象都处于事件状态。未被遮挡的对象像以前一样被成功跟踪,另一个对象边界框尝试重新定位它的目标。如果幸运的话*,在短时间后,被遮挡(隐藏)的对象将重新出现( split )并且由于粒子,边界框将被吸引到那里。

*如前所述,被遮挡目标的边界框仍由建模器建模。如果被遮挡的人隐藏的时间太长,建模者会忘记旧物体并了解遮挡区域前面的东西(即非遮挡物体)或者会像孤儿盒一样四处游荡(这称为漂移)。 VideoSurveillance 没有这种机制。一种简单的解决方案是在遮挡期间停止建模器适应。如何?当两个边界框重叠时。

关于opencv - 用于多目标跟踪的粒子滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15873484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com