La Stereovisione o StereoscopiaW è una tecnica di realizzazione e visione di immagini, disegni, fotografie e filmati, finalizzata a trasmettere una illusione di tridimensionalità, analoga a quella generata dalla visione binoculare del sistema visivo umano. La visione stereoscopica consente di inferire la struttura tridimensionale di una scena osservata da due o piu’ telecamere (nel caso di due telecamere si parla di visione binoculare).
Il principio alla basa della visione stereoscopica, noto sin dal rinascimento, consiste in una triangolazione mirata a mettere in relazione la proiezione di un punto della scena sui due (o più) piani immagine delle telecamere (e.g. tali punti sono denominati punti omologhi) che compongono il sistema di visione stereoscopico (stereo rig). L’individuazione dei punti omologhi, problema noto in letteratura come il problema della corrispondenza (correspondence problem o matching stereo), consente di ottenere una grandezza denominata disparità (disparity) mediante la quale, conoscendo opportuni parametri del sistema stereoscopico, è possibile risalire alla posizione 3D del punto considerato.
Se volete approfondire l’argomento in maniera esaustiva vi consiglio di iniziare a leggere l’articolo di Stefano Mattoccia.
Partendo dal codice dove catturavo il flusso video da una sola webcam per visualizzarlo su una “label”, questa volta ho cercato di catturare il flusso video da due webcam e visualizzarle contemporaneamente sullo schermo. Per una maggiore fluidità nel refresh delle immagini (almeno 30 frame al secondo) ho usato le librerie opengl. Unico accorgimento: non collegare le due webcam sullo stesso canale USB (hub USB).
Ambiente di programmazione:
- C++ basato sul tool MINGW
- framework QT 4.7.4
- IDE QTcreator 2.3
- librerie OpenCV 2.3.1
Ringrazio Walter Lucetti che mi ha evitato ore ed ore di studio per utilizzare le opengl in ambiente QT4.
Le webcam utilizzate
Il programma in esecuzione
Ed ecco il codice:
Note: There is a file embedded within this post, please visit this post to download the file.
ovviamente dovete cambiare il percorso delle lib e degli include relative a OpenCV.
Enjoy it!