SDK для доповненої реальності з OpenCV [закрито]


94

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

Поки що я зібрав наступну інформацію та корисні посилання.

Установка OpenCV

Завантажте останню версію випуску .

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

Інтернет- документація .

Доповнена реальність

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

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

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

  2. Клас AR_Engine: Керує частинами програми доповненої реальності. Має бути 2 основних стани:

    • виявлення : намагається виявити маркер у сцені
    • відстеження : після виявлення використовує нижчі обчислювальні методи для відстеження маркера в майбутніх кадрах.

Також мають бути алгоритми пошуку положення та орієнтації камери в кожному кадрі. Це досягається виявленням перетворення гомографії між маркером, виявленим у сцені, та двовимірним зображенням маркера, який ми обробили в автономному режимі. Пояснення цього методу тут (стор. 18). Основними кроками для оцінки пози є:

  1. Завантажити внутрішні параметри камери . Раніше вилучено в автономному режимі шляхом калібрування. внутрішні параметри

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

  3. Для кожного оновлення кадру запускайте алгоритм виявлення для вилучення об’єктів зі сцени та генеруйте дескриптори. Знову ж таки, у нас є кілька варіантів.

    • SIFT
    • ШВИДКО
    • SURF
    • ФРЕЙК : Новий метод (2012), який вважається найшвидшим.
    • ORB
  4. Знайдіть збіги між шаблоном та дескрипторами сцени.

  5. Знайдіть матрицю гомографії з цих збігів. RANSAC можна використовувати раніше, щоб знайти інлієри / відхилення в наборі сірників.

  6. Витяг пози камери з гомографії.

Повні приклади:


1
На жаль, це "не конструктивно", ви шукаєте пропозиції.
— bfavaretto

3
Щодо завдання інсталяції, зараз OpenCV перейшов на GIT, тому для завантаження коду курсу необхідно зробити "git clone git: //code.opencv.org/opencv.git".
— Carlos Cachalote,

12
47 голосів за все ще закрито через нерозумні правила.
— SvaLopLop

Відповіді:


19

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


3
Дякую! Існує також "швидка" версія FAST, яка працює в режимі реального часу на мобільних телефонах, вона є пірамідальною, а дескриптори SIFT зменшені
— Jav_Rock

2
Я отримав майже ідеальні результати за допомогою ORB
— динамічний

Насправді, читаючи про ORB, там сказано, що це ШВИДКО в пірамідах
— Jav_Rock

3
Freak - останній алгоритм, який обробляє дескриптор на AR. Швидше, ніж ШВИДКО.
— goe

13

Як правило, якщо ви можете вибрати маркери, спочатку виявляєте квадратну мішень за допомогою детектора краю, а потім або Hough, або просто контури - тоді ідентифікуйте конкретний маркер із внутрішньої конструкції. Замість того, щоб використовувати загальний бальний збіг.

Погляньте на Aruco, щоб отримати добре написаний приклад коду.


4
Так, фідуціальний підхід є найпростішим, але він не зовсім сучасний. Думаю, зараз слід вказати на текстуровані маркери. Дякую. Приклад дуже цікавий, оскільки він добре пояснюється.
— Jav_Rock

1
Якщо ви хочете знати позу, вам потрібно встановити відповідність положення 3D об’єктів маркера до відповідних координат зображення. Цілі правильної форми полегшують це, але їм не потрібно бути площинними
— Мартін Беккет

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

Так, якщо у вас є 3D-маркер, вам потрібно знати справжнє слово 3d-фігури (від cad, або виміряти його), але це дає кращий результат
— Мартін Беккет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.