Слежение за пальцами руки с Microsoft Kinect

в 11:38, , рубрики: Kinect, Kinect for Windows, Microsoft Kinect, обработка изображений, распознавание жестов, метки: , ,

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

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

Итак, встречайте, Kinect 3D Hand Tracking или, по нашему, «Слежение за 3D позицией руки при помощи Kinect».

Что было раньше

До этого момента лично я видел подобное только вот здесь и лично у меня демка по этой ссылке так стабильно и не заработала.
К тому же если отойти от сенсора больше чем на 2 метра, следить за пальцами у нее не выходило вообще (на самом деле мои пальцы кинект терял уже на расстоянии метра полтора, но может то у меня пальцы неправильные). Правда происходило все достаточно быстро даже на моем ноуте, без использования графического процессора. Да и код открыт, в виду того, что это демо проект, который теперь включен в, не побоюсь этого утверждения, самый большой open source проект для роботики — ROS.
Но далее мы будем говорить не об этом. Представим, что нам интересно очень четко отслеживать движения пальцев на руке.

Кто все эти люди и что они написали

Трое исследователей: Iason Oikonomidis — Nikolaos Kyriazis - Antonis Argyros с факультета компьютерных наук университета Крита написали демку, которую можно собственноручно пощупать, которая следит за рукой, в том числе и за всеми 5-ю пальцами на ней.
Что же именно написала эта тройка?
(Следующий список — перевод непосредственно со страницы проекта)
Их софт следит за 3D позицией, ориентацией и полной артикуляцией человеческой руки основываясь на визуальных данных, без использования каких бы то ни было маркеров. Метод, который был разработан:

  • моделирует полную артикуляцию руки (26 степеней свободы), выполняющую любые естественные движения;
  • работает основываясь на дынных, полученных с легко доступной и широко используемой RGB-D камерой (Kinect, Xtion);
  • не требует маркеров, специальных перчаток;
  • дает результат со скоростью 20 fps, правда на графическом процессоре.
  • не требует калибрации;
  • не использует ни одну проприетарную технологию для слежения за позицией, как то Nite, OpenNI или Kinect SDK

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

Пример 1

Пример 2
Пример 3

Пример 4

Пример 5

Как быстро все это работает

И еще немного о том на каком железе все это дело стоит запускать.

  • CPU: Pentium® Dual-Core CPU T4300 @ 2.10GHz with 4096 MBs of RAM, GPU: GeForce GT 240M with 1024 MBs of RAM, Tracking FPS: 1.73792
  • CPU: Intel® Core(TM)2 CPU 6600 @ 2.40GHz with 4096 MBs of RAM, GPU: GeForce 9600 GT with 1024 MBs of RAM, Tracking FPS: 2.15686
  • CPU: Intel® Core(TM)2 Duo CPU T7500 @ 2.20GHz with 4096 MBs of RAM, GPU: Quadro FX 1600M with 256 MBs of RAM, Tracking FPS: 2.66695
  • CPU: Intel® Core(TM) i7 CPU 950 @ 3.07GHz with 6144 MBs of RAM, GPU: GeForce GTX 580 with 1536 MBs of RAM, Tracking FPS: 19.9447

Итого

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

PS. Буду признателен за указание на неточности и открыт для пожеланий. Спасибо.

Автор: niosus

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js