我正在使用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)