Domanda

ho incontrato librerie / SDK / API AR MOLTI, tutti sono marcatore-based, fino a quando ho trovato questo video , dalla descrizione e commenti, sembra che sta usando SIFT per rilevare l'oggetto e seguirlo in giro.

ho bisogno di farlo per Android, quindi avro 'bisogno di una piena attuazione della SIFT in puro Java.

Sono disposto a farlo, ma ho bisogno di sapere come SIFT viene utilizzato per la realtà aumentata prima.

ho potuto fare uso di qualsiasi informazione si dà.

È stato utile?

Soluzione

A mio parere, cercando di attuare SIFT per un dispositivo portatile è follia. SIFT è un algoritmo di estrazione di caratteristiche delle immagini, che include la matematica complessa e certamente richiede molta potenza di calcolo. SIFT è anche brevettato.

Comunque, se davvero vuole andare avanti con questo compito, si dovrebbe fare un po 'di ricerche in un primo momento. È necessario controllare le cose come:

  • Le eventuali varianti Sift che migliorano le prestazioni, tra cui diversi algoritmi tutto
  • Suggerirei esaminando SURF che è molto robusto e molto più veloce (ma ancora uno di quegli algoritmi spaventosi)
  • NDK Android (spiegherò più avanti)
  • Un sacco di pubblicazioni

Perché Android NDK? Perché probabilmente avrete un guadagno molto più significativo delle prestazioni implementando l'algoritmo in una libreria C che viene utilizzato dalla vostra applicazione Java.

Prima di iniziare qualsiasi cosa, assicuratevi di fare che la ricerca perche 'sarebbe un peccato per rendersi conto a metà strada che gli algoritmi estrazione di caratteristiche dell'immagine sono semplicemente troppo per un telefono Android. E 'un serio sforzo di per sé l'implementazione di un tale algoritmo che fornisce buoni risultati e viene eseguito in una quantità di tempo accettabile, per non parlare di utilizzarlo per creare un'applicazione AR.

Come nel modo in cui si usa che per AR, immagino che il descrittore si ottiene l'esecuzione dell'algoritmo su un'immagine dovrebbe essere confrontato con i dati salvati in un database centrale. Poi i risultati possono essere visualizzati per l'utente. Le caratteristiche di un'immagine raccolte da SURF dovrebbero descrivere come che può essere quindi identificato utilizzando quelli. Io non sono davvero sperimentato a fare questo, ma c'è sempre le risorse sul web. Si sarebbe probabilmente vuole iniziare con roba generico come Object Recognition .

Buona fortuna:)

Altri suggerimenti

Se io dove, vi consiglio di cercare su come (e perché) lavora la caratteristica SIFT (come si è detto, la sua wikipedia-page offre una buona Cochise spiegazione, e per maggiori dettagli si veda la carta della scienza (che è legato alla a wikipedia)), e quindi costruire il proprio variante che soddisfa il vostro gusto; cioè ha un equilibrio ottimale tra prestazioni e CPU carico, necessari per l'applicazione.

Per esempio, penso che smoothing gaussiano potrebbe essere sostituito da un modo più veloce di levigatura.

Inoltre, quando si genera il proprio variante, non si ha nulla a che fare con i brevetti (ci sono già un sacco di varianti, come GLOH).

Ho cercato SURF per 330MHz Symbian cellulare ed era ancora troppo lento anche con tutte le ottimizzazioni e le tabelle di ricerca. E SIFT dovrebbe essere ancora più lento. Ognuno utilizzando FAST per cellulari ora. Comunque estrazione di caratteristiche non è un problema più grande. La corrispondenza e di compensazione falso positivo in esso è più difficile. collegamento veloce http://svr-www.eng.cam.ac .uk / ~ er258 / lavoro / fast.html

ti consiglierei di iniziare a guardare le caratteristiche già implementate nella libreria OpenCV, che comprendono SURF, MSER e altri:

http://opencv.willowgarage.com/documentation/cpp/feature_detection.html

Questo potrebbe essere sufficiente per l'applicazione e sono più veloce di SIFT. E come già detto, SIFT è brevettato.

Inoltre, iniziare facendo test di performance nella vostra piattaforma mobile, semplicemente estraendo le caratteristiche ad ogni fotogramma, in questo modo avrete un'idea quelli che possono essere eseguite in tempo reale oppure no.

Hai provato rapida implementazione di OpenCV nel porto di Android? Ho provato fuori e funziona incredibilmente veloce.

È inoltre possibile calcolare ridotti descrittori istogramma intorno ai punti chiave VELOCI rilevati. Ho sentito parlare di 3x3 4x4 piuttosto che di serie Sift. Che ha buone possibilità di lavorare in tempo reale se si ottimizzare pesantemente con le istruzioni NEON. In caso contrario, io consiglierei qualcosa di veloce e semplice somma come delle differenze al quadrato o assoluti per una patch intorno ai punti chiave, che sono molto veloci.

SIFT non è una panacea. Per le applicazioni video in tempo reale, di solito è eccessivo.

Come sempre, Wikipedia è un buon punto di partenza da: http: //en.wikipedia .org / wiki / Scale-invariant_feature_transform , ma nota che SIFT è brevettato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top