Как вы делаете и узнаете жесты? - PullRequest
2 голосов
/ 19 ноября 2011

Я использую веб-камеру для получения видеопотока, а затем выполняю отслеживание движения для этого видеопотока.Система отслеживания движения возвращает координаты (x,y) непрерывно.

Я хочу использовать эти (x,y) для распознавания таких жестов, как «проведите пальцем влево», «проведите пальцем вправо», «проведите пальцем вверх» или «проведите пальцем вниз».

Как мне создавать и хранить шаблоны этих жестов и как выяснить / распознать, произошел ли один из этих жестов?

Заранее спасибо:)

PS : я использую Flex 4 и ActionScript 3.0.Если кто-то может помочь мне с логикой, я могу написать это в ActionScript.

Ответы [ 3 ]

3 голосов
/ 12 июля 2012

Подход, который я мог бы придумать, состоял бы в том, чтобы иметь серию (X, Y) координат, представляющих точки вдоль жеста.В небольшом масштабе, если жест, прошедший через ваш экран, был изображен так:

| 1 | 1 | 1 |

| 1 | 0 | 0 |

|1 | 0 | 0 |

и представлен (из верхнего левого угла, представляющего 0,0):

(0,2) (0,1) (0,0) (0,1) (0,2)

Разбейте координаты x, y на отдельные двумерные массивы с общим расстоянием, пройденным между текущей координатой и первой точкой (во всех случаях в этом примере оно будет увеличиваться на 1), таку вас будет два массива:

X: (0,0) (1,1) (2,2)

Y: (0,1) (1,1) (2,2)

Теперь выполните наименьший квадрат для каждого массива, чтобы найти наиболее близкое представление об изменении x и изменении y в виде квадратичных функций.Сделайте то же самое со своими жестами для каждого детерминации, а затем вставьте координаты x, y ваших определенных жестов в квадратичную функцию жеста пользователя и в определенные вами жесты и посмотрите, какой из них соответствует ближайшему.Это ваш жест.

(я никогда не пробовал обрабатывать жесты, но не понимаю, почему это не сработает)

2 голосов
/ 11 июля 2012

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

Прежде всего, вам нужно уметь вообще обнаруживать движение.Есть несколько способов сделать это, например, вычитание фона или отслеживание BLOB-объектов.

Затем вам нужно извлечь определенные элементы из вашего изображения, например, руку.Опять же, есть несколько способов сделать это.Начиная от аппроксимации / оценки цвета кожи, которая очень подвержена ошибкам при различных условиях освещения, и заканчивая более продвинутыми методами, которые действительно пытаются «проанализировать» форму объекта.Эти алгоритмы со временем «учатся», как должна выглядеть рука.

Я могу только порекомендовать купить приличную книгу о компьютерном зрении и исследовать в Интернете статьи и т. Д. Существуют также библиотеки, такие как OpenCV, которые можно использовать для получения дополнительной информации о реализации.Должно быть несколько портов OpenCV для ActionScript 3. Я также могу порекомендовать статьи и инструменты от Евгения Затепякина (http://blog.inspirit.ru). Он отлично работает с CV с ActionScript 3.

Короче говоря, вы должныисследовательское отслеживание движения и извлечение признаков.

1 голос
/ 10 июля 2012

Лучшее место для начала - прочитать о том, как работает распознавание языка жестов или ввод с трекпада, например, создание эталонных изображений и сравнение их с пользовательским вводом. Для Adobe есть FLARToolKit , который подробно описан в статье дополненной реальности на их веб-сайте.

Ссылки:

Трекпад Science

Распознавание жестов рук

Исследования по распознаванию языка жестов - PDF

Пошаговое руководство по распознаванию жестов - Видео

...