Высокоуровневые средства распознавания жестов в пакете Intel Perceptual Computing SDK
Высокоуровневые средства распознавания образов в пакете Intel Perceptual Computing SDK. API верхнего уровня
Презентацию к лекции можно скачать здесь.
Intel Perceptual Computing SDK предоставляет широкий набор готовых классов, процедур, функций, структур и констант для использования их во внешних программных продуктах. Интерфейс программирования приложений (API) позволяет работать как на высоком уровне – использование в приложениях встроенных алгоритмов распознавания жестов, положения рук, лица, голоса, так и на низком уровне – создание и добавление в SDK собственных модулей и алгоритмов. Это предоставляет программистам возможности для написания всевозможных приложений по распознаванию и идентификации жестов, положения рук, лица, голоса.
API определяет функциональность, которую предоставляет пакет программ, при этом API позволяет абстрагироваться от того, как именно эта функциональность реализована. Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API – это множество "ручек", которые доступны пользователю данного ящика, которые он может вертеть и дёргать. Программные компоненты взаимодействуют друг с другом посредством API. При этом обычно компоненты образуют иерархию – высокоуровневые компоненты используют API низкоуровневых компонентов, а те, в свою очередь, используют API ещё более низкоуровневых компонентов.
API библиотеки функций и классов включает в себя описание сигнатур и семантики функций.
Сигнатура функции – часть общего объявления функции, позволяющая средствам трансляции идентифицировать функцию среди других.
Семантика функции – это описание того, что данная функция делает. Семантика функции включает в себя описание того, что является результатом вычисления функции, как и от чего этот результат зависит.
Модуль распознавания жестов
SDK модуль распознавания жестов воспринимает RGB и глубинные изображения, и ИК потоки в качестве входных данных и возвращает распознанные жесты или любые другие промежуточные результаты слежения. Модуль SDK возвращает четыре типа обработанных данных: BLOB, результаты отслеживания геометрических узлов, идентификацию жестов и информационные сообщения.
BLOB (англ. Binary Large OBject – двоичный большой объект) представляет результаты промежуточной обработки изображений на входе. Перечислитель Blob::Label детализирует поддерживаемые BLOB данные. Типичные BLOB данные - это BLOB сцена LABEL_SCENE, которая является обработанным глубинным изображением поля зрения камеры. Обработка может включать подвыборки, таким образом, что разрешение BLOB может быть меньше глубинного изображения входного сигнала. Модуль возвращает BLOB изображения, а также другие связанные с BLOB параметры, определенные в BLOB структуре. Модуль SDK предоставляет BLOB информацию после обработки каждого входного кадра.
Геометрические узлы - это каркасные соединения (скелетон) человеческого тела или отдельные его части. Так, например, соединениями могут быть LABEL_BODY_ELBOW_PRIMARY представляющий левый локоть, или LABEL_HAND_PRIMARY| LABEL_FINGER_RING представляющий кончик безымянного пальца левой руки. SDK модуль распознавания жестов возвращает позиции следования геометрических узлов и другую полезную информацию. Структура GeoNode описывает детали геометрических узлов. Модуль SDK обеспечивает информацию о геометрических узлах после обработки каждого входного кадра.
Модуль SDK распознает набор предопределенных поз и жестов, и возвращает результаты этого распознавания. В данном случае позы рассматриваются как статические позиции рук и пальцев предоставляющие определенные значения. Например, LABEL_POSE_PEACE является позой, в которой заложен смысл мира или победы. Для выполнения позы, вытягиваются указательный и средний пальцы, образуя "V" и закрываются остальные. Жесты представляют собой набор изменений поз в течение длительного периода времени. Модуль SDK использует обратные вызовы, чтобы уведомить приложение, когда модуль распознает специфическую позу или жест. О распознанной позе SDK модуль уведомляет дважды, в первый раз о том, что поза была активна и второй раз, что поза была неактивна. О жесте SDK модуль уведомляет приложение только один раз, когда распознает его, то есть в конце жеста.
SDK модуль отправляет приложению оповещения об обнаружении ошибок, например, если объект исследования собирается выйти из поля зрения камер. Приложение может уведомить пользователя о необходимости изменить его движение через ненавязчивое визуального сообщение.
Основные распознаваемые позы и жесты
Как мы уже говорили, что позы и жесты это две совершенно разные вещи. Поза это устойчивое, долговременное положение тела, в то время как жесты это движения между позами. Далее рассмотрим позы, которые в настоящее время распознаются в SDK модуле.
Открытость
С помощью просмотра атрибутов LABEL_OPEN и LABEL_CLOSE можно распознать, открыта или закрыта ладонь.
"Большой палец вверх" или "Большой палец вниз"
Позы "Большой палец вверх" или "Большой палец вниз" могут быть распознаны просмотром атрибутов LABEL_POSE_THUMB_UP и LABEL_POSE_THUMB_DOWN соответственно. Например, это может быть использовано для подтверждения или отмены голосовых команд.
Знак победы
Знак победы может быть распознан по атрибуту LABEL_POSE_PEACE. Этот знак, например, может быть использован в качестве пускового сигнала.
Большая пятерка
Большая пятерка может быть распознана на основе атрибута LABEL_POSE_BIG5. В зависимости от назначения приложения этот знак может быть использован, например, как в качестве стоп-сигнала, или отмены голосовой команды, или как пусковой жест.