【问题标题】:How do I detect multiple people and track them in opencv/emgucv如何检测多人并在 opencv/emgucv 中跟踪他们
【发布时间】:2014-01-26 02:14:13
【问题描述】:

我一直试图在一个狭小的空间内检测到多个人并因此跟踪他们。

输入:来自安装在小房间内的摄像头的闭路电视信号。

预期输出:跟踪并存储人们从房间一端移动到另一端时所走的路径。

我尝试实现一些基本方法,例如背景减法和行人检测。但结果并不如预期。

在执行背景减法得到的结果中,由于被遮挡,blob不是一个单一的实体(一个人的blob被分成多个小blob)因此,将其检测为一个人是非常困难的。 现在,考虑有很多人站得很近的情况。在这种情况下,使用简单的背景减法来检测人是一场彻头彻尾的灾难。

有没有更好的方法来检测多人? 或者有没有办法改善背景减除的结果?

请提出一种跟踪多人的好方法?

【问题讨论】:

  • 这是一个非常广泛的问题,也是一个困难的潜在问题。想想如果有些人不动,他们也会成为背景的一部分。因此,每个被跟踪的人都必须在不同背景的上下文中进行跟踪。可能。 This answer 有一些有用的链接。
  • 您说得对,先生。不动的人确实成为背景的一部分。谢谢你的链接。我已经看到了一些讨论的方法,比如形状匹配等等。但坦率地说,我明白了,但我仍然不确定如何实现这一切。你能帮我拿些样品吗?
  • some sample code here - 这是前沿研究,这不是一个小问题,而且你的问题对于 StackOverflow 来说太宽泛了。
  • 谢谢。我会尽量让我的问题更具体。

标签: opencv computer-vision emgucv


【解决方案1】:

这是一个相当困难的问题,并且没有开箱即用的解决方案,因此您可能需要尝试不同的方法。

在开始时,您需要做出一些假设,例如静态摄像机位置,并且所有不是背景的东西都是一个人或一个人的一部分,可能是多个人。人物不能出现在图像中,但他们必须“进入”它(并且在进入时被检测到并在检测后被跟踪)。

检测和跟踪都可能是困难的问题,因此您可能需要先关注其中一个问题。我将从跟踪开始并选择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% 命中率 ;)

我将创建一个示例视频并对其进行处理,手动将进入的人员作为检测进行掩蔽,并使用这些检测实现跟踪器。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 2020-06-03
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2013-05-16
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多