Augmented Reality SDK z OpenCV [zamknięte]

94

Rozwijam Augmented Reality SDK na OpenCV. Miałem problemy ze znalezieniem samouczków na ten temat, jakie kroki należy wykonać, możliwe algorytmy, szybkie i wydajne kodowanie pod kątem wydajności w czasie rzeczywistym itp.

Do tej pory zebrałem kolejne informacje i przydatne linki.

Instalacja OpenCV

Pobierz najnowszą wersję .

Możesz znaleźć instrukcje instalacji tutaj (platformy: linux, mac, windows, java, android, iOS).

Dokumentacja online .

Rozszerzona Rzeczywistość

Dla początkujących tutaj jest prosty kod rzeczywistości rozszerzonej w OpenCV. To dobry początek.

Dla każdego, kto szuka dobrze zaprojektowanego, najnowocześniejszego SDK, znalazłem kilka ogólnych kroków, które powinna mieć każda rozszerzona rzeczywistość oparta na śledzeniu znaczników, biorąc pod uwagę funkcje OpenCV.

  1. Program główny: tworzy wszystkie klasy, inicjuje, przechwytuje klatki z wideo.

  2. Klasa AR_Engine: steruje częściami aplikacji rozszerzonej rzeczywistości. Powinny istnieć 2 główne stany:

    • wykrywanie : próbuje wykryć znacznik w scenie
    • śledzenie : po wykryciu używa niższych technik obliczeniowych do śledzenia znacznika w nadchodzących ramkach.

Powinny też istnieć algorytmy do znajdowania położenia i orientacji kamery w każdej klatce. Osiąga się to poprzez wykrycie transformacji homografii między markerem wykrytym w scenie a obrazem 2D markera, który przetworzyliśmy offline. Objaśnienie tej metody znajduje się tutaj (strona 18). Główne kroki szacowania pozycji to:

  1. Załaduj wewnętrzne parametry kamery . Wcześniej wyodrębniono offline przez kalibrację. parametry wewnętrzne

  2. Załaduj wzór (marker) do śledzenia: Jest to obraz planarnego markera, który będziemy śledzić. Konieczne jest wyodrębnienie cech i wygenerowanie deskryptorów ( punktów kluczowych ) dla tego wzorca, abyśmy mogli później porównać cechy ze sceny. Algorytmy dla tego zadania:

  3. Przy każdej aktualizacji ramki uruchom algorytm wykrywania w celu wyodrębnienia cech ze sceny i wygenerowania deskryptorów. Ponownie mamy kilka opcji.

    • PRZESIAĆ
    • SZYBKI
    • SURFOWAĆ
    • FREAK : Nowa metoda (2012) wydawała się najszybsza.
    • KULA
  4. Znajdź dopasowania między wzorcem a deskryptorami sceny.

  5. Znajdź macierz homografii z tych dopasowań. RANSAC może być używany wcześniej, aby znaleźć wartości wewnętrzne / odstające w zestawie dopasowań.

  6. Wyodrębnij pozycję aparatu z homografii.

Pełne przykłady:

Jav_Rock
źródło
1
Niestety, to "nie jest konstruktywne", czy szukasz sugestii.
bfavaretto
3
Jeśli chodzi o zadanie instalacji, OpenCV przeszedł teraz na GIT, więc aby pobrać kod Cource, konieczne jest wykonanie „git clone git: //code.opencv.org/opencv.git”.
Carlos Cachalote,
12
47 głosów pozytywnych zostało jeszcze zakończonych z powodu głupich zasad.
SvaLopLop

Odpowiedzi:

19

Ponieważ aplikacje AR często działają na urządzeniach mobilnych, możesz rozważyć również inne funkcje detektora / deskryptora:

Muffo
źródło
3
Dzięki! Istnieje również „szybka” wersja FAST, która działa w czasie rzeczywistym w telefonach komórkowych, jest piramidalna, a deskryptory SIFT są zredukowane
Jav_Rock,
2
Uzyskałem prawie doskonałe rezultaty używając ORB
dynamicznego
Właściwie czytając o ORB, mówi się, że jest SZYBKO w piramidach
Jav_Rock
3
Freak to ostatni algorytm przetwarzający deskryptor w AR. Szybciej niż SZYBKO.
goe
13

Ogólnie rzecz biorąc, jeśli możesz wybrać znaczniki, najpierw wykrywasz kwadratowy cel za pomocą detektora krawędzi, a następnie albo Hough, albo po prostu kontur - następnie zidentyfikuj konkretny znacznik na podstawie projektu wewnętrznego. Zamiast używać ogólnego dopasowywania punktów.

Spójrz na Aruco, gdzie znajdziesz dobrze napisany przykładowy kod.

Martin Beckett
źródło
4
Tak, podejście fiducial jest najprostsze, ale nie jest do końca aktualne. Myślę, że teraz należy wskazać na markery teksturowane. Dzięki. Przykład jest bardzo interesujący, ponieważ jest dobrze wyjaśniony.
Jav_Rock,
1
Jeśli chcesz poznać pozę, musisz dopasować położenie 3D cech markera do odpowiednich współrzędnych obrazu. Cele o regularnych kształtach ułatwiają to, ale nie muszą być płaskie
Martin Beckett
Ale jeśli nie są płaskie, potrzebujesz modelu 3d lub modelu CAD, w przeciwnym razie homografia od 2d do 3d nie jest już właściwą metodą, prawda? Mam na myśli bezpośrednie przekształcenie liniowe używane w findhomografii
Jav_Rock,
Tak, jeśli masz marker 3d, musisz znać prawdziwe słowo kształt 3d (z CAD lub zmierzyć go), ale daje lepsze rozwiązanie
Martin Beckett