Poco tempo fa mi era venuta l’ossessione del tracciamento visivo di oggetti dopo aver visto vari video su youtube. Con l’intento di realizzare qualcosa di simile, mi sono armato di pazienza e di amore verso Google. Ho scovato tutorial qua e la e soprattutto l’ambiente ideale per sviluppare applicazioni con le librerie OpenCV.

Così ho scaricato l’SDK delle OpenCV, installato eclipse galileo e il compilatore C++ chiamato MinGW per applicazioni Windows.
Dopo vari tentativi ed insuccessi, sono riuscito a tracciare il movimento di una pallina gialla (color detection).
Per il riconoscimento vengono usati appositi filtri che eliminano dai frame provenienti dalla webcam (io ho usato una webcam virtuale free di nome ManyCam) eventuali disturbi e rumori visivi. In sostanza, per eliminare ciò che non serve per il riconoscimento di uno specifico colore, si usa la tecnica del threshold, ovvero della “soglia”. Se un particolare pixel appartiene ed è contenuto dentro ad una certa soglia (come un comparatore a finestra), allora quel pixel verrà colorato di bianco, viceversa di nero. Si avrà così un’immagine che sarà bianca solo nei punti in cui si trova in quel momento la nostra pallina. Questa tecnica è chiamata anche “binarizzazione immagine” per via dei soli due bit (bianco e nero) usati per l’immagine.


Esempio di applicazione del filtro di THRESHOLD


Essendo l’applicazione in C++, ho dovuto prelevare le coordinate della pallina tramite comunicazione TCP/IP facendo uso dei socket. L’applicazione di riconoscimento fa da server e l’applicazione in VB NET fa da client. Quando instauro una comunicazione fra i due software, essi si scambiano dati fra loro. L’applicazione in VB riceve le coordinate e disegna una x nello stesso punto in cui si trova la pallina. Il tutto avviene in real-time (circa 25 fps) ma nel video si vede qualche rallentamento per via delle grandi risorse che il software di registrazione succhia alla CPU. Per il resto, non è niente male come prima esperienza!
In un futuro non molto lontano, utilizzerò questo sistema insieme ad un braccio robotico per afferrare oggetti, tracciati dalla telecamera..

Ovviamente, di seguito il video che mostra il sistema:

I sorgenti verranno inseriti quando perfezionerò il tutto ed a lavoro ultimato.