基于matlab多运动目标跟踪监测算法实现(附源码)

一、前言

此示例演示如何对来自固定摄像机的视频中的移动对象执行自动检测和基于运动的跟踪。

二、介绍

移动物体检测和基于运动的跟踪是许多计算机视觉应用的重要组成部分,包括活动识别、交通监控和汽车安全。基于运动的对象跟踪问题可以分为两部分:

检测每帧中的移动物体

关联一段时间内对应于同一对象的检测

运动物体的检测使用基于高斯混合模型的背景减法算法。形态学操作应用于生成的前景掩模以消除噪声。最后,斑点分析检测连接的像素组,这些像素组可能对应于移动对象。

检测与同一对象的关联仅基于运动。每条轨道的运动由卡尔曼滤波器估计。过滤器用于预测轨迹在每个帧中的位置,并确定将每个检测分配给每个轨迹的可能性。

轨道维护成为此示例的一个重要方面。在任何给定帧中,可以将某些检测分配给轨道,而其他检测和轨道可能保持未分配状态。分配的轨迹使用相应的检测进行更新。未分配的轨道标记为不可见。未分配的检测将开始新跟踪。

每个轨道都会记录连续帧数,其中它保持未分配状态。如果计数超过指定的阈值,该示例假定对象离开了视野,并删除了轨迹。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

三、创建系统对象

创建用于读取视频帧、检测前景对象和显示结果的系统对象。

四、初始化轨道

该函数创建一个轨道数组,其中每个轨道都是表示视频中移动对象的结构。该结构的目的是维护跟踪对象的状态。状态由用于检测以跟踪分配、跟踪终止和显示的信息组成。initializeTracks

该结构包含以下字段:

id:轨道的整数 ID

bbox:对象的当前边界框;用于显示

kalmanFilter:用于基于运动的跟踪的卡尔曼滤波器对象

age:自首次检测到轨道以来的帧数

totalVisibleCount:检测到轨道的帧总数(可见)

consecutiveInvisibleCount:未检测到轨道的连续帧数(不可见)。

嘈杂的检测往往会导致短暂的磁道。因此,该示例仅在跟踪了一定数量的帧后显示对象。当超过指定的阈值时,会发生这种情况。

当连续几帧没有检测与轨道关联时,该示例假定对象已离开视野并删除轨道。当超过指定的阈值时,会发生这种情况。如果跟踪了很短的时间,并且大多数帧都标记为不可见,则轨道也可能作为噪声被删除。

五、检测对象

该函数返回检测到的对象的质心和边界框。它还返回二进制掩码,该掩码的大小与输入帧相同。值为 1 的像素对应于前景,值为 0 的像素对应于背景。detectObjects

该功能使用前景检测器执行运动分割。然后,它对生成的二进制掩码执行形态学操作,以消除噪声像素并填充剩余斑点中的孔洞。

六、预测现有轨道的新位置

使用卡尔曼滤波器预测当前帧中每个轨迹的质心,并相应地更新其边界框。

七、将检测分配给轨道

将当前帧中的对象检测分配给现有轨道是通过最大限度地降低成本来完成的。成本定义为与轨迹对应的检测的负对数可能性。

该算法涉及两个步骤:

步骤 1:使用 System 对象™的方法计算将每个检测分配给每个轨道的成本。成本考虑了轨迹的预测质心与检测质心之间的欧氏距离。它还包括预测的置信度,该置信度由卡尔曼滤波器保持。结果存储在 MxN 矩阵中,其中 M 是磁道数,N 是检测数。

第 2 步:使用该函数求解由成本矩阵表示的分配问题。该函数采用成本矩阵和不向轨道分配任何检测的成本。

不将检测分配给磁道的成本值取决于 的方法返回的值范围。此值必须通过实验进行调整。将其设置得太低会增加创建新轨道的可能性,并可能导致轨道碎片化。将其设置得太高可能会导致单个轨道对应于一系列单独的移动对象。

该函数使用匈牙利算法的蒙克雷斯版本来计算最小化总成本的赋值。它返回一个 M x 2 矩阵,其中包含其两列中分配的跟踪和检测的相应索引。它还返回未分配的跟踪和检测的索引。

八、 更新分配的轨道

该函数使用相应的检测更新每个分配的轨道。它调用 来校正位置估计的方法。接下来,它存储新的边界框,并将轨道的年龄和可见总数增加 1。最后,该函数将不可见计数设置为 0。

九、更新未分配的轨道

将每个未分配的轨道标记为不可见,并将其年龄增加 1。

十、删除丢失的曲目

该函数删除连续帧太多不可见的轨道。它还会删除最近创建的轨道,这些轨道在总体上不可见太多帧。

十一、创建新曲目

从未分配的检测创建新轨道。假设任何未分配的检测都是新轨道的开始。在实践中,您可以使用其他提示来消除干扰检测,例如大小、位置或外观。

十二、显示跟踪结果

该函数为视频帧和前景掩码上的每个轨道绘制边界框和标签 ID。然后,它会在各自的视频播放器中显示帧和蒙版。

十三、总结

此示例创建了一个基于运动的系统,用于检测和跟踪多个移动对象。尝试使用其他视频,看看您是否能够检测和跟踪对象。尝试修改检测、分配和删除步骤的参数。

本例中的跟踪完全基于运动,假设所有对象都以恒定的速度沿直线移动。当物体的运动明显偏离此模型时,该示例可能会产生跟踪误差。请注意跟踪标记为#12的人时的错误,当他被树遮挡时。

通过使用更复杂的运动模型(例如恒定加速度)或为每个对象使用多个卡尔曼滤波器,可以降低跟踪误差的可能性。此外,还可以合并其他提示,以便随时间关联检测,例如大小、形状和颜色。

十四、程序

下载方式一: 基于matlab多运动目标跟踪监测资源-CSDN文库

下载方式二:基于matlab多运动目标跟踪监测算法实现

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

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

相关文章

【人工智能与机器学习】决策树ID3及其python实现

文章目录 1 决策树算法1.1 特征选择1.2 熵(entropy)1.3 信息增益 2 ID3算法的python实现总结 1 决策树算法 决策树(Decision Tree)是一类常见的机器学习方法,是一种非常常用的分类方法,它是一种监督学习。常见的决策树…

ChatGPT实战:高考志愿填报

近期,随着各地陆续发布高考成绩,高考志愿填报市场随之升温,“高报师”再次成为“香饽饽”。填报志愿对中学生来说太难,在一个懵懂的年纪做这样一个决策,份量是比较重的。当普通人没很多的信息做参考的时候,…

LeetCode 剑指 Offer 13. 机器人的运动范围(深度遍历)

LeetCode 剑指 Offer 13. 机器人的运动范围 原题思路代码运行截图收获 原题 LeetCode 剑指 Offer 13. 机器人的运动范围 思路 通过深度遍历来找出所有可达的格子通过0、1、2来区分未遍历、可到达、不可到达三种状态 代码 class Solution { public:int visited[109][109];i…

python中使用OAK-D PRO相机实现OCR功能

目录 OAK简介Tesseract简介Tesseract OCR安装包安装 Tesseract OCR 代码实现 OAK简介 OAK(OpenCV AI Kit)是一个开源的智能视觉平台,它集成了硬件和软件组件,旨在提供高性能的实时目标检测、识别和跟踪等视觉AI功能。OAK由Luxoni…

【机器学习】信息熵和信息度量

一、说明 信息熵是概率论在信息论的应用,它简洁完整,比统计方法更具有计算优势。在机器学习中经常用到信息熵概念,比如决策树、逻辑回归、EM算法等。本文初略介绍一个皮毛,更多细节等展开继续讨论。 二、关于信息熵的概念 2.1 要素描述 信息熵:熵是一种测量随机变量 X …

CVE-2023-34541 LangChain 任意命令执行

漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中,由于load_prompt函数加载提示文件时未对加载内容进行安全过滤,攻击者可通过构造包含恶意命令的提示文件,诱导用户加载该文件,即可造…

C# csc构建dll 和 csc构建时指定dll

新建一个mydll.cs; using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace myDLL {public class MyMath{public int add(int x, int y){return x y;}public int sub(int x, int y){return x - y;}} } 用下图命令构建…

爬虫---某翻译响应解密和sign逆向

目标网址接口:aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRl 仅供学习交流使用,非商业用途,如有侵权,请联系删除!!!仅供学习交流使用,非商业用途,如有侵权,请联系删除!!!仅供学习交流使用&…

【Linux】—— 进程的环境变量

序言: 在上期我们已经对进程PCB以及进程状态进行了详细的解释说明。今天,我将带领大家学习的是关于进程的环境变量的问题。 目录 (一)孤儿进程 1、基本介绍 2、代码演示 (二)环境变量 1、基本概念 2…

RedmiBook Pro 15S AMD Ryzen 7 5800H电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件配置 硬件型号驱动情况 主板RedmiBook Pro 15S 2021 处理器AMD Ryzen™ 7 5800H已驱动 内存16 GB 3200 MHz DDR4已驱动 硬盘Samsung 970EVO 512GB已驱动 显卡HD …

SpringMVC (一) 什么是SpringMVC

一、回顾MVC 1.1、什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。…

红色通信史(二):半部电台起家

上一期,我给大家介绍了“四一二”反革命政变后,我党在上海开通了第一部秘密电台的过程。 秘密电台的开通,标志着我党通信事业正式起步。然而,没过多久,顾顺章叛变,给上海党组织带来了极大的破坏。于是&…