Самый простой способ понять, что такое естественный пользовательский интерфейс - это сравнить его с другими типами интерфейсов, такими как графический интерфейс пользователя (GUI) и интерфейс командной строки (CLI). Естественный интерфейс подразумевает то, что основным путем взаимодействия человека с компьютером являются прикосновения, жесты, речь, а также другие виды поведения, которые мы практикуем в течение многих лет, и/или которые являются врожденными. Использование реальных объектов как механизмов взаимодействия с цифровой информацией делает возможным технология дополненной реальности.
Дополненная реальность (Augmented reality, AR) – это термин, обозначающий внедрение мнимых объектов в реальное пространство. Дополненная реальность расширяет возможности взаимодействия пользователя с информационной средой и делает это взаимодействие более эргономичным. Это происходит за счет того, что технология не отделяет пользователя от окружающей его действительности, помещая в виртуальную среду. Например, данные из интернета практически автоматически доставляются пользователям с учетом ситуаций, которые возникают в повседневной жизни.
ВведениеНами была разработана классификация естественных интерфейсов, которые могут быть использованы на мобильных устройствах (рис. 1) для реализации технологии дополненной реальности.
Рис.1. Классификация естественных интерфейсов, применимых на мобильных устройствах
Наибольший интерес для нас представляют виды естественных интерфейсов, которые могут быть применены для носимых гаджетов (таких как Google Glass). К ним относятся интерфейсы, использующие virtual button, распознавание речи и распознавание жестов.
При использовании голосового взаимодействия мы неизбежно сталкиваемся с задачей распознавания речи[1]. Истинным распознаванием речи следует называть симбиоз двух систем: распознавания звуков и понимания речи. Однако обе системы зависимы от индивидуальных особенностей человека. Особенности голоса диктора (тембр, шумовые вкрапления, обусловленные строением речевого тракта), отличительные манеры проговаривания тех или иных звуков (ускорение или замедление темпа, "проглатывание" некоторых звуков), специфичная артикуляция - все это накладывает отпечаток на состав речевого сигнала. По этим причинам трудно сформировать универсальные эталоны звуков, сравнение с которыми не зависело бы от непредвиденных искажений. При построении системы понимания речи необходимо изучать принципы построения конструкций языка, на котором говорит диктор. Язык также является особенностью и не позволяет создавать универсальные шаблоны для распознавания.
Для более подробного рассмотрения нами были выбраны механизмы взаимодействия, которые в меньшей степени, чем речь, зависят от индивидуальных особенностей человека. Далее мы будем рассматривать проекты, использующие для взаимодействия с системой технологии компьютерного зрения.
HandVu - это набор программного обеспечения для реализации пользовательского интерфейса на основе жестов рук. Распознавание происходит в режиме реального времени и без потребности в пользовательской калибровке или калибровке камеры. HandVu предназначен для камеры, которая рассматривает пространство фронтально или когда человек стоит или сидит, рассматривая пространство сверху вниз (т.е. камера может находиться на носимом гаджете). Ее разрешение должно быть по крайней мере 320*240.
Предоставляемый Программный пакет состоит из главной библиотеки HandVu (в виде dll) и нескольких приложений, которые демонстрируют видеозахват с использованием OpenCV, DirectShow, и ARToolKit. Для использования функционала распознавания жестов, предлагаемого в HandVu, достаточно подключить библиотеку и вызвать ее функции в программе. Большинство настроек HandVu можно контролировать с помощью конфигурационного файла, называемого VisionConductor [2].
HandVu обнаруживает руку только в стандартном положении фронтально по отношению к камере (рис. 2). Такое положение называется закрытым. Начальное обнаружение руки необходимо для того, чтобы избежать распознавание случайных команд и ускорить обработку «пустых» кадров.
Рис. 2. Стандартное закрытое положение руки
Как только рука обнаружена, появляется возможность перемещать руку в любой позе. Чем лучше условия освещения(равномерное, без резких теней), и чем меньше блеска и бликов на фоне, тем лучше будет происходить трекинг. В документации рекомендуется избегать слишком быстрого движения или быстрого изменения позы, при возникновении проблем с распознаванием.
HandVu по умолчанию позволяет распознавать 6 жестов (рис. 3). Они могут быть обнаружены и распознаны в любое время отслеживания (напомним, что режим отслеживания начинается с обнаружения закрытой позы).
Рис. 3. Жесты распознаваемые HandVu
Все движения должны быть выполнены в плоскости, параллельной поверхности отображения и не более чем на 15 градусов против часовой стрелки(влево). Необходимо удерживать жест до тех пор, пока не будет достигнут требуемый уровень распознавания.
HandVu позволяет отслеживать жест «растягивания» двумя руками (рис 4) и действие нажатия (псевдо virtual button) (рис. 5)
Рис. 4. Жест «растягивания» в HandVu |
Рис. 5. Действие нажатия в HandVu |
Заметим, что в HandVu реализован псевдо-интерфейс взаимодействия через virtual button. Повторный жест Lback распознается как нажатие на область экрана. При этом сама кнопка не является распознаваемым объектом реального мира. Стоит заметить, что существует и другой подход в реализации виртуальных кнопок, когда виртуальной кнопкой становится распознанный объект реального мира.
Также функционал позволяет делать скриншоты и снимки распознаваемых объектов, для сбора данных и дальнейшего их исследования.
Подводя итог можно говорить, что достоинством данного проекта является то, что он представляет собой готовый инструментарий для распознавания жестов. Нет необходимости обучать систему или производить ее калибровку. Изменения параметров алгоритмов распознавания вносятся в конфигурационный файл. Библиотека стандартным образом подключается к проекту и легко интегрируется в проект. Однако самым существенным недостатком является то, что HandVu невозможно использовать для мобильных приложений, библиотека является динамически подключаемой(dll). При тестировании была отмечена неустойчивость и неэффективность распознавания при параметрах, которые заданы в конфигурационном файле по умолчанию. Кроме того проект на данный момент не развивается (последнее обновление было 15 октября 2010) и в библиотеке используется устаревшая версия OpenCV 2.1.0.
Выявленные недостатки являются существенными и не позволяют применить рассмотренную библиотеку в рамках разрабатываемого проекта.
В качестве альтернативы HandVu для использования на мобильных устройствах был рассмотрен проект IGesture.
IGesture - это основанный на java framework распознавания жестов, который направлен на расширяемость и возможность повторного переиспользования в различных приложениях. IGesture включает в себя как framework для распознавания (в виде исполняемого файла), так и компонент для создания пользовательских наборов жестов(java библиотека).
Framework IGesture позволяет распознавать следующие жесты:
Динамические жесты рукой со скольжением вверх, вниз, вправо, влево;
Вращение рукой в кулаке по/против часовой стрелки;
Bye-bye жест;
Треугольник из двух рук;
Подсчет количества пальцев в открытом жесте;
Один поднятый палец выступает в качестве курсора мыши;
Использование движения указательного пальца в качестве одинарного или двойного щелчка мыши.
Проект предоставляет специальное приложение для обучения системы новым жестам. На сайте проекта имеется подробная документация. Однако данный проект практически не упоминается на различных форумах. Следовательно, дополнительную информация, кроме как на официальном сайте, найти практически невозможно.
GestureRecognitionToolkit(GRT). GTR – это кросс-платформенная библиотека машинного обучения, с открытым кодом, написанная на C++. Она была специально разработана для распознавания жестов в режиме реального времени. На данный момент GTR работает в такими операционными системами как: Windows (Tested on Windows XP, Windows 7), OS X (Tested on 10.7), Linux (Tested on Ubuntu 12).
В дополнение к всестороннему и подробному API С++, GTR включает удобный графический пользовательский интерфейс (рис.6) (доступен только для Mac OS, хотя ожидается и для Microsoft):
Рис. 6. Графический пользовательский интерфейс GRT
GTR позволяет передавать данные в режиме реального времени в GUI из другого приложения через Open Sound Control (OSC), записывать некоторые обучающие данные, конфигурировать и обучать систему распознавания жестов. Результаты распознавания в режиме реального времени передаются из GUI приложению через OSC. Обучающая модель сохраняется в файл.
GTR имеет большое количество алгоритмов, которые разработаны для:
Распознавания статических поз(например, если пользователь держит свои руки в специальном жесте или если устройство, оснащенное акселерометром, удерживается в определенной ориентации);
Распознавания динамических жестов (таких как swipe1 или tap2);
Выполнения регрессии, сопоставления (т.е. постоянно сопоставляется входной и выходной сигнал, например в игре с элементами вождения сопоставляется угол руки пользователя и угол вращения руля.
GTR поддерживает алгоритмы машинного обучения, а также включает рад алгоритмов предобработки, обработки и постобработки распознавания и алгоритмы извлечения особенностей изображения
Основное отличие от рассмотренных выше проектов в том, что хотя GRT и предоставляет визуальную оболочку для создания новых наборов жестов (точнее оболочка позволяет создать обучающую выборку), в самой же библиотеке представлены средства анализа и классификации изображений. Т.е. у пользователя должны быть определенные навыки в области распознавания. Преимуществом является то, что пользователь самостоятельно может создать алгоритм распознавания.
Можно выделить следующие достоинства проекта:
Развивающийся, хорошо документированный проект.
Потенциальная кроссплатформенность (поставляется в виде кода на C).
Открытость проекта.
Большой набор инструментов для обработки и классификации входного сигнала.
Однако существуют и недостатки:
Проект предоставляет только набор алгоритмов. Что с одной стороны является достоинством, т.к. дает полную свободу при разработке. С другой стороны остается необходимость разрабатывать собственный движок распознавания жестов. Существует оболочка с GUI, которая позволяет без кода создавать движок, она пока только на Mac OS
Нет средств для извлечения сигналов с датчиков (камеры, или акселерометра). Проект ориентирован только на классификацию входных сигналов и не учитывает особенности видео распознавания и тем более распознавания жестов руки.
Нет средств для преобразования изображений к виду сигналов, которые используются в алгоритмах. Т.е. потребуется использовать еще одну библиотеку, которая бы осуществляла захват видеоизображения с камеры.
Подводя итог, можно говорить что на сегодняшний день не существует полностью готового и широко используемого инструментария для распознавания жестов руки только с помощью компьютерного зрения. Рассмотренные решения ориентированы в основном на разработку приложения для персональных компьютеров, хотя и подразумевается их использование на мобильных устройствах. Рассмотренные проекты, не предоставляют алгоритмов для скелетного распознавание руки. В проектах, где уже реализованы готовые механизмы распознавания жестов рук, как правило, распознается одинаковый перечень жестов. Это позволяет говорить о том, что уже сформировался некоторый набор стандартных жестов руки, которые подлежат распознаванию. Стоит отметить, что гораздо шире распространены проекты, которые распознают используют трехмерное распознавания жестов, с использованием датчика глубины изображения. Однако на мобильных устройствах на данный момент нет таких датчиков, что не позволяет использовать трехмерное распознавание на мобильных устройствах.
Список используемой литературы:
А.В. Фролов, Г.В. Фролов: Синтез и распознавание речи. Современные решения. URL: http://frolov-lib.ru/books/hi/ch00.html
Qing Chen. Real-Time Vision-Based Hand Tracking and Gesture Recognition. URL: http://www.discover.uottawa.ca/~qchen/my_papers/phd-thesis.pdf
Официальный сайт проекта HandVu. URL: http://www.movesinstitute.org/~kolsch/HandVu/HandVu.html
Официальный сайт проекта Gesture Recognition ToolKit. URL: http://www.nickgillian.com/software/grt
Официальный сайт проета iGesture. URL: http://www.igesture.org/
1 Или Flip используется для перемещения контента вперед-назад. Суть жеста — простое движение пальцем по оси Х слева направо (горизонтальный swipe) или по оси Y сверху вниз (вертикальный swipe)
2 Нажатие. Запускает какое-либо действие или останавливает прокрутку.