Опубликован: 23.10.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Северный (Арктический) федеральный университет им. М.В. Ломоносова
Лекция 2:

Основы, функциональность и особенности Intel Perceptual Computing SDK

Передача данных с использованием UtilCapture

Как уже упоминалось выше, класс UtilCapture помогает объединить модули алгоритмов с устройствами ввода и синхронизировать поток данных между ними.

Прямая передача данных с устройства ввода в модуль алгоритма является относительно простой процедурой. Как показано в Примере 11, для получения потока с входного устройства, а затем для передачи его в модуль распознавания лица приложение вызывает функцию ReadStreamAsync.

PXCSmartSPArray sps(2);
PXCSmartArray<PXCImage> images;
capture.ReadStreamAsync(images,&sps[0]);
face->ProcessImageAsync(images,face,&sps[1]);
while (...) {
   /* выполнение */
   sps.SynchronizeEx();
   capture.ReadStreamAsync(images.ReleaseRefs(),sps.ReleaseRef(0));
   face->ProcessImageAsync(images,face,sps.ReleaseRef(1));
}
2.11. Использование UtilCapture для создания простого конвейера

При наличии нескольких модулей обработки, каждый модуль определяет его входные требования. На рис. 2.7 такими требованиями являются DataDesc1 и DataDesc2. Например, Модуль 1 требует цветной поток, и Модуль 2 требует как цветной поток, так и поток данных с датчика глубины. Функции LocateStreams интерфейса UtilCapture объединяет эти требования и находит устройства ввода, которые могут предоставить данные для обоих модулей.

Конвейер совместной обработки

Рис. 2.7. Конвейер совместной обработки

Во время передачи потоков, устройства ввода (через функцию ReadStreamAsync) создают набор кадров, описанных как Images. Порядок кадров определяется устройством ввода. Функция MapImages переносит кадры с устройств ввода в соответствующий модуль обработки (Пример 2.12).

PXCSmartSPArray sps(3);
PXCSmartArray<PXCImage> images;
PXCCapture::VideoStream::Images images1, images2;
 
capture.ReadStreamAsync(images,&sps[0]);
capture.MapImages(0, images, images1);
face->ProcessImageAsync(images1,&sps[1]);
capture.MapImages(1, images, images2);
gesture->ProcessImageAsync(images2,&sps[2]);
while (…) {
   /* выполнение */
   sps.SynchronizeEx()
   capture.ReadStreamAsync(images.ReleaseRefs(),sps.ReleaseRef(0));
   capture.MapImages(0, images, images1);
   face->ProcessImageAsync(images1,sps.ReleaseRef(1));
   capture.MapImages(1, images, images2);
   gesture->ProcessImageAsync(images2,sps.ReleaseRef(2));
}
2.12. Создание сложного конвейера

Создание конвейера с использованием UtilPipeline

UtilPipeline организует конвейер либо на основе потока с устройства ввода, либо на основе уже существующего файла. Общий порядок использования UtilPipeline выглядит следующим образом:

  • Настройка: приложение использует набор функций EnableXXXX для настройки конвейера. Например, можно использовать функцию EnableGesture для инициализации модуля распознавания жестов в конвейере.
  • Запуск конвейера: приложение вызывает функцию LoopFrames для инициализации конвейера и передачи данных между его компонентами.
  • Обработка событий: приложение вызывает функцию OnXXXX для обработки событий конвейера. Возвращаемое значение функции OnNewFrame определяет, когда следует выйти из конвейера.

Следует заметить, что на текущий момент не все компоненты Intel Perceptual Computing SDK могут быть использованы в коммерческих целях. К примеру, модуль распознавания голоса использует функциональность разработанную компанией Nuance и должен быть использован только для тестирования и разработки прототипов под соответствующей лицензией. Данный функционал работает только на машинах с предустановленным движком Dragon Assistant, который по умолчанию установлен на современных ультрабуках.

Ссылки на источники

Сайт:

http://software.intel.com/en-us/vcsource/tools/perceptual-computing-sdk

http://software.intel.com/sites/default/files/sdkmanual-module.pdf

  • sdkmanual-core.pdf
  • sdkmanual-module.pdf
  • sdkmanual-sensor.pdf
  • sdkmanual-face.pdf
  • sdkmanual-voice.pdf

Довольно подробно функциональность и особенности Intel Perceptual Computing SDK описаны в данном документе на английском языке. http://software.intel.com/sites/landingpage/perceptual_computing/documentation/html/

Примеры приложений: http://software.intel.com/en-us/vcsource/tools/perceptual-computing-sdk/demos

Overview - Intel® Perceptual Computing SDK 2013.

YOUTUBE https://www.youtube.com/watch?v=U0lkGE1X9X8

Контрольные вопросы:

  1. Какова цель использования Intel Perceptual Computing SDK?
  2. Что означает слово "Perceptual" (Воспринимающий) в рассматриваемом контексте?
  3. В чем заключаются особенности коммерческого использования компонентов SDK?
  4. В чем заключается особенность архитектуры SDK?
  5. Что такое интерфейс SDK?
  6. Какова особенность класса UtilCapture?
  7. Какова особенность класса UtilPipeline?
  8. Каковы этапы процедуры программирования SDK?
  9. Каков общий порядок использования класса UtilPipeline?
  10. Как происходит асинхронное выполнение процессов?
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко
Юрий Симонов
Юрий Симонов
Россия, Москва, Московский Государственный Университет им. М.В. Ломоносова, 2011
Вадим Сизоненко
Вадим Сизоненко
Россия, Братский р-н