Python 多目标跟踪-匈牙利算法
目录
- 一、概述
- 二、场景举例
- 三、代码示例
- 三、示例
一、概述
匈牙利算法:是一种数据关联(Data Association)算法,其实从本质上讲,跟踪算法要解决的就是数据关联问题。假设有两个集合S和T,集合S中有m个元素,集合T中有n个元素,匈牙利算法要做的是把S中的元素和T中的元素两两匹配(可能匹配不上)。结合跟踪的情景,匈牙利算法的任务就是把t帧的bbox与t-1帧的bbox两两匹配,这样跟踪就完成了。
要想匹配就需要一定的准则,匈牙利算法依据的准则是“损失最小“。损失由损失矩阵的形式来表示,损失矩阵描述了匹配两个集合中某两个元素所要花费的代价。
算法实现步骤:
- 第一步:遍历矩阵的每一行,找到每行的最小值,并从该行的每个元素中减去这个最小值。
- 第二步:遍历矩阵的每一列,找到每列的最小值,并从该列的每个元素中减去这个最小值。
- 第三步:以最少数量的线条划掉所有零。
- 第四步:在剩下的矩阵中,减去最小值;如果有零被交叉,那么把这个最小值加上去。
第五步&#