匈牙利算法用于人脸匹配

3

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

我确实了解该算法的工作原理,但无法弄清如何在有坐标的二维空间中构建输入矩阵。 假设我在帧中检测到三个人:

**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

匈牙利算法解决二分图匹配问题。据我理解,它在运动跟踪中的应用解决了一种分配问题。

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

现在您有两个测量值(想象位置),即您在某个时间点测量X1X2,在另一个时间点测量Y1Y2。现在的问题是决定X1是否对应于Y1X2是否对应于Y2或者反过来。

方法是对点进行一些度量(想象欧几里得距离)。因此,每个解释都对应一个分配;该分配将由度量引起总成本。使用匈牙利算法,选择成本最小的分配。该方法的合理性在于最便宜的分配将是最有可能的分配。


谢谢,如果我用更简单的方式来表述:我的行将是检测到的当前帧坐标,列将是先前帧的坐标,并且这些点之间的值将是欧几里得距离吗? - skornos
1
这似乎是正确的。据我理解,您想匹配的分区(在您的公式中,成本矩阵的行和列)将是不同帧中的人员。然而,在您最初的问题中,您写了由3个人组成的行,然后是6列。您应该有3列。 - Codor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接