assignDetectionsToTracks

指定检测到的多目标跟踪轨道

描述

例子

(任务,unassignedTracks,unassignedDetections) = assignDetectionsToTracks (costMatrix,costOfNonAssignment)使用James Munkres的匈牙利分配算法的变种,在多目标跟踪的背景下分配检测到的轨迹。它还可以确定哪些轨道丢失了,哪些检测应该开始新的轨道。它返回指定的和未指定的轨道,以及未指定的探测的索引。的costMatrix必须是-通过-N矩阵。在这个矩阵,表示磁道的数目,和N为探测到的数量。每个值表示分配的成本Nth检测到th跟踪。成本越低,就越有可能对某条轨迹进行检测。的costOfNonAssignment标量输入表示未分配的轨迹或检测的代价。

(任务,unassignedTracks,unassignedDetections) = assignDetectionsToTracks (costMatrix,unassignedTrackCost,unassignedDetectionCost)指定单独的未分配轨道和检测的成本。的unassignedTrackCost必须是标量值,或者元向量,表示磁道的数目。为- 元素向量,每个元素代表不分配任何检测到轨道的成本。的unassignedDetectionCost必须是一个标量值或N元向量,N表示检测次数。

例子

全部收缩

这个例子说明了如何检测分配给轨道单个视频帧。

设置对象的预测位置在当前帧中。获得使用卡尔曼滤波器系统对象的预测。

预测=[1,1;2、2];

设置当前帧中检测到的对象的位置。在这个例子中,有2条轨道和3条新发现。因此,至少一个探测是不匹配的,这可以表明一个新的轨道。

检测= (1.1,1.1,2.1,2.1,1.5,3];

预分配成本矩阵。

成本= 0(大小(预测,1),大小(检测,1));

计算每一个预测匹配的检测的成本。这里的成本,被定义为预测和检测之间的欧几里得距离。

i = 1:size(predicted,1) diff = detections - repmat(predicted (i,:),[size(detections,1),1]);cost(i,:) =√(diff .^ 2,2));结束

副检测与预测。检测1应该匹配来跟踪1,和检测2应匹配来跟踪2.检测3应该是无法比拟的。

(作业、unassignedTracks unassignedDetections] =assignDetectionsToTracks(成本,0.2);数字;图(预测(:,1),预测(:,2),'*',检测(:,1),检测(:,2),“罗”);保持;传说(“预测”,“检测”);I = 1:尺寸(分配,1)文本(预测(分配(I,1),1)0.1,预测(作业(我,1),2)-0.1,num2str (i));文本(检测(作业(我,2),1)+ 0.1,检测(作业(我,2),2)-0.1,num2str (i));结束i = 1:length(unassignedDetections, i) +0.1,检测(unassignedDetections (i), 2) + 0.1,“未分配”);结束XLIM([0,4]);ylim([0,4]);

输入参数

全部收缩

分配一个检测到一个轨道的成本,指定为-通过-N矩阵,其中表示磁道的数目,和N为探测到的数量。代价矩阵的值必须是实的、非稀疏的和数值的。成本越低,就越有可能对某条轨迹进行检测。每个值表示分配的成本Nth检测到th跟踪。如果有一个检测和轨道,所述间没有分配的可能性costMatrix输入设置为天道酬勤。在内部,这个函数用虚拟行和列填充成本矩阵,以考虑未分配轨道和探测的可能性。填充行表示没有分配到任何轨道的检测。填充的列表示与任何检测无关的轨道。该函数对填充矩阵应用匈牙利赋值算法。

数据类型:int8|uint8|INT16|UINT16|INT32|uint32||

任何轨道不指定检测的成本或追踪到的检测。您可以将此值指定为代表的轨道或剩余未分配的检测成本的标量值。未分配的检测可能成为一个新的轨道的开始。如果轨道是未分配,对象不会出现。越高costOfNonAssignment值越高,每一个轨道将被分配的检测的可能性。

在内部,这个函数用虚拟行和列填充成本矩阵,以考虑未分配轨道和探测的可能性。填充行表示没有分配到任何轨道的检测。填充的列表示与任何检测无关的轨道。相同的值适用于行和列两者的所有元素,使用语法与costOfNonAssignment输入。要为不同的检测或跟踪改变值,请使用语法unassignedTrackCostunassignedDetectionCost投入。

数据类型:int8|uint8|INT16|UINT16|INT32|uint32||

成本或一个未分配的轨道的可能性。你可以指定这个值作为标量值或元向量,表示磁道的数目。为- 元素向量,每个元素代表不分配任何检测到轨道的成本。标量输入代表的是未分配的所有曲目相同的成本。成本可能取决于你知道每首曲目和现场什么变化。例如,如果一个对象是即将离开的视场时,相应的轨道的未赋值的成本应该低。

在内部,这个函数用虚拟行和列填充成本矩阵,以考虑未分配轨道和探测的可能性。填充行表示没有分配到任何轨道的检测。填充的列表示与任何检测无关的轨道。要为不同的检测或跟踪改变值,请使用语法unassignedTrackCostunassignedDetectionCost投入。相同的值适用于行和列两者的所有元素,使用语法与costOfNonAssignment输入。

数据类型:int8|uint8|INT16|UINT16|INT32|uint32||

未分配的检测成本,指定为标量值或N元向量,N表示检测次数。为N- 元素矢量,每个元素表示开始该检测一个新的轨道的成本。标量输入代表的是未分配的所有曲目相同的成本。成本可能会因你了解每个检测和场景变化是什么。例如,如果一个检测显示接近的图像的边缘,它更可能是一个新的对象。

在内部,这个函数用虚拟行和列填充成本矩阵,以考虑未分配轨道和探测的可能性。填充行表示没有分配到任何轨道的检测。填充的列表示与任何检测无关的轨道。要为不同的检测或跟踪改变值,请使用语法unassignedTrackCostunassignedDetectionCost投入。相同的值适用于行和列两者的所有元素,使用语法与costOfNonAssignment输入。

数据类型:int8|uint8|INT16|UINT16|INT32|uint32||

输出参数

全部收缩

索引对轨道和相应的检测的。此值会返回一个l索引对的-乘2矩阵,与l对的数量。第一列表示轨迹索引,第二列表示检测索引。

数据类型:uint32

未分配的轨道,返回为aP- 元素向量。P表示未分配的轨道的数目。每个元素代表到其中没有检测被分配一个轨道。

数据类型:uint32

未分配的检测,返回为元向量,表示未分配的检测次数。每个元素表示这是未分配给任何磁道的检测。这些检测可以开始新的轨道。

数据类型:uint32

参考

[1] Miller, Matt L., Harold S. Stone, Ingemar J. Cox,“优化Murty的分配排序方法,”IEEE交易在航空航天和电子系统,33(3),1997年。

《分配和运输问题的算法》,詹姆斯·蒙克雷斯著,杂志工业与应用数学会的,第5卷,第1期,三月,1957年。

扩展功能

C / C ++代码生成
生成使用MATLAB®编码器™C和C ++代码。

介绍了在R2012b