Ai42
Skip to: [content] [navigation]
Progetto svolto su commissione del Dipartimento di Informatica, Sistemistica e Telematica dell'Università degli Studi di Genova (DIST) ed in collaborazione con l'Ente per le Nuove Tecnologie, l'Energia e l'Ambiente (ENEA).

Software Sviluppato

Per il raggiungimento degli obiettivi prefissati sono stati sviluppati diversi programmi software, tutti operabili sia in ambienti Microsoft Windows che Linux.

Formato dei dati

In tutto il progetto sono stati utilizzati i seguenti formati di file:

PLY
Formato grafico poligonale 3D con cui sono stati forniti i dati originali e con cui si memorizza il modello poligonale corrispondente al modello volumetrico integrato.

Il formato PLY è un formato grafico per la memorizzazione di oggetti poligonali 3D singoli. Un oggetto è composto da una lista di elementi (come i vertici, le facce, i segmenti e i materiali) e ogni elemento ha una o più proprietà (per esempio le coordinate x, y, z, i colori R, G, B, il livello di confidenza, etc.).

Il formato grafico è stato ideato da Greg Turk presso la Georgia Institute of Technology ed è ampiamente utilizzato dalla Stanford University (da cui è anche ottenibile).

DEPTH
Formato proprietario ideato per la memorizzazione delle mappe di profondità estratte dalle letture laser telemetriche.
PGM
Formato grafico 2D per memorizzare immagini pixmap.

Il formato PGM (Portable Graymap) è comunemente utilizzato in ambito Unix per la memorizzazione di immagini monocromatiche per merito della sua semplicità. Maggiori informazioni su questo formato sono facilmente reperibili via Internet o, in ambiente Unix, tramite il comando man pgm.

In breve il formato usato è composto da un'intestazione di 3 righe in formato ASCII seguito dai necessari valori di grigio memorizzati in formato binario (ognuno dei quali di tipo unsigned char).

VOX
Formato proprietario sviluppato per memorizzare tutte le informazioni necessarie a trattare un modello volumetrico.

Pipeline

L'intero processo di integrazione è stato automatizzato impiegando una semplice pipeline.

Di seguito illustriamo i passi necessari ad ottenere un modello volumetrico VOX e il rispettivo modello poligonale PLY a partire da un'acquisizione in formato PLY.

  1. Inizialmente si convertono tutte le acquisizioni disponibili in altrettante mappe di profondità tramite il programma ai42ply2depth.
  2. Opzionalmente si possono generare delle rappresentazioni grafiche in formato PGM delle mappe di profondità precedentemente create, utilizzando il programma ai42depth2pgm.
  3. Tramite il programma ai42integration si crea il primo modello volumetrico effettuando l'integrazione tra la prima mappa di profondità (scelta in maniera arbitraria) ed una voxmap vuota.
  4. Sempre tramite ai42integration si ripete il processo di integrazione con le altre mappe di profondità aggiornando ogni volta la stessa voxmap.
  5. Opzionalmente si può estrarre una rappresentazione poligonale della voxmap appena integrata tramite il programma ai42vox2ply.

I programmi realizzati si occupano di implementare la pipeline sopra descritta.

ai42ply2depth
Il programma converte un file PLY contenente le letture laser telemetriche in una mappa di profondità in formato DEPTH. Il modello presente nel file PLY deve essere centrato in (0, 0, 0) e orientato verso (0, 0, 1).

L'approccio usato dal programma è quello di proiettare i vertici del modello sulla mappa di profondità e quindi riempire gli eventuali "buchi" tramite interpolazione lineare.

Tutte le informazioni spaziali riguardanti la mappa di profondità (come la posizione e l'orientamento) vengono calcolati automaticamente.

ai42depth2pgm
Converte una mappa di profondità in formato DEPTH in un file immagine in formato PGM.

ai42integration
Esegue il processo di integrazione creando (o aggiornando) un modello volumetrico (in formato VOX) utilizzando una mappa di profondità (in formato DEPTH).

Il processo di integrazione avviene trasportando sia la voxmap che la mappa di profondità nello spazio metrico di riferimento, quindi proiettando ogni voxel della voxmap sulla mappa di profondità e aggiornando le informazioni del voxel tenendo conto sia dell'informazione presente nella mappa di profondità che dell'informazione associata al voxel stesso.

ai42voxcat
Concatena assieme diversi modelli volumetrici in formato VOX generando una voxmap complessiva. I modelli devono essere ordinati, adiacenti e allineati da sinistra a destra nello spazio metrico di riferimento.
ai42vox2ply
Converte un modello volumetrico in formato VOX in un modello poligonale a triangoli in formato PLY.

Il modello poligonale generato mantiene lo stesso look&feel del modello volumetrico riproducendo i voxel come piccoli cubi. A differenza delle tecniche di marching cubes, che approssimano una superficie aderente al modello volumetrico, questa ricostruzione permette di avere una precisa visione delle informazioni volumetriche effettivamente a disposizione.

Dettaglio in modalità wireframe di un modello volumetrico

Fig.1 - Modalità wireframe

Il programma provvede ad estrarre i voxel appartenenti alla superficie "esterna" del volume (ovvero i voxel pieni che hanno almeno una faccia adiacente ad un voxel "vuoto"), quindi ricostruisce con una coppia di triangoli tutte le facce classificate come "esterne". In Figura a lato è visibile un dettaglio in modalità wireframe di un modello convertito, è evidente la natura volumetrica delle informazioni geometriche.
ai42split
Estrae le varie componenti connesse da un modello volumetrico in formato VOX. I modelli volumetrici così estratti vengono salvati su file; se ad esempio vengono identificate 3 componenti connesse verranno generati 3 file distinti, ognuno contenente una diversa componente connessa in formato VOX.

Il programma produce su standard output alcune informazioni come ad esempio il numero di componenti connesse identificate e il volume di ognuna (ovvero il numero di voxel "pieni" che la compongono).