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

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

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

Это основано на исследовании Wii Джонни Чанг Ли. Моя точная установка точно такая же, как у аспирантов из Нидерландов, представленных здесь. Я могу легко отслеживать положения 4 точек в двухмерном пространстве, и я написал базовое программное обеспечение для получения и визуализации этих точек.

alt textальтернативный текстальтернативный текст

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

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


person mmcdole    schedule 19.03.2009    source источник


Ответы (6)


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

person dustyburwell    schedule 19.03.2009

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

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

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

  • Do the CofG calculation on pairs, with the caveats that:
    • If there are four points visible, pairs are chosen to minimize the product of the intrapair distances
    • Если видны три точки, ближайшие две — это одна пара, другая — другая.
    • Используйте предыдущие/последующие кадры для переопределения при необходимости
  • Вместо созвездия у вас есть вложенная структура пар расстояние/ориентация (т. е. один D/O между руками и еще один для каждой руки).
  • Передайте полные сокращенные данные распознавателям для каждого жеста, и пусть они разбираются в том, что их волнует.
  • Если вы хотите быть симпатичным, сделайте небольшой DSL, чтобы распознать шаблоны, и напишите что-то вроде:

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

    or

    fire when
        over frames.final(3): hands.all (h => h.click)
    
person MarkusQ    schedule 19.03.2009
comment
@MarkusQ, спасибо за комментарии. Для справки, алгоритм щелчка нидерландских студентов работает следующим образом: если wiimote теряет след точки, а другая точка в его паре находится в пределах порога близости, то это щелчок. - person mmcdole; 19.03.2009
comment
Когда пальцы соединятся, wiimote увидит оба пальца как одну каплю, а не как две. Таким образом, он теряет одно из своих очков. Это также может произойти, когда ваши руки больше не видны, поэтому порог близости используется для предотвращения ложных срабатываний. - person mmcdole; 19.03.2009

Видео того, что было сделано с такой техникой, если кому интересно?

Пэтти Мэйс демонстрирует "Шестое чувство" - TED 2009

person Elijah Glover    schedule 21.03.2009

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

person Ignacio Vazquez-Abrams    schedule 22.03.2009

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

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

person mpen    schedule 21.03.2009
comment
Ну, по сути, рисование круга, крестика или смахивание всех 4 точек в разных направлениях ~это~ жесты. В моем двухмерном мире мои жесты — это формы. Однако мне придется изучить алгоритмы обучения. - person mmcdole; 21.03.2009
comment
Ну, да, это жесты, я просто имею в виду, что если вы можете понять, какую форму они образуют, вы также можете понять, что это был за жест. т. е. я думаю, что распознавание жестов сводится к распознаванию формы (что может быть более простой проблемой для решения - менее вероятностной). - person mpen; 23.03.2009

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

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

person Community    schedule 21.03.2009