主要内容

vision.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= vision.KalmanFilter返回一个离散时间的卡尔曼滤波器,系统恒定速度。

kalmanFilter= vision.KalmanFilter (StateTransitionModel,MeasurementModel)另外配置控制模型,B

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

属性

全部展开

模型描述状态之间的过渡时间步骤(一个),指定为一个——- - - - - -矩阵。在对象构造,该属性不能被改变。这个属性有关一个变量状态空间模型。

模型描述状态测量转换(H),指定为一个N——- - - - - -矩阵。在对象构造,该属性不能被改变。这个属性有关H变量状态空间模型。

模型描述控制输入状态转换(B),指定为一个——- - - - - -l矩阵。在对象构造,该属性不能被改变。这个属性有关B变量thestate-space模型。

状态(x),指定为一个标量或元向量。如果您指定状态作为一个标量,它将扩展到一个元向量。这个属性有关x变量状态空间模型。

状态估计误差协方差(P),指定为一个标量或——- - - - - -矩阵。如果您指定StateCovariance作为标量扩展到一个——- - - - - -对角矩阵。这个属性有关P变量状态空间系统。

过程噪声协方差(),指定为一个标量或——- - - - - -矩阵。如果您指定ProcessNoise作为标量扩展到一个——- - - - - -对角矩阵。这个属性有关变量状态空间模型。

测量噪声协方差(R),指定为一个标量或N——- - - - - -N矩阵。如果您指定MeasurementNoise作为标量扩展到一个N——- - - - - -N对角矩阵。这个属性有关R变量状态空间模型。

对象的功能

使用预测正确的基于检测结果的功能。使用距离函数来找到最好的比赛。

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

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

  • 当跟踪对象未被检测到,打电话预测功能,但不是正确的函数。当跟踪对象缺失或闭塞,没有测量。使用以下逻辑:设置功能

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

  • 如果跟踪对象可用后失踪的过去t1连续的时间步骤,您可以调用预测函数t次了。这个语法是特别有用的处理异步视频. .例如,

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

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

例子

全部折叠

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

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

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

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

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

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

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

图包含一个坐标轴对象。坐标轴对象是空的。

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

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

图包含一个坐标轴对象。坐标轴对象标题距离:3.126145包含66行类型的对象。这些对象代表检测位置,预测/纠正位置。

使用卡尔曼滤波器来去除随机噪声信号被一个零均值高斯噪声。

合成有价值的随机信号1和损坏的零均值高斯噪声标准差为0.1。

x = 1;len = 100;z = x + 0.1 * randn (len);

将噪声从信号通过使用卡尔曼滤波器。国家预计将常数,和测量是一样的状态。

stateTransitionModel = 1;measurementModel = 1;obj = vision.KalmanFilter (stateTransitionModel measurementModel,“StateCovariance”,1“ProcessNoise”1 e-5“MeasurementNoise”1依照);len z_corr = 0 (1);idx = 1: len预测(obj);z_corr正确(idx) = (obj, z (idx));结束

阴谋的结果。

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

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。这些对象代表原始信号、噪声信号、过滤信号。

算法

全部展开

引用

[1]韦尔奇,格雷格和加里•主教介绍了卡尔曼滤波,TR 95 - 041。北卡罗莱纳大学教堂山分校计算机科学系。

[2]Blackman, S。多个目标与雷达跟踪应用程序。Artech房子,Inc ., 93年,1986页。

扩展功能

介绍了R2012b