繁体   English   中英

使用卡尔曼滤波器类中的 controlMatrix | OpenCV、Python、NumPy

[英]Use the controlMatrix in the Kalman Filter Class | OpenCV,Python,NumPy

我正在使用 OpenCV 来跟踪轮廓的位置。

收到 Position(x,y) 后,我将它们传递给卡尔曼滤波器。

这里有一个例子:

import cv2
import numpy as np

dt = 1
kalman = cv2.KalmanFilter(4,2,4)
kalman.measurementMatrix = np.array([[1,0,0,0],[0,1,0,0]],np.float32)
kalman.transitionMatrix = np.array([[1,0,dt,0],[0,1,0,dt],[0,0,1,0],[0,0,0,1]],np.float32)
kalman.controlMatrix = np.array([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],np.float32)


#RECIEVE X,Y Position from Contour 

mp = np.array([[np.float32(Contour_X)],[np.float32(Contour_Y)]])
kalman.correct(mp)
tp = kalman.predict()
PredictionX,PredictionY= int(tp[0]),int(tp[1])

所以我定义了一个 4 维过渡矩阵、一个 2 维测量矩阵和一个 4 维控制向量。

我的目标:

我试图用我的控制向量来减慢我的预测值(比如增加一个摩擦),但我不知道如何,纪录片也没有给出例子。 我真的很想用文档来理解它:https ://docs.opencv.org/3.4/dd/d6a/classcv_1_1KalmanFilter.html

但它只是说如何定义控制矩阵。 而且我找不到 Kalman + OpenCV + Python 示例。 我也尝试通过实验以某种方式做到这一点,但我的预测和它的速度一直保持不变。

所以卡尔曼滤波器的方程看起来像这样。

在此处输入图像描述

我的一个想法是这样定义 u_k-1 ,但我仍然不知道如何真正实现它。

在此处输入图像描述

还有其他人遇到过这个问题吗?

感谢您阅读

卡尔曼滤波器是一种反馈控制,其中控制 $u_k$ 在算法中隐式计算,与 $u_k$ 更明确的开环控制问题相反。 粗略地说,控制是根据您的测量与估计的距离以及您的估计的准确程度来计算的。

因此,除了转移和控制矩阵之外,您还需要定义过程噪声的协方差 $\mat{Q}_k$。 有关示例,请参见下面的代码:

dt = 0.1
kalman = cv2.KalmanFilter(4,2,4)
kalman.measurementMatrix = np.array([[1,0,0,0],[0,2,0,0]],np.float32)
kalman.transitionMatrix = np.array([[1,0,dt,0],[0,1,0,dt],[0,0,1,0],[0,0,0,1]],np.float32)
kalman.controlMatrix = np.array([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],np.float32)
kalman.errorCovPre = np.array([[3.1, 2.0, 0., 0.],
                            [2.0, 1.1, 0., 0.],
                            [0., 0., 1.0, 0.],
                            [0., 0., 0., 1.0]], dtype=np.float32)


#RECIEVE X,Y Position from Contour 
Contour_X = 2
Contour_Y = 6

mp = np.array([[np.float32(Contour_X)],[np.float32(Contour_Y)]])
kalman.correct(mp)
tp = kalman.predict()
PredictionX,PredictionY= int(tp[0]),int(tp[1])

玩转协方差矩阵,看看它如何影响预测。 查看后验协方差kalman.errorCovPost并将其与先验协方差矩阵进行比较也很有趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM