匈牙利面部匹配算法

时间:2014-04-04 13:46:30

标签: algorithm hungarian-algorithm

我正在为Android构建多个人脸跟踪器,我正在使用卡尔曼滤波器,显然需要一些算法来区分跟踪对象,目前我对匈牙利算法感兴趣。

我不明白算法是如何工作的,但如果我有带坐标的2D空间,我无法弄清楚如何构建输入矩阵。所以,我们只是说我在框架中检测到了3个人:

**Person1** on the coordinates [10, 20]
**Person2** on the coordinates [100, 125]
**Person3** on the coordinates [50, 200]

在下一帧中,在新坐标上仍然检测到3个人,但现在我想知道哪个是 Person1 ,哪个是 Person2 等等。上一张图片。

现在我不太确定如何构建矩阵。 列应该是不同的人:

+---------+-x1--y1--x2--y2--x3--y3-+
| Person1 |                        |
| Person2 |                        |
| Person3 |                        |
+---------+------------------------+

值是当前位置和最后找到的位置之间的距离? 我知道这看起来很愚蠢,但我很困惑。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

匈牙利方法解决了二分匹配问题。据我所知,它在运动跟踪中的应用解决了一个分配问题。

假设您在模型中有两个相同类型的AB点;这些可能是空间中的几何点(或其他模型的实例)。

现在您有两个测量值(想象位置),即您在某个时刻测量X1X2以及在其他某个时刻测量Y1Y2 。现在问题是要确定X1是对应Y1还是X2对应Y2还是反过来。

方法是对点进行一些测量(想象欧几里德距离)。所以每个解释都对应一个任务;任务将由该措施引起总成本。使用匈牙利方法,选择成本最小的分配。这种方法的理由是最便宜的分配是最可能的分配。