
Работа программиста интересна своим разнообразием. В зависимости от решаемой задачи, ты углубляешься то в моделирование климатических процессов, то в биологию деления клеток, то в звездную физику… Но бывает и по-другому: самая обычная на первый взгляд проблемка открывает перед тобой бездну нюансов. Разработчики, столкнувшиеся впервые с технологией Intel RealSense, наверняка, удивляются, насколько сложны процессы распознавания и отслеживания положения рук или лица, ведь наш мозг занимается этим практически без нашего участия. Какие же особенности нашей анатомии следует учитывать при проектировании естественных интерфейсов и каких успехов добились создатели RealSense на этом пути?
В конце поста — приглашение на Intel RealSense Meet Up в Нижнем Новгороде 24 апреля. Нижегородцы, не пропустите!
Посмотрите на свои руки и попробуйте сгибать разные пальцы. Заметьте: при сгибании они зависят один от другого. Поэтому достаточно отслеживать всего два сустава, чтобы добиться реалистичного сгибания четырех пальцев руки (всех, кроме большого). Только указательный палец можно согнуть, не сгибая при этом остальные пальцы, поэтому для указательного пальца требуется собственный алгоритм отслеживания суставов. Для других пальцев все проще: если согнуть средний палец, то также сгибается безымянный палец и мизинец; если согнуть безымянный палец, при этом сгибается средний палец и мизинец; если согнуть мизинец, то сгибаются средний и безымянный пальцы.

В настоящее время технология RealSense позволяет одновременно отслеживать 22 сустава в каждой кисти и две руки (кстати, они не обязаны быть правой и левой, а могут принадлежать разным людям). В любом случае, компьютер знает, какая рука перед ним. Важным шагом вперед стало исключение этапа калибровки, хотя в некоторых сложных случаях (опять-таки, скажем, если перед камерой ребенок) система просит провести изначальную калибровку. Зато далее рука человека не просто визируется по узловым точкам, но и может быть достроена самостоятельно в том случае, если ее часть вышла из поля зрения камеры или недостаточно освещена. В том же случае, если условия позволяют, рука будет отделена от находящегося сзади фона, даже в том случае, если он периодически изменяется.
Точность определения положения одних частей руки относительно других позволяет реализовать очень интересные варианты передачи информации. Скажем, можно использовать относительные значения раскрытия ладони – от полностью раскрытой до полностью сжатого кулака (от 0 до 100). Согласитесь это уже несколько похоже на язык жестов. Кстати, реализация классического языка жестов откроет для RealSense еще одну важную и нужную область применения – реабилитацию людей с ограниченными возможностями. Навряд ли у какой компьютерной технологии может быть более человечное применение…

Чем четче будет ваш жест, тем понятнее он будет для машины. Возможно, на первых порах вы будете испытывать определенный психологический дискомфорт: в реальной «человеческой» жизни мы почти никогда не фиксируем жесты, а выдаем их один за другим непрерывно. Для RealSense же необходимы начальная и конечная фаза и длительное действие между ними (длительность жеста, кстати, тоже может быть задействовано как параметр). Динамическое движение определяется в зависимости от ситуации по перемещению или по времени.
Как видно, простора для недопонимания в естественных интерфейсов предостаточно. Скажем, те жесты, которые мы называем «похожими» компьютер, скорее всего, интерпретирует как одинаковые. Таких ситуаций проектировщикам надо избегать. Далее, приложение должно постоянно следить, чтобы человек, находящийся в кадре, из него не вылезал и в необходимых случаях выдавать предупреждения. Немало нюансов добавляет камера RealSense, имеющая свои особенности… ну, простую задачку решать же неинтересно, правда? Вот мы и решаем сложную.
В следующий раз, если представится случай, мы поговорим о распознавании лица. А пока, пользуясь случаем, хочу пригласить всех программистов Нижнего Новгорода, интересующихся технологией Intel RealSense, на неформальную встречу со специалистами компании, которая пройдет 24 апреля, в пятницу, по адресу ул. Магистратская, дом 3. В программе: доклады по теме, ответы на вопросы, демонстрации оборудования и, конечно, заинтересованные обсуждения – как же без них? Приходите, будет интересно.
При написании поста использовались статьи IDZ: