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.
fonte
2010-10-24 04:29:09
Wow, molto rispetto! Lo userò se non ti dispiace,) – Eimantas
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 –
@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. –