2012-01-28 114 views
2

我正在爲我最後一年的大學項目開發​​一個Kinect應用程序,並且我有一個需求來開發一些手勢識別算法。我會很感激這方面的一些建議。手勢識別算法 - Kinect

我的初始算法是在一定的時間範圍內檢測用戶的手靠近kinect。現在我會說這是一個任意的500毫秒。

我的想法是:每隔100ms,並存儲在列表

  • 記錄Z軸位置。
  • 每次記錄新位置時,檢查列表中每個前4個位置的z位置。
  • 如果z位置因個體或集體之間的所需距離而異,則觸發手勢識別事件。
  • 如果識別到手勢,清除列表,然後重新開始。

這是我第一次嘗試類似這樣的事情,並希望對我最初的幼稚實施提出建議。

謝謝。

回答

2

如果你只是想識別用戶擺動她的手,你的方法應該工作(儘管由於嘈雜的數據很容易失火)。你想要做的事情在模式識別領域非常好。爲此,以及非常類似的任務,人們經常使用隱馬爾可夫模型取得巨大成功。你可能想檢查維基百科文章。我不是C#的人,但據我所知,微軟有很好的C#統計推斷庫,並且肯定會包含HMM實現。

4

你打算使用官方的Kinect SDK還是開源驅動(libfreenect或OpenNI)?

如果您正在使用Kinect的SDK,你可以通過像在看看啓動:

DTW lib preview

Candescent NUI lib preview

(熾烈的靜穆NUI更側重於手指檢測雖然)

如果你打算使用開源驅動程序,嘗試OpenNI and NITE。 NITE帶有手部跟蹤和手勢(滑動,圓圈控制,2D滑塊等)。

這個想法是至少有手檢測並從那裏繼續。如果你有這些,你可以實現類似於Unistroke Gesture Recognizer的改編,或者查看其他技術,如運動模板/ MotionHistory等......將它們調整爲現在可以使用的新數據。

Goodluck!