Rozszerzona rzeczywistość SDK z OpenCV [zamknięta]

Rozwijam SDK Rozszerzonej Rzeczywistości na OpenCV. Miałem pewne problemy, aby znaleźć tutoriale na ten temat, które kroki do naśladowania, możliwe algorytmy, szybkie i skuteczne kodowanie dla wydajności w czasie rzeczywistym itp.

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

Instalacja OpenCV

Pobierz najnowszą wersję wydania .

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

Online dokumentacja .

Rozszerzona Rzeczywistość

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

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

  1. Program główny: tworzy wszystkie klasy, inicjalizacje, przechwytywanie ramek z wideo.

  2. Klasa AR_Engine: kontroluje części aplikacji rozszerzonej rzeczywistości. Powinny być 2 główne stany:

    • Detekcja: próbuje wykryć znacznik w scenie
    • tracking: gdy zostanie wykryty, wykorzystuje niższe techniki obliczeniowe do śledzenia znacznika w nadchodzących klatkach.

Powinny też istnieć pewne algorytmy do znajdowania pozycji i orientacji kamery w każdej klatce. To osiąga się to poprzez wykrycie transformacji homograficznej pomiędzy znacznikiem wykrytym w scenie, a obrazem 2D znacznika, który przetwarzamy w trybie offline. Wyjaśnienie tej metodytutaj (Strona 18). Główne kroki dla estymacji pozy to:

  1. Załaduj parametry wewnętrzne kamery . Wcześniej wyodrębniony w trybie offline poprzez kalibrację. parametry wewnętrzne

  2. Załaduj wzór (marker) do śledzenia: jest to obraz planarnego markera, który idziemy do śledzenia. Konieczne jest wyodrębnienie funkcji i wygenerowanie deskryptorów (keypoints ) dla tego wzorca, abyśmy później mogli porównać z funkcjami ze sceny. Algorytmy dla tego zadania:

  3. Dla każdej aktualizacji klatki Uruchom algorytm detekcji dla wyodrębniania funkcji ze sceny i generuj deskryptory. Znowu mamy kilka opcje.

    • SIFT
    • szybko
    • SURF
    • FREAK : nowa metoda (2012)
    • ORB
  4. Znajdź dopasowania pomiędzy wzorami i deskryptorami sceny.

  5. Znajdź homografię matrycę z tych dopasowań. RANSAC może być użyty wcześniej, aby znaleźć inliers/outliers w zestawie zapałki.

  6. Wyodrębnij pozę Kamery Z homografii.

Pełne przykłady:

Author: Jav_Rock, 2012-09-05

2 answers

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

 19
Author: Muffo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-05 15:19:21

Ogólnie jeśli możesz wybrać markery, najpierw wykrywasz kwadratowy cel za pomocą detektora krawędzi, a następnie Hough lub simply contours - następnie zidentyfikuj konkretny marker na podstawie projektu wewnętrznego. Zamiast używać ogólnego matchera punktowego.

Spójrz na Aruco dla dobrze napisanego przykładowego kodu.

 13
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-05 16:04:55