Ноги, крила... головне - хвіст! Людське тіло з точки зору Intel RealSense


Робота програміста цікава своєю різноманітністю. У залежності від розв'язуваної задачі, ти заглиблюєшся в моделювання кліматичних процесів, то в біологію ділення клітин, то в зоряну фізику… Але буває і по-іншому: звичайна на перший погляд проблемка відкриває перед тобою безодню нюансів. Розробники, які зіткнулися вперше з технологією Intel RealSense, напевно, дивуються, наскільки складні процеси розпізнавання і відстеження положення рук або обличчя, адже наш мозок займається цим практично без нашої участі. Які ж особливості нашої анатомії слід враховувати при проектуванні природних інтерфейсів і яких успіхів досягли творці RealSense на цьому шляху?
В кінці посту — запрошення на Intel RealSense Meet Up в Нижньому Новгороді 24 квітня. Нижньогородці, не пропустіть!

Подивіться на свої руки і спробуйте згинати різні пальці. Зауважте: при згинанні вони залежать один від іншого. Тому досить відстежувати всього два суглоба, щоб домогтися реалістичного згинання чотирьох пальців руки (всіх, крім великого). Тільки вказівний палець можна зігнути, не згинаючи при цьому решта пальців, тому для вказівного пальця потрібен власний алгоритм відстеження суглобів. Для інших пальців все простіше: якщо зігнути середній палець, то також згинається безіменний палець і мізинець; якщо зігнути безіменний палець, при цьому згинається середній палець і мізинець; якщо зігнути мізинець, то згинаються середній і безіменний пальці.

Продовжимо вивчення наших рук. Кут, на який може зігнутися певна фаланга пальця, залежить від довжини цієї фаланги (а не від суглоба). Верхня фаланга середнього пальця може зігнутися на менший кут, ніж середня фаланга цього ж пальця, а кут згину середньої фаланги менше кута, на який може зігнутися нижня фаланга. Зауважимо тут, що відстежувати руки дитини набагато важче, ніж дорослого, оскільки складніше отримувати дані для рук невеликого розміру і точно їх інтерпретувати.

В даний час технологія RealSense дозволяє одночасно відстежувати 22 суглоба у кожній кисті і дві руки (до речі, вони не зобов'язані бути правою і лівою, а можуть належати різним людям). У будь-якому випадку, комп'ютер знає, яка рука перед ним. Важливим кроком вперед стало виключення етапу калібрування, хоча в деяких складних випадках (знову-таки, скажімо, якщо перед камерою дитина) система просить провести початкову калібрування. Зате далі рука людини не просто візується по вузловим точкам, але і може бути добудована самостійно у тому випадку, якщо її частина вийшла з поля зору камери або недостатньо висвітлена. У тому ж випадку, якщо умови дозволяють, рука буде відокремлена від знаходиться ззаду фону, навіть у тому випадку, якщо він періодично змінюється.

Точність визначення положення одних частин руки щодо інших дозволяє реалізувати дуже цікаві варіанти передачі інформації. Скажімо, можна використати відносні значення розкриття долоні — від повністю розкритою до повністю стиснутого кулака (від 0 до 100). Погодьтеся це вже трохи схоже на мову жестів. До речі, реалізація класичного мови жестів відкриє для RealSense ще одну важливу і потрібну область застосування — реабілітацію людей з обмеженими можливостями. Навряд чи у якоїсь комп'ютерної технології може бути більш людяне застосування…

Перейдемо тепер до розпізнавання жестів. В даний час Intel RealSense підтримує 10 готових жестів — ви їх бачите на малюнку. Розпізнавання може бути статичним (нерухомі пози) або активних (поза в русі). Природно, ніщо не заважає перемикатися з одного режиму в інший, наприклад, статична розкрита долоня стає активною при махании. Розпізнавання жестів на порядок складніше простого відстеження руху, оскільки тут необхідно не просто обчислювати положення точок, але і порівнювати переміщення з певними зразками. Тому без навчання тут уже не обійтися, причому навчатися повинні обидві сторони: комп'ютера необхідно навчитися детектувати ваші рухи, а вам — правильно рухатися.

Чим чіткіше буде ваш жест, тим зрозуміліше він буде для машини. Можливо, на перших порах ви будете відчувати певний психологічний дискомфорт: в реальному «людської» життя ми майже ніколи не фіксуємо жести, а видаємо їх один за одним безперервно. Для RealSense ж необхідні початкова і кінцева фаза і тривале дію між ними (тривалість жесту, до речі, теж може бути задіяно як параметр). Динамічний рух визначається в залежності від ситуації по переміщенню або за часом.

Як видно, простору для непорозуміння в природних інтерфейсів предостатньо. Скажімо, ті жести, які ми називаємо «схожими» комп'ютер, швидше за все, інтерпретує як однакові. Таких ситуацій проектувальникам треба уникати. Далі, додаток повинен постійно стежити, щоб людина, що знаходиться в кадрі, з нього не вилазив і в необхідних випадках видавати попередження. Чимало нюансів додає камера RealSense, має свої особливості… ну, просту задачку вирішувати ж нецікаво, правда? Ось ми і вирішуємо складну.

Наступного разу, якщо випаде нагода, ми поговоримо про розпізнавання особи. А поки, користуючись нагодою, хочу запросити всіх програмістів Нижнього Новгорода, які цікавляться технологією Intel RealSense, на неформальну зустріч з фахівцями компанії, яка пройде 24 квітня, в п'ятницю, за адресою вул. Магістратська, будинок 3. У програмі: доповіді з теми, відповіді на питання, демонстрації обладнання і, звичайно, зацікавлені обговорення — як же без них? Приходьте, буде цікаво.

При написанні поста використовувалися статті IDZ:

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.