单人跟踪视频序列

min*_*duc 5 opencv tracking image-processing computer-vision

作为论文工作的一部分,我需要构建一个人类跟踪程序,从视频或图像序列,如数据集KTHIXMAS假设:

  • 照明保持不变
  • 场景中只出现一个人

该程序需要实时执行

我搜索了很多,但仍然找不到一个好的解决方案.

请建议我一个合适的方法或现有的方案.

Abi*_*n K 11

案例1 - 如果相机静止

如果相机是静态的,跟踪一个人真的很简单.

您可以应用称为背景减法的方法.

  1. 在这里,为了获得更好的效果,您需要一个来自相机的裸图像,其中没有人.这是背景.(它也可以完成,即使你没有这个背景图像.但如果你有它,那就更好了.如果没有背景图像我会告诉你该做什么)

  2. 现在开始从相机捕获.取第一帧,将两者转换为灰度,平滑两幅图像以避免噪音.

  3. 从帧中减去背景图像.

  4. 如果框架没有改变背景图像(即没有人),你会得到一个黑色图像(当然会有一些噪音,我们可以删除它).如果有变化,即人走进框架,你将得到一个人和背景为黑色的图像.

  5. 现在将图像阈值化为合适的值.

  6. 施加一些侵蚀以去除小颗粒噪音.之后进行扩张.

  7. 现在找到轮廓.最有可能会有一个轮廓,即人.

  8. 查找质心或您想要跟踪此人的任何内容.

现在假设您没有背景图像,可以使用cvRunningAvg函数找到它.它会从您用于跟踪的视频中查找帧的运行平均值.但你可以明白,如果你得到背景图像,第一种方法更好.

以下是使用cvRunningAvg 实现上述方法.

案例2 - 相机不是静止的

这里背景减法不会给出好的结果,因为你无法获得固定的背景.

然后OpenCV附带一个人体检测样本样本.用它.

这是文件:peopledetect.cpp

我还建议你访问这个处理几乎相同问题的SOF:如何使用OpenCV检测和跟踪人员?