卡尔曼滤波器(6,2,0)转移矩阵

9
我正在进行一个物体跟踪项目,希望通过使用卡尔曼滤波器来改善结果。我在互联网上找到了很多工作的示例,但我真的想了解背后的原理。
使用opencv,以下是代码的一部分:
KalmanFilter KF(6, 2, 0);
Mat_ state(6, 1); 
Mat processNoise(6, 1, CV_32F);
...
KF.statePre.at(0) = mouse_info.x;
KF.statePre.at(1) = mouse_info.y;
KF.statePre.at(2) = 0;
KF.statePre.at(3) = 0;
KF.statePre.at(4) = 0;
KF.statePre.at(5) = 0;
KF.transitionMatrix = *(Mat_(6, 6) << 1,0,1,0,0.5,0, 0,1,0,1,0,0.5, 0,0,1,0,1,0, 0,0,0,1,0,1, 0,0,0,0,1,0, 0,0,0,0,0,1);
KF.measurementMatrix = *(Mat_(2, 6) << 1,0,1,0,0.5,0, 0,1,0,1,0,0.5);

这个方法的结果比 KalmanFilter(4,2,0) 更加平滑,但我不太明白为什么。 有人能解释一下这个 (6,6) 转移矩阵背后的原理吗?
编辑:答案可能在这里,但显然我自己找不到...
谢谢你的帮助。
1个回答

13
您有一个状态向量X,由6个组件组成,其中前两个是物体的x和y位置;假设其他4个是它们的速度和加速度: X = [x,y,v_x,v_y,a_x,a_y] t 在卡尔曼滤波器中,您的下一个状态Xt+1等于先前状态Xt乘以转移矩阵A,因此使用您发布的转移矩阵,您将会得到:
xt+1 = xt + vx,t + 0.5ax,t yt+1 = yt + vy,t + 0.5ay,t vx,t+1 = vx,t + ax,t vy,t+1 = vt,t + at,t ax,t+1 = ax,t ay,t+1 = ay,t 这些是物体以恒定加速度运动方程的离散近似,如果两个状态之间的时间间隔为1,则假设其他四个变量为速度和加速度是有意义的。
这是一个卡尔曼滤波器,允许更快地估计速度变化,因此引入了比(4,2,0)滤波器更低的延迟,后者将使用恒定速度模型。

谢谢,我得出了相同的结论。 - Thibel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接