精华内容
下载资源
问答
  • Kalman滤波在视频图像目标跟踪中的应用
  • Kalman滤波在视频图像目标跟踪中的应用
  • 完整代码,可直接运行
  • 在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用...

    1 简介

    在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用Matlab对其仿真.仿真结果显示跟踪效果非常好,证明采用该算法来跟踪动目标物有效可行,具有一定的研究价值.

    2 部分代码

    %使用卡尔曼滤波方法对飞行航班进行轨迹预测
    %数据来源:
    %航   班:CES9937     宁波栎社国际机场飞往成都双流国际机场
    %飞行时间:
    %说明:取起飞后,前20组数据作为实验数据。对时间点进行近似取值,假设每隔30s上报一次数据
    clear;
    clc;
    %采样点的个数
    N=228;
    %测试数据:纬度
    latitude=load('C:\Users\lenovo\Desktop\基于MATLAB的运动轨迹预测,卡尔曼滤波实现\latitude.txt');
    %真实维度值
    lat=latitude;
    %卡尔曼滤波处理的状态,即估计值
    lat_kf=zeros(1,N);
    %测报值
    lat_z=zeros(1,N);
    P=zeros(1,N);
    %初始纬度值
    lat(1)=29.8131;
    %初始值的协方差
    P(1)=0.09;
    %初始测报值
    lat_z(1)=29.8027;
    %初始估计状态。假设和初始测报值相同
    lat_kf(1)=lat_z(1);
    %噪声方差
    %系统噪声方差
    Q=0.1;
    %测量噪声方差
    R=0.001;
    %方差决定噪声大小
    W=sqrt(Q)*randn(1,N);
    V=sqrt(R)*randn(1,N);
    end
    %计算误差
    %测量值与真实值之间的偏差
    Err_Messure=zeros(1,N);
    %kalman估计与真实值之间的偏差
    Err_Kalman=zeros(1,N);
    for k=1:N
       Err_Messure(k)=abs(lat_z(k)-lat(k));
       Err_Kalman(k)=abs(lat_kf(k)-lat(k));
    end
    t=1:N;
    %滤波效果图
    figure
    plot(t,lat,'g-',t,lat_z,'b-',t,lat_kf,'r-');
    legend('真实值','观测值','kalman滤波值');
    xlabel('测报时间点');
    ylabel('纬度值');
    %误差分析图
    figure
    plot(t,Err_Messure,'b-',t,Err_Kalman,'r-');
    legend('测报偏差','kalman滤波偏差');
    xlabel('测报时间点');
    ylabel('纬度偏差值');

    3 仿真结果

    4 参考文献

    [1]张长春, 黄英, & 杨刚. (2009). 卡尔曼滤波在跟踪运动目标中的应用及仿真. 现代电子技术(20), 54-56.

    图片

    展开全文
  • Kalman滤波在视频图像目标跟踪中的应用,MATLAB仿真应用
  • 交互多模型Kalman滤波目标跟踪中的应用 MATLAB仿真实验
  • 目标跟踪是计算机视觉领域的重要任务之一,工业自动化控制、自动驾驶、安保监控、军事目标侦察等民用和军事领域中广泛存在对视频中的运动目标进行追踪的需求。传统的目标跟踪方法Camshift算法仅基于单一色调直方图...
  • 卡尔曼滤波目标跟踪实例 opencv 卡尔曼滤波目标跟踪实例 opencv 卡尔曼滤波目标跟踪实例 opencv
  • Kalman滤波技术在目标跟踪中的应用研究
  • kalman滤波实现一个视频序列中目标检测与跟踪
  • 写了一些关于图像卡尔曼滤波追踪的例子,程序含有说明解释,适合初学者。
  • 使用kalman算法对目标进行跟踪,并对kalman做出讲解
  • 针对传统的Camshift算法在跟踪时需要手动定位目标,在颜色干扰、遮挡等复杂背景中容易跟丢目标的问题,提出了一种基于Camshift和Kalman滤波的自动跟踪算法。首先利用帧间差分法和Canny边缘检测法分割出运动目标的...
  • kalman滤波在视频图像目标跟踪,卡尔曼滤波目标跟踪,matlab源码.zip
  • 一、简介 运动物体跟踪实际上就是对运动物体位置的测量和估计,和称小兔兔体重一样,我们也有两个渠道可以知道运动物体的位置,一个是我们观察到的,目标A在的某一帧图像的某个坐标点,另一...这就是全部的用Kalman滤波

    一、获取代码方式

    获取代码方式1:
    通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

    获取代码方式2:
    通过紫极神光博客主页开通CSDN会员,凭支付凭证,私信博主,可获得此代码。

    获取代码方式3:
    完整代码已上传我的资源:【目标跟踪】基于matlab Kalman滤波目标跟踪【含Matlab源码 388期】
    备注:开通CSDN会员,仅只能免费获得1份代码(有效期为开通日起,三天内有效);
    订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

    二、Kalman滤波目标跟踪简介

    运动物体跟踪实际上就是对运动物体位置的测量和估计,和称小兔兔体重一样,我们也有两个渠道可以知道运动物体的位置,一个是我们观察到的,目标A在的某一帧图像的某个坐标点,另一个是我们根据前面几帧里目标的运动情况估计出来的,这个估计是假定目标运动是光滑的(当然也可以有其他模型),在这个根据以前运动做出的估计和我们测出来的目标点位置之间做个加权平均,就是现在的估计值,对下一帧做同样处理,加权平均的权值就是Kalman增益,根据Kalman提供的算法可由以往的误差大小和分布推出,这就是全部的用Kalman滤波做目标跟踪的概念。
    Kalman滤波理论主要应用在现实世界中个,并不是理想环境。主要是来跟踪的某一个变量的值,跟踪的依据是首先根据系统的运动方程来对该值做预测,比如说我们知道一个物体的运动速度,那么下面时刻它的位置按照道理是可以预测出来的,不过该预测肯定有误差,只能作为跟踪的依据。另一个依据是可以用测量手段来测量那个变量的值,当然该测量也是有误差的,也只能作为依据,不过这2个依据的权重比例不同。最后kalman滤波就是利用这两个依据进行一些列迭代进行目标跟踪的。
    在这个理论框架中,有2个公式一定要懂,即:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、部分源代码

    clear,clc
    % 计算背景图像
    Imzero = zeros(240,320,3);
    for i = 1:5
    Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));
    Imzero = Im{i}+Imzero;
    end
    Imback = Imzero/5;
    [MR,MC,Dim] = size(Imback);
    % Kalman滤波器初始化
    R=[[0.2845,0.0045]',[0.0045,0.0455]'];
    H=[[1,0]',[0,1]',[0,0]',[0,0]'];
    Q=0.01*eye(4);
    P = 100*eye(4);
    dt=1;
    A=[[1,0,0,0]',[0,1,0,0]',[dt,0,1,0]',[0,dt,0,1]'];
    g = 6; 
    Bu = [0,0,0,g]';
    kfinit=0;
    x=zeros(100,4);
    % 循环遍历所有图像
    for i = 1 : 60
      % 导入图像
      Im = (imread(['DATA/',int2str(i), '.jpg'])); 
      imshow(Im)
      imshow(Im)
      Imwork = double(Im);
      %提取球的质心坐标及半径
      [cc(i),cr(i),radius,flag] = extractball(Imwork,Imback,i);
      if flag==0
        continue
      end
      %用绿色标出球实际运动的位置
    hold on
        for c = -1*radius: radius/20 : 1*radius
          r = sqrt(radius^2-c^2);
          plot(cc(i)+c,cr(i)+r,'g.')
          plot(cc(i)+c,cr(i)-r,'g.')
    end
      % Kalman器更新
      if kfinit==0
        xp = [MC/2,MR/2,0,0]'
      else
        xp=A*x(i-1,:)' + Bu
      end
      kfinit=1;
      PP = A*P*A' + Q
      K = PP*H'*inv(H*PP*H'+R)
      x(i,:) = (xp + K*([cc(i),cr(i)]' - H*xp))';
      x(i,:)
      [cc(i),cr(i)]
      P = (eye(4)-K*H)*PP
    %用红色画出球实际的运动位置
      hold on
        for c = -1*radius: radius/20 : 1*radius
          r = sqrt(radius^2-c^2);
          plot(x(i,1)+c,x(i,2)+r,'r.')
          plot(x(i,1)+c,x(i,2)-r,'r.')
        end
          pause(0.3)
    end
    function [cc,cr,radius,flag]=extractball(Imwork,Imback,index)
    % 功能:提取图像中最大斑点的质心坐标及半径
    % 输入:Imwork-输入的当前帧的图像;Imback-输入的背景图像;index-帧序列图像序号
    % 输出:cc-质心行坐标;cr-质心列坐标;radius-斑点区域半径;flag-标志
      cc = 0;
      cr = 0;
      radius = 0;
      flag = 0;
      [MR,MC,Dim] = size(Imback);
      % 将输入图像与背景图像相减,获得差异最大的区域
      fore = zeros(MR,MC);          
      fore = (abs(Imwork(:,:,1)-Imback(:,:,1)) > 10) ...
         | (abs(Imwork(:,:,2) - Imback(:,:,2)) > 10) ...
         | (abs(Imwork(:,:,3) - Imback(:,:,3)) > 10);  
      foremm = bwmorph(fore,'erode',2); % 运用数学形态学去除微小的噪声
      % 选择大的斑点对其周围进行标记
      labeled = bwlabel(foremm,4);
      stats = regionprops(labeled,['basic']);
      [N,W] = size(stats);
      if N < 1
        return   
      end
     % 如果大的斑点的数量大于1,则用冒泡法进行排序
      id = zeros(N);
      for i = 1 : N
        id(i) = i;
      end
      for i = 1 : N-1
        for j = i+1 : N
          if stats(i).Area < stats(j).Area
            tmp = stats(i);
            stats(i) = stats(j);
            stats(j) = tmp;
            tmp = id(i);
            id(i) = id(j);
            id(j) = tmp;
          end
        end
      end
    

    四、运行结果

    在这里插入图片描述

    五、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
    [2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
    [3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
    [4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

    展开全文
  • 在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用...

    1 简介

    在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用Matlab对其仿真.仿真结果显示跟踪效果非常好,证明采用该算法来跟踪动目标物有效可行,具有一定的研究价值.​

    2 部分代码

     
    

    clear,clc

    % 计算背景图像

    Imzero = zeros(240,320,3);

    for i = 1:5

    Im{i} = double(imread(['DATA/',int2str(i),'.jpg']));

    Imzero = Im{i}+Imzero;

    end

    Imback = Imzero/5;

    [MR,MC,Dim] = size(Imback);

    % Kalman滤波器初始化

    R=[[0.2845,0.0045]',[0.0045,0.0455]'];

    H=[[1,0]',[0,1]',[0,0]',[0,0]'];

    Q=0.01*eye(4);

    P = 100*eye(4);

    dt=1;

    A=[[1,0,0,0]',[0,1,0,0]',[dt,0,1,0]',[0,dt,0,1]'];

    g = 6; 

    Bu = [0,0,0,g]';

    kfinit=0;

    x=zeros(100,4);

    % 循环遍历所有图像

    for i = 1 : 60

      % 导入图像

      Im = (imread(['DATA/',int2str(i), '.jpg'])); 

      imshow(Im)

      imshow(Im)

      Imwork = double(Im);

      %提取球的质心坐标及半径

        end

          pause(0.3)

    end

    % 画出球横纵坐标的位置

      figure

      plot(cc,'r*')

      hold on

      plot(cr,'g*')

    %噪声估计

      posn = [cc(55:60)',cr(55:60)'];

      mp = mean(posn);

      diffp = posn - ones(6,1)*mp;

    Rnew = (diffp'*diffp)/5;

     
    

    3 仿真结果

    4 参考文献

    [1]张长春, 黄英, & 杨刚. (2009). 卡尔曼滤波在跟踪运动目标中的应用及仿真. 现代电子技术(20), 54-56.

     

    展开全文
  • 这是Kalman滤波的一个简单应用实例,实现了对自由落体物体的位移和速度的估计。代码简单,每一行都添加注释,方便大家的理解。
  • 采用卡尔曼滤波目标跟踪算法,完整的matlab代码,直接运行即可。代码简洁,说明完整,有助于深入理解卡尔曼算法,代码可直接移植。
  • 这是一个kalamn滤波器的简单历程,对于初学者会有很大的帮助
  • http://blog.sina.com.cn/s/blog_ea828d2a0102wgun.html
    展开全文
  • C ++中基于卡尔曼滤波的多目标跟踪的实现 安装 编译并生成重构文件mkdir build cd build cmake .. # 生成供make编译的规则文件makefile make # 编译源文件并生成可执行文件multiple_target_tracking 运行 启动多目标...
  • 二维Kalman滤波

    2019-03-05 20:17:38
    本程序仿真了2D直角坐标下目标运动的kalman跟踪,并对其性能进行分析。
  • matlab官方所提供的基于卡尔曼滤波目标跟踪算法demo,核心部分使用了计算机视觉工具箱,本人将其简化并加入汉语注释,使其更加通俗易懂,运行环境为matlab2014
  • Kalman滤波器理论与应用——基于MATLAB实现配套程序
  • Kalman滤波 过程 卡尔曼滤波对模型的预测值和实际的观测值进行加权,迭代计算出未来的状态,具体过程如下: 使用上一次的最优状态估计和最优估计误差去计算这一次的先验状态估计和先验误差估计; 使用1得到的本次...
  • Kalman滤波方法估计目标航迹的Matlab源程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,118
精华内容 847
关键字:

kalman滤波目标跟踪