La visione stereo (o visione binoculare) è fondamentalmente il metodo con cui gli esseri umani (e altri animali binoculari) percepiscono la profondità. La differenza nella posizione di un oggetto sull'asse X su due telecamere è denominata Disparia. Quanto più lontano è lontano l'oggetto osservato, tanto più bassa è la disparità. Questa proprietà è ciò che ci consente di percepire la profondità e stimare meglio le distanze e la struttura degli oggetti dai segnali visivi.
In generale, ogni volta che hai 2 (o più) foto di un oggetto stazionario, e ammesso di conoscere la posizione e le proprietà delle 2 fotocamere che hanno scattato queste 2 foto, puoi calcolare la distanza di ogni pixel da uno di le camme, che ti permetteranno di ricostruire la forma 3D di ciò che è in vista.
Con Stereo Vision (Multi View Stereo), di solito hai il controllo sulla tua fotocamera rig. Ad esempio, puoi scegliere 2 o più fotocamere con le stesse proprietà intrinseche che conosci (lunghezza focale, apertura, risoluzione, ecc.) E le calibra in modo da poter stimare la loro posizione e rotazione l'una rispetto all'altra. Dopo aver calibrato le telecamere, hai sostanzialmente corretto alcune variabili e ora puoi calcolare la disparità. L'algoritmo seleziona fondamentalmente un pixel nella prima immagine e cerca di trovare il suo equivalente nella seconda immagine per sapere quanto è stato spostato. In realtà, i pixel si muovono lungo le linee epipolari, che sono calcolate dalle proprietà intrinseche di ciascuna telecamera e dalla configurazione estrinseca della coppia stereo.
Come per Structure from Motion (SFM), vale lo stesso principio. Tranne, ora non abbiamo una coppia di telecamere controllate e calibrate. Abbiamo più foto, scattate da diverse fotocamere, possibilmente dal web. Anche le posizioni di quelle telecamere sono a noi sconosciute. La prima complessità è che, diversamente dalle coppie calibrate, non abbiamo i vincoli epipolari e avremo bisogno di fare una ricerca approfondita per ogni pixel attraverso le immagini. Il processo è più lento e soggetto a errori. Solitamente ricorriamo a rivelatori di bordo e feature per questo compito, come SURF, SIFT e ORB. Una volta che abbiamo le caratteristiche corrispondenti, proviamo a stimare la Matrice fondamentale, che modella le posizioni e le rotazioni delle telecamere l'una rispetto all'altra. Questo è anche soggetto a errori. La stima della matrice funziona solo quando c'è una buona linea di base tra le due telecamere e viene generalmente calcolata usando RANSAC o algoritmi di ottimizzazione simili che possono o meno restituire buoni risultati. Una volta che abbiamo estrinseccaniche, possiamo procedere come con MVS per estrarre nuvole di punti e stimare la forma.
Altre tecniche che ti permettono di ottenere la struttura 3d includono (non esaustivo):
-
Scansione della luce strutturata in cui un motivo noto di luce (di solito laser) viene proiettato sulla superficie di un oggetto e viene scattata una foto. La deformazione del modello fornisce una stima della superficie normale e quindi della forma
-
Forma da Shading, se ti capita di conoscere la posizione di una fonte di luce e di assumere una superficie di materiale lambertiana (nessuna superficie lucida, speculare o trasparente) l'intensità della luce a ciascun pixel può darti una stima di la superficie normale
-
Scansione LIDAR e Ora del volo ( link )
-
Struttura dalla polarizzazione (leggi link )