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.
- Inizialmente si convertono tutte le acquisizioni disponibili in
altrettante mappe di profondità tramite il programma
ai42ply2depth. - Opzionalmente si possono generare delle rappresentazioni grafiche
in formato PGM delle mappe di profondità precedentemente create, utilizzando
il programma
ai42depth2pgm. - Tramite il programma
ai42integrationsi crea il primo modello volumetrico effettuando l'integrazione tra la prima mappa di profondità (scelta in maniera arbitraria) ed una voxmap vuota. - Sempre tramite
ai42integrationsi ripete il processo di integrazione con le altre mappe di profondità aggiornando ogni volta la stessa voxmap. - 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.
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).

