是否可以从KalmanMesurementMatrix中选择的这些来确保仅在Kalman滤波器上有一些参数?

时间:2019-03-20 11:29:15

标签: opencv kalman-filter

我正在使用OpenCV KalmanFilter,并且对这个问题还不熟悉。到目前为止,我知道可以通过KalmanMesurementMatrix指定可以测量和不能测量的参数。

我现在有一个问题,我可以测量x和y坐标以及dx和dy,它们代表差异smth。像帧之间的速度一样,但有时我不了解有关x,y坐标的信息,而仅了解有关dx和dy的信息(大多数情况下会发生这种情况)。

我的转换矩阵

np.array([
    [1, 0, 1, 0],
    [0, 1, 0, 1],
    [0, 0, 1, 0],
    [0, 0, 0, 1]
], np.float32)

测量矩阵

np.array([
    [1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 1]
], np.float32) 

1)是否有可能仅更新“选定的”参数? 我试过了。像这样:

[np.float32(coordinates.x)],  # x-coord
[np.float32(coordinates.y)],  # y-coord
[],  # dx
[],  # dy

但是没有用

2)也许我是在以错误的方式考虑它,我是否应该删除x,y坐标参数并仅坚持dx,dy,并在从坐标测量更新之前将其仅转换为dx和dy?

谢谢你,:)


编辑:

经过一番尝试,我发现将测量矩阵更改为:

np.array([
    [1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]
], np.float32) 

它忽略了我给dx,dy的测量值。但是我不知道在运行时这样做是合法的。而且我不知道我的转换矩阵是否构造正确。

感谢您的帮助。

这是我的转换矩阵:

np.array([
    [1, 0, 1, 0],
    [0, 1, 0, 1],
    [0, 0, 1, 0],
    [0, 0, 0, 1]
], np.float32)

0 个答案:

没有答案