2010-10-14 16 views
16

Ho visto che qualcuno ha creato un'app che tiene traccia dei tuoi piedi usando la fotocamera, in modo da poter calciare un calcio virtuale sullo schermo del tuo iPhone.Come si può tracciare il movimento usando la fotocamera dell'iPhone?

Come hai potuto fare qualcosa del genere? Qualcuno sa di esempi di codice o altre informazioni sull'utilizzo della fotocamera dell'iPhone per rilevare oggetti e rintracciarli?

risposta

32

Ho appena tenuto una conferenza su SecondConf in cui ho dimostrato l'uso della fotocamera dell'iPhone per tracciare un oggetto colorato utilizzando gli shader OpenGL ES 2.0. Il post che accompagna quella conversazione, comprese le mie diapositive e il codice di esempio per tutte le demo, può essere trovato here.

L'applicazione di esempio che ho scritto, il cui codice può essere scaricato da here, si basa su un esempio prodotto da Apple per dimostrare Core Image al WWDC 2007. Questo esempio è descritto in Chapter 27 of the GPU Gems 3 book.

L'idea di base è che è possibile utilizzare shader GLSL personalizzati per elaborare le immagini dalla fotocamera dell'iPhone in tempo reale, determinando quali pixel corrispondono a un colore target all'interno di una determinata soglia. Questi pixel hanno le loro coordinate X, Y normalizzate incorporate nelle loro componenti di colore rosso e verde, mentre tutti gli altri pixel sono contrassegnati come neri. Il colore dell'intero fotogramma viene quindi mediato per ottenere il centroide dell'oggetto colorato, che è possibile tracciare mentre si sposta attraverso la vista della telecamera.

Sebbene questo non risolva il caso del tracciamento di un oggetto più complesso come un piede, dovrebbero essere scritti shader come questo in grado di individuare un oggetto in movimento.

Come aggiornamento di quanto sopra, nei due anni da quando ho scritto questo ho ora sviluppato an open source framework che incapsula l'elaborazione shader OpenGL ES 2.0 di immagini e video. Una delle recenti aggiunte a questa è una classe GPUImageMotionDetector che elabora una scena e rileva qualsiasi tipo di movimento al suo interno. Ti restituirà il centroide e l'intensità del movimento complessivo che rileva come parte di un blocco di richiamata semplice. L'utilizzo di questo framework per fare questo dovrebbe essere molto più facile che rotolare la propria soluzione.

+0

Wow, molto rispetto! Lo userò se non ti dispiace,) – Eimantas

+0

Questo è bello .. è possibile costruire un'interfaccia come la xbox kinetic con questo? :) Sto cercando un codice veloce e leggero da inserire nella mia app per iphone come http://www.soundstep.com/blog/experiments/jsdetection/ .. sarebbe bello se fosse possibile con il web mobile anche se –

+1

@CarlLindberg - Kinect utilizza la luce IR strutturata progettata per eseguire la mappatura 3-D di un ambiente, quindi ovviamente non la abbinerai a una telecamera a colori in un dispositivo iOS. Il rilevamento del movimento grezzo che ho finora non è il tracciamento delle mani o delle dita, e per questo è necessario esplorare le tecniche di rilevamento del flusso ottico o dell'oggetto. Portare quelli a lavorare su video dal vivo sarà una vera sfida. –

3

Ho avuto un discreto successo nel rilevamento di volti e occhi utilizzando OpenCV su iPhone. Ecco un buon punto di partenza: http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en

Credo che il trucco è trovare una cascata (descrizione di ciò che la fotocamera dovrebbe essere alla ricerca di) che descrive un piede, non proprio sicuro se ciò che esiste però.

+1

È possibile utilizzare OpenCV per tenere traccia in tempo reale? L'articolo collegato sembra indicare che occorrono fino a 10 secondi per riconoscere una faccia in un'immagine 480 x 320. –

+0

Ho utilizzato il framework CoreVideo su un iPhone 3GS per tracciare un volto in tempo reale, utilizzando la piccola dimensione di esempio AVCaptureSessionPresetLow. Sono stato in grado di rilevare costantemente gli occhi a meno di 4 ms. – aegzorz

+0

Suona molto bene, non credo che vorresti avere un campione? – Burf2000

Problemi correlati