主要内容

assignjv

Jonker-Volgenant全局最近邻分配算法

描述

例子

作业unassignedrowsunassignedcolumns] [qh]costmatrixcostofnonassignment返回的表作业使用Jonker-Volgenant算法检测到的轨迹。JV算法通过寻找全局最近邻(GNN)分配问题的最优解,使分配的总代价最小。Jonker-Volgenant算法分两个阶段解决GNN分配问题:从拍卖算法开始,到Dijkstra最短路径算法结束。

每个潜在分配的成本都包含在成本矩阵中,costmatrix.每个矩阵条目表示一个可能赋值的代价。矩阵行表示轨迹,列表示检测。所有可能的分配都在代价矩阵中表示。成本越低,分配的可能性就越大。每个轨道最多可以分配给一个检测,每个检测最多可以分配给一个轨道。如果行数大于列数,则未分配一些轨道。如果列数大于行数,则不分配一些检测。可以设置为costmatrix禁止分配

costofnonassignment表示未分配跟踪或探测的成本。较高的值增加了分配每个现有对象的可能性。

函数返回未分配曲目列表,unassignedrows,以及一份未分配的检测列表,unassignedcolumns

例子

全部折叠

使用assignjv将三个探测分配给两个轨道。

从x-y坐标中的两个预测轨道位置开始。

Tracks = [1,1;2、2];

假设接收到三个检测。至少一个检测不会被分配。

Dets = [1.1, 1.1;2.1、2.1;1.5, 3);

通过定义将检测分配给轨迹的代价作为它们之间的欧氏距离来构造代价矩阵。将不赋值的代价设置为0.2。

I = size(tracks,1):-1:1 delta = dets - tracks(I,:);costMatrix(i,:) = sqrt(sum(delta .^ 2,2));结束非赋值成本= 0.2;

使用拍卖算法分配检测到的轨道。

[assignments, unassigndtracks, unassignddetections] =...assignjv (costMatrix costofnonassignment);

显示分配。

disp(作业)
1 1 2 2

显示没有未分配的轨道。

disp (unassignedTracks)

显示未分配的检测。

disp (unassignedDetections)
3.

绘制检测以跟踪分配。

Plot (tracks(:, 1), tracks(:, 2),‘*’, dets(:, 1), dets(:, 2),“o”)举行Xlim ([0,4]) ylim([0,4]) legend(“跟踪”“检测”) assignStr = strsplit(num2str(1:size(赋值,1)));Text (tracks(assignments(:,1),1) + 0.1,...tracks(assignments(:,1),2) - 0.1, assignStr);Text (dets(assignments(:,2),1) + 0.1,...dets(assignments(:,2),2) - 0.1, assignStr);text(dets(unassigned detection (:),1) + 0.1,...dets(unassignddetections (:),2) + 0.1,“未赋值的);

图包含一个轴对象。axis对象包含7个类型为line, text的对象。这些物体代表着轨迹和探测。

探测任务的轨迹如下:

  1. 探测器1被分配到轨道1。

  2. 2号探测器被分配到2号轨道。

  3. 3号检测未分配。

输入参数

全部折叠

成本矩阵,指定为an——- - - - - -N矩阵。要分配的轨道数量是多少N是要分配的检测数。成本矩阵中的每个条目都包含跟踪和检测分配的成本。矩阵可以包含表示禁止分配的条目。代价矩阵不能是稀疏矩阵。

数据类型:|

不赋值的代价,用标量指定。不分配的成本表示留下未分配的轨迹或探测的成本。值越高,分配每个对象的可能性就越大。不能设置为

数据类型:|

输出参数

全部折叠

跟踪检测的赋值,作为整数值返回l- × 2矩阵,其中l是赋值的次数。所述矩阵的第一列包含所述分配的轨迹索引,所述第二列包含所述分配的检测索引。

数据类型:uint32

未分配轨道的索引,作为整数值返回P- × 1列向量。

数据类型:uint32

未分配检测的索引,作为整数值返回- × 1列向量。

数据类型:uint32

参考文献

b[1]塞缪尔·s·布莱克曼和波波利,R。现代跟踪系统的设计与分析.Artech House:马萨诸塞州诺伍德1999.

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2018b中引入