【MATLAB图像处理实用案例详解(10)】——基于Kalman滤波的目标跟踪预测红色小球位置

news2025/6/15 17:53:11

目录

    • 一、Kalman滤波
    • 二、Kalman滤波源程序
    • 三、Kalman滤波预测红色小球位置程序实现

一、Kalman滤波

Kalman 滤波算法是一个最优化自回归数据处理算法,对于很多问题的解決,它是最优、效率最高甚至是最有用的。Kalman 滤波的广泛应用己经超过30年,领域包括机器人导航、控制、传感器数据融合以及军事方面的雷达系统、导弹追踪等。近年来 Kalman 滤波被应用于数宇图像处理,例如人脸识别、图像分割、目标跟踪、图像边缘检测等。
首先要引入一个离散控制过程的系统,该系统可用一个线性随机微分方程来描述:
X ( k ) = A X ( k − 1 ) + B U ( k ) + W ( k ) X(k)=AX(k-1)+BU(k)+W(k) X(k)=AX(k1)+BU(k)+W(k)
系统的测量值为:
Z ( k ) = H X ( k ) + V ( k ) Z(k)=HX(k)+V(k) Z(k)=HX(k)+V(k)
上面两个式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,它们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。它们被假设成高斯白噪声,其协方差分别是Q和R(这里假设它们不随系统状态变化而变化)。
对于满足上面条件的线性微分系统,Kalman滤波器是最优的闲心处理器。下面用Kalman滤波器来估计系统的最优化输出。
首先利用系统的过程模型来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,基于系统的上衣状态可以预测出现在状态:
X ( k ∣ k − 1 ) = A X ( k − 1 ∣ k − 1 ) + B U ( k ) X(k|k-1)=AX(k-1|k-1)+BU(k) X(kk1)=AX(k1∣k1)+BU(k)
上式中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,系统结果已经更新,可是对应于X(k|k-1)的协方差还没有更新。用P表示协方差。
P ( k ∣ k − 1 ) = A P ( k − 1 ∣ k − 1 ) A ′ + Q P(k|k-1)=AP(k-1|k-1)A'+Q P(kk1)=AP(k1∣k1)A+Q
式中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A’表示A的转置矩阵,Q是系统过程的协方差。上式就是Kalman滤波器5个公式当中的前两个,也就是对系统的预测。
目前,已有现在状态的预测结果,然后再收集现在状态的测量值,结合预测值和测量值,就可以得到现在状态k的最优化估计值X(k|k):
X ( k ∣ k ) = X ( k ∣ k − 1 ) + K g ( k ) ( Z ( k ) − H X ( k ∣ k − 1 ) ) X(k|k)=X(k|k-1)+Kg(k)(Z(k)-HX(k|k-1)) X(kk)=X(kk1)+Kg(k)(Z(k)HX(kk1))
上式中,Kg为卡尔曼增益:
K g ( k ) = P ( k ∣ k − 1 ) H ′ / H P ( k ∣ k − 1 ) H ′ + R Kg(k)=P(k|k-1)H'/HP(k|k-1)H'+R Kg(k)=P(kk1)H/HP(kk1)H+R
为了使Kalman滤波器不断地运行下去直到系统过程结束,还要更新k状态下X(k|k)的协方差:
P(k|k)=(I-Kg(k)H)P(k|k-1)
上式中,I为单位阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是上式中的P(k-1|k-1).这样,算法就可以自回归的运算下去。

上面五个公式就是Kalman滤波的5个基本公式。

二、Kalman滤波源程序

Kalman滤波源程序如下:

%Kalman滤波
clear all
N=800;
w(1)=0;
%系统预测的随机白噪声
w=randn(1,N) 
x(1)=0;
a=1;
for k=2:N;
%系统的预测值
x(k)=a*x(k-1)+w(k-1); 
end
%测量值的随机白噪声
V=randn(1,N); 
q1=std(V);
Rvv=q1.^2;
q2=std(x);
Rxx=q2.^2;
q3=std(w);
Rww=q3.^2;
c=0.2;
%测量值
Y=c*x+V; 
p(1)=0;
s(1)=0;
for t=2:N;
%前一时刻X的协方差系数
p1(t)=a.^2*p(t-1)+Rww; 
%Kalman增益
b(t)=c*p1(t)/(c.^2*p1(t)+Rvv); 
%经过滤波后的信号
s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1)); 
%t状态下x(t|t)的协方差系数
p(t)=p1(t)-c*b(t)*p1(t); 
end
subplot(131)
plot(x)
title('系统的预测值')
subplot(132)
plot(Y)
title('测量值')
subplot(133)
plot(s)
title('滤波后的信号')

运行结果如下:
在这里插入图片描述

三、Kalman滤波预测红色小球位置程序实现

Kalman滤波是一种最优化递归处理算法,其具有如下特点:
①Kalman滤波充分利用如下信息估计感兴趣变量当前的取值:系统和测量装置的动态特性;系统噪声、测量误差和动态模型的不确定性的统计描述;感兴趣变量的初始条件的相关信息。
②Kalman滤波不需要保存先前的数据,当进行新的测量时也不需要对原来数据进行处理。
③Kalman滤波算法获得理想滤波效果的前提是,必须已知系统模型以及系统噪声和量测噪声的统计模型。
④Kalman滤波的噪声过程必须为零均值白噪声。

运行结果如下:
在这里插入图片描述
球横纵坐标的位置曲线如下:
在这里插入图片描述


完整代码参考链接:https://download.csdn.net/download/didi_ya/87692167。
如果对你有所帮助,记得点个赞哟~

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

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

相关文章

LeetCode-120. 三角形最小路径和

目录题目思路动态规划(由上到下)动态规划(由下到上)题目来源 120. 三角形最小路径和 题目思路 由上往下 动态规划(由上到下) 1.确定dp数组以及下标的含义 dp[i][j] 表示从点 (i,j)) 到底边的最小路径和。 2.确定递推公式 常规: triangle[i][j]一定会经过tri…

SQL语句性能分析

1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。 整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察&…

连续可调稳压升压电源模块12v转12kv 24v转15kv 12v转5000v

GRB系列高压电源模块是一款工业级高性能微型DC/DC电源模块,是目前全球实 现输出连续可调稳压1000-15000V的超小体积的高压电源模块。具有体积小、功 耗低、响应快、输出纹波低、输出稳定度高、输出电压宽范围可调、自带过流保 护等优点,是一款专门为工业…

uniapp 之 小球根据当前时间 显示位置

目录 效果图 前言 总代码 1. template 代码 2. script 代码 3. js文件 4.样式 注解 1.小球运动代码 2. picker 时间选择器 补充 效果图 前言 最里面的是一张图片&#xff0c;并不是手写的样式&#xff0c; 总代码 1. template 代码 <uni-popup ref"appointm…

一图看懂 stat 模块:解析 stat() 结果, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 stat 模块&#xff1a;解析 stat() 结果, 资料整理笔记&#xff08;大全&#xff09;) 摘要 全文介绍系统内置 stat 模块、函数、类及类的方法和属性。 它通过代码抓…

通过自动化和条形码优化供应链

Welch Allyn是全球领先的医疗诊断设备制造商&#xff0c;开发了数百种突破性产品和技术&#xff0c;使一线从业者能够提供卓越的患者护理。它在26个不同的国家拥有近2&#xff0c;500名员工。 一、面临的挑战提高运营效率 原因&#xff1a;用户需要长途跋涉并浏览多个数据条目以…

HCIA第一次笔记

目录 网络基础 扩大网络的两种途径 1.增加网络节点——集线器(HUB) 2.增大传输距离——中继器(放大器) 解决网络问题——网桥、交换机(二层设备) 交换机——读和重写的操作 解决洪泛——路由器(三层设备) 区分是否在同一个洪泛范围——IP(Internet Protocol)地址 ARP协…

redis缓存穿透、案例

1、缓存穿透是什么 缓存穿透是指查询一个一定不存在的数据&#xff0c;由于缓存是不命中时需要从数据库查询&#xff0c;查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到数据库去查询&#xff0c;进而给数据库带来压力。 其实&#xff1a;就是黑客…

多线程冲突处理方法,锁

线程之间是可以共享进程的资源&#xff0c;比如代码段、堆空间、数据段、打开的文件等资源&#xff0c;但每个线程都有自己独立的栈空间。 那么问题就来了&#xff0c;多个线程如果竞争共享资源&#xff0c;如果不采取有效的措施&#xff0c;则会造成共享数据的混乱。 我们做…

STM32+收发器实现CAN和485总线

RS485总线是一种常见的(Recommended Standard)串行总线标准(485是它的标识号)&#xff0c;采用平衡发送与差分接收的方式&#xff0c;因此具有抑制共模干扰的能力。CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现分布式实时控制的串行通信…

推特爆火!揭晓大模型的未来何去何从

文 | 智商掉了一地巨大挑战 or 发展契机&#xff0c;ChatGPT 和 GPT-4 出现后&#xff0c;大模型的未来方向该何去何从&#xff1f;近期&#xff0c;自然语言处理领域的快速发展引起了广泛的关注&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;的兴起已经推动了该领…

4.13、TCP通信流程

4.13、TCP通信流程1.TCP与UDP的区别&#xff08;传输层协议&#xff09;2.TCP通信流程①服务器端&#xff08;被动接受连接的角色&#xff09;②客户端&#xff08;主动发起连接&#xff09;1.TCP与UDP的区别&#xff08;传输层协议&#xff09; UDP:用户数据报协议&#xff0…

【Linux系统文件管理(cat,awk指令)和网络IP配置,广播地址,修改子网掩码以及ping网关地址】

文本操作实验 &#xff08;1&#xff09;使用cat&#xff0c;创建文件test1&#xff0c;输入"Line1"并且按下Ctrl-D保存文件。 创建text01.txt文件&#xff1a; cat > text01.txt 回车&#xff1b;输入自己想要输入的内容 键盘上面按下Ctrl-D就可以成功创建并保存…

【Java版oj】day24洗牌、MP3光标位置

目录 一、洗牌 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、MP3光标位置 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、洗牌 &#x…

西安石油大学C++上机实验 上机三:继承和派生程序设计(2学时)

上机三&#xff1a;继承和派生程序设计&#xff08;2学时&#xff09; 实验目的 了解继承在面向对象程序设计中的重要作用。 理解继承与派生的概念。 掌握通过继承派生出一个新类的方法。 掌握虚基类的作用和用法。 实验内容 P169&#xff1a;5.19, 5.22 上机内容 先设…

Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

krita系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文…

TCP和UDP(嵌入式学习)

TCP和UDPTCP&#xff08;即传输控制协议&#xff09;TCP连接建立(三次握手)TCP连接终止&#xff08;四次挥手&#xff09;UDP &#xff1a;用户数据报协议适用情况UDP 洪水UDP TCP 协议相同点TCP&#xff08;即传输控制协议&#xff09; 是一种面向连接的传输层协议&#xff0…

Vue ElementUI Axios 前后端案例(day01)

前言js 问js是什么&#xff0c;他有什么作用&#xff0c;与html和css的区别是什么 JavaScript&#xff08;简称JS&#xff09;是一种脚本语言&#xff0c;用于在网页上实现交互效果、动态效果和动态数据更新等功能。它是一种解释性语言&#xff0c;需要在浏览器中解释和执行。…

Linux中安装新版minio(centos7版本)

1. 背景需求 由于一些限制,在客户现场的Linux操作系统中,没有安装docker k8s等容器,无法直接使用镜像安装,而且客户要求只能在原始的操作系统中安装最新版的minio,(为什么需要安装最新版的minio,因为检测国网检测到之前版本的minio有漏洞,需要安装新版的minio). 2. 安装minio…

Direct3D 12——纹理——纹理缩小

纹理缩小(miniflcation )是纹理放大的逆运算。在缩小的过程中&#xff0c;大量纹素将被映射到少数纹理之 上 。例如&#xff0c;考虑下列情景&#xff1a;假设有一堵被256x256纹理所映射的墙壁&#xff0c;玩家的观察视角正紧盯着它&#xff0c;并 逐渐向后退却。在此过程中&am…