我想在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 是什么?
答案 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
答案 1 :(得分:1)
我发现,对于3D-Case,通常使用位置,速度和加速度。这意味着,对于OpenCV实现,dynamParams = 9和measureParams = 3是正确的。