MOD3D – un sistema per la ricostruzione tridimensionale

MOD3D è un sistema che, a partire da una sequenza di immagini di una scena, ricostruisce gli oggetti tridimensionali presenti nella scena e scelti dall'utente nell'insieme delle immagini.

Questa applicazione è stata sviluppata nell'ambito del progetto ENEA "Biodiversità mediterranea". In questo progetto si aveva la necessità di ricostruire delle formazioni subacquee biocostruite a partire da un filmato ripreso da un operatore subacqueo.

Il tipo di ambiente da ricostruire ed il tipo e qualità delle immagini disponibili hanno definito i vincoli sul tipo di metodologia di ricostruzione. In concreto il sistema presume che le riprese vengano fatte in acqua e che nella scena sia presente un oggetto parallelepipedo di riferimento.

Caratteristiche della scena da ricostruire

La scena subacquea da riprendere deve contenere un oggetto di riferimento rigorosamente parallelepipedo, di dimensioni comparabili alle formazioni da ricostruire, e convenientemente sollevato dal suolo. La sua posizione non deve assolutamente mutare fra immagine ed immagine e devono esserne visibili due o tre facce in ogni immagine. Qui di seguito si riporta un esempio di scena ricostruita in cui si vede l'oggetto di riferimento ed alcune formazioni ricostruite.

Le facce dell'oggetto di riferimento devono essere numerate (le facce laterali in senso antiorario da 1 a 4, la faccia superiore come 6 e quella inferiore come 5) in modo da poterne stabilirne l'orientamento senza ambiguità. Questo ordine di numerazione è utilizzato all'interno di MOD3D e non deve essere cambiato.

Oggetto di riferimento

Come input al processo di ricostruzione si devono avere almeno due, meglio se 10-20, immagini a colori della scena e tutte della stessa dimensione. Le dimensioni delle immagini possono essere qualsiasi, meglio se sono circa 800 x 600. Le immagini derivanti da una camera digitale DV hanno lo una dimensione di 720 x 576 come stabilito dallo standard DV.

Organizzazione del lavoro

Una sessione di lavoro è suddivisa in step logici sequenziali. Seguendoli si passa dalla selezione di una sequenza di immagini alla definizione degli oggetti da ricostruire alla effettiva costruzione del modello tridimensionale e del suo utilizzo.

I passi di lavoro sono i seguenti:

  1. Scelta della sorgente delle immagini. Per iniziare il lavoro si può sia continuare una sessione di lavoro salvata in precedenza, sia definire da dove debbano essere caricate le immagini da selezionare ed utilizzare nel seguito del lavoro. Una volta verificato lo stato del caricamento, si devono definire alcuni parametri globali come le dimensioni dell'oggetto di riferimento ed alcune caratteristiche della camera utilizzata.
    Da questa pagina si può anche lanciare la procedura di calibrazione offline della camera. Questa procedura permette di calcolare i parametri intrinseci della camera e quelli di distorsione delle sue lenti a partire da immagini di una scacchiera piana. Si può così focalizzare l'algoritmo di calibrazione sul calcolo della sola posizione ed orientamento della camera.
  2. Scelta delle immagini. A partire da una sequenza di immagini si importano nella sessione di lavoro quelle più adatte.
  3. Filtraggio. Le immagini scelte vengono filtrate in modo da mettere in risalto l'oggetto di calibrazione e le formazioni da ricostruire.
  4. Estrazione punti di riferimento. Con una procedura guidata si marcano sull'immagine i vertici dell'oggetto di riferimento. Con questa informazione si può passare alla calibrazione della camera. Si calcolano poi i parametri estrinseci della camera, cioè la posizione della stessa rispetto al riferimento, e volendo, quelli intrinseci, cioè le lunghezze focali.
  5. Verifica delle posizioni delle camere. In una scena tridimensionale si verifica che le posizioni calcolate siano congruenti. Volendo a questo punto si possono escludere dalla ricostruzione una o più camere e verificare i valori numerici calcolati.
  6. Estrazione dei contorni degli oggetti. L'utente traccia su ogni immagine i contorni degli oggetti che vuole ricostruire. In questo passo è anche aiutato da una routine di snake (contorni attivi) che cerca di muovere il contorno tracciato dall'utente verso il presumibile bordo dell'oggetto fotografato.
  7. Definizione del terreno. In questa fase si marcano dei punti di riferimento sul terreno e se ne calcola la posizione nello spazio. Questi punti poi sono utilizzati per definire una superficie che approssima il terreno reale.
  8. Eventuale raffinamento della calibrazione. Questa funzionalità opzionale migliora la calibrazione delle camere sfruttando i vincoli forniti da un oggetto visto da una coppia di camere. Il processo iterativo è molto lungo per cui viene eseguito in un processo esterno all'applicazione.
  9. Creazione delle bounding box. Con le informazioni caricate fino a questo punto il sistema calcola per ogni oggetto da ricostruire un parallelepipedo che lo contiene. Dalla vista tridimensionale si può verificare la bontà del calcolo.
  10. Ricostruzione tridimensionale. Ora con tutte le informazioni a sua disposizione il sistema ricostruisce in tre dimensioni gli oggetti.
  11. Utilizzo del modello. In questa fase si possono eseguire misurazioni sul modello ricostruito, esportare la scena 3D, importare un'altra scena 3D per confronto e creare un file VRML per pubblicare la scena su una pagina Web, oltre a stampare la scena o salvarla come immagine.

Comandi generali

In ogni passo sono presenti gli stessi comandi generali che si possono consultare nella pagina dei comandi generali.

Presentazione dell'applicazione

Molte caratteristiche di aspetto dell'applicazione possono essere modificate agendo sul file data/setup_data.v

La pagina di presentazione

La pagina di presentazione ha il solo scopo di accogliere l'utente e di visualizzare il numero di versione corrente del software. Inoltre ci permette di indicare dove in ogni schermata apparirà il nome del passo corrente.

Tener presente che l'interfaccia utente dell'applicazione fissa la dimensione della finestra a 1024 x 768 (valori stabiliti nel file data/setup_data.v) per evitare i problemi che si presentano su monitors multipli.

Tecnologie e algoritmi

Alcune informazioni non strettamente indispensabili per l'uso di MOD3D, ma che facilitano la comprensione degli algoritmi utilizzati. si trovano nelle sezioni: