Презентацию к лекции можно скачать здесь.
Распознавание образов (объектов, сигналов, ситуаций, явлений или процессов) - самая распространенная задача, которую человеку приходится решать практически ежесекундно от первого до последнего дня своего существования. Для этого он использует огромные ресурсы своего мозга, которые оцениваются таким показателем как число нейронов, равное 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 (иначе D'FusionCV) представляет собой пакет программного обеспечения, основанного на запатентованной инновационной технологии, разработанной для получения "естественной" информации, предоставляемой различными реальными объектами, распознанными в изображении или видео потоке. Собрав данные, объект может быть идентифицирован и отслежен через последовательные изображения из видео потока в режиме реального времени. Эксперты обычно называют эту технологии "безмаркерный трекинг".
D'Fusion Computer Vision была разработана для достижения следующих задач:
Пакет 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)
Для того чтобы использовать функционал отслеживания безмаркерных объектов, Вы должны сперва создать настроить свой сценарий, используя D>Fusion Studio CV. В большинстве случаев сценарий предполагает создание следующих элементов:
Процесс отслеживания безмаркерных объектов состоит из нескольких шагов:
Распознавание. Может быть произведено распознавание одного или группы объектов. Данный шаг позволяет определить, какой объект присутствует на текущем изображении.
Автоматическая инициализация. Данный шаг позволяет пользователю приступить к полностью автоматическому отслеживанию без ссылки на конкретный объект.
Автоматическая инициализация отслеживания лица. На данном шаге D'Fusion Computer Vision может распознавать лица автоматически, а затем отслеживать их в видеопотоке.
Инициализация. Во время процесса инициализации в видео потоке требуемый объект обнаруживается на основе одного или набора ключевых кадров.
Отслеживание. Объект отслеживается в видеопотоке на основании ключевого кадра и информации о предыдущей позиции объекта.
Ключевой кадр является важным понятием для понимания работы технологии отслеживания безмаркерных объектов. Данное понятие включает следующие компоненты:
Следующий параграф описывает графический интерфейс пакета 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)
Панель меню позволяет выполнять следующие операции:
С помощью следующих панелей можно создать свой сценарий:
В зависимости от характеристик камеры вам придется задать настройки захвата.
(Интерлейсинг (или черезстрочная развёртка) – это приём, благодаря которому видео-изображение передаётся с частотой не 25 кадров в секунду, а 50, причём каждый кадр по-вертикали в два раза меньше самого видео. Чтобы получить исходный размер кадра по-вертикали, чётный и нечётный кадр "складываются" через строчку сверху вниз. Таким образом, если просматривать интерлейсное видео на компьютере без дополнительной обработки, мы будем видеть два соседних кадра как один)
На панели "Camera Calibration" можно откалибровать камеру, рассчитав фокусное расстояние, оптический центр и т.д.
Панель "Video Preprocessing" позволяет вручную задать параметры калибровки камеры.
На этой панель вы можете определить параметры захватываемого объекта (геометрию и статические параметры).
Создание нового объекта
Параметры объекта
Ключевой кадр
Цель создания ключевого кадра заключается в обнаружении сходства между заданной моделью отслеживаемого объекта и объекта реального мира. Создать ключевой кадр можно вручную или загрузив .bmp или .jpg файл.
Панель "keyframe" содержит следующие элементы:
Кнопки "Up/down" : изменить порядок ключевых кадров.
Кнопки "Freeze/Unfreeze video" : "заморозить" видео для позиционирования виртуальной модели.
"Freeze Delay" : задержка "заморозки".
Кнопка "Create" : создать новый ключевой кадр.
"Import ..." : загрузить ключевой кадр из предыдущего сценария.
"Image ..." : загрузить .bmp или .jpg файл.
"Remove" : удалить выбранный ключевой кадр.
"Display" : отобразить ключевой кадр вместо видео потока.
Эта панель служит для проверки созданного сценария и для изменения параметров с целью повышения качества отслеживания.
Информация об отслеживаемых объектах сгруппирована в один класс с именем "dcvTracker".
"dcvTracker" получает на входе XML-файл, определяющий сценарий отслеживания. В результате будут получены: статус отслеживания, распознанный объект, положение объекта, ориентация объекта.
Поддерживается управление несколькими сценариями одновременно.
Структура класса
Синтаксис:
ProfileInfo
{
pxcU32 width;
pxcU32 height;
PXCCapture::VideoStream::DataDesc inputs;
};
Структура ProfileInfo – определяет доступ к информации конфигурации.
width – ширина рамки
height – высота рамки
inputs – конфигурация или видео поток
TrackingStatus возвращает возможные статусы отслеживаемого объекта.
STATUS_UNINITIALIZED - Отслеживание не начато
STATUS_RECOGNITION - Отслеживание запущено
STATUS_TRACKING – Распознавание запущено
dcvTracker::TargetType
TargetType перечисляет все поддерживаемые типы объектов (целей).
TARGET_UNDEFINED - Цель не определена
TARGET_PLANE – Плоский объект
TARGET_OBJECT3D - 3D объект
TARGET_FACE – Отслеживание лица
Структура, которая содержит выходные данные отслеживания / процесс распознавания для одной цели.
Синтаксис:
TargetData
{
TrackingStatus status;
pxcI32 trackedTarget;
pxcF64 position[3];
pxcF64 orientation[4];
};
status – статус отслеживания/распознавания
trackedTarget – распознанный ключевой кадр
position – текущая позиция отслеживаемого объекта
orientation – ориентация объекта (выражается в виде кватерниона)
Функции dcvTracker
Это основной метод для инициализации трекера.
Синтаксис:
pxcStatus SetProfile(const pxcCHAR* configFilePath, ProfileInfo* pinfo)
Параметры:
configFilePath абсолютный путь к .xml файлу конфигурации
pinfo текущая конфигурация профиля
Возвращает:
PXC_STATUS_NO_ERROR если конфигурация загружена удачно
PXC_STATUS_PARAM_UNSUPPORTED если не удалось загрузить конфигурацию
Получает подходящую конфигурацию. Этот метод заполняет структуру 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 значение оптического центра в пикселях.
Получает подходящую конфигурацию для конкретной конфигурации трекера.
Синтаксис:
pxcStatus QueryProfile (const pxcCHAR *filename, ProfileInfo* pinfo)
Параметры:
filename – путь к настройкам конфигурации.
pinfo - соответствующая структура конфигурации.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха,
PXC_STATUS_ITEM_UNAVAILABLE если не удалось загрузить настройку отслеживания
Это основной метод для оптимизации процесса отслеживания объекта.
Синтаксис:
pxcStatus ProcessImageAsync (PXCImage* Image, PXCSchedulter::SyncPoint **sp)
Параметры:
Image – изображение для обработки
sp – точка синхронизации, указывающая на окончание процесса
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
Метод возвращает число объектов (целей), определенных для объекта dcvTracker.
Синтаксис:
pxcI32 GetTargetCount ()
Возвращает число целей.
Этот метод позволяем активировать/деактивировать объект (цель) из набора существующих.
Синтаксис:
pxcStatus ActivateTarget ( pxcI32 targetIndex, bool activate = true)
Параметры:
targetIndex – индекс цели для активации/деактивации
activate – установить true для активации (по умолчанию)
Возвращает
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker инициализировался не верно
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с реальной целью
Метод проверяет флаг активации выбранной цели.
Синтаксис:
bool IsTargetActivated( pxcI32 targetIndex )
Параметры:
targetIndex – индекс цели, чей результат запрашивается
Возвращает:
true – если текущая цель активирована.
Метод возвращает имя объекта (цели).
Синтаксис:
const pxcCHAR* GetTargetName ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс дели, чей результат требуется
Возвращает:
Имя цели, иначе NULL если targetIndex не совпадает ни с одной целью.
Метод возвращает тип цели.
Синтаксис:
TargetType GetTargetType ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс цели, чей результат требуется
Возвращает:
Тип цели, иначе TARGET_UNDEFINED если targetIndex не совпадает ни с одной целью
Метод выводит полный набора данных о соответствующей цели после последнего распознавания/отслеживания.
Синтаксис:
pxcStatus GetTargetData( pxcI32 targetIndex, TargetData* targetData )
Параметры:
targetIndex - индекс цели, чей результат требуется
targetData – вывод полного набора данных о соответствующей цели после последнего распознавания/отслеживания.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает ни с одной целью
Этот метод дает прямой доступ к отслеживанию статуса цели.
Синтаксис:
TrackingStatus GetTargetStatus ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс цели, чей результат требуется.
Возвращает:
STATUS_UNINITIALIZED если цель не инициализирована
STATUS_RECOGNITION если цель находится в режиме распознавания, то есть ниодин ключевой кадр не был распознан
STATUS_TRACKING если цель находится в режиме отслеживания, то есть ключевой кадр был распознан
Параметры:
targetIndex - индекс цели, чей результат требуется.
Возвращает:
Текущий индекс отслеживаемого ключевого кадра, или -1 если ни один ключевой кадр не был распознан.
Метод возвращает позицию последнего распознанного ключевого кадра
Синтаксис:
pxcStatus GetTrackedPosition( pxcI32 targetIndex, pxcF64 position[3] )
Параметры:
targetIndex - индекс цели, чей результат требуется.
position – позиция последнего распознанного ключевого кадра. Если ни один ключевой кадр не были отслежены во время последнего процесса, этот параметр не будет изменен.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью
Этот метод возвращает прямой доступ к ориентации последнего отслеживаемого ключевого кадра соответствующей цели.
Синтаксис:
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 (иначе D'FusionCV) представляет собой пакет программного обеспечения, основанного на запатентованной инновационной технологии, разработанной для получения "естественной" информации, предоставляемой различными реальными объектами, распознанными в изображении или видео потоке. Собрав данные, объект может быть идентифицирован и отслежен через последовательные изображения из видео потока в режиме реального времени. Эксперты обычно называют эту технологии "безмаркерный трекинг".
D'Fusion Computer Vision была разработана для достижения следующих задач:
Пакет 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)
Для того чтобы использовать функционал отслеживания безмаркерных объектов, Вы должны сперва создать настроить свой сценарий, используя D>Fusion Studio CV. В большинстве случаев сценарий предполагает создание следующих элементов:
Процесс отслеживания безмаркерных объектов состоит из нескольких шагов:
Распознавание. Может быть произведено распознавание одного или группы объектов. Данный шаг позволяет определить, какой объект присутствует на текущем изображении.
Автоматическая инициализация. Данный шаг позволяет пользователю приступить к полностью автоматическому отслеживанию без ссылки на конкретный объект.
Автоматическая инициализация отслеживания лица. На данном шаге D'Fusion Computer Vision может распознавать лица автоматически, а затем отслеживать их в видеопотоке.
Инициализация. Во время процесса инициализации в видео потоке требуемый объект обнаруживается на основе одного или набора ключевых кадров.
Отслеживание. Объект отслеживается в видеопотоке на основании ключевого кадра и информации о предыдущей позиции объекта.
Ключевой кадр является важным понятием для понимания работы технологии отслеживания безмаркерных объектов. Данное понятие включает следующие компоненты:
Следующий параграф описывает графический интерфейс пакета 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)
Панель меню позволяет выполнять следующие операции:
С помощью следующих панелей можно создать свой сценарий:
В зависимости от характеристик камеры вам придется задать настройки захвата.
(Интерлейсинг (или черезстрочная развёртка) – это приём, благодаря которому видео-изображение передаётся с частотой не 25 кадров в секунду, а 50, причём каждый кадр по-вертикали в два раза меньше самого видео. Чтобы получить исходный размер кадра по-вертикали, чётный и нечётный кадр "складываются" через строчку сверху вниз. Таким образом, если просматривать интерлейсное видео на компьютере без дополнительной обработки, мы будем видеть два соседних кадра как один)
На панели "Camera Calibration" можно откалибровать камеру, рассчитав фокусное расстояние, оптический центр и т.д.
Панель "Video Preprocessing" позволяет вручную задать параметры калибровки камеры.
На этой панель вы можете определить параметры захватываемого объекта (геометрию и статические параметры).
Создание нового объекта
Параметры объекта
Ключевой кадр
Цель создания ключевого кадра заключается в обнаружении сходства между заданной моделью отслеживаемого объекта и объекта реального мира. Создать ключевой кадр можно вручную или загрузив .bmp или .jpg файл.
Панель "keyframe" содержит следующие элементы:
Кнопки "Up/down" : изменить порядок ключевых кадров.
Кнопки "Freeze/Unfreeze video" : "заморозить" видео для позиционирования виртуальной модели.
"Freeze Delay" : задержка "заморозки".
Кнопка "Create" : создать новый ключевой кадр.
"Import ..." : загрузить ключевой кадр из предыдущего сценария.
"Image ..." : загрузить .bmp или .jpg файл.
"Remove" : удалить выбранный ключевой кадр.
"Display" : отобразить ключевой кадр вместо видео потока.
Эта панель служит для проверки созданного сценария и для изменения параметров с целью повышения качества отслеживания.
Информация об отслеживаемых объектах сгруппирована в один класс с именем "dcvTracker".
"dcvTracker" получает на входе XML-файл, определяющий сценарий отслеживания. В результате будут получены: статус отслеживания, распознанный объект, положение объекта, ориентация объекта.
Поддерживается управление несколькими сценариями одновременно.
Структура класса
Синтаксис:
ProfileInfo
{
pxcU32 width;
pxcU32 height;
PXCCapture::VideoStream::DataDesc inputs;
};
Структура ProfileInfo – определяет доступ к информации конфигурации.
width – ширина рамки
height – высота рамки
inputs – конфигурация или видео поток
TrackingStatus возвращает возможные статусы отслеживаемого объекта.
STATUS_UNINITIALIZED - Отслеживание не начато
STATUS_RECOGNITION - Отслеживание запущено
STATUS_TRACKING – Распознавание запущено
dcvTracker::TargetType
TargetType перечисляет все поддерживаемые типы объектов (целей).
TARGET_UNDEFINED - Цель не определена
TARGET_PLANE – Плоский объект
TARGET_OBJECT3D - 3D объект
TARGET_FACE – Отслеживание лица
Структура, которая содержит выходные данные отслеживания / процесс распознавания для одной цели.
Синтаксис:
TargetData
{
TrackingStatus status;
pxcI32 trackedTarget;
pxcF64 position[3];
pxcF64 orientation[4];
};
status – статус отслеживания/распознавания
trackedTarget – распознанный ключевой кадр
position – текущая позиция отслеживаемого объекта
orientation – ориентация объекта (выражается в виде кватерниона)
Функции dcvTracker
Это основной метод для инициализации трекера.
Синтаксис:
pxcStatus SetProfile(const pxcCHAR* configFilePath, ProfileInfo* pinfo)
Параметры:
configFilePath абсолютный путь к .xml файлу конфигурации
pinfo текущая конфигурация профиля
Возвращает:
PXC_STATUS_NO_ERROR если конфигурация загружена удачно
PXC_STATUS_PARAM_UNSUPPORTED если не удалось загрузить конфигурацию
Получает подходящую конфигурацию. Этот метод заполняет структуру 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 значение оптического центра в пикселях.
Получает подходящую конфигурацию для конкретной конфигурации трекера.
Синтаксис:
pxcStatus QueryProfile (const pxcCHAR *filename, ProfileInfo* pinfo)
Параметры:
filename – путь к настройкам конфигурации.
pinfo - соответствующая структура конфигурации.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха,
PXC_STATUS_ITEM_UNAVAILABLE если не удалось загрузить настройку отслеживания
Это основной метод для оптимизации процесса отслеживания объекта.
Синтаксис:
pxcStatus ProcessImageAsync (PXCImage* Image, PXCSchedulter::SyncPoint **sp)
Параметры:
Image – изображение для обработки
sp – точка синхронизации, указывающая на окончание процесса
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
Метод возвращает число объектов (целей), определенных для объекта dcvTracker.
Синтаксис:
pxcI32 GetTargetCount ()
Возвращает число целей.
Этот метод позволяем активировать/деактивировать объект (цель) из набора существующих.
Синтаксис:
pxcStatus ActivateTarget ( pxcI32 targetIndex, bool activate = true)
Параметры:
targetIndex – индекс цели для активации/деактивации
activate – установить true для активации (по умолчанию)
Возвращает
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker инициализировался не верно
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с реальной целью
Метод проверяет флаг активации выбранной цели.
Синтаксис:
bool IsTargetActivated( pxcI32 targetIndex )
Параметры:
targetIndex – индекс цели, чей результат запрашивается
Возвращает:
true – если текущая цель активирована.
Метод возвращает имя объекта (цели).
Синтаксис:
const pxcCHAR* GetTargetName ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс дели, чей результат требуется
Возвращает:
Имя цели, иначе NULL если targetIndex не совпадает ни с одной целью.
Метод возвращает тип цели.
Синтаксис:
TargetType GetTargetType ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс цели, чей результат требуется
Возвращает:
Тип цели, иначе TARGET_UNDEFINED если targetIndex не совпадает ни с одной целью
Метод выводит полный набора данных о соответствующей цели после последнего распознавания/отслеживания.
Синтаксис:
pxcStatus GetTargetData( pxcI32 targetIndex, TargetData* targetData )
Параметры:
targetIndex - индекс цели, чей результат требуется
targetData – вывод полного набора данных о соответствующей цели после последнего распознавания/отслеживания.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает ни с одной целью
Этот метод дает прямой доступ к отслеживанию статуса цели.
Синтаксис:
TrackingStatus GetTargetStatus ( pxcI32 targetIndex )
Параметры:
targetIndex - индекс цели, чей результат требуется.
Возвращает:
STATUS_UNINITIALIZED если цель не инициализирована
STATUS_RECOGNITION если цель находится в режиме распознавания, то есть ниодин ключевой кадр не был распознан
STATUS_TRACKING если цель находится в режиме отслеживания, то есть ключевой кадр был распознан
Параметры:
targetIndex - индекс цели, чей результат требуется.
Возвращает:
Текущий индекс отслеживаемого ключевого кадра, или -1 если ни один ключевой кадр не был распознан.
Метод возвращает позицию последнего распознанного ключевого кадра
Синтаксис:
pxcStatus GetTrackedPosition( pxcI32 targetIndex, pxcF64 position[3] )
Параметры:
targetIndex - индекс цели, чей результат требуется.
position – позиция последнего распознанного ключевого кадра. Если ни один ключевой кадр не были отслежены во время последнего процесса, этот параметр не будет изменен.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью
Этот метод возвращает прямой доступ к ориентации последнего отслеживаемого ключевого кадра соответствующей цели.
Синтаксис:
pxcStatus GetTrackedOrientation( pxcI32 targetIndex, pxcF64 orientation[4] )
Параметры:
targetIndex - индекс цели, чей результат требуется.
orientation - ориентация последнего отслеживаемого ключевого кадра соответствующей цели.
Возвращает:
PXC_STATUS_NO_ERROR в случае успеха
PXC_STATUS_HANDLE_INVALID если dcvTracker не инициализирован
PXC_STATUS_ITEM_UNAVAILABLE если targetIndex не совпадает с распознанной реальной целью.
Пример приложения, выполняющего отслеживание объекта, по заранее созданному сценарию, и дополнение его информацией:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.