基于卡尔曼滤波的目标跟踪.rar

  • R0_158922
    了解作者
  • matlab
    开发工具
  • 1.9KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-23 09:40
    上传日期
基于卡尔曼滤波的目标跟踪,使用matlab平台,毕业设计存档用。卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
卡尔曼滤波.rar
  • 卡尔曼滤波
  • extract.m
    1.4KB
  • kalman.m
    2.4KB
内容介绍
clear,clc %读取每帧图像,存入数组 Imzero = zeros(240,320,3); str1='D:\毕业设计\数据集视频\data\in00'; i=1; for n=6954:7254 %每帧图像 str2=int2str(n); str=strcat(str1,str2,'.jpg'); fr1=imread(str); Im(:,:,:,i)=double(fr1)/255; i=i+1; end %背景建模,取前五帧平均值 nFrames = size(Im,4); for i = 1:5 Imzero = Im(:,:,:,i)+Imzero; end Imback = Imzero/5*255; [height,weight,Dim] = size(Imback); %初始化卡曼尔滤波 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]']; %状态转移矩阵 kfinit=0; %初始指针 x=zeros(100,4); %状态矩阵 %初始化背景数组 Imgzeros=zeros(height,weight,3,5); index=0; for i = 1:5 Imgzeros(:,:,:,i) = Im(:,:,:,i); index=index+1; end for i = 1 : nFrames imshow(Im(:,:,:,i)) hold on %更新背景数组 Imgback=zeros(height,weight,3); if index==5 index=0; Imgzeros(:,:,:,index+1)=Im(:,:,:,i); index=index+1; else Imgzeros(:,:,:,index+1)=Im(:,:,:,i); index=index+1; end for a = 1:5 Imgback = Imgzeros(:,:,:,a)+Imgback; end Imgback=Imgback/5*255; % Imwork = Im(:,:,:,i); % % [x2(i),y2(i),width_x(i),width_y(i),cc(i),cr(i),flag] = extractdemo(Imwork,Imback,i); %提取目标 Imwork = Im(:,:,:,i)*255; [x2(i),y2(i),width_x(i),width_y(i),cc(i),cr(i),flag,fore] = extract(Imwork,Imgback,i); % imshow(fore); if flag==0 continue end if (width_x(i)~=0) & (width_y(i)~=0) rectangle('Position',[x2(i) y2(i) width_x(i) width_y(i)],'EdgeColor','r'); % plot(cc(i),cr(i), 'r+'); end hwidth_x(i)=cc(i)-x2(i); hwidth_y(i)=cr(i)-y2(i); %卡尔曼更新 if kfinit==0 xp = [cc(i),cr(i),0,0]' ; %预测状态矩阵 else xp=A*x(i-1,:)'; 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))'; P = (eye(4)-K*H)*PP; %卡尔曼预测 hold on if (width_x(i)~=0) & (width_y(i)~=0) rectangle('Position',[(x(i,1)-hwidth_x(i)) (x(i,2)-hwidth_y(i)) width_x(i) width_y(i)],'EdgeColor','g'); end x1(i)=x(i,1)-cc(i); y1(i)=x(i,2)-cr(i); hold on if (width_x(i)~=0) & (width_y(i)~=0) plot(x(i,1),x(i,2), 'g+'); end drawnow end
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...