据我了解,跟踪算法会预测给定对象在下一帧中的位置(在已经执行对象检测之后)。然后在下一帧中再次识别该对象。尚不清楚的是跟踪器如何知道将第二帧中的对象与第一帧中的对象关联起来,尤其是当帧中有多个对象时。
我在一些地方看到使用预测和所有检测之间的欧几里德距离创建成本矩阵,并且问题被定义为分配问题(匈牙利算法)。
我对跟踪的理解是否正确?还有其他方法可以确定一帧中的对象与下一帧中的对象相同吗?
据我了解,跟踪算法会预测给定对象在下一帧中的位置(在已经执行对象检测之后)。然后在下一帧中再次识别该对象。尚不清楚的是跟踪器如何知道将第二帧中的对象与第一帧中的对象关联起来,尤其是当帧中有多个对象时。
我在一些地方看到使用预测和所有检测之间的欧几里德距离创建成本矩阵,并且问题被定义为分配问题(匈牙利算法)。
我对跟踪的理解是否正确?还有其他方法可以确定一帧中的对象与下一帧中的对象相同吗?
你的理解是正确的。您已经描述了一个简单的成本函数,它可能在许多情况下都能很好地工作。但是,也会有失败的时候。
假设您有计算资源,您可以尝试通过使成本函数更复杂来使您的跟踪器更健壮。
您可以做的最简单的事情是考虑卡尔曼滤波器的误差协方差,而不仅仅是使用欧几里得距离。请参阅 MATLAB 中vision.KalmanFilter对象的文档中的距离方程。另请参阅基于运动的多对象跟踪示例。
您还可以在成本函数中包含其他信息。您可以考虑这样一个事实,即对象的大小不应在帧之间发生太大变化,或者对象的外观应保持不变。例如,您可以计算检测的颜色直方图,并将成本函数定义为“卡尔曼滤波器距离”和颜色直方图之间的某个距离的加权和。