2013-01-17 49 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/。但是,如果你必須處理遮擋或不同的觀點,最後這是一項艱鉅的工作。