IsoStereo 3D: il sistema generale ed automatizzato per ricostruzione tridimensionale Isomorph srl, Giugno 2008 Caratteristiche del programma: IsoStereo 3D elabora immagini stereoscopiche e ricostruisce la scena fotografata in tre dimensioni. Le fotografie di input possono essere acquisite attraverso due foto camere montate su un supporto appropriato oppure acquisite con una foto camera stereo. Il software include inoltre un’accurata procedura di calibrazione altamente automatizzata, che permette anche all’utente inesperto di ottenere una ricostruzione ad alta precisione. IsoStereo 3D è dotato di una struttura “lineare” e per questa ragione l’aggiunta di nuove funzionalità risulta molto semplice. In futuro, per esempio, di potrà effettuare una ricostruzione basata su un numero di videocamere maggiore di 2. IsoStereo 3D trova applicazione in campi quali: controllo qualità, rilievi topografici / di cantiere, reverse engineering, sorveglianza, etc. Figura 1: Esempi di sistemi fotografici stereo. IsoStereo 3D ricostruisce scene tridimensionali identificando elementi geometrici (segmenti) che vengono classificati dal programma in base alle loro proprietà geometriche e cromatiche. La ricostruzione tridimensionale avviene quindi cercando corrispondenze non ambigue tra segmenti provenienti dall’immagine di sinistra e segmenti provenienti dall’immagine di destra, le cui classificazioni siano compatibili. In presenza di una corrispondenza non ambigua il programma è in grado di calcolare accuratamente la posizione 3D del segmento in questione. Tipicamente le due camere sono allineante l’una rispetto all’altra in direzione orizzontale. In questo caso la posizione di rette orizzontali non può essere ricostruita. In una prossima 1 versione del programma questa limitazione sarà superata grazie all’utilizzo di una terza videocamera. Il programma inoltre mette a disposizione dell’utente una funzionalità per la ricostruzione manuale di singoli punti della fotografia. Guida rapida al programma: 1) Elaborazione delle immagini Caricamento All’avvio del programma l’utente può inserire due immagini di input. Nel nostro esempio usiamo le fotografie di un modello in scala di un’abitazione, come mostrato in figura 2. Figura 2: IsoStereo 3d Processing: due immagini stereoscopiche pronte per essere elaborate 2 Depth range (Intervallo di profondità) Facoltativamente, l’utente può scegliere di ricostruire solo oggetti posizionati ad una certa distanza dalle camere, come mostrato in figura 3: Figura 3: L’intervallo di profondità permette all’utente di ricostruire solo oggetti che stanno ad una certa distanza ed escludere eventuali altri oggetti Elaborate (Elaborazione) Attraverso il pulsante “Elaborate”, l’utente può dare inizio alla fase di elaborazione delle immagini. Il programma impiegherà tipicamente 3 secondi per l’elaborazione di immagini con risoluzione 640*480 pixels utilizzando un PC Pentium 4 a 3 GHz e 1 GB di RAM. Tutte le strutture non orizzontali presenti nell’immagine verranno ricostruire (dal momento che le fotocamere hanno uno spiazzamento orizzontale) e saranno presentate all’utente sottoforma di linee verdi sovrapposte all’immagine, come mostrato in figura 4. Il programma visualizza invece come linee nere, quelle strutture che non sono state ricostruite automaticamente (per esempio a causa di vincoli imposti dall’intervallo di profondità). Figure 4: Interfaccia di Analisi. 3 2) Analysis of the Images Posizione degli oggetti nello spazio 3D Quando l’utente fa click su una delle linee ricostruite, il programma visualizzerà la posizione 3D del punto selezionato. La visualizzazione avverrà in formato testo nel riquadro in basso dell’interfaccia di analisi (figura 5): B A Figura 5: L’utente ispeziona la posizione 3D di un oggetto ricostruito Quando è stato selezionando un punto nell’immagine di sinistra, verrà visualizzato (in viola) anche il segmento a cui il punto appartiene. Nella figura sopra, questo segmento è denominato “A”. Nel riquadro destro dell’interfaccia invece, il programma visualizza in rosso il segmento “B” proveniente dall’altra immagine, a cui “A” è stato associato durante la fase di elaborazione. L’utente può quindi verificare manualmente la correttezza dell’associazione tra “A” e “B”. Esistono scene dove una ricostruzione non-ambigua non è matematicamente possibile (con solo due camere). Se l’utente trova che un segmento è stato associato erroneamente, può correggerlo in modo manuale semplicemente trascinando il segmento nell’immagine di destra alla posizione corretta. A quel punto il programma fornirà la la nuova posizione 3D. La figura 6 mostra il sistema di coordinate 3d usato per esprimere la posizione di un punto. Le coordinate X, Y e Z sono espresse in millimetri. 4 Figure 6: Il sistema di coordinate 3d usato dal programma ha origine nel punto focale della fotocamera di sinistra. 5 Calculate Distance (Distanza fra due punti) Questa funzionalità permette di calcolare la distanza in millimetri tra due punti ricostruiti (quindi colorati in verde) selezionati dall’utente. Figura 7: distanza tra due punti. Come in precedenza, il risultato del calcolo viene visualizzato nella parte inferiore dell’interfaccia. 6 Choosing single points (Ricostruzione di singoli punti) Attraverso questa funzionalità l’utente può ricostruire manualmente la posizione 3D di singoli punti presenti nell’immagine. Questo è possibile selezionando con un click il punto che si vuol ricostruire nel riquadro di sinistra e selezionando il punto corrispondente nel riquadro di destra. Per garantire la più alta precisione possibile, il programma presenterà all’utente un insieme delle possibili corrispondenze nell’immagine di destra (visualizzati attraverso una linee viola). Questa procedura è mostrata in figura 8. Left image point Selection of the corresponding point in the right image Figura 8: selezionando un singolo punto nel riquadro a sinistra, il programma mostrerà una lista di possibili corrispondenze nell’immagine di destra. Quando l’utente effettua la selezione il programma ricostruirà la posizione 3d del punto selezionato. 7 3) Calibrazione delle fotocamere La procedura di calibrazione consiste nel fotografare una scacchiera da diverse posizioni e angolature, come mostrato in figura 10: Figura 10: una scacchiera viene fotografa in diverse posizioni e angolature Figura 11: ricostruzione dei vertici della scacchiera Il programma effettuerà l’identificazione dei vertici nelle immagini di calibrazione in modo del tutto automatico. L’utente può verificare la correttezza della ricostruzione. Questa procedure si appoggia sulla libreria OpenCV Calibration Module ( www.intel.com/technology/computing/opencv/ ) che è inclusa nel software IsoStereo 3D. 8