SDK дополненной реальности с OpenCV

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

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

Установка OpenCV

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

Вы можете найти руководства по установке здесь (платформы: linux, mac, windows, java, android, iOS).

Online documentation.

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

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

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

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

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

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

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

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

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

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

    • SIFT
    • БЫСТРО
    • SURF
    • FREAK: новый метод (2012) стал самым быстрым.
    • ORB
  • Найдите соответствие между шаблоном и дескрипторами сцены.

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

  • Извлечь Позы камеры из гомографии.

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

Ответ 1

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

Ответ 2

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

Посмотрите Aruco на хорошо написанный примерный код.