(雷达数据处理中的)跟踪算法(4) --- 基于数据集的目标跟踪实践

说明

    本文作为跟踪系列的第4篇博文,在前面几篇博文[1][2][3]的基础上对所采集的实际数据(来自国防科技大学电子科学学院所主导发布的数据集[4])进行跟踪实践。读者在阅读本文前,建议先阅读本系列的前3篇博文。

Blog

20240724 博文第一次撰写

目录

说明

目录

一、数据说明

二、跟踪算法细节设计

三、实践结果与讨论

四、总结

五、参考资料

六、数据与参考代码


一、数据说明

    我在博文[3]中对该数据集做了比较详细的介绍,读者可以移步博文[3]阅读。为了更好地在后续跟踪算法中设计目标运动模型以及做滤波参数的初始化,这里在博文[3]的基础上对送入跟踪算法的数据做进一步的分析。

    在后文的跟踪算法中,我使用了数据集中的第10段数据,该段数据下的目标真值解析如下(沿用博文[3]中的处理结果):

图1.1  实测目标真值的情况

结合第10段数据的说明,我们可以知道:

1. 该段数据共120帧,包含了两个目标,不过目标2(图中蓝色目标)只存在于前100帧。

2. 两个目标的运动状态是不一样的:目标1(图中红色目标)差不多是匀速运动,但是目标2是先加速远离后减速远离。

3. 与博文[2]仿真中关于目标运动的定义有所出入的是,这里是目标远离时,速度取负。(这在跟踪算法中设计目标状态转移矩阵时需要注意)

    类似在博文[2]仿真中的设计,最终送入跟踪算法的是加噪声后的目标,在后续处理中,我给两个目标加入了均值为0,速度测量标准差为0.1m/s,距离测量标准差为0.2m的噪声。加噪声前后的目标如下图所示:

图1.2  加噪声前后对比(1)

(从左至右分别为:真值、加噪声后、加噪声前后对比)

    将右图局部放大,结果如下:

图1.3  加噪声前后对比(2)

二、跟踪算法细节设计

    本文对实测数据的跟踪处理和博文[2]仿真实践中类似,跟踪算法的细节设计请移步博文[2]查看。

    本文跟踪算法的参数设计中与仿真实践里两个小的区别点是:

1. 状态转移矩阵的设计,因为这里是目标远离时速度为负,所以相较于仿真博文中的设计,dt设计为-50ms。

2. 考虑到实测目标相较于之前的仿真目标,速度和距离都很大,且目标2还是变加速运动,所以在关联部分,我将速度的权重降低,并将关联阈值增大:

距离的权重设置成了0.8,关联的阈值设置成了15。

三、实践结果与讨论

    前48帧下的跟踪效果还不错:

图3.1  目标跟踪结果(1)

    随后由于目标实际是已经开始减速,但是我们并没有改变滤波器的加速度值,所以航迹2和目标2无法关联,于是航迹2会丢失并新建了航迹3:

图3.2  目标跟踪结果(2)

    (由于我们设定航迹lost的条件是要连续6帧没有被关联上,所以没有关联上目标的航迹2会继续存留6帧),由于目标2的加速度是在变化的,随后航迹3也会面临和航迹2一样的问题:

图3.3  目标跟踪结果(3)

    由于之前的航迹2已经被我们删除,所以id 2被闲置(可继续用),我在航迹管理中设计的算法会再次把2分配给新建的航迹。新建的航迹2会持续到第105帧(因为从第100帧开始,目标2就不存在了):

图3.4  目标跟踪结果(4)

图3.5  目标跟踪结果(5)

    跟踪的结果符合预期(即便是目标2出现跟丢的情况),验证了所设计算法的正确性。由于所采用的卡尔曼滤波算法只能处理线性运动(匀速、匀加速)的目标,而目标2是先加速后减速的(非线性运动),所以对该目标的跟踪效果不好(会跟丢)是可以预见的。对此,可能的解决方式可以包括: 1.采用其它的适用于非线性运动的滤波算法;   2.仍然使用卡尔曼滤波,但可以设计在特定帧数间隔下(或者航迹的状态估测值和量测值的差值超过某阈值时)基于量测结果对加速度值做更新。

四、总结

本文针对数据集中的实测数据进行了跟踪实践,实践的结果基本符合预期,但同时也注意到:

1、由于所采用的卡尔曼滤波算法只能处理线性运动(匀速、匀加速)的目标,而所处理的实测数据中有一个目标是先加速后减速的(非线性运动),所以对该目标的跟踪效果不好(会跟丢),对此我在结果讨论中给出的两种解决方案是: a.采用其它的适用于非线性运动的滤波算法;   b.仍然使用卡尔曼滤波,但可以设计在特定帧数间隔下(或者航迹的状态估测值和量测值的差值超过某阈值时)基于量测结果对加速度值做更新。

2、实际的应用场景中,雷达视场内的多个目标可能会有不同的运动状态(比如本文所处理的数据中,其中一个目标是匀速运动,而另一个是变加速运动),所以为不同的目标设计不同的运动模型,乃至不同的滤波算法是有必要的!(虽然在本文的实践中我并没有这么做),不过我在航迹管理的设计中给每条航迹设计了两个表征该航迹目标运动模型的参数“motionModel”和“motionDim”, 读者可以在提供的代码上自行尝试:如果是线性运动的话,我们其实可以对全部航迹预设为匀加速运动,因为匀速运动其本质是加速度为0的特殊的匀加速运动。

    本系列博文对跟踪算法的探讨是很基础的,但本系列博文的内容止步于此,读者可以在本系列博文的基础上作更深入的研究。

五、参考资料

[1] (雷达数据处理中的)跟踪算法(1) --- 整体&目录-CSDN博客

[2] (雷达数据处理中的)跟踪算法(2) --- 目标跟踪仿真实践-CSDN博客

[3] (雷达数据处理中的)跟踪算法(3) – 可用于目标跟踪实践的数据集介绍&解析-CSDN博客

[4] 雷达回波序列中弱小飞机目标检测跟踪数据集 (csdata.org)

六、数据与参考代码

    本跟踪系列博文所有相关的数据和代码我一并打包在了第一篇博文的链接中,读者可以去第一篇博文[1]的文末查收。

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

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

相关文章

IPython的HTML魔法:%%html_header命令全解析

IPython的HTML魔法:%%html_header命令全解析 在IPython和Jupyter Notebook中,%%html_header是一个魔术命令,它允许用户在Notebook的单元格中添加HTML头部(head)内容。这个功能特别有用,当你需要定制Notebo…

【Linux】管道通信和 system V 通信

文章目录 一、进程通信原理(让不同进程看到同一份资源)二、管道通信2.1 管道原理及其特点2.1 匿名管道和命名管道 三、共享内存通信3.1 共享内存原理3.2 创建和关联共享内存3.3 去关联、ipc 指令和删除共享内存 四、消息队列和信号量(了解&am…

【Unity2D 2022:UI】无法拖拽TextMeshPro组件

在预制体Card上挂载了四个Text Mesh Pro组件,分别命名为Name、HP、ATK、Description。 将预制体Card挂载脚本CardDisplay用来在预制体上显示属性,并创建TextMeshPro对象来接收TextMeshPro组件。 using TMPro; using UnityEngine; using UnityEngine.UI;…

用Redisson写一个库存扣减的方法

使用Redisson来处理库存操作可以确保在高并发环境下库存数据的一致性和完整性。以下是使用Redisson实现库存管理的一些通用方法,包括获取库存、扣减库存、设置库存等。我们将使用Redisson的ReentrantLock来确保并发安全。 首先,确保你已经正确设置了Red…

HCIP之PPP协议(PAP认证,CHAP认证)、GRE、MGRE综合实验

实验过程 一、IP配置 [r1]interface Serial 4/0/0 [r1-Serial4/0/0]ip ad 15.1.1.1 24 [r1]interface GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip ad 192.168.1.1 24 r2]interface Serial 4/0/0 [r2-Serial4/0/0]ip ad 25.1.1.2 24 [r2]interface GigabitEthernet 0/…

基于 HTML+ECharts 实现智慧交通数据可视化大屏(含源码)

构建智慧交通数据可视化大屏:基于 HTML 和 ECharts 的实现 随着城市化进程的加快,智慧交通系统已成为提升城市管理效率和居民生活质量的关键。通过数据可视化,交通管理部门可以实时监控交通流量、事故发生率、道路状况等关键指标,…

LabVIEW多种测试仪器集成控制系统

在现代工业生产与科研领域,对测试设备的需求日益增长。传统的手动操作测试不仅效率低下,而且易出错。本项目通过集成控制系统,实现了自动化控制,降低操作复杂度和错误率,提高生产和研究效率。 系统组成与硬件选择 系…

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL,由微软推出的关系型数据库,默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件(.mdf):主要的数据文件,包含数据表中的数据和对象信息…

Mongodb入门介绍

文章目录 1、Mongodb:NoSQL数据库,分布式的文档型数据库2、适合场景:3、不适合场景:4、概念5、总结 1、Mongodb:NoSQL数据库,分布式的文档型数据库 2、适合场景: 1、web网站数据存储&#xff…

LeetCode704 二分查找

前言 题目: 704.二分查找 文档: 代码随想录——二分查找 编程语言: C 解题状态: 解答错误,变量定义位置错误。 思路 有序数组的查找,最直接的思路应该就是二分查找。但是在查找的过程中要考虑到区间的边界…

希捷公布第四财季(4FQ24)和整个2024财年的财务业绩

希捷科技控股(Seagate Technology Holdings)公布了截至2024年6月28日的第四财季(4FQ24)和整个2024财年的财务业绩。以下是关键点的总结与分析: ### 4FQ24亮点: - **收入**:18.9亿美元&#xff…

WebRTC与orange pi实现视频画面实时传输

使用WebRTC和Orange Pi可以实现视频画面的实时传输,并将其嵌入到网页中。下面是实现这一功能的一般步骤和所需的组件: 1. 硬件准备 Orange Pi:选择适合的Orange Pi型号(如Orange Pi PC、Orange Pi Zero等)。摄像头&a…

鸿蒙 Navigation VS Router 对比

当前HarmonyOS支持两套路由机制(Navigation和Router),Navigation作为后续长期演进及推荐的路由选择方案,其与Router比较的优势如下: 易用性层面: Navigation天然具备标题、内容、回退按钮的功能联动&…

Springboot循环依赖的解决方式

Springboot循环依赖的解决方式 起因原因解决方案配置文件解决使用工具类获取bean还有一种我设想的方案 起因 今天重构代码时,发现之前的代码结构完全混乱,没有按照MVC分层思想去编写,很多业务逻辑写在了controller中,导致引用的很…

Java | Leetcode Java题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; public class Solution extends VersionControl {public int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVers…

哪个邮箱最安全最好用啊

企业邮箱安全至关重要&#xff0c;需保护隐私、防财务损失、维护通信安全、避免纠纷&#xff0c;并维持业务连续性。哪个企业邮箱最安全好用呢&#xff1f;Zoho企业邮箱&#xff0c;采用加密技术、反垃圾邮件和病毒保护&#xff0c;支持多因素认证&#xff0c;确保数据安全合规…

【大师与bug里特】M_Studio《王国之梦》学习笔记

1️⃣ Object & object(✅) 之辨 《7.泛型事件框架〈余2min左右时〉》 不然inspector窗口的最后一行&#xff08;告诉我们订阅者是SceneLoadManager它身上挂了☝️ObjectEventListener用来监听这个事件 有多少个事件注册到这里来了都能够看到&#xff09;还是不会出现 加上…

开源邮箱套件介绍系列1:SOGo

项目网站&#xff1a;SOGo | Free Open Source Webmail 提示&#xff1a;如下内容大部分来自官方网站&#xff0c;通过AI智能翻译而来。 1. SOGo功能概述 SOGo提供了多种访问日历和消息数据的方式。您的用户可以使用网页浏览器、Microsoft Outlook、Mozilla Thunderbird、Ap…

【java基础】线程状态转化

在Java中&#xff0c;线程有六种基本状态&#xff0c;这些状态反映了线程在其生命周期中的不同阶段。线程的状态转换是由操作系统和JVM&#xff08;Java虚拟机&#xff09;调度机制共同控制的。以下是线程的六种状态及其转换&#xff1a; NEW&#xff08;新建&#xff09; 线程…

create-vue源码学习之 gradient-string 渐变色打印

效果 在使用 create-vue 脚手架时&#xff0c;想实现如下的打印效果。 探究过程 翻到源码里看到这一行 没错&#xff0c;绿色部分就是告诉我们如何生成的。可以看到引入了 gradient-string 包 于是乎&#xff0c;我来试试 pnpm i gradient-string pnpm i --save-dev …