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.
Program główny: tworzy wszystkie klasy, inicjuje, przechwytuje klatki z wideo.
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:
Załaduj wewnętrzne parametry kamery . Wcześniej wyodrębniono offline przez kalibrację.
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:
Przy każdej aktualizacji ramki uruchom algorytm wykrywania w celu wyodrębnienia cech ze sceny i wygenerowania deskryptorów. Ponownie mamy kilka opcji.
Znajdź dopasowania między wzorcem a deskryptorami sceny.
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ń.
Wyodrębnij pozycję aparatu z homografii.
- Przykładowy kod na Pose from Homography .
- Przykładowy kod na Homography from Pose .
Pełne przykłady:
źródło
Odpowiedzi:
Ponieważ aplikacje AR często działają na urządzeniach mobilnych, możesz rozważyć również inne funkcje detektora / deskryptora:
źródło
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.
źródło