• Non ci sono risultati.

Il Software 3D-VIPE

5.5 Interfaccia di 3D-VIPE

5.5.2 La modalità RTSTRUCT

Selezionando la modalità RTSTRUCT dell’interfaccia utente, è possibile vi- sualizzare il rendering 3D delle varie ROI descritte nel RT Structure Set IOD. Il software permette la visualizzazione di una struttura per volta, selezionandole dell’array Structure Set (sez. 5.4.1), o di tutte insieme modulando il livello di trasparenza di ciascuna di esse attraverso un controllo.

Per effettuare il rendering sono state vagliate varie ipotesi riguardo ai vari software o programmi/algoritmi per la sua attuazione.

La prima di queste prevedeva di utilizzare le librerie di PCL (Point Cloud Library), in modo ad effettuare il rendering al di fuori dell’ambiente LabVIEW per poi importare le strutture generate attraverso librerie compatibili. Tuttavia questa ipotesi è stata subito scartata per la non semplice comunicazione tra i sistemi e per rispondere al requisito di compattezza richiesto al software.

La seconda ipotesi prevedeva l’utilizzo di programmi già implementati nel Biomedical Toolkit di LabVIEW, che sono Medical Image Isosurface Extractor.vi e Medical Image Draw Isosurface.vi.

Questi subVI consentono di estrarre le iso-superfici e le iso-normali da un dataset volumetrico 3D, come le immagini CT, e di rappresentarle in una figura 3D. In pratica consentono di individuare una superficie 2D caratterizzata dello stesso valore di pixel value (da cui il prefisso iso-), mediante algoritmi che sfrut- tano il gradiente delle intensità delle varie immagini.

Queste funzioni nascono per lavorare su immagini CT, ben più complesse rispetto alle nuvole di punti che individuano le ROI nello spazio 3D. Si è resa dunque necessaria una modifica del tipo di dato da mandare in ingresso ai subVI, mediante una trasformazione delle coordinate dei punti di contour in superfici chiuse rappresentate su una griglia, a cui sono associati dei pixel di valore 1. Ai pixel che non facevano parte del contour era associato il valore 0.

Il codice ha portato ad un risultato grafico non soddisfacente oltre che molto pesante dal punto di vista computazionale, dato che impegnava una grossa per- centuale delle risorse del sistema, pur considerando che le capacità hardware del dispositivo di calcolo non fossero ottimali, come quelle disponibili teoricamente per un software di visualizzazione grafica.

In figura 11 si osserva il rendering del PTV di un condrosarcoma ottenuto con le funzioni sopra citate. Si nota una struttura a “gradoni” dovuta al fatto che la distanza tra due immagini CT su cui viene delineata tale ROI (l’attributo Slice Thickness) è in questo caso di 3 mm., un valore troppo grande se paragonato alla dimensione del tumore lungo questa direzione di ricostruzione.

La terza ed ultima ipotesi, rivelatasi quella vincente, ha consentito l’imple- mentazione in LabVIEW di un algoritmo ottimale, per ricostruire una superficie chiusa a partire da nuvole di punti nello spazio, organizzate in un numero limi- tato di piani, che sono le sezioni della slice CT [fig. 61].

Questo algoritmo considera un contour, superficie chiusa di m punti P0, P1,

…, Pm-1, ed il contour adicente di n punti Q0, Q1, …, Qn-1. Gli indici di P sono di

modulo m e gli indici di Q sono di modulo n. L’idea è quella di creare una su- perficie tra i contour P e Q, attraverso una mesh triangolare. I vertici dei trian- goli, che sono dunque l’unità costitutiva della superficie, sono dei punti del con- tour. Per ogni unità si hanno tre punti dei quali due provengono da una sequenza di contour e l’altro dalla sequenza adiacente.

Inoltre, ciascuno dei triangoli che costituiscono la superficie ha un perimetro formato da un contour segment (linea che congiunge due punti appartenenti al medesimo contour) e da due spans (letteralmente arco) che connettono le estre- mità del contour segment con un punto in comune del contour adiacente.

È possibile orientare questi segmenti e trovare una serie numerosissima di triangoli che ricorono la superficie tra due contour; per questo si definiscono delle regole:

- Ciascun contour segment appartiene ad un solo triangolo della serie. - Se uno span rappresenta il margine destro (sinistro) di un triangolo,

allora dovrà per forza apparire almeno una volta come margine sini- stro (destro) in un altro triangolo della serie.

Una serie di triangoli che soddisfa queste due condizioni è definita superficie accettabile; è necessario definire altri criteri per scegliere le superfici più appro- priate tra quelle possibili.

Figura 61. Nuvole di punti che definiscono i contour del PTV di un condrosarcoma. Nella figura a destra si osserva l'organizzazione di questi punti su una serie di sezioni, definite dalle slice CT.

Il problema si riduce ad uno solo applicando la teoria dei grafi. Un grafo di- rezionale è formato da vertici ed archi, dove i vertici rappresentano tutti i pos- sibili spans tra i punti P0, P1, …, Pm-1, e i punti Q0, Q1, …, Qn-1; gli archi corri-

spondono alla serie di tutti i possibili triangoli elementari. Un arco si rappresenta nel grafo come una freccia uscente dal vertice che rappresenta lo span sinistro, ed entrante nel vertice che rappresenta lo span destro. Il grafo è toroidale, nel senso che il punto successivo a Pm-1 è P0 e lo stesso per vale per Q [fig. 62].

Una serie di triangoli si definisce sottografo accetabile S, se: - Esiste un solo arco verticale tra Pi e Pi+1;

- Esiste un solo arco orizzontale tra Qj e QJ+1;

- Il numero di archi entranti in un vertice è uguale al numero degli archi uscenti da quel vertice e sono inoltre nulli. Oppure sono en- trambi maggiori di zero.

Inoltre, un sottografo accetabile S può essere descritto da una traiettoria chiusa sul grafo che termina sullo stesso vertice iniziale. Questa traiettoria con- tiene r = m+n+1 vertici e m+n archi. Un sottografo con queste caratteristiche è una superficie accettabile [fig. 63].

Il numero di superfici accettabili è una funzione che cresce esponenzial- mente con max(m,n). Nello specifico ci saranno (𝑚 + 𝑛)!/(𝑚! ∙ 𝑛!) possibili su- perfici accettabili. Per minimizzare questo numero di superfici bisogna trovare un percorso sul grafo che ottimizzi una funzione di costo minima.

L’algoritmo che è stato implementato in LabVIEW, per ogni punto P della prima slice cerca il corrispondente punto Q più vicino. A partire da questa cop- pia, che rappresenta un vertice sul grafo, costruisce la superficie cercando di volta in volta il punto più vicino del contour adiacente, rispettando tutte le re- gole appena elencate per i percorsi sui grafi. Tra gli m percorsi che calcola sceglie alla fine quello a perimetro minimo, memorizzando in un array i triangoli ele- mentari che compongono la mesh. Questa operazione viene ripetuta per tutte le coppie di contours adiacenti fino a chiudere la superficie con un altro pro- gramma molto più semplice di quello appena descritto.

In definitiva questo algoritmo funziona in maniera molto più snella rispetto ai precedenti, consentendo di ottenere migliori risultati con un bassissimo im- patto a livello computazionale. In figura 64 si mostra il codice del subVI rico- struzSuperficie.vi che implementa l’algoritmo di rendering 3D.

In figura 16 si mostra, lo stesso PTV di figura 11 in modalità wideframe, cioè mettendo in risalto la mesh costituita dai triangoli elementari; gli assi del sistema di riferimento sono traslati e centrati dal software nell’isocentro.

Figura 63. rappresentazione di una superficie accettabile sul grafo (sinistra) e sua rappresentazione nella realtà (sinistra)

Un'altra possibilità di visualizzazione gestita dalla modalità RTSTRUCT, è quella che consente di analizzare contemporaneamente tutte le strutture defi- nite nell’array Structure Set [fig. 66], rendendole selettivamente più o meno tra- sparenti mediante un controllo, per visualizzare meglio determinate ROI.

Figura 65. Mesh della superficie di un PTV di un paziente affetto da condrosarcoma.

5.5.3 La modalità CT

Nell’ultima tab dell’interfaccia viene visualizzata la serie di immagini CT as- sociate al trattemanto di protonterapia. Il visualizzatore 2D si ottiene a partire da una funzione già implementata nel Biomedical Toolkit di LabVIEW e con- sente di visualizzare la serie di immagini relative a tutti i tre piani anatomici (Trasversale, sagittale, coronale).

Come detto in precedenza è necessaria una fase di riorganizzazione dei file Dicom riferiti al modulo IOD Image CT mandando in esecuzione il subVI Or- ganizzaCT.vi in una fase di pre-inizializzazione, precendente all’esecuzione del main VI [fig. 68].

Questo sottoprogramma crea una nuova cartella “ct” in cui inserisce i files Dicom CT, mediante una ricerca dell’attributo Modality (0008,0060). In seguito il subVI esegue una ricerca dell’attributo Instance Number (0020,0013) che identifica il numero progressivo della slice CT all’interno della serie e sulla base di questo numero rinomina le slice (es: ct_0, ct_1, …). Questo numero è definito in base alla posizione della slice lungo l’asse di scansione del tomografo; per cui, ct_0 contiene l’immagine corrisponde alla prima slice scansionata e così via.

A questo punto seguendo le istruzioni sul front panel di 3D-VIPE, si confi- gura l’express VI Read Dicom selezionando la cartella in cui è contenuta la serie di immagini CT. Si imposta inoltre il prefisso del nome di un singolo file Dicom da cui questo VI estrae Pixel data (7FE0,0010) con gli altri attributi del modulo CT Image IOD, in modo da organizzare la serie di immagini come un array 3D. Nel caso di studio il prefisso selezionato è ct_- e i numeri che comple- tano il nome del file dopo questo prefisso, determinano l’ordine della slice nella serie.

In figura 69 si osserva l’interfaccia 2D del modulo descritto, con la possibilità di scorrere le immagini in maniera automatica o manuale. Il codice per l’inter- faccia di 3D-VIPE consente di effettuare questa scelta mediante indicatori (di tipo Play, Pause, Rew, Fast Forward, Stop) analoghi a quelli utilizzati per la vi- sualizzazione della mappa degli spot del modulo RTPLAN. Sotto le immagini appaiono dei dati generici relativi agli attributi dell’immagine. La cosa interes- sante riguarda la possibilità di visualizzare la posizione del cursore in giallo, mentre ci si sposta tra le varie immagini, espressa nel sistama di coordinate Pa- tient Based. Sulla destra appare inoltre una mappa di colori che indica il livello di intensità dei pixel in HU.

Capitolo 6