【目标跟踪】Kalman滤波目标跟踪【含Matlab源码 388期】

news2024/9/25 7:20:06

⛄一、获取代码方式

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

获取代码方式2:
完整代码已上传我的资源:【目标跟踪】基于matlab Kalman滤波目标跟踪【含Matlab源码 388期】
备注:
订阅紫极神光博客付费专栏,可免费获得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.01eye(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 flag0
continue
end
%用绿色标出球实际运动的位置
hold on
for c = -1radius: radius/20 : 1radius
r = sqrt(radius2-c2);
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=Ax(i-1,:)’ + Bu
end
kfinit=1;
PP = A
PA’ + Q
K = PP
H’inv(HPPH’+R)
x(i,:) = (xp + K
([cc(i),cr(i)]’ - Hxp))';
x(i,:)
[cc(i),cr(i)]
P = (eye(4)-K
H)PP
%用红色画出球实际的运动位置
hold on
for c = -1
radius: radius/20 : 1*radius
r = sqrt(radius2-c2);
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.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊一聊Unity的Test Framework应该怎么用

其实 Unity 很早就出了这个包&#xff0c;不过感觉基本上没什么人用&#xff0c;这么好的东西&#xff0c;本着让所有人都能了解的态度&#xff0c;今天就来聊聊它应该怎么使用。 第1步先安装它&#xff0c;或者给它升级到最新。 第2步打开工具的主窗口 支持分别在 PlayMode 或…

unity 2022大三期末大作业 3D立体魔方游戏(附下载链接)

unity 2022大三期末大作业 3D立体魔方游戏 这是本人的一个unity期末大作业&#xff0c;实现比较简单&#xff0c;unity版本是2018 的&#xff0c;导入即可运行无错误 下载链接 游戏可以一键打乱魔方的顺序&#xff0c;也可以一键还原等等功能&#xff0c;实现了魔方的使用功能…

手把手教你,从零开始搭建Spring Cloud Alibaba这份笔记太牛了

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案&#xff0c;是阿里巴巴开源中间件与 Spring Cloud 体系的融合。 Springcloud 和 Srpingcloud Alibaba 区别&#xff1f; SpringCloud&#xff1a; 部分组件停止维护和更新&#xff0c;给开发带来不便;SpringCl…

[附源码]Nodejs计算机毕业设计基于推荐算法的鞋服代购平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

【代码规范】lombok注解使用

【代码规范】lombok注解使用一、前言二、常用注解三、使用示例一、前言 上一篇文章&#xff08;【JVM知识】插入式注解处理器实现java编程规范检测&#xff09;总结了一下插入式注解&#xff0c;我们知道lombok插件是通过插入式注解处理器实现的&#xff0c;并且lombok插件在工…

版本控制器Git的使用。

目录 一、分布式版本工具 1、基本介绍 2、Git 安装配置 3、本地仓库和基础指令 二、分支 1、分支概述 2、解决冲突 三、Git远程仓库 1、常用的托管服务[远程仓库] 2、配置SSH公钥 3、操作远程仓库 4、解决合并冲突 三、IDEA中使用Git 1、在Idea中配置Git 2、ID…

什么是用户标签体系?

一.概况 标签&#xff1a;对某一类特定群体或对象的某项特征进行抽象分类和概括 标签体系&#xff1a;根据用户的“基本属性”&#xff0c;“行为特征”&#xff0c;“社交网络”&#xff0c;“心理特征” 和 “兴趣爱好”等&#xff0c;把个性化的用户&#xff0c;打上标签化…

入门:认识容器镜像

要启动容器最关键的就是镜像&#xff0c;我们来看看镜像相关的介绍。 初识容器镜像 首先我们来了解一下镜像的相关操作&#xff0c;比如现在我们希望把某个镜像从仓库下载到本地&#xff0c;这里使用官方的hello-world镜像&#xff1a; docker pull hello-world 只需要输入pull…

【CANN训练营第三季】2022年度第三季进阶班之AI目标属性编辑应用-数据预处理

了解华为的生态已经两年有余&#xff0c;用CANN做过两个模型的转换&#xff0c;跑过推理测试&#xff0c;但是感觉还是对CANN框架一知半解&#xff0c;恰巧看到2022年度第三季度训练营开班&#xff0c;赶紧报名参与上车。 本次课程是进阶版第一节正式课&#xff0c;主要讲解的…

零基础自学Python要多久才能学会?

零基础自学Python要多久&#xff1f;学习Python开发的周期因人而异&#xff0c;由于基础、学习效率不同有的人学习进度快&#xff0c;需要六个月到一年不等&#xff0c;有的人自律性较差可能需要更久的时间才能学会&#xff0c;今天小编分享下6个月学习周期内的自学Python的学习…

数据结构---计数排序

计数排序计数排序JAVA实现计数排序优化存在的问题1&#xff1a;存在的问题2JAVA实现局限性冒泡排序&#xff0c;还是快速排序&#xff0c;都是基于元素之间的比较来进行排序 有一些特殊的排序并不基于元素比较&#xff0c;如计数排序、桶排序、基数排序。 计数排序&#xff1a…

0. Arthas的基本安装和使用

我们慢慢寻找&#xff0c;直到找到我们的方向。 选择了方向&#xff0c;便一往无前。 我们爱那少年&#xff0c;一如爱我们自己。 Arthas 的简介 Arthas 的官方文档: https://arthas.aliyun.com/doc/ Arthas的官方命令文档: https://arthas.aliyun.com/doc/advanced-use.html …

数据结构-难点代码突破(C++实现图广度优先遍历,深度优先遍历,广度/深度优先遍历生成树和森林,广度优先遍历求单源非带权图两点最短路径)

注意&#xff1a;为了简便起见&#xff0c;这里采用邻接矩阵的方式储存图的边信息 文章目录1.邻接矩阵图的广度优先遍历单源非带权图的两点最短路径2. 邻接矩阵图的深度优先遍历3. 广度/深度优先遍历生成树和森林深度优先生成树与森林广度优先遍历生成树与森林图的遍历是指从图…

Compose回忆童年 - 手拉灯绳-开灯/关灯

一、前言 偶然间想到小时候顺着那白色开关垂下来的灯绳&#xff0c;拉一下“咔哒”一声&#xff0c;再拉一下又是“咔哒”一声。当时年龄小感觉新奇总是把灯开了关又关了开的拉着玩&#xff0c;以至于好几次拉坏了开关灯绳。 今天我们在手机上做一个拉不坏的灯绳&#x1f604…

毕业四年,我当初是如何走上编程这条路的!

感概万千&#xff0c;毕业已达4年之久。 想起在大学时期学习编程的事情&#xff0c;感觉很有意义&#xff0c;在此记录回顾一下。 希望自己初心未变&#xff0c;勇往向前 现状与过去 20210706 目前的我是在天津一家公司做前端开发&#xff0c;主要用Python。 从毕业实习到…

入门:容器工作机制概述

我们先来看看Docker的整体架构&#xff1a; 实际上分为三个部分&#xff1a; Docker 客户端&#xff1a;也就是我们之前使用的docker命令&#xff0c;都是在客户端上执行的&#xff0c;操作会发送到服务端上处理。 Docker 服务端&#xff1a;服务端就是启动容器的主体了&#x…

Java项目:SSM网上超市购物商城管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;分为普通用户、管理员两种角色。前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 管理员角色包含以下功…

毕业设计 单片机温湿度环境检测仪 - stm32 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理5 部分核心代码6 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长…

Dynamic RSA System 设计与实现

一、背景 在实现了静态的加解密工具后&#xff0c;感觉不够灵活&#xff0c;想设计一个动态生成 RSA KeyPair 的中间系统&#xff0c;暂且称为 Dynamic RSA System&#xff0c;以达到自动化维护信安高墙的效果。 加解密和签名校验工具_余衫马的博客-CSDN博客_校验和工具RSA加…

Zero-sho原先的升级版:hourglass网络:U-Net

ZMFF: Zero-shot multi-focus image fusion &#xff08;ZMFF: Zero-shot 多聚焦图像融合&#xff09; &#xff08;本论文的先导片&#xff1a;ZERO-SHOT MULTI-FOCUS IMAGE FUSION&#xff09; 这是我们之前的扩展工作。在ZMFF,我们做一些改动和改进相比原来的框架。首先&…