Skip to content

GiuseppeCannata/StereoVision

Repository files navigation

StereoVision

1. Spiegazione risultati raggiunti


Progetto realizzato per il laboratorio di Meccatronica presso l'Università politecnica delle Marche corso di laurea Ing. Informatica e dell'Automazione. Il prototipo del misuratore è stato costruito con una StereoCamera collegata tramite USB alla Raspberry Pi 3. I due elementi sono poi stati fissati ad un supporto metallico per consentire una maggiore stabilità in fase di misurazione.

Per quanto riguarda il processo che ha portato allo sviluppo del software ci si è basati sui seguenti passaggi:

-Calibrazione
Le matrici ottenute non sono state confrontate con gli effettivi parametri della StereoCamera a causa di mancaza di Datasheets. Per maggiore affidabilità dei risultati è stata quindi condatta una calibrazione anche con il toolboox di MatLab.
-Rettificazione
Le immagini sono state in seguito rettificate affinchè punti omologhi potessero trovarsi sulla stessa line epipolare (linea in giallo in figura).
-Detect del laser
La ricerca del PUNTATORE laser avviene utilizzando lo spazio di colori RGB; In particolra il range di ricerca è tra il rosso puro e il bianco, quest'ultimo dovuto alla lucentezza del puntatore. Per limitare disturbi derivanti dalla scena la ricerca è stata coinata in una ROI(Region of interest).
-Distanza
Dalla teoria sappiamo che la distanza di un punto P della scena, viene calocolata per tringolazione attraverso la seguente formula:

                                                                         distance(P) = B*f / disp (form 1)

  • B = è la baseline cioè la distanza tra i centri ottici delle due fotocamere
  • f = distanza focale
  • disp = valore di disparity cioè la differenza tra le coordinate x dei punti omologhi nell immagine di destra e sinistra.
Non avendo i dati B e f per mancaza di Datasheets relativi alla fotocamera, e per l incertezza dei parametri ottenuti con la calibrazione, si è deciso di stimare il rapporto B*f. Procedura:
  • Trovato il puntatore laser sia nell immagine di destra che in quella di sinistra sono state considerate le cordinate xR e XL.
  • Successivamente è stata calcolata la differenza tra le due coordinate, il valore ottenuto raffigura la disparity tra punti omologhi: disp = |xL - xR|
  • ripetendo questi passaggi per distanze su un range da 20cm a 80cm , è stato poi overfittato generando il polinomio specifico.

Cosi facendo è stato generato il valore 5253. Questo ha permesso di riscrivere la form 1 (vista sopra) in questo modo:
distance(P) = 5253 / disp.

Di seguito posto il calcolo di un punto P nella scena:

Il software è stato scritto interamente in linguaggio python


2. Istallazione software

Per poter utilizzare l'applicativo è necessario scaricare la cartella Ranspberry e avviare il file Ranspberry/Misuratore/Main.py.

Attenzione!

L'applicativo richiama le matrici di calibrazione e rettificazione della StereoCamera connessa alla raspberry.
Nella cartella qui pushata ci sono i file .npy relativi alla StereoCamera da me utilizzata.
(Possiamo trovarli rispettivamente nella cartella Ranspberry/ResultCalib e Ranspberry/ResultRect)

Per cui per poter utilizzare il software con una StereoCamera differente è bene generare le matrici di calibrazione e rettificazione ad hoc.
Per poterlo fare è possibile utilizzare i tools Ottieni_matrici_calibrazione.py e Ottieni_matrici_rettificazione.py, e seguire le varie istruzioni presentate nella parte GESTIONE.


3. Documentazione

  1. Relazione

About

Misuratore di distanza StereoCamera+Raspberry

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages