质心跟踪算法依赖于(1)现有对象质心(即,质心跟踪器之前已经看到的对象)与(2)视频中后续帧之间的新对象质心之间的欧几里得距离 。质心跟踪算法的主要假设是一个给定的对象将潜在地移动在后续的帧之间,但距离为帧中的质心之间和将小比对象之间的所有其它距离。因此,如果我们选择将质心与后续帧之间的最小距离相关联,则可以构建对象跟踪器。另外,我们将在旧对象无法与任何现有对象匹配的情况下(总共N个后续帧)注销旧对象。
步骤1:接受边界框坐标并计算质心
步骤2:计算新边界框与现有对象之间的欧几里得距离
步骤3:更新(x,y) -现有对象的坐标
步骤4:注册新对象
步骤5:注销旧对象
初始化下一个唯一的对象ID和两个有序的用于跟踪映射给定对象的字典 ID到它的质心和它拥有的连续帧数分别被标记为“消失”
存储给定的最大连续帧数对象被标记为“消失”,直到我们需要注销跟踪对象,CentroidTracker为质心跟踪器
# import the necessary packages
from scipy.spatial import distance as dist
from collections import OrderedDict
import numpy as np
class CentroidTracker():
def __init__(self, maxDisappeared=50):
self.nextObjectID = 0
self.objects = OrderedDict()