KLT Tracker 用于 CCTV 中的人体跟踪

KLT Tracker for human tracking in CCTV

我正在尝试使用 KLT 跟踪器在闭路电视录像中进行人体跟踪。人民与中央电视台非常亲近。我注意到有时人们会改变头部的方向,而且帧速率也会稍微慢一些。我读过 Rodrigues 等人的文章。论文第 3.4 节:

"This simple procedure (KLT tracking procedure) is extremely robust and can establish matches between head detections where the head HAS NOT BEEN continuously detected continuously detected due to pose variation or partial occlusions due to other members of the crowd".

论文可以在这个 link 中找到:Rodriguez et al.

1).我了解到 KLT 跟踪器对姿势变化和遮挡具有很强的鲁棒性。我说的对吗?

到目前为止,我一直在尝试使用 MATLAB KLT 跟踪镜头中的一个人,如下所示:

MATLAB KLT

但是,仅在 3 帧之后就没有找到这些点。

2).有人可以解释为什么会这样,或者更好的解决方案。也许使用 particle/Kalman 过滤器会更好?

由于以下原因,我不建议将 KLT 跟踪器用于近距离闭路电视摄像机: 1. CCTV 帧率通常较低,因此人们在帧之间显着改变他们的外貌 2. 由于相机离人很近,由于透视效应,他们也会随着时间的推移改变他们的外观(例如当人离相机远时可以看到脸,但随着 he/she 越来越近,只有顶部头可见)。 3. 由于距离近,人的尺度和纵横比也会发生显着变化,这对一些头部检测器来说是一个挑战。

KLT 仅在像素邻域(包括前景和背景)保持相似时才有效。上述属性使大多数像素不太可能出现这种情况。我只能推荐 KLT 作为基于运动的额外跟踪提示,作为部分运动场的矢量。

大多数单人跟踪器不能很好地适应尺度变化。我建议您从一些最先进的跟踪器开始,例如 Struck(可用 Sam Hare 的 C++ 代码 here),然后修改搜索例程以适应比例变化。

KLT 本身仅适用于短期跟踪。问题在于您会因为跟踪错误、3D 旋转、遮挡或物体离开视野而失分。对于长期跟踪,您需要某种方式来补充点数。在 multiple face tracking example 中,新点是通过定期重新检测面部获得的。

你的具体情况听起来有点奇怪。你不应该在仅仅 3 帧之后就失去所有的分数。如果发生这种情况,要么是物体移动得太快,要么是你的帧率太低。