Пакет Intel RealSense SDK по своей архитектуре отличается от своего предшественника — пакета Intel Perceptual Computing SDK. Если вы, будучи разработчиком, использовали Intel Perceptual Computing SDK для разработки приложений, вы быстро оцените улучшенную модель программирования в новом SDK, предоставляющую доступ к поддерживаемым режимам работы через несколько популярных платформ разработки приложений. В этой статье мы описываем основные изменения в Intel RealSense SDK.
Обзор архитектуры
Ядро SDK, модуль ввода-вывода и модули алгоритмов образуют основу SDK. Ядро SDK помогает управлять конвейером выполнения приложения и модулями ввода-вывода (камеры). Модули алгоритмов образуют промежуточный уровень для отслеживания рук, распознавания жестов, отслеживания лица, распознавания речи и других режимов работы. Эти алгоритмы предоставляют интерфейсы для разработки приложений с помощью платформ разработки — C++, C#, Unity*, Java*, Processing* и т. д. На верхней ступени этого набора технологий находятся приложения Intel RealSense SDK (рис. 1).
Рисунок 1. Архитектура Intel RealSense SDK
Это улучшение будет весьма очевидным для разработчиков приложений, знакомых с Intel Perceptual Computing SDK. Прежние версии интерфейсов SDK можно было использовать только на платформах Unity и Java (рис. 2).
Рисунок 2. Архитектура Intel Perceptual Computing SDK
Большая часть функций SDK была доступна только для разработчиков на C++/C#, из-за чего Unity и другие платформы разработки приложений оказывались в неблагоприятных условиях. В Intel RealSense SDK это ограничение устраняется за счет однородного доступа к возможностям ядра и промежуточного уровня посредством интерфейсов, разработанных для каждой платформы. На рис. 3 видно, что поддержка DLL-библиотек для всех платформ была полностью переделана. Интерфейс C++/C# теперь доступен через интерфейс PInvoke вместо оболочки C++/CLI C# в Intel Perceptual Computing SDK. Если говорить о Unity, интерфейс на базе PXCUPipeline в прежнем SDK заменен на интерфейс C# на базе PInvoke. Для платформ Java и Processing интерфейс на базе PXCUPipeline заменен полностью переработанной оболочкой JNI.
Рисунок 3. Однородный доступ к API во всех платформах разработки приложений
Упрощенная иерархия классов
Рисунок 4. Иерархия классов Intel RealSense SDK
Структура интерфейсов в Intel Perceptual Computing SDK отличалась высоким уровнем иерархичности. Для выполнения простых задач требовалась длительная последовательность операций инициализации, настройки и получения данных. В Intel RealSense SDK эта иерархическая структура упрощена, обеспечивается более удобный доступ к разным функциям и режимам работы.
Как показано выше на рис. 4, PXC[M]SenseManager заменяет класс UtilPipeline ядра SDK. SenseManager отвечает за организацию и управление конвейером выполнения. PXC[M]CaptureManager осуществляет управление всеми устройствами камер и потоков вместо интерфейса UtilCapture в Perceptual Computing SDK. Обратите внимание, что интерфейс PXC[M]Capture также обеспечивает более удобный доступ к данным о глубине. В Intel Perceptual Computing SDK для получения данных глубины и вершин требовалось получать доступ к двум разным потокам. В Intel RealSense SDK эти данные доступны в одном потоке. Интерфейс PXC[M]Face3D управляет модулем отслеживания лица вместо интерфейса PXC[M]Face, а PXC[M]HandAnalysis занимается отслеживанием жестов и рук вместо интерфейса PXC[M]Gesture.
Более подробные сведения об этих модуля см. в следующем разделе — руководстве по переходу на новые API.
Руководство по переходу на новые API
Переработан не только весь набор SDK, но и свыше 50 % API из Intel Perceptual Computing SDK переделаны в Intel RealSense SDK. Большинство изменений обусловлены появлением поддержки трехмерных сцен в Intel RealSense SDK: за счет этого улучшены некоторые существующие режимы, такие как отслеживание лица и рук. Рассмотрим некоторых из этих усовершенствований.
Модуль отслеживания лица
С точки зрения возможностей в модуле отслеживания лица теперь поддерживается 78 реперных точек с различными значениями определения выражения лица в двухмерном и трехмерном режимах. Для сравнения: в Intel Perceptual Computing SDK поддерживалось не более 7 реперных точек. Благодаря введению параметра глубины повышается достоверность полученных данных. Кроме того, в Intel Perceptual Computing SDK требовалось по отдельности настраивать обнаружение лица, обнаружение реперов и распознавание лица, из за чего весь процесс анализа лиц был крайне громоздким. Модуль анализа лица и связанные с ним API были переработаны с учетом этих аспектов. Вместо модуля PXC[M]FaceAnalysis используется модуль PXC[M]Face3D с одноуровневой структурой. Этот модуль достаточно настроить всего один раз перед получением значений обнаружения лица, реперных точек, выражения лица и значений распознавания лица (рис. 5).
Рисунок 5. Сравнение модуля анализа лица в Intel® Perceptual Computing SDK и в Intel RealSense SDK
Модуль отслеживания рук
Модуль отслеживания рук был значительно доработан в Intel RealSense SDK. По сравнению с данными для 7 реперных точек руки и 10 стандартными жестами в Intel RealSense SDK теперь поддерживаются данные для 22 точек, идентификация пальцев, идентификация правой и левой руки с параметрами ориентации и поворота для трехмерного взаимодействия, а также набор стандартных жестов. Интерфейс PXC[M]Gesture, применявшийся в Intel Perceptual Computing SDK, заменен интерфейсом PXC[M]HandAnalysis для более удобного доступа к данным о руках.
В таблице 1 (см. ниже) приведена сводка основных улучшений в Intel RealSense SDK. Рекомендуем разработчикам прочесть справочное руководство по SDK, входящее в состав бета-версии, для получения более подробной информации о каждом API в этих интерфейсах.
Таблица 1. Сравнение Intel Perceptual Computing SDK и Intel RealSense SDK
Категории | Intel® Perceptual Computing SDK | Intel® RealSense™ SDK | Примечание |
---|---|---|---|
Камера | Свойства только устройства Creative | Не поддерживается в IVCAM | |
Формат вершин | Depth/DepthRaw/ DepthFloat/VerticesFloat | PXCImage предоставляет возможность преобразования на лету. | |
NOJR.MAP NO.UV.MAP | REQUIREJR.MAP REQUIRE_UV_MAP | Изменение значения по умолчанию | |
PXCProjection | PXCProjection | Половина функций переделана. | |
Компоненты MW | PXCGesture | PXCHandAnalysis | Совершенно новый интерфейс |
PXCFace | PXCFace3D | Совершенно новый интерфейс | |
UtilCapture | PXCCaptureManager | Новый интерфейс | |
UtilPipeline | PXCSenseManager | Новый интерфейс | |
Поддержка языков и платформ | Поддержка платформ Unity/Java/Proce ssing на базе Pxcupipeline | Оболочка P/Invoke C# | Полностью переработано. |
Оболочка C++/ интерфейс командной строки C# | Оболочка P/Invoke C# | Полностью переработано. | |
Поддержка Java/ Processing на базе PXCUPipeline | Новая оболочка JNI | Полностью переработано. | |
Документация | Переработано. |
Заключение
Пакет Intel RealSense SDK обладает целым рядом преимуществ над предыдущим поколением Intel Perceptual Computing SDK. Улучшены многие существующие режимы работы, такие как алгоритмы отслеживания лица и рук; усовершенствован механизм доступа к API для большинства поддерживаемых платформ разработки приложений. Благодаря однородности доступа к API и улучшениям на промежуточном уровне получилась очень удобная платформа, с помощью которой разработчики приложений могут осваивать новые возможности взаимодействия с пользователями.
Дополнительные материалы
Технология Intel RealSense — обзор.
Руководства по проектированию взаимодействия с пользователем.