21 giugno 2011 Volume Rendering Prof. Roberto Pirrone
Generalità 21 giugno 2011 Le tecniche di volume rendering sono volte alla rappresentazione di dati organizzati secondo “volumi” o, meglio, strutture a voxel. I campi di applicazione sono diversi Dinamica dei fluidi (ad es. in campo meteorologico) Analisi del comportamento dei materiali sotto stress Rappresentazione di dati ottenuti da scansioni di natura tomografica Immagini mediche Scansione di reperti archeologici o di manufatti per l’individuazione di difetti
Generalità 21 giugno 2011 Nelle applicazioni anzidette si può determinare un volume di dati per mezzo di un’analisi ad elementi finiti ovvero per scansione. In ogni modo, questi dati sono da considerarsi come la rappresentazione di una funzione scalare di un vettore 3D f(x,y,z). La funzione f è nota ai vertici di ogni voxel e deve essere interpolata al suo interno. Ciò implica che, in generale, non avremo a che fare con voxel “binari” (pieni o vuoti) ma per ogni voxel verrà misurata una grandezza continua. In questo senso i volumi rappresentano una discretizzazione della funzione f e si ripropongono le problematiche di interpolazione e di aliasing che sono già state affrontate in altri ambiti della CG.
Volumi ottenuti da immagini mediche 21 giugno 2011 Sono il caso più comune di dati volumetrici. Ogni voxel contiene un valore legato alla densità tissutale. Si possono ottenere da: TAC Risonanza Magnetica TAC: con un tomografo viene misurato l’assorbimento di un insieme di raggi X che attraversano delle sezioni del paziente e sono emessi ruotando intorno al corpo. RM: viene misurato il decadimento energetico degli atomi del tessuto attraversato da un forte campo magnetico uniforme che orienta parallelamente tutti gli spin della sezione e che, poi, viene perturbato da un impulso RF.
Schema dell’acquisizione TAC 21 giugno 2011 Le immagini mediche hanno tipicamente il seguente formato: Field Of View (FOV) 512x512 pixel per rappresentare un campo di circa 50-60cm di lato Spessore inter-slice: da 1 a 10 mm Dinamica: 4096 livelli di grigio (12bpp allineati in 16 bit)
Modalità di rappresentazione dei volumi 21 giugno 2011 Rappresentazione del volume di voxel in cui sono state praticate delle sezioni per visualizzare l’interno Semplice se si tratta di sezioni parallele agli assi coordinati ed in corrispondenza della posizione esatta delle slice: si possono applicare le immagini delle slice come tessiture sulle superfici sezionate. Segmentazione del volume in parti che rappresentano oggetti noti Si deve segmentare il volume e poi si applicano degli algoritmi di conversione in poligoni per l’effettuazione del rendering convenzionale (ad es. algoritmo marching-cubes).
Modalità di rappresentazione dei volumi 21 giugno 2011 Volume rendering Si assegna un valore di trasparenza ad ogni voxel e si visualizza l’intero volume da un qualunque punto di vista La tecnica base del volume rendering è detta ray casting. L’idea è quella di proiettare dei raggi parallelamente da ogni pixel dell’immagine e intersecare il volume. Si può individuare la superficie definita dai punti di prima intersezione con il volume, ovvero muoversi all’interno del volume stesso per selezionare solo gli elementi relativi a determinate componenti del data set, per es., sulla base del valore di densità associato.
Ray casting 21 giugno 2011 Si può pensare di muovere un piano di sezione ortogonalmente al volume di vista ed osservare il contenuto di ogni sezione durante il moto.
Ray Casting 21 giugno 2011 Ogni voxel è determinato da un colore C e da una trasparenza a. C può essere un falso colore e rappresenta il contenuto informativo del voxel (ad es. il tipo di materiale, il particolare tessuto, etc.) a è legata alla densità dell’elemento di volume che, in questo contesto, non è mai interamente vuoto o pieno.
Ray Casting 21 giugno 2011 L’algoritmo di ray casting proietta dei raggi paralleli attraverso un volume, opportunamente ruotato e traslato secondo le esigenze di visualizzazione. I raggi attraversano il volume e raccolgono le informazioni di colore dei vari voxel, pesate con la loro trasparenza (compositing) Si può pensare di utilizzare dei criteri di raccolta delle informazione differenti Valor massimo Valor medio Scostamento dal valore massimo o minimo
Ray Casting I passi dell’algoritmo sono 21 giugno 2011 I passi dell’algoritmo sono Classificazione dei voxel per attribuire l’informazione di colore (ad es. un voxel ricade in una zona comune a più tessuti) Trasformazione geometrica del volume di vista Proiezione dei raggi e raccolta delle informazioni
Classificazione dei voxel 21 giugno 2011 Una tecnica (usata nel medical imaging) è quella di attribuire una probabilità di appartenenza di un voxel ad un dato tessuto (o materiale) a seconda del valore del segnale acquisito. Il colore e la trasparenza del voxel si compongono in rapporto alla percentuale di appartenenza ai vari tessuti.
Trasformazione lungo la direzione di vista 21 giugno 2011 Il problema della trasformazione del volume implica il fatto che un raggio non attraverserà una fila di voxel, ma seguirà un percorso attraverso voxel adiacenti Si ripropongono i problemi di aliasing e di interpolazione già visti nel caso di disegno di primitive 2D.
Compositing 21 giugno 2011 Per ogni voxel si applica una tecnica di blending secondo lo schema classico: Alla fine il colore del pixel sarà la “composizione” pesata dalle trasparenze dei colori dei voxel attraversati dal raggio (radiografia digitale)
Esempi di ray casting 21 giugno 2011
Compositing e shading 21 giugno 2011 Si può pensare di calcolare una normale alla ipotetica superficie passante per un voxel a partire dal gradiente dei valori dei voxel in un intorno. Migliori stime si possono ottenere per intorni più ampi.
Differenze tra i vari tipi di ray casting 21 giugno 2011
Implementazione del volume rendering 21 giugno 2011 Si possono individuare due grandi categorie di algoritmi di volume rendering Metodi di ray casting Metodi di proiezione dei voxel (splatting)
Ray casting su dati non trasformati 21 giugno 2011 Si ruota il punto di vista fino a farlo coincidere con la vista voluta e si proiettano i raggi. In genere un raggio attraversa il volume toccando vari voxel e si hanno le stesse problematiche, estese al caso 3D, di tracciamento delle linee. Il raggio ha equazione parametrica e verrà usato per ricampionare il volume attraversato. Ogni valore campionato sarà interpolato trilinearmente e sarà filtrato con un kernel 3D per evitare l’aliasing.
Discretizzazione di un raggio 21 giugno 2011 Il raggio viene discretizzato nella sequenza di voxel adiacenti che lo intersecano, inseguendone la traiettoria. Il calcolo dell’adiacenza dipende dal tipo di connessione utilizzata per i voxel A livello di faccia A livello di spigolo A livello di vertice
Discretizzazione di un raggio 21 giugno 2011
Ray templates 21 giugno 2011 L’approccio base è quello di proiettare ogni raggio dal centro di un pixel e definire i ray templates che ne costituiscono la discretizzazione Per ogni template si effettuerà il calcolo del valore del pixel, ad esempio mediante la tecnica compositiva.
Ray templates 21 giugno 2011 A seconda di come si calcolano i templates si possono creare dei “buchi” cioè dei voxel che non vengono intersecati da alcun raggio e non danno contributo al rendering. Per evitare ciò si impone che ogni raggio passi dal centro di un voxel sulla faccia del volume che guarda verso la direzione di vista. Ovviamente bisognerà effettuare delle interpolazioni sul piano dell’immagine.
Interpolazione trilineare 21 giugno 2011 Si definisce un passo di campionamento lungo il raggio. Ogni campione CS è interpolato linearmente dai valori CV e CH. Questi sono ottenuti, dall’interpolazione bilineare lungo la faccia verticale e quella orizzontale di intersezione con il raggio, tenendo conto degli 8 valori scalari di colore determinati nei centri del vicinato dei voxel attraversati.
Interpolazione trilineare 21 giugno 2011 La scelta errata del passo di campionamento del raggio può portare a fenomeni di aliasing. Appaiono degli pseudo contorni originati dall’eccessiva distanza tra due campioni successivi che non si riesce ad approssimare bene mediante l’interpolazione.
Ray casting su dati trasformati 21 giugno 2011 Il ray casting su dati trasformati implica che i raggi viaggino perpendicolarmente al piano dell’immagine e sia il volume ad essere deformato per essere correttamente proiettato. Si può dimostrare che la trasformazione complessiva di un volume è data da una concatenazione di 9 trasformazioni di shearing, tre per ogni asse (Wolberg 1990) Noto il valore di ogni voxel, si effettua un ricampionamento ad ogni shear: questo implica un ricalcolo del valore del voxel per semplice interpolazione lineare tra i suoi due vicini.
Ray casting su dati trasformati 21 giugno 2011
Splatting 21 giugno 2011 La tecnica di volume splatting (Westover 1990) nota anche come voxel projection, implica che il valore di ogni singolo voxel sia proiettato sul piano dell’immagine. Ogni voxel (eventualmente trasformato) viene centrato in un kernel tridimensionale di filtraggio spaziale: per proiezioni parallele, di solito, si usa una gaussiana tridimensionale che è di forma sferica. Lo splat o impronta non è altro che la proiezione del kernel sul piano dell’immagine ed è, ovviamente una gaussiana bidimensionale di pesi noti ed uguali per qualunque voxel, visto che la proiezione è parallela.
Splatting 21 giugno 2011 Ogni voxel è proiettato esattamente su un pixel dell’immagine. Muovendosi dal fondo verso la parte frontale del volume non si deve far altro che accumulare i valori dei singoli voxel proiettati secondo la tabella di pesi del kernel. Algoritmo veloce con antialiasing automatico.
Splatting 21 giugno 2011