2012-07-02 15 views
10

Supponiamo che l'utente disponga di un browser moderno come Chrome e abiliti le necessarie impostazioni della fotocamera HTML5 (in modo che getUserMedia funzioni), come si possono rilevare specifici oggetti predefiniti visualizzati in webcam, utilizzando JavaScript?Rilevazione oggetto telecamera in JavaScript

Ad esempio, c'è HTML5/ JS-based face detection che funziona benissimo e ho visto un'altra demo hand detection (che non ha funzionato bene qui, potrei fare qualcosa di sbagliato). Quali sono i passaggi necessari per addestrare la fotocamera a rilevare determinati altri oggetti di scelta (sviluppatore)? Dì, voglio che la cam venga a riconoscere la posizione di una penna rossa; o forse l'oggetto più oscuro in vista; o forse un iPhone nero agitato nella fotocamera ecc.

Grazie!

+13

Scrivi una quantità enorme di software, ecco come lo fai. – Pointy

+0

Mi sono collegato a fare progetti open source esistenti sopra, quindi ho pensato che ci potrebbe essere una possibilità che questi possano essere addestrati con altri visual - o pensate che sia fuori questione? –

+0

Condivido la risposta di Pointy, ma offro anche un punto di partenza. In breve, richiederà molto software. http://www.ee.columbia.edu/ln/mmsp/papers/thesis-hluo.pdf –

risposta

5

La rilevazione di oggetti di per sé è un'attività molto complessa. Devi sapere qual è il tuo oggetto, se è fluido, flessibile, ha un sacco di contrasto di colore, si muove rapidamente e molte altre domande prima di poter determinare il metodo migliore.

Inoltre, dipende se si vuole solo rilevare un oggetto, o se si vuole seguirlo durante il suo movimento di fronte alla telecamera.

Qui chiamerò solo alcuni metodi, perché non ho il tempo di elaborare molto. Probabilmente puoi trovare molta documentazione su Google una volta che conosci i nomi, ma tieni presente che potresti aver bisogno di alcune abilità matematiche se devi implementarli tu stesso. Quindi, questo di solito comporta:

  • Informatica descrittori in punti interessanti. Guarda i descrittori SIFT o HoG (Istogrammi di gradienti) su Google, questi sono i più usati.
  • Costruire una sorta di struttura di riconoscimento, che, di nuovo, può variare notevolmente, a seconda dell'oggetto e dei descrittori. Metodi popolari includono reti neurali, Supporto Vector Machines. Per gli oggetti in movimento, in genere è possibile aggiungere tecniche di grafica come Graph Cuts nel mix.

Ancora, a seconda dell'oggetto, questi potrebbero non essere nemmeno vicini al metodo giusto.

Per quanto ne so, c'è pochissimo software disponibile per tutto ciò che in JavaScript, ma sarei felice di saperlo se trovi qualcosa. Ancora una volta, qui ci sono alcune indicazioni:

  • tuo Face Detection campione sta usando qualcosa di molto popolare chiamato un Cascade Classificatore, che è disponibile in ancora più popolare OpenCV biblioteca, ed è considerato da molti come il metodo per il rilevamento del volto.
  • Se si può prendere in considerazione lo spostamento di parte del processo su un server, è possibile utilizzare OpenCV che ha tonnellate di algoritmi disponibili.

spero di essere stato in grado di aiutarvi a iniziare un po ';)