卡尔曼滤波器 3D 实现
Posted
技术标签:
【中文标题】卡尔曼滤波器 3D 实现【英文标题】:Kalman filter 3D implementation 【发布时间】:2016-02-11 13:06:53 【问题描述】:我想在 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 是什么?
【问题讨论】:
【参考方案1】:在这种情况下,转换矩阵 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
【讨论】:
【参考方案2】:我发现,对于 3D 案例,通常使用位置、速度和加速度。这意味着,对于 OpenCV 实现 dynamParams=9 和 measureParams=3 是正确的。
【讨论】:
以上是关于卡尔曼滤波器 3D 实现的主要内容,如果未能解决你的问题,请参考以下文章