algorithm - 匈牙利人脸匹配算法

标签 algorithm hungarian-algorithm

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

我确实不明白该算法是如何工作的,但如果我有带坐标的二维空间,我无法弄清楚如何构建输入矩阵。因此,假设我检测到画面中有 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 |                        |
+---------+------------------------+

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

感谢您的帮助。

最佳答案

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

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

现在你有两个测量(想象位置),即你在某个时刻测量 X1X2 以及 Y1Y2 在其他某个时刻。现在的问题是确定 X1 是否对应于 Y1 以及 X2 是否对应于 Y2 还是相反。

方法是对点进行一些测量(想象一下欧氏距离)。所以每个解释都会对应一个任务;该转让将产生因该措施而产生的总成本。使用匈牙利方法,选择成本最小的分配。最便宜的任务是最有可能的任务这一论点证明了该方法的合理性。

关于algorithm - 匈牙利人脸匹配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864637/

相关文章:

python - 具有不允许分配和不可解矩阵的匈牙利方法

algorithm - 给定 2d 矩阵找到元素的最小总和,以便从每一行和每一列中选择一个元素?

python - 获得最大 yield 的算法

java - 具有特定输出的三重嵌套 For 循环 (java)

performance - 埃拉托斯特尼筛法与试除时间复杂度

Java匹配两个字符串之间的每两个序列字符

algorithm - 从建筑物上扔鸡蛋

algorithm - 为什么两个 O(n) 程序相同?常数重要吗?

寻找最近物体的算法

python - Scipy 的线性求和分配给出不正确的结果