【发布时间】:2022-07-11 23:09:28
【问题描述】:
我正在使用 OpenCV 中的 KalmanFilter 类来预测一个点。
我正在跟踪一个轮廓,这意味着我收到了它的 x,y 点。
所以我的代码看起来像这样:
首先我说我得到了 4 个动态参数和 2 个测量参数。 我理解它的方式是我跟踪的 (x,y) 位置是我的测量值,并且它们的速度我得到了 4 个动态参数
#Give Input to Kalman class
kalman = cv2.KalmanFilter(4,2)
kalman.measurementMatrix = np.array([[1,0,0,0],[0,1,0,0]],np.float32)
kalman.transitionMatrix = np.array([[1,0,1,0],[0,1,0,1],[0,0,1,0],[0,0,0,1]],np.float32)
在此之后,我在 opencv 中跟踪我的轮廓并将位置传递给班级。
mp = np.array([[np.float32(center_x)],[np.float32(center_y)]])
kalman.correct(mp)
tp = kalman.predict()
PredictedPointx,PredictedPointy = int(tp[0]),int(tp[1])
结果我得到 2 个预测点,我的代码有效。
问题是我不知道这整个过程到底发生了什么。
我有一些问题,比如
- 为什么我的转换矩阵是这样的
不是这样的:
-
在给我 2 分后我收到速度是否正确?
-
所有其他卡尔曼值和计算在哪里。 比如卡尔曼增益等等。
有人能解释一下在我的 x 和 y 位置传递后到底发生了什么吗?
感谢您的阅读
【问题讨论】:
标签: python numpy opencv kalman-filter