主要内容

trackBranchHistory

面向跟踪的MHT分支和分支历史

描述

trackBranchHistorySystem object™是一个面向跟踪、多假设跟踪(MHT)的分支历史管理器。对象维护轨道分支(假设)的历史记录,这些分支是基于分配算法的结果,例如assignTOMHT函数。给定最近一次扫描的一组传感器,分配算法的结果包括:

  • 将传感器检测分配到特定的轨道支路

  • 未分配的轨道分支

  • 未分配的检测

trackBranchHistory对象根据需要创建、更新和删除跟踪分支,并维护指定扫描次数的跟踪分支历史记录。存储在对象中的每个轨道和分支都有一个惟一的ID。要查看当前历史记录的跟踪分支表,请使用getHistory函数。要计算分支集群和不兼容的分支,请将跟踪分支历史记录指定为clusterTrackBranches函数。

创建分支历史管理器并更新分支历史:

  1. 创建trackBranchHistory对象并设置其属性。

  2. 调用带参数的对象,就像调用函数一样。

要了解有关System对象如何工作的更多信息,请参见什么是系统对象?

创建

描述

branchHistoryMgr= trackBranchHistory创建一个trackBranchHistory系统对象,branchHistoryMgr,具有默认属性值。

例子

branchHistoryMgr= trackBranchHistory (名称,值trackBranchHistory使用一个或多个名称-值对。例如,branchHistoryMgr = trackBranchHistory('MaxNumTracks',250,'MaxNumTrackBranches',5)创建一个trackBranchHistory对象,可以维持最多250个轨道和每个轨道5个轨道分支。将属性名称用引号括起来。指定的属性值可以是任何数字数据类型,但它们必须具有相同的数据类型。

属性

全部展开

除非另有说明,否则属性是nontunable,这意味着在调用对象之后不能更改它们的值。对象在调用时被锁定,而释放函数将它们解锁。

如果一个属性可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见利用系统对象在MATLAB中进行系统设计

传感器的最大数量,指定为正整数。

分支历史中维护的最大扫描数,指定为正整数。典型值为2 ~ 6。更高的值会增加计算负荷。

分支历史记录管理器可以维护的最大轨道数,指定为正整数。

分支历史管理器可以维护的每个轨道的最大分支数,指定为正整数。

使用

描述

例子

历史= branchHistoryMgr (作业unassignedTracksunassignedDetectionsoriginatingSensor根据赋值算法的结果返回分支历史记录。指定检测到分支的分配、未分配轨道和未分配检测的列表,以及检测源自的传感器的id。输入可以是任何数值数据类型。

assignTOMHT函数返回赋值结果为uint32值,但是输入branchHistoryMgr可以是任何数字数据类型。

输入参数

全部展开

将轨道分支分配给检测点,指定为aP- × 2整数矩阵,其中P是赋值的次数。第一列列出了跟踪分支索引。第二列列出了检测索引。同一个分支可以分配给多个检测。相同的检测可以分配给多个分支。

例如,如果赋值= [1];1 - 2;2 1;2 2],一排排的作业指定这些任务:

  • [1]-分支1分配给检测1。

  • (1 2)-分局1负责侦查2。

  • (2 - 1)-分部2负责检测1。

  • (2 - 2)-分局2负责侦查2。

未分配轨道支路的索引,指定为- × 1的整数向量,其中未分配的轨道分支的数目。的每个元素unassignedTracks必须对应于当前存储在?中的跟踪分支的索引trackBranchHistory系统对象。

未分配检测的索引,指定为R- × 1的整数向量,其中R未分配的检测数。每个未分配的检测产生一个新的跟踪分支。

每一个检测产生的传感器索引,用1-表示l整数向量,其中l为检测次数。的的元素originatingSensor对应于SensorIndex的物业价值objectDetection对象

输出参数

全部展开

分支历史,作为整数矩阵返回。

每一行历史表示唯一的轨迹分支。历史3 + (D×年代)列,其中D维护的扫描次数(历史深度)是多少年代是维护的传感器的最大数量。前三列表示每个轨道分支的以下信息:

  • TrackID-分支关联的轨道ID。假设起源于同一目标的跟踪分支具有相同的跟踪ID。如果分支源自未分配的检测,则该分支获得新的跟踪ID。

  • ParentID-父分支ID,即当前分支的起源分支。从同一父节点创建的分支具有相同的属性ParentID。一个ParentID为0表示新建轨道。这些轨迹是从与未分配的探测相对应的假设中产生的。

  • BranchID-轨道分支的唯一ID。从未分配的检测或分配中创建的每个分支都获得一个新的分支ID。

剩下的D×年代列包含分配给每个分支的检测的id。一个分支每次扫描和每个传感器最多只能分配一个检测。下表显示了这些列的组织和样本检测。N是扫描次数。的值0意味着该扫描的传感器没有分配给它的检测。

扫描N 扫描N- 1 …… 扫描N- - - - - -D
传感器- 1 传感器- 2 …… 传感器,年代 传感器- 1 传感器- 2 …… 传感器,年代 …… 传感器- 1 传感器- 2 …… 传感器,年代

1

0

0

1

2

0

0

0

0

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放system对象的系统资源obj,使用以下语法:

发行版(obj)

全部展开

getHistory 获取已维护轨道的分支历史记录
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重置 的内部状态复位系统对象

例子

全部折叠

将分配算法的结果应用于面向跟踪的多假设跟踪(MHT)分支历史管理器。查看结果跟踪分支(假设)。

创建MHT分支历史管理器,它是一个trackBranchHistory系统对象™。将对象设置为保持四个传感器和两个扫描的历史记录。

branchHistoryMgr = trackBranchHistory(“MaxNumSensors”4“MaxNumHistoryScans”, 2)
branchHistoryMgr = trackBranchHistory with properties: MaxNumSensors: 4 MaxNumHistoryScans: 2 MaxNumTracks: 200 MaxNumTrackBranches: 3

更新分支历史记录。因为第一次更新没有以前的分支,所以分支历史管理器只包含未分配的检测。

emptyAssignment = 0 (0,2,“uint32”);emptyUnassignment = 0 (0,1,“uint32”);unassignddetections = uint32([1;2;3]);originingsensor = [1 1 2];history = branchHistoryMgr(emptyAssignment,emptyUnassignment,unassignedDetections originatingSensor);

查看当前分支历史getHistory函数。每个检测都被分配到一个单独的轨道上。

getHistory (branchHistoryMgr)
ans =3×5表TrackID ParentID BranchID Scan2 Scan1 Sensor1 Sensor2 Sensor3 Sensor4 Sensor1 Sensor2 Sensor3 Sensor4  _______ ________ ________ ________________________________________ ________________________________________ 1 0 1 1 0 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 0 0 3 0 3 0 3 0 0 0 0 0 0

指定多个分支分配和多个未分配的跟踪分支和检测。

  • 将分支1分配给检测1和检测2。

  • 将分支2分配给检测1和2。

  • 考虑未分配的轨道分支1和3。

  • 考虑未分配的检测1、2和3。

赋值= uint32([1];1 - 2;2 1;2 2]);unassigndtracks = uint32([1;3]);unassignddetections = uint32([1;2;3]);

使用分配和未分配的跟踪和检测更新分支历史管理器。

history = branchHistoryMgr(分配,未分配的轨道,unassignedDetections originatingSensor);

查看更新后的分支历史。

getHistory (branchHistoryMgr)
ans =9×5表TrackID ParentID BranchID Scan2 Scan1 Sensor1 Sensor2 Sensor3 Sensor4 Sensor1 Sensor2 Sensor3 Sensor4  _______ ________ ________ ________________________________________ ________________________________________ 1 1 1 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 3 0 0 4 0 4 1 0 0 0 0 0 0 0 5 0 5 2 0 0 0 0 0 0 0 6 0 6 0 3 0 0 0 0 0 0 1 1 7 1 0 0 0 1 0 0 0 1 1 8 2 0 0 0 1 0 0 0 2 2 9 1 0 0 0 2 0 0 0 2 2 10 2 0 0 0 2 0 0 0

检查分支历史。

  • 最近的扫描是扫描2。之前的扫描是扫描1,在之前的作业更新中是扫描2。历史已经向右移动了一次扫描。

  • 分支1和3是未分配轨道的分支。

  • 分支2不再出现在历史记录中,因为它没有被认为是未分配的。它对检测1和2的分配创建了分支9和10。

  • 分支4 ~ 6为未分配检测创建的分支。

  • 分支7-10是为跟踪分配创建的分支。

参考文献

约翰·R·维特曼。“多假设跟踪的计算效率版本的一步一步描述。”在SPIE学报第1698卷,小目标的信号和处理。1992,第288-300页。doi: 10.1117/12.139379。

在R2018b中引入