Применение SURF для создания маркера дополненной реальности / Хабрахабр. Применение SURF для создания маркера дополненной реальности. Это продолжение топика о дополненной реальности. Вот здесь первая часть. В обсуждении топика юзером Inco были показаны интересные результаты его работы в направлении распознавании маркера дополненной реальности Видео. На тот момент времени не оказалось, но через пару месяцев мне стало интересно как всё это работает, насколько устойчив подход — и свободные часы нашлись.
Представляю вам свою реализацию этой идеи, который вылился в доклад на вот этом событии. В этом топике внимание будет уделено краткому изложению моего доклада и объяснению того, на что не хватило времени на встрече: исходному коду програмы. Желающие полностью посмотреть и послушать презентацию могут воспользоваться скринкастом: Что такое дополненная реальность? Кроме того, есть виртуальная реальность.
После обработки кадра с помощью JSARDetector.detectMarkerLite(), объект JSARDetector будет содержать список распознанных маркеров. Дополненная реальность — результат введения в поле восприятия любых сенсорных данных с целью дополнения сведений об окружении и улучшения восприятия информации. Дополненная реальность — воспринимаемая смешанная реальность (англ. В области дополненной реальности алгоритмы компьютерного зрения используются для поиска в видеопотоке специальных маркеров.
Это то, что сгенерировано, то что не существует, то что вам хотят показать. Она может смещаться больше в сторону нашей реальности, тогда это будет дополненная реальность, либо она может смещаться больше в сторону виртуальности — тогда это будет виртуальность дополненная нашей реальностью.
Для чего используется дополненная реальность сейчас? Первое фото, там демонстрируют плотину, это фото с конференции посвященной Aвтокаду. Интерфейсы. Новые интерфейсы, которые не нужно проецировать. Поставил руку, либо что- нибудь еще(лист бумаги) под камеру, и у тебя готов интерфейс, которым ты можешь управлять объектом. Та ситуация, когда ты ведешь своим телефоном по пейзажу, а тебе об этом пейзаже что- то дополнительно сообщают. Как работает дополненная реальность? Почему изображение — потому что человек воспринимает информацию на 7.
Дальше, различные датчики, GPS, гироскопы, акселерометры, компас — они все отдают информацию по устройству, по его ориентации и положению в пространстве. Например из нового. Далее, обработка изображения, получение информации датчика.
Это наша собственная система распознавания маркеров дополненной реальности на базе оптического трекинга.
На самом деле все не так просто. То изображение, которое мы получаем с камеры, очень часто нуждается в предварительной обработке.
Те данные, которые нам отдают датчики — они не точные, если мы возьмем тот- же акселерометр, он безбожно фонит, на высоких частотах, т. Аналогично GPS, у него есть порог точности, тот кто работал с GPS с мобильными телефонами знает. Гироскоп — все себе представляют, что это гироскоп как в реактивных самолетах, который дает в трех плоскостях положение. Да, дает в трех плоскостях положение, но без компаса и акселерометра, оно будет недостаточно точным. Опять- таки, дополненная реальность это не только изображение, дополненная реальность учитывает все то, что происходит с устройством. Это ответ на вопрос, а что- же я вижу.
Это самое интересное, вот во всей этой дополненной реальности. Без этого — это все классные игрушки, т. Идентифицировать нужно что- то. Для этого существуют алгоритмы распознавания в математике и компьютерных науках. Нашли мы изображение, отлично. А теперь попробуем найти в базе данных изображений.
Вот мы скопировали изображение, картину допустим, было- бы интересно узнать что это за картина. Это тоже сложная задача. Как построить индекс, тоже очень интересное направление в компьютерных науках, и естественно, очень много задач.
- Применение SURF для создания маркера дополненной реальности Это продолжение топика о дополненной реальности.
- Дополненная реальность с маркерами и без, эффективные решения для строительной и архитектурной сферы, крупного бизнеса, образования, .
- Классический маркер дополненной реальности это квадрат. Если маркер близок к реальности, если он входит в эту реальность — он лучше.
Здесь возникает вопрос юзабилити. Как идентифицировать объект? Это можно сделать с маркерами либо без маркеров. Вот, любой штрих- код, любая надпись, QR- код, это уже маркер.
Телефон может его распознать и например дополнить реальность, например, переводом для обычных символов. Например какой- то информацией найденной из интернет для номера автомобиля, для номера дома и т. Классический маркер дополненной реальности это квадрат.
Потому что довольно просто построить плоскость и найти гомографию. Найти положение в трех координатах. Если маркер близок к реальности, если он входит в эту реальность — он лучше. Фотография — лучше чем нарисованный квадрат, картина - лучше чем QR- код. Теперь смотрите, без маркеров, мы можем получить наши координаты, положение в пространстве, и конечно же графический маркер, который на самом деле маркером может и не быть.
Мы можем распознавать часть нашей реальности и потом сказать, да это был наш маркер. Опять таки, можно заранее сгенерировать изображение, если мы хотим чтобы люди что- то узнавали.
Мы создаем маркер, например картину, которую вешаем на стену. Что может быть маркером. Вот ссылка на топик где я подробно описывал маркерные технологии дополненной реальности. Может ли она быть маркером? Вот для этого собственно и существует метод SURF. Вот отличная статья, которая очень хорошо описывает методику поиска устойчивых признаков.
Для двухмерного случая все намного проще. Если мы возьмем «не те» точки — результатом будет неправильно найденная матрица преобразования, и наше изображение будет не там.
Как с этим бороться — есть несколько подходов, но все они сводятся к тому, как определить аномальные уровни данных в наблюдениях. Данный код писался для Linux, но должен компилироваться и в Visual C. Ссылка на исходники: Opensurf. Кратко, что делает код. Данный исходный код основывается на проекте Open. Surf, модифицирован файл main.
Собственно, чего хотелось бы коснуться (фрагменты файла main. Исходные данные: // Открываем видеофайл для потока, который будем накладывать. Cv. Capture* capture. Capture. From. File(. Copy(frame. 1,img,imagegr).
В свете создания очков Google и растущего интереса к дополненной реальности, целью выступления было описать метод, поделиться с людьми идеями и мыслями, которые многократно умножаются в процессе обсуждения.