KalmanFilter(6,2,0)转换矩阵

蒂贝尔

我正在做一个对象跟踪项目,我想改善使用卡尔曼滤波器获得的结果。

我在互联网上发现了许多有效的示例,但我真的很想了解其背后的原因。

使用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)转换矩阵的背后是什么吗?

编辑:解决方案可能在这里,但显然我不足以独自找到它...

谢谢您的帮助。

米洛

您有一个由6个分量组成的状态向量X,其中前两个是对象的x和y位置;第二个是对象的x和y位置。假设其他四个是它们的速度和加速度:

X = [x,y,v_x,v_y,a_x,a_y] t

在卡尔曼滤波器中,您的下一个状态X t + 1等于前一个状态X t乘以过渡矩阵A,因此使用您发布的过渡矩阵,您将拥有:

x t + 1 = x t + v_x t + 0.5 a_x t

y t + 1 = y t + v_y t + 0.5 a_y t

v_x t + 1 = v_x t + a_x t

v_y t + 1 = v_t t + a_t t

a_x t + 1 = a_x t

a_y t + 1 = a_y t

如果两个状态之间的时间间隔等于1,则它们是物体以恒定加速度运动的方程的离散近似值(这就是为什么假设其他四个变量是速度和加速度的原因)。

这是一个卡尔曼滤波器,可以使速度估计更快地变化,因此与使用恒定速度模型的(4,2,0)滤波器相比,它引入了更低的延迟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Softmax矩阵转换为0/1(OneHot)编码矩阵?

来自分类Dev

如何在z = 0平面中将2D转换矩阵(用于齐次坐标)转换为3D?

来自分类Dev

将 2 个向量转换为矩阵

来自分类Dev

有cv2.KalmanFilter实现的示例吗?

来自分类Dev

将三角对等矩阵转换为对角线R为0的对称矩阵

来自分类Dev

C ++矩阵转换为动态2D错误

来自分类Dev

将数据帧转换为2模式网络矩阵

来自分类Dev

将2d矩阵转换为3d一个热矩阵numpy

来自分类Dev

将3D矩阵转换/重塑为2D矩阵

来自分类Dev

将2D稀疏矩阵转换为3D矩阵

来自分类Dev

将转换矩阵应用于视图矩阵不起作用(android opengl2)

来自分类Dev

将默认值转换为numpy矩阵或2D矩阵的CSV

来自分类Dev

Matlab将2D矩阵转换为3D矩阵

来自分类Dev

将 2d 矩阵转换为 3D 矩阵

来自分类Dev

在2的幂的矩阵大小上,gcc -O0优于-O3(矩阵转置)

来自分类Dev

Python转换矩阵

来自分类Dev

转换映射矩阵

来自分类Dev

OpenGL多矩阵转换

来自分类Dev

模板和矩阵转换

来自分类Dev

Dart SVG矩阵转换

来自分类Dev

转换矩阵格式,缩放

来自分类Dev

Dart SVG矩阵转换

来自分类Dev

转换矩阵问题

来自分类Dev

simulink块转换矩阵

来自分类Dev

PostgreSQL矩阵转换

来自分类Dev

Imagemagick 转换颜色矩阵

来自分类Dev

在Python中将0/1矩阵转换为二维网格图

来自分类Dev

将字符矩阵转换为数字矩阵

来自分类Dev

矩阵乘法:矢量到矩阵的转换