2013-01-17 53 views
0

我正在开发使用Microsoft Visual 2010 Express中的OpenCV开发软件。现在我在编码之前需要知道的是我必须遵循的程序。OpenCV开发运动检测软件

概述: 我想开发软件来检测简单的拳击动作,如(左拳,右拳)并输出结果。

现在所在挣扎是我应该采取什么方法,我应该如何解决这方面的发展即

  1. 捕获视频素材,并能提取让说处理每5帧。
  2. 我是否必须提取并存储此帧可能有参考图像从中减去捕获帧。
  3. 一旦我捕获帧这将是处理它的最佳方法:

    * Threshold it, then 
        * Detect the edges, then 
        * Smooth the edges using some filter, then 
        * Draw some BOUNDING boxes....? 
    

您有什么看法对这个家伙还是我失去了一些东西或者有更好更简单的方法... ?有什么建议么...?

任何答案将非常感激 诗......它不是我的功课:)

+0

对不起,打破这个给你,但检测来自视频源的人类手势并不是一件容易的事。阈值和几个过滤器不会这样做。我建议您搜索关于该主题的论文,以便掌握问题的难点。此外,在不同的光线条件下可靠地做到这一点是非常困难的,甚至没有被现场最好的人掌握。 – KlausCPH

回答

0

我不知道,如果只分析每5帧就足够了,因为平时拳是如此之快,他们可能是忽视。

我假设你实际上想找到的是快速向前(朝照相机)的拳头动作。

在OpenCV的情况下,我会首先从面孔的这种运动开始,因为已经提供了一些关于如何在软件包中执行此操作的示例。

要检测和跟踪面部,您可以使用CvHaarClassifierCascade,但由于这不足以进行运行时检测,请继续使用Lukas-Kanade跟踪此类找到的面部。只需在以前找到的脸部内选择一些好看的点,记住它们与任意脸部中间的距离,并在每帧更新它。看到这个人http://www.youtube.com/watch?v=zNqCNMefyV8 - 只是跟随Lukas-Kanade跟随的一些随机点的例子。请注意,与面孔不同,拳头可能不易于追踪,因为它们的表面相当统一,因此更好地检查OpenCV中的Lukas-Kanade演示。

当然,每一帧实际的脸部都会飘走,偶尔重新运行CvHaarClassifierCascade并插入到当前的脸部位置。

你也应该能够做到拳头以上,但是这需要带有拳头图片的训练分类器(在OpenCV中已经提供了使用面部训练的分类器)。

现在有了拳头/脸部追踪,你可以尝试观察点发生了什么 - 当有人拳打时,他们在某个方向快速移动,而在仍然没有移动的拳头。所以,当你计算最近帧的单个点的平均移动时,值越高,出现一次冲击的可能性就越大。或者,如果你设法准确地追踪它们,如果它们之间的距离增加,那意味着物体更接近相机 - 所以可能是一拳。

请注意,如果至少不知道图片中拳头大小的变化,可能很难区分手的动作是向前还是向后,或者用户是通过向左或向右移动拳头来伪造它。你可能不得不想出一些专门的算法(可能有试验和错误)来检测,比如说,增加一些屏幕颜色像素的位置,以前发现的拳头。

0

您正在寻找的是动作识别的研究领域,例如www.nada.kth.se/cvap/actions/或者可能的解决方案是例如STIP(时空兴趣点)方法www.di.ens.fr/~laptev/actions/。但是,如果你必须处理遮挡或不同的观点,最后这是一项艰巨的工作。