Main Content

assignTOMHT

Track-oriented multi-hypotheses tracking assignment

Description

[assignments,unassignedrows,unassignedcolumns] = assignTOMHT(costmatrix,costThreshold) returns a table of assignments, assignments, of detections to tracks using a track-oriented multi-hypothesis (TOMHT) algorithm.

The cost of each potential assignment is contained in the cost matrix, costmatrix. Each matrix entry represents the cost of a possible assignments. Matrix rows represent tracks and columns represent detections. All possible assignments are represented in the cost matrix. The lower the cost, the more likely the assignment is to be made. Each track can be assigned to at most one detection and each detection can be assigned to at most one track. If the number of rows is greater than the number of columns, some tracks are unassigned. If the number of columns is greater than the number of rows, some detections are unassigned. You can set an entry of costmatrix to Inf to prohibit an assignment.

costThreshold represents the set of three gates used for assigning detections to tracks.

The function returns a list of unassigned tracks, unassignedrows, and a list of unassigned detections, unassignedcolumns.

example

Examples

collapse all

Find the assignments from a cost matrix using assignTOMHT with a nonzero C1 gate and a nonzero C2 gate.

Create a cost matrix that assigns:

  • Track 1 to detection 1 within the C1 gate and detection 2 within the C2 gate.

  • Track 2 to detection 2 within the C2 gate and detection 3 within the C3 gate.

  • Track 3 is unassigned.

  • Detection 4 is unassigned.

costMatrix = [4 9 200 Inf; 300 12 28 Inf; 32 100 210 1000];
costThresh = [5 10 30];

Calculate the assignments.

[assignments, unassignedTracks, unassignedDets] = assignTOMHT(costMatrix,costThresh)
assignments = 4×2 uint32 matrix

   1   1
   1   2
   2   2
   2   3

unassignedTracks = 2×1 uint32 column vector

   2
   3

unassignedDets = 2×1 uint32 column vector

   3
   4

Tracks that are assigned detections within the C1 gate are not considered as unassigned. For example, track 1. Detections that are assigned to tracks within the C2 gate are not considered as unassigned. For example, detections 1 and 2.

Input Arguments

collapse all

Cost matrix, specified as an M-by-N matrix. M is the number of tracks to be assigned and N is the number of detections to be assigned. Each entry in the cost matrix contains the cost of a track and detection assignment. The matrix may contain Inf entries to indicate that an assignment is prohibited. The cost matrix cannot be a sparse matrix.

Data Types: single | double

Assignment gates, specified as a positive, real-valued three-element vector [c1gate,c2gate,c3gate] where c1gate <= c2gate <= c3gate.

Example: [0.1,0.3,0.5]

Data Types: single | double

Output Arguments

collapse all

Assignment of detections to track, returned as an integer-valued L-by-2 matrix where L is the number of assignments. The first column of the matrix contains the assigned track indices and the second column contains the assigned detection indices.

Data Types: uint32

Indices of unassigned tracks, returned as an integer-valued P-by-1 column vector.

Data Types: uint32

Indices of unassigned detections, returned as an integer-valued Q-by-1 column vector.

Data Types: uint32

Algorithms

collapse all

References

[1] Werthmann, John R. "Step-by-step description of a computationally efficient version of multiple hypothesis tracking." In Signal and Data Processing of Small Targets 1992, vol. 1698, pp. 288-300. International Society for Optics and Photonics, 1992.

Extended Capabilities

expand all

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2018b