2010-02-10 12 views
9

Do mojej pracy używam wersji Java oprogramowania ARToolkit (NyARTookit). Jak dotąd okazało się to wystarczająco dobre dla naszych potrzeb, ale mój szef zaczyna chcieć, aby ramy były przenoszone na inne platformy, takie jak Internet (Flash itp.) I telefony komórkowe. Chociaż przypuszczam, że mogłem używać innych portów, jestem coraz bardziej zirytowany nie wiedząc, jak działa zestaw i poza nim, z pewnych ograniczeń. Później będę musiał rozszerzyć możliwości zestawu, aby dodać takie rzeczy jak interakcja (wirtualne przyciski na kartach, itp.), Które, o ile widziałem w NyARToolkit nie są obsługiwane.Jak działa algorytm rozszerzonej rzeczywistości oparty na markerach (taki jak algorytm ARToolkita)?

W zasadzie muszę zastąpić ARToolkit niestandardowym wykrywaczem znaków (aw przypadku NyARToolkita spróbuj pozbyć się JMF i użyć lepszego rozwiązania przez JNI). Jednak nie wiem, jak działają te czujki. Wiem o grafice 3D i zbudowałem wokół niej ładną architekturę, ale muszę wiedzieć, jak zbudować podstawową technologię :-).

Czy ktoś wie, jak od podstaw można zastosować aplikację rozszerzoną rzeczywistości opartą na markerach? Podczas wyszukiwania w google znajduję tylko "aplikacje" AR, a nie algorytmy leżące u podstaw: - /.

+0

Wyszukaj "wizję komputera". Zasadniczo jest to po prostu dużo algebry liniowej. –

Odpowiedz

10

"Od zera" to pojęcie względne. Prawdziwe robienie tego od podstaw, bez użycia wcześniej istniejącego kodu wizji, byłoby bardzo bolesne i nie zrobiłbyś tego lepiej niż cała społeczność wizji komputerowej.

Jednakże, jeśli chcesz zrobić AR z istniejącym kodem wizyjnym, jest to bardziej uzasadnione. Podstawowe zadania podrzędne to:

  1. Znajdź znaczniki na swoim obrazie lub filmie.
  2. Upewnij się, że są tymi, których potrzebujesz.
  3. Dowiedz się, jak są zorientowane względem aparatu.

Pierwszym zadaniem jest lokalizacja kluczowa. Techniki do tego obejmują detekcję punktową SIFT, wykrywacz narożny Harris i inne. Niektóre z nich mają implementacje open source - myślę, że OpenCV ma detektor narożny Harris w funkcji GoodFeaturesToTrack.

Drugim zadaniem jest tworzenie deskryptorów regionu. Techniki tego obejmują deskryptory SIFT, deskryptory HOG i wiele innych. Tam gdzieś powinna być implementacja open-source jednego z nich.

Trzecie zadanie wykonywane jest również przez lokalizatorów kluczowych. Idealnie chcesz transformację afiniczną, ponieważ dzięki temu dowiesz się, jak marker znajduje się w 3-spacji. Detektor afiniczny Harrisa powinien nad tym pracować. Aby uzyskać więcej informacji, przejdź tutaj: http://en.wikipedia.org/wiki/Harris_affine_region_detector

+1

Dzięki za referencje. Nie szukam lepszej pracy niż cała społeczność wizji komputerowej, szukam tylko wdrożenia podzbioru wymaganego do konkretnego zadania znalezienia markerów :-). Jednak muszę wiedzieć, jak działa każda część, od etapu posiadania mapy bitowej z ramką do konstrukcji macierzy transformacji używanej do umieszczania obiektów 3D. W szczegółach :-) Zasadniczo: 1. Pobierz obraz z kamery 2. Przekształć go w RGB lub inny przetwarzalny format 3. ??? N. Użyj macierzy transformacji. Potrzebuję dokładnie znać kroki 3..N-1 :-) –

+0

Sugeruję zakup książki O'Reilly OpenCV. – forefinger

+0

czy to wyjaśnia algorytmy, czy tylko API? –