主要内容

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-by-2的整数矩阵,其中P为作业的数量。第一列列出了跟踪分支索引。第二列列出了检测指标。同一个分支可以分配给多个检测。相同的检测可以分配给多个分支。

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

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

  • (1 2)-分支1分配给检测2。

  • (2 - 1)-分支2分配给检测1。

  • (2 - 2)-分支2分配给检测2。

未分配的轨道分支的指数,指定为a-by-1整数向量,其中是未分配的轨道分支的数量。的每个元素unassignedTracks必须对应于当前存储在trackBranchHistory系统对象。

未分配的检测的索引,指定为R-by-1整数向量,其中R是未分配的检测数量。每个未分配的检测结果在一个新的轨道分支。

每个检测源的传感器的指数,指定为1-by-l整数向量,其中l为检测次数。的th元素originatingSensor对应于SensorIndex属性值的objectDetection对象

输出参数

全部展开

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

每一行的历史表示一个唯一的轨道分支。历史3 + (D×年代列),D维护的扫描数量(历史深度)和年代为维护的传感器的最大数目。前三列表示关于每个轨道分支的以下信息:

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

  • ParentID—父分支的ID,即当前分支所在的分支。从同一个父节点创建的分支具有相同的ParentID.一个ParentID为0表示一条新轨道。这些轨迹是由与未指定的探测相对应的假设创建的。

  • BranchID—track分支的唯一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属性:MaxNumSensors: 4 MaxNumHistoryScans: 2 MaxNumTracks: 200 MaxNumTrackBranches: 3

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

emptyAssignment = 0 (0, 2,“uint32”);emptyUnassignment = 0 (0, 1,“uint32”);unassignedDetections = uint32 ([1, 2, 3]);originatingSensor = [1 1 2];历史= 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;1 - 2;2 1;2 2]);unassignedTracks = uint32 ([1; 3]);unassignedDetections = uint32 ([1, 2, 3]);

用分配和未分配的轨迹和检测更新分支历史管理器。

历史= branchHistoryMgr (unassignedTracks作业,...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 20 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

检查分支历史。

  • 最近的扫描是scan 2。前面的扫描是scan 1,它在前面的任务更新中是scan 2。历史已经向右平移了一个扫描图。

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

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

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

  • 分支7-10是为轨道分配创建的分支。

参考文献

John R. Werthmann“多假设跟踪的计算效率版本的一步一步描述。”在SPIE学报第1698卷,小目标信号与处理.1992年,页288 - 300。doi: 10.1117/12.139379。

介绍了R2018b