Введение в естественно-интуитивное взаимодействие с компьютером

Модуль отслеживания 2D/3D объектов Intel Perceptual Computing SDK

Разбить на страницы
Показывать лекцию целиком

Распознавание образов

Презентацию к лекции можно скачать здесь.

Распознавание образов (объектов, сигналов, ситуаций, явлений или процессов) - самая распространенная задача, которую человеку приходится решать практически ежесекундно от первого до последнего дня своего существования. Для этого он использует огромные ресурсы своего мозга, которые оцениваются таким показателем как число нейронов, равное 1010.

В повседневной деятельности человек постоянно сталкивается с задачами, связанными с принятием решений, обусловленных непрерывно меняющейся окружающей обстановкой. В этом процессе принимают участие: органы чувств, с помощью которых человек воспринимает информацию извне; центральная нервная система, осуществляющая отбор, переработку информации и принятие решений; двигательные органы, реализующие принятое решение. Но в основе решений этих задач лежит распознавание образов.

В своей практике люди решают разнообразные задачи по классификации и распознаванию объектов, явлений и ситуаций (мгновенно узнают друг друга, с большой скоростью читают печатные и рукописные тексты, безошибочно водят автомобили в сложном потоке уличного движения, осуществляют отбраковку деталей на конвейере, разгадывают коды, древнюю египетскую клинопись и т.д.).

Большие возможности современной вычислительной техники позволяют в реальном масштабе времени обрабатывать огромное количество информации, что, в свою очередь, делает реальной задачу построения машин для распознавания образов. К настоящему времени сделаны успешные попытки разработки устройств и машинных программ для чтения типографских и машинописных букв, классификации электрокардиограмм, распознавания слов из конечного словаря, произнесенных одним и тем же диктором, а также выделение в речи ключевого слова, произнесенного разными дикторами. Можно назвать еще ряд других применений распознавания образов: идентификация людей по фотографии, по отпечаткам пальцев, по топометрическим данным, диагностика неисправностей в системах, идентификация технологических параметров, обнаружение цели и так далее.

Распознавание образов (объектов, сигналов, ситуаций, явлений или процессов) – это задача идентификации объекта или определения каких-либо его свойств по его изображению (оптическое распознавание) или аудиозаписи (акустическое распознавание) и другим характеристикам.

Образ - классификационная группировка в системе классификации, объединяющая (выделяющая) определенную группу объектов по некоторому признаку. Образы обладают характерным свойством, проявляющимся в том, что ознакомление с конечным числом явлений из одного и того же множества дает возможность узнавать сколь угодно большое число его представителей.

Методы распознавания образов

В целом, можно выделить три метода распознавания образов:

Метод перебора. В этом случае производится сравнение с базой данных, где для каждого вида объектов представлены всевозможные модификации отображения. Например, для оптического распознавания образов можно применить метод перебора вида объекта под различными углами, масштабами, смещениями, деформациями и т. д. Для букв нужно перебирать шрифт, свойства шрифта и т. д. В случае распознавания звуковых образов, соответственно, происходит сравнение с некоторыми известными шаблонами (например, слово, произнесенное несколькими людьми).

Второй подход - производится более глубокий анализ характеристик образа. В случае оптического распознавания это может быть определение различных геометрических характеристик. Звуковой образец в этом случае подвергается частотному, амплитудному анализу и т. д.

Следующий метод - использование искусственных нейронных сетей (ИНС). Этот метод требует либо большого количества примеров задачи распознавания при обучении, либо специальной структуры нейронной сети, учитывающей специфику данной задачи. Тем не менее, его отличает более высокая эффективность и производительность.

Типы задач распознавания

  • Задача распознавания - отнесение предъявленного объекта по его описанию к одному из заданных классов;
  • Задача автоматической классификации - разбиение множества объектов, ситуаций, явлений по их описаниям на систему непересекающихся классов (таксономия, кластерный анализ, самообучение);
  • Задача выбора информативного набора признаков при распознавании;
  • Задача прогнозирования.
  • Дополненная реальность

    Дополненная реальность – это техника визуализации, которая имеет дело с комбинированием объектов реального мира и информации, сгенерированной с помощью компьютера. Основная идея дополненной реальности заключается в совмещении реальности с виртуальной реальностью. В общем смысле такая информация как изображения, аудио, gps данные накладываются на окружающую обстановку реального мира, создавая дополненную среду.

    Ученые в данной области выделяют три основных функциональных характеристики дополненной реальности: 1) комбинирование объектов реального мира с виртуальными элементами, которые 2) взаимодействуют в реальном времени, и которые 3) отображены на каком-либо дисплее с учетом положения в пространстве (координаты и угол наклона).

    История дополненной реальности

    1962 год.

    Мортон Хейлиг (англ. Morton Heilig) представил первый прототип мультисенсорного симулятора, который он называл "Сенсорама" (Sensorama). Сенсорама погружала зрителя в виртуальную реальность при помощи коротких фильмов, которые сопровождались запахами, ветром (при помощи фена) и шумом мегаполиса с аудиозаписи.

    Айвен Сазерленд создал "Sketchpad" и представил на нем первый графический пользовательский интерфейс.

    Мортон Хейлиг запатентовал первый закрепляемый на голове дисплей, который никогда не был произведен.

    1966 год.

    Айвен Сазерленд разработал "Ultimate Display" на основе электронно-лучевой трубки.

    1975 год.

    Майрон Крюгер совместно со своими коллегами открыл "Лабораторию искусственной реальности".

    1980 год.

    Стив Манн разработал носимый компьютер.

    1989 год.

    Джарон Ланье программист-учёный области визуализация данных, биометрии, и биометрических технологий ввел термин "виртуальная реальность".

    1990 год.

    Термин "дополненная реальность" был предложен Томом Коделом, предположительно работавшим исследователем на корпорацию Boeing.

    1992 год.

    Л. Розенберг разработал первую функционирующую систему дополненной реальности "Virtual fixtures".

    1998 год.

    Рамеш Раскал, Грэг Вэлш и Генри Фанш разработали "Пространственную дополненную реальность". Данная технология дополняет объекты реального мира без использования специальных дисплеев, таких как мониторы, монтируемые на голове. Пространственная дополненная реальность использует проекторы для отображения графической информации на физические объекты. Таким образом, дисплей отделен от пользователей системы, что позволяет совместно в группе работать над одной задачей.

    1999 год.

    Хироказу Като разработал бесплатную библиотеку ARToolkit, которая использует алгоритмы компьютерного зрения.

    2000 год.

    Брюс Томас разработал первую мобильную игру для открытого пространства с системой дополненной реальности, названную "ARQuake".

    2008 год.

    Сервис WikiTude представил AR Travel Guide – сервис, дополняющий изображение с камеры смартфона туристической информацией.

    Технологии дополненной реальности

    Реализация дополненной реальности может быть выполнена различными путями. Изначально было доступно большое число веб приложений, которые считывали QR (quick response) коды при помощи веб камеры. Используя QR коды (иначе "маркеры"), приложение накладывало цифровую информацию, 3D анимацию и отображало их на экране поверх/вместо карточек с маркером. Цифровая информация перемещалась одновременно с маркером, когда пользователь двигал его. Другим способом реализации дополненной реальностью были закрепленные на голове дисплеи. Еще в середине ХХ века военным летчикам начали делать шлемы со встроенным дополнительным дисплеем. С его помощью пилот получал важную информацию: он видел, например, сколько топлива осталось в баке самолета и каким курсом движется машина. Еще более привычным для нас примером дополненной реальности является телевизионная передача или спортивная трансляция: на картинку, снятую камерами, накладывается информация с текстом – дополняет ее. Например, когда во время просмотра футбольного матча телеканал повторяет голевой момент, и мяч иногда подсвечивается, чтобы зрители лучше прочувствовали ситуацию.

    Сферы применения дополненной реальности

  • Продажи и маркетинг
  • Гео-визуализация
  • Архитектура
  • Военная подготовка
  • Мобильные приложения
  • Решение медицинских задач
  • Робототехника
  • Производство
  • Образование
  • Видео игры
  • Ограничения технологии дополненной реальности

    Несмотря на значительные успехи, достигнутые в каждой из вышеперечисленных областей, все-таки существуют некоторые ограничения в технологии, которые должны быть решены. Системы дополненной реальности имеют дело с огромным количеством информации реального мира. Поэтому используемое аппаратное обеспечение, должно быть миниатюрным и легко переносимым и достаточно быстродействующим для работы с графикой. Кроме того, срок службы батарей, используемых сложных устройствах дополненной реальности это еще одно ограничение. Системы дополненной реальности обычно получают много информации, и требуется программное обеспечение для фильтрации этой информации, для сохранения полезной информации, исключения ненужных данные и отображения их в удобном виде.

    Средства разработки приложений дополненной реальности

    Применяемые средства разработки технологии дополненной реальности зависят от типа реализуемых задач и доступного оборудования для реализации. Такие средства разработки как Daqri, MixAR и ZooBrust довольно простые и не требуют высоких навыков программирования. Другие инструменты, включающие в себя наборы SDK, такие как ARToolKit, Unifeye Mobile SDK, и Wikitude, были разработаны для серьезных разработчиков приложений. Эти комплекты являются очень функциональными и позволяют разработчикам создавать различные приложения дополненной реальности для различных устройств. Однако, более совершенные инструменты требуют глубокие знания и опыт в программировании, к примеру, на Java, и техники 3D и виртуальной реальности.

    Daqri (www.daqri.com) представляет собой платформу, которая позволяет пользователям создавать QR-коды, которые отображают изображения, фильмы и другой контент, как только они распознаны камерой смартфона. Самое интересное в этой платформе то, что Daqri позволяет пользователям создавать приложения дополненной реальности без написания кода.

    В настоящее время студия Hololabs разрабатывает приложение для iPhone названное MixAR, которое позволяет пользователю создавать собственные 3D модели дополненной реальности, фотографии и видео без необходимости написания кода. Платформа MixAR позволяет пользователям сфотографировать объект, а затем преобразовать его в 3D-модель, которая дополнит объекты реального мира. Результат сохраняется как видео. Далее пользователь может поделиться им со всем миром. Все это можно сделать, используя только iPhone.

    ZooBurst (www.zooburst.com) это инструмент, позволяющим авторам легко создавать собственные 3D книги. Автор может просто держать маркер в ZooBurst перед веб камерой. Всплывающая 3D книга будет волшебно появляться на экране, по масштабам равная оригинальным размерам книги. На экране книги полностью интерактивны, что позволяет читателям перелистывать страницы или наклонить книгу под любым углом.

    ARToolKit является свободно распространяемой библиотекой с открытым исходным кодом на языке С для создания приложений дополненной реальности. ARToolkit изначально был разработан Хироказу Като в 1999 году. ARToolKit использует методы компьютерного зрения для расчета положения и ориентации камеры относительно карточек-маркеров. Это позволят программисту накладывать виртуальные объекты поверх маркеров.

    Wikitude предлагает API для добавления контента дополненной реальности в свой Wikitude World Browser.

    D'Fusion Computer Vision SDK. Что такое D'Fusion Computer Vision от компании Total Immersion?

    D'Fusion Computer Vision (иначе D'FusionCV) представляет собой пакет программного обеспечения, основанного на запатентованной инновационной технологии, разработанной для получения "естественной" информации, предоставляемой различными реальными объектами, распознанными в изображении или видео потоке. Собрав данные, объект может быть идентифицирован и отслежен через последовательные изображения из видео потока в режиме реального времени. Эксперты обычно называют эту технологии "безмаркерный трекинг".

    D'Fusion Computer Vision была разработана для достижения следующих задач:

  • Захват видеопотоков с видеокамер и из видео файлов. Модуль захвата поддерживает практически все камеры устройства (HD/SD камер и веб-камеры).
  • Калибровка камеры для оценки внутренних параметров камеры (фокальная точка, оптический центр и т.д.).
  • Отслеживание естественных 2D/3D объектов в поле видимости камеры и в видеопотоке. Эти объекту могут представлять различные формы и различные текстуры (игральные карты, листовки, щиты, или более сложные объекты, такие как коробки, автомобили, природные ландшафты, лица и т.д.).
  • Отслеживания нескольких объектов в одном видеопотоке (Multiple tracking).
  • Классификация объектов в видеопотоке (Object recognition).
  • Обнаружение простого взаимодействия между пользователем и реальным отслеживаемым объекта (Pointing Detection).
  • Реализация основных функций обработки изображений, такие как обнаружение жестов, выделение объектов переднего и заднего плана или распознавание лиц.
  • Отправка информацию о положении и ориентации объекта через сеть или с помощью SDK.
  • Создания сценариев отслеживания объекта помощью графического интерфейса пользователя за считанные минуты.
  • Распознавание и отслеживание объектов

    1. Установка и запуск пакета

    Пакет D'Fusion Studio CV по умолчанию устанавливается на компьютер совместно с Intel Perceptual Computing SDK. Запустить пакет можно из "Intel Perceptual Computing SDK 2013 -> Tools -> D'Fusion Studio CV - Intel PCSDK". (или C:\Program Files (x86)\Intel\PCSDK\contrib\Total Immersion\StudioCV)

    2. Создание сценария

    Для того чтобы использовать функционал отслеживания безмаркерных объектов, Вы должны сперва создать настроить свой сценарий, используя D>Fusion Studio CV. В большинстве случаев сценарий предполагает создание следующих элементов:

  • XML файл конфигурации, содержащий настройки сценария (обычно "tracker.xml");
  • XML файл конфигурации, содержащий результаты калибровки камеры (обычно "cameraCalib.xml");
  • XML файл конфигурации, содержащий настройки захвата изображения (обычно "cameraConfig.xml");
  • Изображения, соответствующие отслеживаемому объекту;
  • Двоичные файлы, которые могут быть использованы для хранения объектов статистических структур (для поддержания процесса распознавания).
  • 3. Процесс отслеживания безмаркерных объектов

    Процесс отслеживания безмаркерных объектов состоит из нескольких шагов:

    Распознавание. Может быть произведено распознавание одного или группы объектов. Данный шаг позволяет определить, какой объект присутствует на текущем изображении.

    Автоматическая инициализация. Данный шаг позволяет пользователю приступить к полностью автоматическому отслеживанию без ссылки на конкретный объект.

    Автоматическая инициализация отслеживания лица. На данном шаге D'Fusion Computer Vision может распознавать лица автоматически, а затем отслеживать их в видеопотоке.

    Инициализация. Во время процесса инициализации в видео потоке требуемый объект обнаруживается на основе одного или набора ключевых кадров.

    Отслеживание. Объект отслеживается в видеопотоке на основании ключевого кадра и информации о предыдущей позиции объекта.

    4. Ключевой кадр

    Ключевой кадр является важным понятием для понимания работы технологии отслеживания безмаркерных объектов. Данное понятие включает следующие компоненты:

  • 6 степеней свободы;
  • изображение, содержащее информацию об объекте;
  • соответствующие настройки калибровки камеры;
  • 5. Работа в D'Fusion Studio CV

    Следующий параграф описывает графический интерфейс пакета D'Fusion Studio CV, его функционал и способы создания своего сценария отслеживания.

    Запустите пакет из "Intel Perceptual Computing SDK 2013 -> Tools -> D'Fusion Studio CV - Intel PCSDK".

    (или C:\Program Files (x86)\Intel\PCSDK\contrib\Total Immersion\StudioCV)

    1. Панель меню

    Панель меню позволяет выполнять следующие операции:

  • "File > New": начать новый проект
  • "File > Load", "File > Recent Scenario": загрузить существующий проект
  • "File > Save", "File > Save As ...": сохранить текущий проект
  • "File > Exit": выход из приложения
  • "View > Log Window": вызвать лог
  • "? > Online Community": открыть веб сайт Total Immersion™ Community
  • "? > About D'Fusion Studio CV Pro": вызвать информацию о продукте
  • "? > D'Fusion CV - Reference Manual": открыть справку (на английском языке)
  • 2. Рабочие панели

    С помощью следующих панелей можно создать свой сценарий:

  • "Video Manager": определяет настройки захвата изображения
  • "Camera Calibration": определяет функции калибровки камеры
  • "Video Preprocessing": определяет настройки видео потока
  • "Scenario Manager": определение настроек отслеживаемого объекта
  • "Tracking Manager": просмотр результата отслеживания
  • 3. Панель Video Manager

    В зависимости от характеристик камеры вам придется задать настройки захвата.

  • "Type": задать тип захвата (directShow, Video UEye, Video for Windows).
  • "Video File": задать видео файл в качестве потока.
  • "Device List": выбрать камеру.
  • "Num. Driver": выбрать драйвер устройства захвата.
  • "Width, Height": установить разрешение видео потока.
  • "Pixel Format": доступны следующие форматы: RGB24, BGR24, RGB32, UYVY422, GRAY8, RGB565, ARGB32 (формат должен соответствовать возможностям камеры).
  • "Rate": задать количество кадров в секунду.
  • "Interlaced": задать параметры интерлейсинга.
  • (Интерлейсинг (или черезстрочная развёртка) – это приём, благодаря которому видео-изображение передаётся с частотой не 25 кадров в секунду, а 50, причём каждый кадр по-вертикали в два раза меньше самого видео. Чтобы получить исходный размер кадра по-вертикали, чётный и нечётный кадр "складываются" через строчку сверху вниз. Таким образом, если просматривать интерлейсное видео на компьютере без дополнительной обработки, мы будем видеть два соседних кадра как один)

  • "Inverted": вращение изображения.
  • "Delay": установить задержку захвата изображения.
  • "NbFrameBuffers": задать размер буфера для записи видеопотока.
  • "Priority": задать приоритетность видео потока.
  • "CPU": задать приоритетность обработки процессором.
  • "Import": загрузить ранее созданный ".xml" файл с настройками камеры.
  • "Close": Прекратить захват.
  • "Open": Подтвердить текущую конфигурацию и начать захват.
  • 4. Панель Camera Calibration

    На панели "Camera Calibration" можно откалибровать камеру, рассчитав фокусное расстояние, оптический центр и т.д.

    5. Панель Video Preprocessing

    Панель "Video Preprocessing" позволяет вручную задать параметры калибровки камеры.

    6. Панель Scenario Manager

    На этой панель вы можете определить параметры захватываемого объекта (геометрию и статические параметры).

    Создание нового объекта

  • "Create": добавить новый объект в список отслеживаемых объектов.
  • "Import": загрузить существующую конфигурацию объекта.
  • "Remove": удалить выбранный объект.
  • "Max Simultaneous Targets": задать количество одновременно отслеживаемых объектов.
  • Параметры объекта

  • "Object Type": Определить тип отслеживаемого объекта. ("Plane", "Face AutoInit", "Object 3D", "Plane Black Box".
  • "Load model": загрузить 3D модель (".obj" или ".pts") отслеживаемого объекта. Доступно в "Face AutoInit" или "Object 3D" режиме.
  • "Plane Size": Задать плоский объект.
  • Ключевой кадр

    Цель создания ключевого кадра заключается в обнаружении сходства между заданной моделью отслеживаемого объекта и объекта реального мира. Создать ключевой кадр можно вручную или загрузив .bmp или .jpg файл.

    Панель "keyframe" содержит следующие элементы:

    Кнопки "Up/down" : изменить порядок ключевых кадров.

    Кнопки "Freeze/Unfreeze video" : "заморозить" видео для позиционирования виртуальной модели.

    "Freeze Delay" : задержка "заморозки".

    Кнопка "Create" : создать новый ключевой кадр.

    "Import ..." : загрузить ключевой кадр из предыдущего сценария.

    "Image ..." : загрузить .bmp или .jpg файл.

    "Remove" : удалить выбранный ключевой кадр.

    "Display" : отобразить ключевой кадр вместо видео потока.

    7. Панель Tracking Manager

    Эта панель служит для проверки созданного сценария и для изменения параметров с целью повышения качества отслеживания.

    Интеграция D'Fusion CV SDK с Intel Perceptual Computing SDK

    Класс dcvTracker

    Информация об отслеживаемых объектах сгруппирована в один класс с именем "dcvTracker".

    "dcvTracker" получает на входе XML-файл, определяющий сценарий отслеживания. В результате будут получены: статус отслеживания, распознанный объект, положение объекта, ориентация объекта.

    Поддерживается управление несколькими сценариями одновременно.

    Структура класса

    dcvTracker::ProfileInfo

    Синтаксис:

    ProfileInfo
    {
      pxcU32 width;
      pxcU32 height;
      PXCCapture::VideoStream::DataDesc inputs;
    };
    

    Структура ProfileInfo – определяет доступ к информации конфигурации.

    width – ширина рамки

    height – высота рамки

    inputs – конфигурация или видео поток

    dcvTracker::TrackingStatus

    TrackingStatus возвращает возможные статусы отслеживаемого объекта.

    STATUS_UNINITIALIZED - Отслеживание не начато

    STATUS_RECOGNITION - Отслеживание запущено

    STATUS_TRACKING – Распознавание запущено

    dcvTracker::TargetType

    TargetType перечисляет все поддерживаемые типы объектов (целей).

    TARGET_UNDEFINED - Цель не определена

    TARGET_PLANE – Плоский объект

    TARGET_OBJECT3D - 3D объект

    TARGET_FACE – Отслеживание лица

    dcvTracker::TargetData

    Структура, которая содержит выходные данные отслеживания / процесс распознавания для одной цели.

    Синтаксис:

    TargetData
    {
      TrackingStatus status;
      pxcI32 trackedTarget;
      pxcF64 position[3];
      pxcF64 orientation[4];
    };
    

    status – статус отслеживания/распознавания

    trackedTarget – распознанный ключевой кадр

    position – текущая позиция отслеживаемого объекта

    orientation – ориентация объекта (выражается в виде кватерниона)

    Функции dcvTracker

    dcvTracker::SetProfile

    Это основной метод для инициализации трекера.

    Синтаксис:

    pxcStatus SetProfile(const pxcCHAR* configFilePath, ProfileInfo* pinfo)
    

    Параметры:

    configFilePath абсолютный путь к .xml файлу конфигурации

    pinfo текущая конфигурация профиля

    Возвращает:

    PXC_STATUS_NO_ERROR если конфигурация загружена удачно

    PXC_STATUS_PARAM_UNSUPPORTED если не удалось загрузить конфигурацию

    dcvTracker::QueryProfile

    Получает подходящую конфигурацию. Этот метод заполняет структуру PXCCapture::VideoStream::DataDesc.

    Синтаксис:

    pxcStatus QueryProfile (ProfileInfo* pinfo)
    

    Параметры:

    pinfo - соответствующая структура конфигурации.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха.

    Комментарии:

    inputs.devCaps[0] X значение поля видимости.

    inputs.devCaps[1] Y значение поля видимости.

    inputs.devCaps[2] X значение фокусного расстояния в пикселях.

    inputs.devCaps[3] Y значение фокусного расстояния в пикселях.

    inputs.devCaps[4] X значение оптического центра в пикселях.

    inputs.devCaps[5] Y значение оптического центра в пикселях.

    dcvTracker::QueryProfile

    Получает подходящую конфигурацию для конкретной конфигурации трекера.

    Синтаксис:

    pxcStatus QueryProfile (const pxcCHAR *filename, ProfileInfo* pinfo)
    

    Параметры:

    filename – путь к настройкам конфигурации.

    pinfo - соответствующая структура конфигурации.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха,

    PXC_STATUS_ITEM_UNAVAILABLE если не удалось загрузить настройку отслеживания

    dcvTracker::ProcessImageAsync

    Это основной метод для оптимизации процесса отслеживания объекта.

    Синтаксис:

    pxcStatus ProcessImageAsync 
       (PXCImage* Image, PXCSchedulter::SyncPoint **sp)
    

    Параметры:

    Image – изображение для обработки

    sp – точка синхронизации, указывающая на окончание процесса

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    dcvTracker::GetTargetCount

    Метод возвращает число объектов (целей), определенных для объекта dcvTracker.

    Синтаксис:

    pxcI32 GetTargetCount ()
    

    Возвращает число целей.

    dcvTracker::ActivateTarget

    Этот метод позволяем активировать/деактивировать объект (цель) из набора существующих.

    Синтаксис:

    pxcStatus ActivateTarget ( pxcI32 targetIndex, bool activate = true)
    

    Параметры:

    targetIndex – индекс цели для активации/деактивации

    activate – установить true для активации (по умолчанию)

    Возвращает

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker инициализировался не верно

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с реальной целью

    dcvTracker::IsTargetActivated

    Метод проверяет флаг активации выбранной цели.

    Синтаксис:

    bool IsTargetActivated( pxcI32 targetIndex )
    

    Параметры:

    targetIndex – индекс цели, чей результат запрашивается

    Возвращает:

    true – если текущая цель активирована.

    dcvTracker::GetTargetName

    Метод возвращает имя объекта (цели).

    Синтаксис:

    const pxcCHAR* GetTargetName ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс дели, чей результат требуется

    Возвращает:

    Имя цели, иначе NULL если targetIndex не совпадает ни с одной целью.

    dcvTracker::GetTargetType

    Метод возвращает тип цели.

    Синтаксис:

    TargetType GetTargetType ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется

    Возвращает:

    Тип цели, иначе TARGET_UNDEFINED если targetIndex не совпадает ни с одной целью

    dcvTracker::GetTargetData

    Метод выводит полный набора данных о соответствующей цели после последнего распознавания/отслеживания.

    Синтаксис:

    pxcStatus GetTargetData( pxcI32 targetIndex, TargetData* targetData )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется

    targetData – вывод полного набора данных о соответствующей цели после последнего распознавания/отслеживания.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает ни с одной целью

    dcvTracker::GetTargetStatus

    Этот метод дает прямой доступ к отслеживанию статуса цели.

    Синтаксис:

    TrackingStatus GetTargetStatus ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    Возвращает:

    STATUS_UNINITIALIZED если цель не инициализирована

    STATUS_RECOGNITION если цель находится в режиме распознавания, то есть ниодин ключевой кадр не был распознан

    STATUS_TRACKING если цель находится в режиме отслеживания, то есть ключевой кадр был распознан

    dcvTracker::GetTrackedKeyframeIndex

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    Возвращает:

    Текущий индекс отслеживаемого ключевого кадра, или -1 если ни один ключевой кадр не был распознан.

    dcvTracker::GetTrackedPosition

    Метод возвращает позицию последнего распознанного ключевого кадра

    Синтаксис:

    pxcStatus GetTrackedPosition( pxcI32 targetIndex, pxcF64 position[3] )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    position – позиция последнего распознанного ключевого кадра. Если ни один ключевой кадр не были отслежены во время последнего процесса, этот параметр не будет изменен.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью

    dcvTracker::GetTrackedOrientation

    Этот метод возвращает прямой доступ к ориентации последнего отслеживаемого ключевого кадра соответствующей цели.

    Синтаксис:

    pxcStatus GetTrackedOrientation( pxcI32 targetIndex, pxcF64 orientation[4] )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    orientation - ориентация последнего отслеживаемого ключевого кадра соответствующей цели.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью.

    Пример приложения, выполняющего отслеживание объекта, по заранее созданному сценарию, и дополнение его информацией:

    Страницы:

    Распознавание образов

    Презентацию к лекции можно скачать здесь.

    Распознавание образов (объектов, сигналов, ситуаций, явлений или процессов) - самая распространенная задача, которую человеку приходится решать практически ежесекундно от первого до последнего дня своего существования. Для этого он использует огромные ресурсы своего мозга, которые оцениваются таким показателем как число нейронов, равное 1010.

    В повседневной деятельности человек постоянно сталкивается с задачами, связанными с принятием решений, обусловленных непрерывно меняющейся окружающей обстановкой. В этом процессе принимают участие: органы чувств, с помощью которых человек воспринимает информацию извне; центральная нервная система, осуществляющая отбор, переработку информации и принятие решений; двигательные органы, реализующие принятое решение. Но в основе решений этих задач лежит распознавание образов.

    В своей практике люди решают разнообразные задачи по классификации и распознаванию объектов, явлений и ситуаций (мгновенно узнают друг друга, с большой скоростью читают печатные и рукописные тексты, безошибочно водят автомобили в сложном потоке уличного движения, осуществляют отбраковку деталей на конвейере, разгадывают коды, древнюю египетскую клинопись и т.д.).

    Большие возможности современной вычислительной техники позволяют в реальном масштабе времени обрабатывать огромное количество информации, что, в свою очередь, делает реальной задачу построения машин для распознавания образов. К настоящему времени сделаны успешные попытки разработки устройств и машинных программ для чтения типографских и машинописных букв, классификации электрокардиограмм, распознавания слов из конечного словаря, произнесенных одним и тем же диктором, а также выделение в речи ключевого слова, произнесенного разными дикторами. Можно назвать еще ряд других применений распознавания образов: идентификация людей по фотографии, по отпечаткам пальцев, по топометрическим данным, диагностика неисправностей в системах, идентификация технологических параметров, обнаружение цели и так далее.

    Распознавание образов (объектов, сигналов, ситуаций, явлений или процессов) – это задача идентификации объекта или определения каких-либо его свойств по его изображению (оптическое распознавание) или аудиозаписи (акустическое распознавание) и другим характеристикам.

    Образ - классификационная группировка в системе классификации, объединяющая (выделяющая) определенную группу объектов по некоторому признаку. Образы обладают характерным свойством, проявляющимся в том, что ознакомление с конечным числом явлений из одного и того же множества дает возможность узнавать сколь угодно большое число его представителей.

    Методы распознавания образов

    В целом, можно выделить три метода распознавания образов:

    Метод перебора. В этом случае производится сравнение с базой данных, где для каждого вида объектов представлены всевозможные модификации отображения. Например, для оптического распознавания образов можно применить метод перебора вида объекта под различными углами, масштабами, смещениями, деформациями и т. д. Для букв нужно перебирать шрифт, свойства шрифта и т. д. В случае распознавания звуковых образов, соответственно, происходит сравнение с некоторыми известными шаблонами (например, слово, произнесенное несколькими людьми).

    Второй подход - производится более глубокий анализ характеристик образа. В случае оптического распознавания это может быть определение различных геометрических характеристик. Звуковой образец в этом случае подвергается частотному, амплитудному анализу и т. д.

    Следующий метод - использование искусственных нейронных сетей (ИНС). Этот метод требует либо большого количества примеров задачи распознавания при обучении, либо специальной структуры нейронной сети, учитывающей специфику данной задачи. Тем не менее, его отличает более высокая эффективность и производительность.

    Типы задач распознавания

  • Задача распознавания - отнесение предъявленного объекта по его описанию к одному из заданных классов;
  • Задача автоматической классификации - разбиение множества объектов, ситуаций, явлений по их описаниям на систему непересекающихся классов (таксономия, кластерный анализ, самообучение);
  • Задача выбора информативного набора признаков при распознавании;
  • Задача прогнозирования.
  • Дополненная реальность

    Дополненная реальность – это техника визуализации, которая имеет дело с комбинированием объектов реального мира и информации, сгенерированной с помощью компьютера. Основная идея дополненной реальности заключается в совмещении реальности с виртуальной реальностью. В общем смысле такая информация как изображения, аудио, gps данные накладываются на окружающую обстановку реального мира, создавая дополненную среду.

    Ученые в данной области выделяют три основных функциональных характеристики дополненной реальности: 1) комбинирование объектов реального мира с виртуальными элементами, которые 2) взаимодействуют в реальном времени, и которые 3) отображены на каком-либо дисплее с учетом положения в пространстве (координаты и угол наклона).

    История дополненной реальности

    1962 год.

    Мортон Хейлиг (англ. Morton Heilig) представил первый прототип мультисенсорного симулятора, который он называл "Сенсорама" (Sensorama). Сенсорама погружала зрителя в виртуальную реальность при помощи коротких фильмов, которые сопровождались запахами, ветром (при помощи фена) и шумом мегаполиса с аудиозаписи.

    Айвен Сазерленд создал "Sketchpad" и представил на нем первый графический пользовательский интерфейс.

    Мортон Хейлиг запатентовал первый закрепляемый на голове дисплей, который никогда не был произведен.

    1966 год.

    Айвен Сазерленд разработал "Ultimate Display" на основе электронно-лучевой трубки.

    1975 год.

    Майрон Крюгер совместно со своими коллегами открыл "Лабораторию искусственной реальности".

    1980 год.

    Стив Манн разработал носимый компьютер.

    1989 год.

    Джарон Ланье программист-учёный области визуализация данных, биометрии, и биометрических технологий ввел термин "виртуальная реальность".

    1990 год.

    Термин "дополненная реальность" был предложен Томом Коделом, предположительно работавшим исследователем на корпорацию Boeing.

    1992 год.

    Л. Розенберг разработал первую функционирующую систему дополненной реальности "Virtual fixtures".

    1998 год.

    Рамеш Раскал, Грэг Вэлш и Генри Фанш разработали "Пространственную дополненную реальность". Данная технология дополняет объекты реального мира без использования специальных дисплеев, таких как мониторы, монтируемые на голове. Пространственная дополненная реальность использует проекторы для отображения графической информации на физические объекты. Таким образом, дисплей отделен от пользователей системы, что позволяет совместно в группе работать над одной задачей.

    1999 год.

    Хироказу Като разработал бесплатную библиотеку ARToolkit, которая использует алгоритмы компьютерного зрения.

    2000 год.

    Брюс Томас разработал первую мобильную игру для открытого пространства с системой дополненной реальности, названную "ARQuake".

    2008 год.

    Сервис WikiTude представил AR Travel Guide – сервис, дополняющий изображение с камеры смартфона туристической информацией.

    Технологии дополненной реальности

    Реализация дополненной реальности может быть выполнена различными путями. Изначально было доступно большое число веб приложений, которые считывали QR (quick response) коды при помощи веб камеры. Используя QR коды (иначе "маркеры"), приложение накладывало цифровую информацию, 3D анимацию и отображало их на экране поверх/вместо карточек с маркером. Цифровая информация перемещалась одновременно с маркером, когда пользователь двигал его. Другим способом реализации дополненной реальностью были закрепленные на голове дисплеи. Еще в середине ХХ века военным летчикам начали делать шлемы со встроенным дополнительным дисплеем. С его помощью пилот получал важную информацию: он видел, например, сколько топлива осталось в баке самолета и каким курсом движется машина. Еще более привычным для нас примером дополненной реальности является телевизионная передача или спортивная трансляция: на картинку, снятую камерами, накладывается информация с текстом – дополняет ее. Например, когда во время просмотра футбольного матча телеканал повторяет голевой момент, и мяч иногда подсвечивается, чтобы зрители лучше прочувствовали ситуацию.

    Сферы применения дополненной реальности

  • Продажи и маркетинг
  • Гео-визуализация
  • Архитектура
  • Военная подготовка
  • Мобильные приложения
  • Решение медицинских задач
  • Робототехника
  • Производство
  • Образование
  • Видео игры
  • Ограничения технологии дополненной реальности

    Несмотря на значительные успехи, достигнутые в каждой из вышеперечисленных областей, все-таки существуют некоторые ограничения в технологии, которые должны быть решены. Системы дополненной реальности имеют дело с огромным количеством информации реального мира. Поэтому используемое аппаратное обеспечение, должно быть миниатюрным и легко переносимым и достаточно быстродействующим для работы с графикой. Кроме того, срок службы батарей, используемых сложных устройствах дополненной реальности это еще одно ограничение. Системы дополненной реальности обычно получают много информации, и требуется программное обеспечение для фильтрации этой информации, для сохранения полезной информации, исключения ненужных данные и отображения их в удобном виде.

    Средства разработки приложений дополненной реальности

    Применяемые средства разработки технологии дополненной реальности зависят от типа реализуемых задач и доступного оборудования для реализации. Такие средства разработки как Daqri, MixAR и ZooBrust довольно простые и не требуют высоких навыков программирования. Другие инструменты, включающие в себя наборы SDK, такие как ARToolKit, Unifeye Mobile SDK, и Wikitude, были разработаны для серьезных разработчиков приложений. Эти комплекты являются очень функциональными и позволяют разработчикам создавать различные приложения дополненной реальности для различных устройств. Однако, более совершенные инструменты требуют глубокие знания и опыт в программировании, к примеру, на Java, и техники 3D и виртуальной реальности.

    Daqri (www.daqri.com) представляет собой платформу, которая позволяет пользователям создавать QR-коды, которые отображают изображения, фильмы и другой контент, как только они распознаны камерой смартфона. Самое интересное в этой платформе то, что Daqri позволяет пользователям создавать приложения дополненной реальности без написания кода.

    В настоящее время студия Hololabs разрабатывает приложение для iPhone названное MixAR, которое позволяет пользователю создавать собственные 3D модели дополненной реальности, фотографии и видео без необходимости написания кода. Платформа MixAR позволяет пользователям сфотографировать объект, а затем преобразовать его в 3D-модель, которая дополнит объекты реального мира. Результат сохраняется как видео. Далее пользователь может поделиться им со всем миром. Все это можно сделать, используя только iPhone.

    ZooBurst (www.zooburst.com) это инструмент, позволяющим авторам легко создавать собственные 3D книги. Автор может просто держать маркер в ZooBurst перед веб камерой. Всплывающая 3D книга будет волшебно появляться на экране, по масштабам равная оригинальным размерам книги. На экране книги полностью интерактивны, что позволяет читателям перелистывать страницы или наклонить книгу под любым углом.

    ARToolKit является свободно распространяемой библиотекой с открытым исходным кодом на языке С для создания приложений дополненной реальности. ARToolkit изначально был разработан Хироказу Като в 1999 году. ARToolKit использует методы компьютерного зрения для расчета положения и ориентации камеры относительно карточек-маркеров. Это позволят программисту накладывать виртуальные объекты поверх маркеров.

    Wikitude предлагает API для добавления контента дополненной реальности в свой Wikitude World Browser.

    D'Fusion Computer Vision SDK. Что такое D'Fusion Computer Vision от компании Total Immersion?

    D'Fusion Computer Vision (иначе D'FusionCV) представляет собой пакет программного обеспечения, основанного на запатентованной инновационной технологии, разработанной для получения "естественной" информации, предоставляемой различными реальными объектами, распознанными в изображении или видео потоке. Собрав данные, объект может быть идентифицирован и отслежен через последовательные изображения из видео потока в режиме реального времени. Эксперты обычно называют эту технологии "безмаркерный трекинг".

    D'Fusion Computer Vision была разработана для достижения следующих задач:

  • Захват видеопотоков с видеокамер и из видео файлов. Модуль захвата поддерживает практически все камеры устройства (HD/SD камер и веб-камеры).
  • Калибровка камеры для оценки внутренних параметров камеры (фокальная точка, оптический центр и т.д.).
  • Отслеживание естественных 2D/3D объектов в поле видимости камеры и в видеопотоке. Эти объекту могут представлять различные формы и различные текстуры (игральные карты, листовки, щиты, или более сложные объекты, такие как коробки, автомобили, природные ландшафты, лица и т.д.).
  • Отслеживания нескольких объектов в одном видеопотоке (Multiple tracking).
  • Классификация объектов в видеопотоке (Object recognition).
  • Обнаружение простого взаимодействия между пользователем и реальным отслеживаемым объекта (Pointing Detection).
  • Реализация основных функций обработки изображений, такие как обнаружение жестов, выделение объектов переднего и заднего плана или распознавание лиц.
  • Отправка информацию о положении и ориентации объекта через сеть или с помощью SDK.
  • Создания сценариев отслеживания объекта помощью графического интерфейса пользователя за считанные минуты.
  • Распознавание и отслеживание объектов

    1. Установка и запуск пакета

    Пакет D'Fusion Studio CV по умолчанию устанавливается на компьютер совместно с Intel Perceptual Computing SDK. Запустить пакет можно из "Intel Perceptual Computing SDK 2013 -> Tools -> D'Fusion Studio CV - Intel PCSDK". (или C:\Program Files (x86)\Intel\PCSDK\contrib\Total Immersion\StudioCV)

    2. Создание сценария

    Для того чтобы использовать функционал отслеживания безмаркерных объектов, Вы должны сперва создать настроить свой сценарий, используя D>Fusion Studio CV. В большинстве случаев сценарий предполагает создание следующих элементов:

  • XML файл конфигурации, содержащий настройки сценария (обычно "tracker.xml");
  • XML файл конфигурации, содержащий результаты калибровки камеры (обычно "cameraCalib.xml");
  • XML файл конфигурации, содержащий настройки захвата изображения (обычно "cameraConfig.xml");
  • Изображения, соответствующие отслеживаемому объекту;
  • Двоичные файлы, которые могут быть использованы для хранения объектов статистических структур (для поддержания процесса распознавания).
  • 3. Процесс отслеживания безмаркерных объектов

    Процесс отслеживания безмаркерных объектов состоит из нескольких шагов:

    Распознавание. Может быть произведено распознавание одного или группы объектов. Данный шаг позволяет определить, какой объект присутствует на текущем изображении.

    Автоматическая инициализация. Данный шаг позволяет пользователю приступить к полностью автоматическому отслеживанию без ссылки на конкретный объект.

    Автоматическая инициализация отслеживания лица. На данном шаге D'Fusion Computer Vision может распознавать лица автоматически, а затем отслеживать их в видеопотоке.

    Инициализация. Во время процесса инициализации в видео потоке требуемый объект обнаруживается на основе одного или набора ключевых кадров.

    Отслеживание. Объект отслеживается в видеопотоке на основании ключевого кадра и информации о предыдущей позиции объекта.

    4. Ключевой кадр

    Ключевой кадр является важным понятием для понимания работы технологии отслеживания безмаркерных объектов. Данное понятие включает следующие компоненты:

  • 6 степеней свободы;
  • изображение, содержащее информацию об объекте;
  • соответствующие настройки калибровки камеры;
  • 5. Работа в D'Fusion Studio CV

    Следующий параграф описывает графический интерфейс пакета D'Fusion Studio CV, его функционал и способы создания своего сценария отслеживания.

    Запустите пакет из "Intel Perceptual Computing SDK 2013 -> Tools -> D'Fusion Studio CV - Intel PCSDK".

    (или C:\Program Files (x86)\Intel\PCSDK\contrib\Total Immersion\StudioCV)

    1. Панель меню

    Панель меню позволяет выполнять следующие операции:

  • "File > New": начать новый проект
  • "File > Load", "File > Recent Scenario": загрузить существующий проект
  • "File > Save", "File > Save As ...": сохранить текущий проект
  • "File > Exit": выход из приложения
  • "View > Log Window": вызвать лог
  • "? > Online Community": открыть веб сайт Total Immersion™ Community
  • "? > About D'Fusion Studio CV Pro": вызвать информацию о продукте
  • "? > D'Fusion CV - Reference Manual": открыть справку (на английском языке)
  • 2. Рабочие панели

    С помощью следующих панелей можно создать свой сценарий:

  • "Video Manager": определяет настройки захвата изображения
  • "Camera Calibration": определяет функции калибровки камеры
  • "Video Preprocessing": определяет настройки видео потока
  • "Scenario Manager": определение настроек отслеживаемого объекта
  • "Tracking Manager": просмотр результата отслеживания
  • 3. Панель Video Manager

    В зависимости от характеристик камеры вам придется задать настройки захвата.

  • "Type": задать тип захвата (directShow, Video UEye, Video for Windows).
  • "Video File": задать видео файл в качестве потока.
  • "Device List": выбрать камеру.
  • "Num. Driver": выбрать драйвер устройства захвата.
  • "Width, Height": установить разрешение видео потока.
  • "Pixel Format": доступны следующие форматы: RGB24, BGR24, RGB32, UYVY422, GRAY8, RGB565, ARGB32 (формат должен соответствовать возможностям камеры).
  • "Rate": задать количество кадров в секунду.
  • "Interlaced": задать параметры интерлейсинга.
  • (Интерлейсинг (или черезстрочная развёртка) – это приём, благодаря которому видео-изображение передаётся с частотой не 25 кадров в секунду, а 50, причём каждый кадр по-вертикали в два раза меньше самого видео. Чтобы получить исходный размер кадра по-вертикали, чётный и нечётный кадр "складываются" через строчку сверху вниз. Таким образом, если просматривать интерлейсное видео на компьютере без дополнительной обработки, мы будем видеть два соседних кадра как один)

  • "Inverted": вращение изображения.
  • "Delay": установить задержку захвата изображения.
  • "NbFrameBuffers": задать размер буфера для записи видеопотока.
  • "Priority": задать приоритетность видео потока.
  • "CPU": задать приоритетность обработки процессором.
  • "Import": загрузить ранее созданный ".xml" файл с настройками камеры.
  • "Close": Прекратить захват.
  • "Open": Подтвердить текущую конфигурацию и начать захват.
  • 4. Панель Camera Calibration

    На панели "Camera Calibration" можно откалибровать камеру, рассчитав фокусное расстояние, оптический центр и т.д.

    5. Панель Video Preprocessing

    Панель "Video Preprocessing" позволяет вручную задать параметры калибровки камеры.

    6. Панель Scenario Manager

    На этой панель вы можете определить параметры захватываемого объекта (геометрию и статические параметры).

    Создание нового объекта

  • "Create": добавить новый объект в список отслеживаемых объектов.
  • "Import": загрузить существующую конфигурацию объекта.
  • "Remove": удалить выбранный объект.
  • "Max Simultaneous Targets": задать количество одновременно отслеживаемых объектов.
  • Параметры объекта

  • "Object Type": Определить тип отслеживаемого объекта. ("Plane", "Face AutoInit", "Object 3D", "Plane Black Box".
  • "Load model": загрузить 3D модель (".obj" или ".pts") отслеживаемого объекта. Доступно в "Face AutoInit" или "Object 3D" режиме.
  • "Plane Size": Задать плоский объект.
  • Ключевой кадр

    Цель создания ключевого кадра заключается в обнаружении сходства между заданной моделью отслеживаемого объекта и объекта реального мира. Создать ключевой кадр можно вручную или загрузив .bmp или .jpg файл.

    Панель "keyframe" содержит следующие элементы:

    Кнопки "Up/down" : изменить порядок ключевых кадров.

    Кнопки "Freeze/Unfreeze video" : "заморозить" видео для позиционирования виртуальной модели.

    "Freeze Delay" : задержка "заморозки".

    Кнопка "Create" : создать новый ключевой кадр.

    "Import ..." : загрузить ключевой кадр из предыдущего сценария.

    "Image ..." : загрузить .bmp или .jpg файл.

    "Remove" : удалить выбранный ключевой кадр.

    "Display" : отобразить ключевой кадр вместо видео потока.

    7. Панель Tracking Manager

    Эта панель служит для проверки созданного сценария и для изменения параметров с целью повышения качества отслеживания.

    Интеграция D'Fusion CV SDK с Intel Perceptual Computing SDK

    Класс dcvTracker

    Информация об отслеживаемых объектах сгруппирована в один класс с именем "dcvTracker".

    "dcvTracker" получает на входе XML-файл, определяющий сценарий отслеживания. В результате будут получены: статус отслеживания, распознанный объект, положение объекта, ориентация объекта.

    Поддерживается управление несколькими сценариями одновременно.

    Структура класса

    dcvTracker::ProfileInfo

    Синтаксис:

    ProfileInfo
    {
      pxcU32 width;
      pxcU32 height;
      PXCCapture::VideoStream::DataDesc inputs;
    };
    

    Структура ProfileInfo – определяет доступ к информации конфигурации.

    width – ширина рамки

    height – высота рамки

    inputs – конфигурация или видео поток

    dcvTracker::TrackingStatus

    TrackingStatus возвращает возможные статусы отслеживаемого объекта.

    STATUS_UNINITIALIZED - Отслеживание не начато

    STATUS_RECOGNITION - Отслеживание запущено

    STATUS_TRACKING – Распознавание запущено

    dcvTracker::TargetType

    TargetType перечисляет все поддерживаемые типы объектов (целей).

    TARGET_UNDEFINED - Цель не определена

    TARGET_PLANE – Плоский объект

    TARGET_OBJECT3D - 3D объект

    TARGET_FACE – Отслеживание лица

    dcvTracker::TargetData

    Структура, которая содержит выходные данные отслеживания / процесс распознавания для одной цели.

    Синтаксис:

    TargetData
    {
      TrackingStatus status;
      pxcI32 trackedTarget;
      pxcF64 position[3];
      pxcF64 orientation[4];
    };
    

    status – статус отслеживания/распознавания

    trackedTarget – распознанный ключевой кадр

    position – текущая позиция отслеживаемого объекта

    orientation – ориентация объекта (выражается в виде кватерниона)

    Функции dcvTracker

    dcvTracker::SetProfile

    Это основной метод для инициализации трекера.

    Синтаксис:

    pxcStatus SetProfile(const pxcCHAR* configFilePath, ProfileInfo* pinfo)
    

    Параметры:

    configFilePath абсолютный путь к .xml файлу конфигурации

    pinfo текущая конфигурация профиля

    Возвращает:

    PXC_STATUS_NO_ERROR если конфигурация загружена удачно

    PXC_STATUS_PARAM_UNSUPPORTED если не удалось загрузить конфигурацию

    dcvTracker::QueryProfile

    Получает подходящую конфигурацию. Этот метод заполняет структуру PXCCapture::VideoStream::DataDesc.

    Синтаксис:

    pxcStatus QueryProfile (ProfileInfo* pinfo)
    

    Параметры:

    pinfo - соответствующая структура конфигурации.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха.

    Комментарии:

    inputs.devCaps[0] X значение поля видимости.

    inputs.devCaps[1] Y значение поля видимости.

    inputs.devCaps[2] X значение фокусного расстояния в пикселях.

    inputs.devCaps[3] Y значение фокусного расстояния в пикселях.

    inputs.devCaps[4] X значение оптического центра в пикселях.

    inputs.devCaps[5] Y значение оптического центра в пикселях.

    dcvTracker::QueryProfile

    Получает подходящую конфигурацию для конкретной конфигурации трекера.

    Синтаксис:

    pxcStatus QueryProfile (const pxcCHAR *filename, ProfileInfo* pinfo)
    

    Параметры:

    filename – путь к настройкам конфигурации.

    pinfo - соответствующая структура конфигурации.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха,

    PXC_STATUS_ITEM_UNAVAILABLE если не удалось загрузить настройку отслеживания

    dcvTracker::ProcessImageAsync

    Это основной метод для оптимизации процесса отслеживания объекта.

    Синтаксис:

    pxcStatus ProcessImageAsync 
       (PXCImage* Image, PXCSchedulter::SyncPoint **sp)
    

    Параметры:

    Image – изображение для обработки

    sp – точка синхронизации, указывающая на окончание процесса

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    dcvTracker::GetTargetCount

    Метод возвращает число объектов (целей), определенных для объекта dcvTracker.

    Синтаксис:

    pxcI32 GetTargetCount ()
    

    Возвращает число целей.

    dcvTracker::ActivateTarget

    Этот метод позволяем активировать/деактивировать объект (цель) из набора существующих.

    Синтаксис:

    pxcStatus ActivateTarget ( pxcI32 targetIndex, bool activate = true)
    

    Параметры:

    targetIndex – индекс цели для активации/деактивации

    activate – установить true для активации (по умолчанию)

    Возвращает

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker инициализировался не верно

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с реальной целью

    dcvTracker::IsTargetActivated

    Метод проверяет флаг активации выбранной цели.

    Синтаксис:

    bool IsTargetActivated( pxcI32 targetIndex )
    

    Параметры:

    targetIndex – индекс цели, чей результат запрашивается

    Возвращает:

    true – если текущая цель активирована.

    dcvTracker::GetTargetName

    Метод возвращает имя объекта (цели).

    Синтаксис:

    const pxcCHAR* GetTargetName ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс дели, чей результат требуется

    Возвращает:

    Имя цели, иначе NULL если targetIndex не совпадает ни с одной целью.

    dcvTracker::GetTargetType

    Метод возвращает тип цели.

    Синтаксис:

    TargetType GetTargetType ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется

    Возвращает:

    Тип цели, иначе TARGET_UNDEFINED если targetIndex не совпадает ни с одной целью

    dcvTracker::GetTargetData

    Метод выводит полный набора данных о соответствующей цели после последнего распознавания/отслеживания.

    Синтаксис:

    pxcStatus GetTargetData( pxcI32 targetIndex, TargetData* targetData )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется

    targetData – вывод полного набора данных о соответствующей цели после последнего распознавания/отслеживания.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает ни с одной целью

    dcvTracker::GetTargetStatus

    Этот метод дает прямой доступ к отслеживанию статуса цели.

    Синтаксис:

    TrackingStatus GetTargetStatus ( pxcI32 targetIndex )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    Возвращает:

    STATUS_UNINITIALIZED если цель не инициализирована

    STATUS_RECOGNITION если цель находится в режиме распознавания, то есть ниодин ключевой кадр не был распознан

    STATUS_TRACKING если цель находится в режиме отслеживания, то есть ключевой кадр был распознан

    dcvTracker::GetTrackedKeyframeIndex

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    Возвращает:

    Текущий индекс отслеживаемого ключевого кадра, или -1 если ни один ключевой кадр не был распознан.

    dcvTracker::GetTrackedPosition

    Метод возвращает позицию последнего распознанного ключевого кадра

    Синтаксис:

    pxcStatus GetTrackedPosition( pxcI32 targetIndex, pxcF64 position[3] )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    position – позиция последнего распознанного ключевого кадра. Если ни один ключевой кадр не были отслежены во время последнего процесса, этот параметр не будет изменен.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью

    dcvTracker::GetTrackedOrientation

    Этот метод возвращает прямой доступ к ориентации последнего отслеживаемого ключевого кадра соответствующей цели.

    Синтаксис:

    pxcStatus GetTrackedOrientation( pxcI32 targetIndex, pxcF64 orientation[4] )
    

    Параметры:

    targetIndex - индекс цели, чей результат требуется.

    orientation - ориентация последнего отслеживаемого ключевого кадра соответствующей цели.

    Возвращает:

    PXC_STATUS_NO_ERROR в случае успеха

    PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован

    PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью.

    Пример приложения, выполняющего отслеживание объекта, по заранее созданному сценарию, и дополнение его информацией:

    Вернуться к учебному плану