gpt4 book ai didi

c++ - 单个多对象卡尔曼滤波器与多个单对象卡尔曼滤波器(复数)

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:42 26 4
gpt4 key购买 nike

Gidday cobbers/尊敬的同事们,

通过实现卡尔曼预测/校正的多目标跟踪,我在其他 SO 线程中看到建议的一般方法是简单地为每个目标提供一个卡尔曼滤波器 vector/数组。

即'多单目标卡尔曼滤波器'

但要知道,如果您正确定义了状态空间矩阵,那么一旦任何(连贯的)数学运算完成后,彼此独立的状态将保持不变 - 为什么我们不增加各种状态和相关矩阵/包含所有对象“数据”的滤波器中涉及的 vector 并使用一个卡尔曼滤波器? (是的,大多数矩阵中都会有很多零)。

这两种方法在算法复杂度上有什么优势吗?我的直觉是使用一个过滤器而不是多个过滤器可能会减少开销?

也许在处理多个过滤器时就人类可读性而言更容易管理?

还有其他原因吗?

谢谢

附注最终代码将在 openCV/C++ 中

最佳答案

如果通过扩充你的意思是将所有对象的状态(均值和协方差)组合成一个单一的超状态,然后使用一个单一的过滤器来预测/估计这个超状态,那么恐怕你的直觉提高效率很可能是错误的。

您需要考虑到 KF 方程涉及矩阵求逆等运算,计算复杂度为 O(n^3)(或非常接近该图),其中 n 是矩阵的维数。如果您将多个对象聚合成一个状态,计算复杂度将猛增,即使如您所说大部分为零。

处理多个过滤器,每个跟踪对象一个,在我看来,从设计的角度来看,这既是一种更清晰的方法,也是一种更有效的方法。如果您确实受到 KF 性能的瓶颈(配置文件优先),请考虑在连续数组中分配卡尔曼滤波器数据以最大限度地减少缓存未命中。

关于c++ - 单个多对象卡尔曼滤波器与多个单对象卡尔曼滤波器(复数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541106/

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