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

A single multi-object Kalman filter vs. multiple-single-object Kalman filters (plural)

Gidday cobbers/esteemed 同事,

通过实现卡尔曼 prediction/correction 的多目标跟踪,我在其他 SO 线程中看到建议的一般方法是简单地为每个对象设置一个 vector/array 卡尔曼滤波器。

即'multiple-single-object Kalman filters'

但是知道如果你正确地定义你的状态 space 矩阵,那么一旦任何(连贯的)数学被说和做完,彼此独立的状态将保持不变 - 为什么我们不增加各种状态和相关的 matrices/vectors 涉及一个过滤器 all 对象 'data' 并使用 one 卡尔曼过滤器? (是的,大多数矩阵中都会有很多零)。

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

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

还有其他原因吗?

谢谢

p.s。最终代码将在 openCV/C++

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

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

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