Подтвердить что ты не робот

Как распознавание жеста работает?

В среде с несколькими касаниями, как распознается распознавание жеста? Какие математические методы или алгоритмы используются для распознавания или отклонения данных для возможных жестов?

Я создал некоторые ретро-отражающие перчатки и ИК-светодиодную матрицу в сочетании с пультом Wii. Пульт Wii делает внутреннее обнаружение blob и отслеживает 4 точки инфракрасного света и передает эту информацию на мой компьютер через Bluetooth-ключ.

Это основано на Johnny Chung Lee Wii Research. Моя точная настройка точно так же, как и выпускники из Нидерландов, представленные здесь. Я могу легко отслеживать 4-позиционные позиции в 2d-пространстве, и я написал свое основное программное обеспечение для получения и визуализации этих точек.

alt text http://i40.tinypic.com/x517yg.png alt text http://i42.tinypic.com/nao9x.png alt text http://i43.tinypic.com/65d1zp.png

Студенты из Нидерландов получили много функциональности из своего основного распознавания щелчка. Я хотел бы сделать это еще дальше, если бы мог, и реализовать некоторые другие жесты.

Как обычно выполняется распознавание жестов? Помимо чего-то тривиального, как я мог написать программное обеспечение для распознавания и идентификации различных жестов: различные прокрутки, круговые движения, трассировка букв и т.д.

4b9b3361

Ответ 1

Распознавание жеста, как я его видел, в любом случае, обычно реализуется с использованием методов машинного обучения, аналогичных программному обеспечению распознавания образов. Здесь классный проект по кодепроекту о распознавании жестов мыши в С#. Я уверен, что концепции довольно схожи, так как вы, вероятно, можете уменьшить проблему до двумерного пространства. Если у вас что-то будет с этим связано, я бы с удовольствием это увидел. Отличная идея проекта!

Ответ 2

Один из способов взглянуть на него - это проблема сжатия/распознавания. В принципе, вы хотите взять целую кучу данных, выбросить большую часть из них и классифицировать оставшуюся часть. Если бы я делал это (с нуля), я бы сделал следующее:

  • работа со скользящим историческим окном
  • возьмите центр тяжести четырех точек в стартовом кадре, сохраните его и вычтите из всех позиций во всех кадрах.
  • коэффициент каждого кадра на два компонента: форма созвездия и движение его CofG относительно последнего кадра.
  • сохранить абсолютный CofG для последнего кадра.
  • серия изменений CofG дает вам удары, волны и т.д.
  • серия морфинга созвездия дает вам пинки и т.д.

Увидев вашу фотографию (две точки на каждой руке, а не четыре точки на одном, doh!), я бы изменил это следующим образом:

  • Сделайте расчет CofG по парам, с оговорками, которые:
    • Если есть четыре точки видимых, пары выбираются для минимизации продукта расстояний внутри лифта
    • Если отображаются три точки, ближайшими двумя являются одна пара, другая - другая.
    • Использовать предыдущие/следующие фреймы для переопределения при необходимости
  • Вместо созвездия у вас есть вложенная структура пар расстояний/ориентации (т.е. один D/O между руками и еще один для каждой руки).
  • Передайте все уменьшенные данные распознавателям для каждого жестов и дайте им разобраться в том, что им нужно.
  • Если вы хотите получить милый, сделайте немного DSL, чтобы распознать шаблоны, и напишите такие вещи, как:

    fire when
        in frame.final: rectangle(points) 
      and
        over frames.final(5): points.all (p => p.jerk)
    

    или

    fire when
        over frames.final(3): hands.all (h => h.click)
    

Ответ 4

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

Возможно, кто-то с немного больше фона в этой части Информатики может осветить его дальше и предоставить более подробную информацию.

Ответ 5

Err.. Я работаю над распознаванием жестов в течение прошедшего года или около того, но я не хочу говорить слишком много, потому что я пытаюсь запатентовать свои технологии:) Но... мы имели некоторую удачу с адаптивным повышением, хотя то, что вы делаете, выглядит принципиально другим. У вас всего 4 точки данных для обработки, поэтому я не думаю, что вам действительно нужно "уменьшить" что-либо.

Что я буду исследовать, так это то, как такие программы, как Flash, превращают рисованный круг в реальный круг. Кажется, вы могли отслеживать точки в течение примерно секунды, а затем "плавно" прокладывать путь каким-то образом, а затем вы могли бы, возможно, уйти с жесткой кодировкой своих жестов (если вы сделаете их достаточно простыми). В противном случае, да, вы захотите использовать алгоритм обучения. Нейронные сети могут работать... Я не знаю. Просто выкидывать идеи:) Возможно, посмотрите, как OCR тоже... или даже Преобразование Hough. Мне кажется, что это проблема распознавания фигур больше, чем распознавание жестов.

Ответ 6

Самые простые инструменты распознавания жестов. Я рассмотрел использование векторного шаблона для их распознавания. Например, вы можете определить правильную прокрутку как "0", галочку "-45", 45, 45 ", по часовой стрелке -" 0 "," 45 "," -90 "," 135 "," 180 "," 135 "," 90 ", 0" и т.д.