Как распознавание жеста работает?
В среде с несколькими касаниями, как распознается распознавание жеста? Какие математические методы или алгоритмы используются для распознавания или отклонения данных для возможных жестов?
Я создал некоторые ретро-отражающие перчатки и ИК-светодиодную матрицу в сочетании с пультом 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
Студенты из Нидерландов получили много функциональности из своего основного распознавания щелчка. Я хотел бы сделать это еще дальше, если бы мог, и реализовать некоторые другие жесты.
Как обычно выполняется распознавание жестов? Помимо чего-то тривиального, как я мог написать программное обеспечение для распознавания и идентификации различных жестов: различные прокрутки, круговые движения, трассировка букв и т.д.
Ответы
Ответ 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)
Ответ 3
Видео о том, что было сделано с помощью такого рода технологий, если кто-то заинтересован?
Патти Маес демонстрирует шестое чувство - TED 2009
Ответ 4
Я не очень хорошо разбираюсь в этом типе математики, но я где-то читал, что люди иногда используют Марковские цепочки или Скрытые марковские модели, чтобы сделать распознавание жеста.
Возможно, кто-то с немного больше фона в этой части Информатики может осветить его дальше и предоставить более подробную информацию.
Ответ 5
Err.. Я работаю над распознаванием жестов в течение прошедшего года или около того, но я не хочу говорить слишком много, потому что я пытаюсь запатентовать свои технологии:) Но... мы имели некоторую удачу с адаптивным повышением, хотя то, что вы делаете, выглядит принципиально другим. У вас всего 4 точки данных для обработки, поэтому я не думаю, что вам действительно нужно "уменьшить" что-либо.
Что я буду исследовать, так это то, как такие программы, как Flash, превращают рисованный круг в реальный круг. Кажется, вы могли отслеживать точки в течение примерно секунды, а затем "плавно" прокладывать путь каким-то образом, а затем вы могли бы, возможно, уйти с жесткой кодировкой своих жестов (если вы сделаете их достаточно простыми). В противном случае, да, вы захотите использовать алгоритм обучения. Нейронные сети могут работать... Я не знаю. Просто выкидывать идеи:) Возможно, посмотрите, как OCR тоже... или даже Преобразование Hough. Мне кажется, что это проблема распознавания фигур больше, чем распознавание жестов.
Ответ 6
Самые простые инструменты распознавания жестов. Я рассмотрел использование векторного шаблона для их распознавания. Например, вы можете определить правильную прокрутку как "0", галочку "-45", 45, 45 ", по часовой стрелке -" 0 "," 45 "," -90 "," 135 "," 180 "," 135 "," 90 ", 0" и т.д.