我一直试图在一个狭小的空间内探测多个人,从而跟踪他们。
输入:从安装在小房间的相机中取出闭路电视。
预期输出:跟踪并存储人们从房间一端移动到另一端时所走的路径。
我试图实现一些基本方法,如背景减法和行人检测。但结果并不理想。
在通过实施背景扣除获得的结果中,由于遮挡,斑点不是单个实体(一个人的斑点被分成多个小斑点)因此,将其作为单个人检测是非常困难的。 现在,考虑一下有很多人站在一起的情况。在这种情况下,使用简单的背景减法检测人是一场彻底的灾难。
有没有更好的方法来检测多人? 或者有没有办法改善背景减法的结果?
请建议一个跟踪多人的好方法吗?
答案 0 :(得分:3)
这是一个非常难的问题,并且没有开箱即用的解决方案,因此您可能需要尝试不同的方法。
一开始你会想要做一些假设,比如静态相机位置和非背景的一切都是一个人或一个人的一部分,也许是多个人。人员不能出现在图像中,但他们必须“输入”它(并在检测后进入和跟踪时检测到)。
检测和跟踪都可能是难题,因此您可能希望首先关注其中一个问题。我会从跟踪开始并选择probabilisic tracking method
,因为像tracking by detection
这样的简单跟踪方法可能无法很好地处理重叠和多个目标。
Tracking:
我会尝试像http://www.irisa.fr/vista/Papers/2002/perez_hue_eccv02.pdf这样的粒子滤镜
它能够跟踪多个目标。
Detection:
OpenCV中有一个HoG人物探测器,对于正直的人来说非常好
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
但最好知道图像中人物的大致尺寸并相应地缩放图像。您可以通过缩放斑点或斑点组合在背景扣除后执行此操作,或者使用相机校准并将尺寸为1.6m至2.0m的图像部分缩放到HoG探测器尺寸。否则你可能会有许多未命中和许多错误警报。
最后,你需要工作和研究一段时间才能让事情顺利进行,但不要指望早期成功或100%的命中率;)
我会创建一个示例视频并对其进行处理,手动屏蔽输入检测人员并使用这些检测实现跟踪器。