SDK дополненной реальности с OpenCV [закрыто]


94

Я разрабатываю SDK дополненной реальности на OpenCV. У меня возникли проблемы с поиском руководств по этой теме, какие шаги следует выполнять, возможные алгоритмы, быстрое и эффективное кодирование для работы в реальном времени и т. Д.

Пока собрал следующую информацию и полезные ссылки.

Установка OpenCV

Загрузите последнюю версию выпуска .

Вы можете найти в руководстве по установке здесь (платформы: Linux, Mac, Windows, Java, Android, IOS).

Электронная документация .

Дополненная реальность

Для новичков вот простой код дополненной реальности в OpenCV. Это хорошее начало.

Для всех, кто ищет хорошо спроектированный современный SDK, я нашел несколько общих шагов, которые должна иметь каждая дополненная реальность, основанная на отслеживании маркеров, с учетом функций OpenCV.

  1. Основная программа: создание всех классов, инициализация, захват кадров из видео.

  2. Класс AR_Engine: управляет частями приложения дополненной реальности. Должно быть 2 основных состояния:

    • обнаружение : пытается обнаружить маркер в сцене
    • отслеживание : при обнаружении использует более низкие вычислительные методы для отслеживания маркера в следующих кадрах.

Также должны быть алгоритмы определения положения и ориентации камеры в каждом кадре. Это достигается за счет обнаружения преобразования гомографии между маркером, обнаруженным в сцене, и 2D-изображением маркера, обработанного в автономном режиме. Объяснение этого метода здесь (стр. 18). Основные этапы оценки позы:

  1. Загрузить внутренние параметры камеры . Ранее извлекался в автономном режиме через калибровку. внутренние параметры

  2. Загрузите шаблон (маркер) для отслеживания: это изображение планарного маркера, который мы собираемся отслеживать. Для этого паттерна необходимо извлечь признаки и сгенерировать дескрипторы ( ключевые точки ), чтобы позже мы могли сравнивать их с особенностями сцены. Алгоритмы решения этой задачи:

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

    • ПРОСЕЯТЬ
    • БЫСТРО
    • СЕРФ
    • FREAK : новый метод (2012 г.) считается самым быстрым.
    • ORB
  4. Найдите совпадения между шаблоном и дескрипторами сцены.

  5. Найдите матрицу гомографии из этих совпадений. RANSAC можно использовать раньше, чтобы найти выбросы / выбросы в наборе совпадений.

  6. Извлеките позу камеры из омографии.

Полные примеры:


1
К сожалению, это «неконструктивно», вы ищете предложения.
bfavaretto

3
Что касается задачи установки, то теперь OpenCV перешел на GIT, поэтому для загрузки кода курса необходимо выполнить «git clone git: //code.opencv.org/opencv.git».
Карлос Кашалоте,

12
47 голосов за все еще закрыты из-за глупых правил.
SvaLopLop

Ответы:


19

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


3
Спасибо! Существует также «быстрая» версия FAST, которая работает в реальном времени на мобильных устройствах, пирамидальная, и дескрипторы SIFT уменьшены
Jav_Rock 05

2
У меня почти идеальные результаты, используя ORB
dynamic

На самом деле, читая о ORB, он говорит, что он БЫСТРЫЙ в пирамидах
Jav_Rock

3
Freak - это последний алгоритм для обработки дескриптора в AR. Быстрее, чем БЫСТРО.
goe

13

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

Взгляните на Aruco, чтобы получить хорошо написанный пример кода.


4
Да, реперный подход является самым простым, но он не совсем актуален. Думаю, теперь следует указать на текстурированные маркеры. Спасибо. Однако этот пример очень интересен, поскольку хорошо объяснен.
Jav_Rock 05

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

Но если они не плоские, вам нужна 3d-модель или модель САПР, иначе гомография из 2d в 3d больше не является допустимым методом, не так ли? Я имею в виду прямое линейное преобразование, используемое в findhomography
Jav_Rock

Да, если у вас есть 3D-маркер, вам нужно знать настоящую 3D-форму слова (из CAD или измерения), но он дает лучшее решение
Мартин Беккет
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.