0

0

多目标跟踪之卡尔曼滤波

P粉084495128

P粉084495128

发布时间:2025-07-22 14:00:25

|

373人浏览过

|

来源于php中文网

原创

卡尔曼滤波适用于含不确定信息的动态系统,可推测系统下一步状态,优点是内存占用小、速度快,适合实时和嵌入式系统。在多目标跟踪中,能处理目标位置等测量值的噪声,实现对目标位置的滤波、预测等。其通过高斯分布、协方差矩阵等,结合预测与传感器读数来优化估计。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

多目标跟踪之卡尔曼滤波 - php中文网

多目标跟踪之卡尔曼滤波

  • 为后期写多目标跟踪准备的算法(用来多目标跟踪预测)
  • 多目标跟踪匹配算法:
  • 多目标跟踪之二分图无权匹配——匈牙利算法
  • 多目标跟踪加权二分图匹配 ——KM

1 定义

只要是存在不确定信息的动态系统,卡尔曼滤波就可以对系统下一步要做什么做出有根据的推测。即便有噪声信息干扰,卡尔曼滤波通常也能很好的弄清楚究竟发生了什么,找出现象间不易察觉的相关性因此卡尔曼滤波非常适合不断变化的系统,它的优点还有内存占用较小(只需保留前一个状态)、速度快,是实时问题和嵌入式系统的理想选择。

2 应用

比如跟踪目标,但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。

3 卡尔曼滤波眼里的行人跟踪问题

  • 下面是图例公式的描述,初学同学可能有点蒙,建议去查一下卡尔曼滤波相关视频(然后发现还是蒙/坏笑/,但每次的学习都会有新的发现/加油/)
  • 下面是UP学习了不错文章作者Bzarg
  • 一个包含位置信息和速度信息的状 x=(p,v)

  • 卡尔曼滤波假设两个变量(在我们的例子里是位置和速度)都应该是随机的,而且符合高斯分布。如下图 多目标跟踪之卡尔曼滤波 - php中文网

  • 位置和速度是不相关的,这意味着我们不能从一个变量推测另一个变量。那么如果位置和速度相关呢?如下图所示,人前往特定位置的可能性取决于它拥有的速度。多目标跟踪之卡尔曼滤波 - php中文网

  • 这不难理解,如果基于旧位置估计新位置,我们会产生这两个结论:如果速度很快,人可能移动得更远,所以得到的位置会更远;如果速度很慢,人就走不了那么远。

  • 这种关系对目标跟踪来说非常重要,因为它提供了更多信息:一个可以衡量可能性的标准。这就是卡尔曼滤波的目标:从不确定信息中挤出尽可能多的信息!

  • 为了捕获这种相关性,我们用的是协方差矩阵。简而言之,矩阵的每个值是第i个变量和第j个变量之间的相关程度(由于矩阵是对称的,i和j的位置可以随便交换)。我们用表示协方差矩阵,在这个例子中,就是多目标跟踪之卡尔曼滤波 - php中文网

多目标跟踪之卡尔曼滤波 - php中文网

  • 为了把以上关于状态的信息建模为高斯分布(图中色块),我们还需要k时的两个信息:最佳估计多目标跟踪之卡尔曼滤波 - php中文网(均值,也就是多目标跟踪之卡尔曼滤波 - php中文网,协方差矩阵多目标跟踪之卡尔曼滤波 - php中文网。(虽然还是用了位置和速度两个变量,但只要和问题相关,卡尔曼滤波可以包含任意数量的变量)

多目标跟踪之卡尔曼滤波 - php中文网

  • 接下来,我们要通过查看当前状态(k-1时)来预测下一个状态(k时)。这里我们查看的状态不是真值,但预测函数无视真假,可以给出新分布:多目标跟踪之卡尔曼滤波 - php中文网

我们可以用矩阵多目标跟踪之卡尔曼滤波 - php中文网表示这个预测步骤:

多目标跟踪之卡尔曼滤波 - php中文网

  • 它从原始预测中取每一点,并将其移动到新的预测位置。如果原始预测是正确的,系统就会移动到新位置。这是怎么做到的?为什么我们可以用矩阵来预测人下一刻的位置和速度?下面是个简单公式:

多目标跟踪之卡尔曼滤波 - php中文网

  • 换成矩阵形式:

多目标跟踪之卡尔曼滤波 - php中文网

  • 这是一个预测矩阵,它能给出人的下一个状态,但目前我们还不知道协方差矩阵的更新方法。这也是我们要引出下面这个等式的原因:如果我们将分布中的每个点乘以矩阵A,那么它的协方差矩阵会发生什么变化

多目标跟踪之卡尔曼滤波 - php中文网

把这个式子和上面的最佳估计多目标跟踪之卡尔曼滤波 - php中文网 结合,可得:

多目标跟踪之卡尔曼滤波 - php中文网

  • 外部影响
  • 但是,除了速度和位置,外因也会对系统造成影响。比如模拟火车运动,除了列车自驾系统,列车操作员可能会手动调速。在我们的机器人示例中,导航软件也可以发出停止指令。对于这些信息,我们把它作为一个向量多目标跟踪之卡尔曼滤波 - php中文网,纳入预测系统作为修正。假设油门设置和控制命令是已知的,我们知道火车的预期加速度a。根据运动学基本定理,我们可得:

多目标跟踪之卡尔曼滤波 - php中文网

  • 把它转成矩阵形式:

多目标跟踪之卡尔曼滤波 - php中文网

  • 多目标跟踪之卡尔曼滤波 - php中文网是控制矩阵,多目标跟踪之卡尔曼滤波 - php中文网是控制向量。如果外部环境异常简单,我们可以忽略这部分内容,但是如果添加了外部影响后,模型的准确率还是上不去,这又是为什么呢?

  • 外部不确定性

  • 但是,如果存在我们不知道的力量呢?当我们监控无人机时,它可能会受到风的影响;当我们跟踪轮式机器人时,它的轮胎可能会打滑,或者粗糙地面会降低它的移速。这些因素是难以掌握的,如果出现其中的任意一种情况,预测结果就难以保障。这要求我们在每个预测步骤后再加上一些新的不确定性,来模拟和“世界”相关的所有不确定性:

多目标跟踪之卡尔曼滤波 - php中文网

  • 如上图所示,加上外部不确定性后,多目标跟踪之卡尔曼滤波 - php中文网的每个预测状态都可能会移动到另一点,也就是蓝色的高斯分布会移动到紫色高斯分布的位置,并且具有协方差多目标跟踪之卡尔曼滤波 - php中文网。换句话说,我们把这些不确定影响视为协方差多目标跟踪之卡尔曼滤波 - php中文网的噪声。

多目标跟踪之卡尔曼滤波 - php中文网

  • 这个紫色的高斯分布拥有和原分布相同的均值,但协方差不同。

多目标跟踪之卡尔曼滤波 - php中文网

靠岸学术
靠岸学术

一款集翻译,阅读,文献管理于一体的英文文献阅读器

下载

我们在原式上加入多目标跟踪之卡尔曼滤波 - php中文网

多目标跟踪之卡尔曼滤波 - php中文网

  • 新的最佳估计是基于原最佳估计和已知外部影响矫正后得到的预测
  • 新的不确定性是基于原不确定性和外部环境不确定性得到的预测
  • 通过测量来细化估计值

  • 我们可能有好几个传感器,它们一起提供有关系统状态的信息。传感器的作用不是我们关心的重点,它可以读取位置,可以读取速度,重点是,它能告诉我们关于状态的间接信息——它是状态下产生的一组读数。

多目标跟踪之卡尔曼滤波 - php中文网

  • 请注意,读数的规模和状态的规模不一定相同,所以我们把传感器读数矩阵设为多目标跟踪之卡尔曼滤波 - php中文网

多目标跟踪之卡尔曼滤波 - php中文网

  • 把这些分布转换为一般形式

多目标跟踪之卡尔曼滤波 - php中文网

  • 卡尔曼滤波的一大优点是擅长处理传感器噪声。换句话说,由于种种因素,传感器记录的信息其实是不准的,一个状态事实上可以产生多种读数。

多目标跟踪之卡尔曼滤波 - php中文网

  • 我们将这种不确定性(即传感器噪声)的协方差设为多目标跟踪之卡尔曼滤波 - php中文网,读数的分布均值设为多目标跟踪之卡尔曼滤波 - php中文网。现在我们得到了两块高斯分布,一块围绕预测的均值,另一块围绕传感器读数。

多目标跟踪之卡尔曼滤波 - php中文网

  • 如果要生成靠谱预测,模型必须调和这两个信息。也就是说,对于任何可能的读数多目标跟踪之卡尔曼滤波 - php中文网,这两种方法预测的状态都有可能是准的,也都有可能是不准的。重点是我们怎么找到这两个准确率。最简单的方法是两者相乘:

多目标跟踪之卡尔曼滤波 - php中文网

  • 两块高斯分布相乘后,我们可以得到它们的重叠部分,这也是会出现最佳估计的区域。换个角度看,它看起来也符合高斯分布:

多目标跟踪之卡尔曼滤波 - php中文网

  • 事实证明,当你把两个高斯分布和它们各自的均值和协方差矩阵相乘时,你会得到一个拥有独立均值和协方差矩阵的新高斯分布。最后剩下的问题就不难解决了:我们必须有一个公式来从旧的参数中获取这些新参数!

  • 结合高斯

  • 两条高斯曲线相乘

多目标跟踪之卡尔曼滤波 - php中文网

  • 按照一维方程进行扩展,可得

多目标跟踪之卡尔曼滤波 - php中文网

  • 用k简化一下

多目标跟踪之卡尔曼滤波 - php中文网

  • 以上是一维的内容,如果是多维空间,把这个式子转成矩阵格式

多目标跟踪之卡尔曼滤波 - php中文网

  • 这个矩阵多目标跟踪之卡尔曼滤波 - php中文网就是我们说的卡尔曼增益
  • 结合在一起
  • 截至目前,我们有用矩阵多目标跟踪之卡尔曼滤波 - php中文网预测的分布,有用传感器读数多目标跟踪之卡尔曼滤波 - php中文网预测的分布。把它们代入上节的矩阵等式中:

多目标跟踪之卡尔曼滤波 - php中文网

  • 相应的,卡尔曼增益就是:

多目标跟踪之卡尔曼滤波 - php中文网

考虑到多目标跟踪之卡尔曼滤波 - php中文网里还包含着一个多目标跟踪之卡尔曼滤波 - php中文网,我们再精简一下上式

多目标跟踪之卡尔曼滤波 - php中文网

最后,多目标跟踪之卡尔曼滤波 - php中文网是我们的最佳估计值,我们可以把它继续放进去做另一轮预测

多目标跟踪之卡尔曼滤波 - php中文网

4 代码实现

In [9]
import matplotlib.pyplot as plt# 模拟数据t = np.linspace(1,100,100)# print(t)a = 0.5position = (a * t**2)/2# print(position)position_noise = position+np.random.normal(0,120,size=(t.shape[0])) 

plt.plot(t,position,label='truth position')  # 原值plt.plot(t,position_noise,label='only use measured position')  # 加入噪声的值# 初始的估计的位置就直接用GPS测量的位置predicts = [position_noise[0]]
position_predict = predicts[0]

predict_var = 0odo_var = 120**2 #这是我们自己设定的位置测量仪器的方差,越大则测量值占比越低v_std = 50 # 测量仪器的方差for i in range(1,t.shape[0]):
  
    dv =  (position[i]-position[i-1]) + np.random.normal(0,50) # 模拟从惯性测量单元IMU读取出的速度
    position_predict = position_predict + dv # 利用上个时刻的位置和速度预测当前位置
    predict_var += v_std**2 # 更新预测数据的方差
    # 下面是Kalman滤波
    position_predict = position_predict*odo_var/(predict_var + odo_var)+position_noise[i]*predict_var/(predict_var + odo_var)
    predict_var = (predict_var * odo_var)/(predict_var + odo_var)**2
    predicts.append(position_predict)

    
plt.plot(t,predicts,label='kalman filtered position')  # 滤波后的值plt.legend()
plt.show()# 卡尔曼滤波将噪声值(橙色线),滤波后(绿色线),尽量去拟合原值(蓝色线)
<Figure size 432x288 with 1 Axes>

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

504

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

292

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

759

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

534

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

82

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

60

2025.10.14

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

136

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

47

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

PHP8,究竟有啥野心..!?
PHP8,究竟有啥野心..!?

共4课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号