卡尔曼滤波器3D实现

时间:2016-02-11 13:06:54

标签: opencv kalman-filter

我想在OpenCV中的r3(X,Y,Z坐标)中为移动对象实现卡尔曼滤波器。 我试图理解OpenCV documentation,但这实际上没有用,而且非常罕见。

初始化的语法是:

  

KalmanFilter :: KalmanFilter(int dynamParams,int measureParams,int     controlParams = 0,int type = CV_32F)

就我而言, dynamParams = 9 measureParams = 3

在我的情况下, transitionMatrix 是什么?

2 个答案:

答案 0 :(得分:2)

在这种情况下,Transition Matrix A看起来像:

A = [1, 0, 0, v, 0, 0, a, 0, 0;
     0, 1, 0, 0, v, 0, 0, a, 0;
     0, 0, 1, 0, 0, v, 0, 0, a;
     0, 0, 0, 1, 0, 0, v, 0, 0;
     0, 0, 0, 0, 1, 0, 0, v, 0;
     0, 0, 0, 0, 0, 1, 0, 0, v;
     0, 0, 0, 0, 0, 0, 1, 0, 0;
     0, 0, 0, 0, 0, 0, 0, 1, 0;
     0, 0, 0, 0, 0, 0, 0, 0, 1]

使用

v = dt
a = 0.5*dt^2

请参阅http://campar.in.tum.de/Chair/KalmanFilter

答案 1 :(得分:1)

我发现,对于3D-Case,通常使用位置,速度和加速度。这意味着,对于OpenCV实现,dynamParams = 9和measureParams = 3是正确的。