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

• R0_158922
了解作者
• matlab
开发工具
• 1.9KB
文件大小
• rar
文件格式
• 0
收藏次数
• VIP专享
资源类型
• 0
下载次数
• 2022-02-23 09:40
上传日期

• 卡尔曼滤波
• 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的...