Алгоритм распознавания жестов - Kinect - PullRequest
2 голосов
/ 28 января 2012

Я разрабатываю приложение для Kinect для моего последнего университетского проекта, и у меня есть требование разработать ряд алгоритмов распознавания жестов.Я был бы признателен за некоторые советы по этому поводу.

Мой первоначальный алгоритм - обнаружение движения руки пользователя ближе к кинекту в течение определенного периода времени.Сейчас я скажу, что это произвольные 500 мс.

Моя идея заключается в следующем:

  • Записывать положение оси z каждые 100 мс и сохранять в List.
  • Каждый раз, когда записывается новая позиция, проверьте z-позицию для каждой из предыдущих 4 позиций в Списке.
  • Если позиция z изменилась на требуемое расстояние между любыми из них по отдельности или вместе, выстрелитеотключение события, распознанного жестом.
  • Если жест распознан, очистите Список и начните снова.

Впервые я попробовал что-то подобное и хотел бы посоветоватьна моей первоначальной наивной реализации.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Собираетесь ли вы использовать официальный Kinect SDK или драйверы с открытым исходным кодом (libfreenect или OpenNI)?

Если вы используете Kinect SDK, вы можете начать с взгляда на что-то вроде:

DTW lib preview

Candescent NUI lib preview

(хотя Candescent NUI больше фокусируется на обнаружении пальцев)

Если вы планируете использовать драйверы с открытым исходным кодом, попробуйте OpenNI иNITE .NITE поставляется с отслеживанием рук и жестами (смахивание, круговое управление, 2-ые ползунки и т. Д.).

Идея состоит в том, чтобы, по крайней мере, иметь обнаружение рук и продолжать с этого момента.Если у вас есть это, вы можете реализовать что-то вроде адаптации Unistroke Gesture Recognizer или посмотреть другие методы, такие как Motion Templates / MotionHistory и т. Д. .... адаптируя их кновые данные, с которыми вы можете играть сейчас.

Goodluck!

2 голосов
/ 28 января 2012

Если вы просто пытаетесь распознать пользователя, поворачивающего руку к вам, ваш подход должен сработать (несмотря на то, что он очень восприимчив к пропускам зажигания из-за зашумленных данных).То, что вы пытаетесь сделать, очень хорошо подходит для распознавания образов.Для этой и очень похожих задач люди очень часто с большим успехом используют скрытые марковские модели.Вы можете проверить статью в Википедии.Я не человек C #, но, насколько я знаю, у Microsoft есть очень хорошие библиотеки статистического вывода для C #, и они определенно будут включать реализации HMM.

...