主要内容

愿景。KalmanFilter

校正测量、状态和状态估计误差协方差

描述

卡尔曼滤波对象是为跟踪而设计的。您可以使用它来预测物理对象的未来位置,减少检测位置中的噪声,或者帮助将多个物理对象与其相应的轨道关联起来。可以为每个物理对象配置一个卡尔曼滤波器对象,用于多个对象跟踪。要使用卡尔曼滤波,物体必须以恒定速度或恒定加速度运动。

创建

卡尔曼滤波算法包括两个步骤,预测和修正(也称为更新步骤)。第一步使用以前的状态来预测当前状态。第二步使用当前测量(如对象位置)来修正状态。卡尔曼滤波器实现了一个离散时间线性状态空间系统。

请注意

要简化卡尔曼滤波器的配置,可以使用configureKalmanFilter对象配置卡尔曼滤波器。它设置了一个过滤器,用于在笛卡尔坐标系中跟踪一个物理对象,以恒定速度或恒定加速度运动。统计数据在所有维度上都是相同的。如果需要配置不同假设的卡尔曼滤波器,不使用该函数,直接使用该对象。

在状态空间系统中,状态转移模型,一个,测量模型,H,设置如下:

变量 价值
一个 [1 1 0 0;0 1 0 0;0 0 1 1;0 0 0 1]
H [1 0 0 0;0 0 1 0]

描述

例子

kalmanFilter=愿景。KalmanFilter返回一个离散时间、恒速度系统的卡尔曼滤波器。

kalmanFilter=愿景。KalmanFilter (StateTransitionModel,MeasurementModel另外配置控制模型,B

kalmanFilter=愿景。KalmanFilter (StateTransitionModel,MeasurementModel,ControlModel,名称,值配置卡尔曼过滤器对象属性,指定为一个或多个名称,值对参数。未指定的属性有默认值。

属性

全部展开

描述时间步长之间状态转换的模型(一个),指定为——- - - - - -矩阵。在构造对象后,不能更改此属性。这个属性与一个状态空间模型中的变量。

描述状态到测量转换的模型(H),指定为N——- - - - - -矩阵。在构造对象后,不能更改此属性。这个属性与H状态空间模型中的变量。

描述控制输入到状态转换的模型(B),指定为——- - - - - -l矩阵。在构造对象后,不能更改此属性。这个属性与B状态空间模型中的变量。

状态(x),指定为标量或元向量。如果你指定状态作为标量,它将扩展为元向量。这个属性与x状态空间模型中的变量。

状态估计误差协方差(P),指定为标量或——- - - - - -矩阵。如果你指定StateCovariance作为标量,它将扩展为——- - - - - -对角矩阵。这个属性与P状态空间系统中的变量。

过程噪声协方差(),指定为标量或——- - - - - -矩阵。如果你指定ProcessNoise作为标量,它将扩展为——- - - - - -对角矩阵。这个属性与状态空间模型中的变量。

测量噪声协方差(R),指定为标量或N——- - - - - -N矩阵。如果你指定MeasurementNoise作为标量,它将扩展为N——- - - - - -N对角矩阵。这个属性与R状态空间模型中的变量。

对象的功能

使用预测而且正确的基于检测结果的函数。使用距离函数来查找最佳匹配。

  • 当检测到被跟踪对象时,使用预测而且正确的函数与卡尔曼滤波对象和检测测量。按以下顺序调用函数:

    […]=预测(kalmanFilter);[…]=正确的(kalmanFilter,测量);

  • 当未检测到被跟踪对象时,调用预测函数,而不是正确的函数。当被跟踪对象缺失或被遮挡时,无法进行测量。按照以下逻辑设置函数:

    […]=预测(kalmanFilter);如果测量存在[…]=正确的(kalmanFilter,测量);结束

  • 如果跟踪对象在过去丢失后恢复可用t-1连续的时间步长时,可以调用预测函数t次了。这个语法对处理异步视频特别有用。例如,

    当I = 1:k[…]预测,预测kalmanFilter);结束[…]=正确的(kalmanFilter,measurement)

正确的 校正测量、状态和状态估计误差协方差
预测 测量预测
距离 测量置信值

例子

全部折叠

跟踪一个方向上移动的物理对象的位置。

生成模拟以恒定速度移动的物理对象的一维位置的合成数据。

detectedLocations = num2cell(2*randn(1,40) + (1:40));

通过将一些元素设置为空来模拟缺失检测。

detectedLocations{1} = [];idx = 16: 25 detectedLocations{idx} = [];结束

创建一个图来显示检测的位置和使用卡尔曼滤波器进行跟踪的结果。

图;持有;ylabel (“位置”);ylim ([0, 50]);包含(“时间”);xlim([0,长度(detectedLocations)]);

图中包含一个轴对象。axis对象为空。

当第一次检测到物理对象时,创建一个一维恒速卡尔曼滤波器。根据之前的状态预测对象的位置。如果在当前时间步长检测到对象,则使用其位置来更正状态。

Kalman = [];idx = 1: length(detectedLocations) location = detectedLocations{idx};如果isempty(卡尔曼滤波)如果~isempty(location) stateModel = [1 1;0 1];measurementModel = [1 0];卡尔曼=视觉。KalmanFilter (stateModel,measurementModel,“ProcessNoise”1的军医,“MeasurementNoise”4);卡尔曼。状态=[location, 0];结束其他的trackedLocation = predict(kalman);如果~isempty(location)k +的);D =距离(卡尔曼,位置);标题(sprintf (“距离:% f ', d));trackedLocation =正确的(kalman,位置);其他的标题(缺失的检测);结束暂停(0.2);情节(idx trackedLocation,“罗”);结束结束传奇(检测到的位置的,“预测/纠正位置”);

图中包含一个轴对象。标题为Distance:3.126145的axis对象包含66个line类型的对象。这些对象表示检测到的位置,预测/修正的位置。

使用卡尔曼滤波器从被零均值高斯噪声破坏的随机信号中去除噪声。

合成一个值为1的随机信号,该信号被一个标准偏差为0.1的零均值高斯噪声破坏。

X = 1;Len = 100;Z = x + 0.1 * randn(1,len);

用卡尔曼滤波器去除信号中的噪声。状态被期望为常数,测量与状态相同。

stateTransitionModel = 1;measurementModel = 1;Obj =视觉。KalmanFilter(stateTransitionModel,measurementModel,“StateCovariance”, 1“ProcessNoise”1 e-5“MeasurementNoise”1依照);Z_corr = 0 (1,len);Idx = 1: len predict(obj);Z_corr (idx) =正确(obj,z(idx));结束

阴谋的结果。

图,plot(x * ones(1,len),“g -”);持有;阴谋(1:len, z,“b +”1: len z_corr,的r -);传奇(原始信号的,噪声信号的,“过滤信号”);

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象分别代表原始信号、噪声信号、滤波信号。

算法

全部展开

参考文献

韦尔奇,格雷格和加里·毕晓普,卡尔曼滤波器简介, tr 95-041。北卡罗来纳大学教堂山分校计算机科学系。

[2]布莱克曼,南卡罗来纳州雷达多目标跟踪应用。Artech House, Inc.,第93页,1986。

扩展功能

版本历史

在R2012b中引入