• Non ci sono risultati.

A.3.1

Struttura del codice

Il codice stand-alone utilizzato per il calcolo del campo di pressione secondo le modalit`a trasmissione, ricezione e pulse-echo `e differente dal codice utilizzato per

Appendice A - La simulazione

la generazione di immagini B-Mode in presenza di disomogeneit`a. I due coincidono nella parte iniziale di acquisizione delle variabili e nella generazione delle matrici di array di trasmissione e ricezione ma variano nella fase di calcolo. `E descritto di seguito, in maniera schematica il codice secondo i suoi step pi`u importanti. Per poter visionare il codice si faccia riferimento a Appendice B - Stand-alone.

Nella parte di acquisizione e d’impostazione della simulazione il codice pu`o essere suddiviso secondo i seguenti paragrafi.

Acquisizione delle variabili d’ingresso

Come anticipato, le variabili di ingresso della simulazione vengono acquisite da un file testo detto input.x, dove x corrisponde al numero del job/processo parallelo. Le varabili sono θ , φ , df , N , proc. Le prime due possono essere multiple ed indicano la posizione del fuoco in trasmissione. In ricezione a queste coordinate di trasmis- sione potrebbero essere sovrapposte delle variazioni di queste nel caso di Ricezione Multilinea. N indica il numero di scatterer all’interno di un volume (con forma di ventricolo). Il volume `e fissato, quindi al variare di N varier`a la densit`a del Phan- tom. Nel caso del calcolo del campo in assenza di disomogeneit`a, la variabile N non verr`a utilizzata. La variabile proc `e un identificativo del processo in esecuzione e coincide con la variabile x di input.x.

Impostazione delle specifiche di simulazione

Dopo aver acquisito le variabili d’ingresso, vengono definiti dei parametri della sim- ulazione quali la frequenza centrale di lavoro (fc), la velocit`a di propagazione del suono nel liquido (c), la frequenza di campionamento (fs) per il calcolo delle risposte impulsive del sistema, la lunghezza d’onda (λ). Inoltre, viene definito il luogo geo- metrico di punti nello spazio (segmento di retta, arco di circonferenza, calotta sferica, etc.) dove verranno effettuate le misure della pressione sempre relativamente alle coordinate del fuoco (xf, yf, zf). Questo insieme di punti verr`a salvato come vari-

abile (points.mat) per essere richiamato in fase di post-processing. Il fuoco, definito dalle coordinate xf, yf, zf, nel caso di ricezione parallela pu`o anche essere differente

tra trasmissione e ricezione. `E quindi possibile stabilire una terna di coordinate per la trasmissione (xf, yf, zf) e cinque terne di coordinate in ricezione, utilizzate in

calcoli separati, ad esempio per un caso multilinea con rapporto T x/Rx = 1/5.

Acquisizione delle coordinate delle matrici di elementi

Appendice A - La simulazione

mensionali di elementi vengono generate dapprima con un programma CAD e poi importate attraverso Matlab, con un’interfaccia software dedicata. Queste matri- ci, Coords rx.mat e Coords tx.mat, contengono variabili quali le coordinate degli elementi fisici e matematici, i centri di questi e le coordinate delle patch (o Macroele- menti) con il loro baricentro. La superficie di ogni patch viene discretizzata in k zone a ritardo costante, dalle quali si potranno ricavare i subarray della tecnica di trasmis- sione CPZ (Constant Phase Zone) ed i loro baricentri. Individuati i centri di questi sottoinsiemi di elementi, vengono calcolati i relativi ritardi da applicare. Un vettore contenente tutti i centri dei subarray in trasmissione `e quindi generato.

Vettore di apodizzazione

In base al tipo di apodizzazione applicata alla matrice in trasmissione, eventualmente anche in ricezione, `e prodotto un vettore da applicare alla matrice di coordinate del- l’array. Nel caso non fosse prevista alcuna apodizzazione, tale vettore `e composto da coefficienti uguali tra loro e di valore unitario.

Inizializzazione di FieldII

Attraverso la procedura field init(0) viene inizializzato il programma FieldII. Vengono quindi associati dei valori a parametri come la velocit`a del suono nel liqui- do, la frequenza centrale di lavoro dell’array e viene definito se l’apertura `e composta da elementi matematici triangolari o rettangolari.

Generazione delle matrici

Acquisite le matrici di coordinate degli array in trasmissione e ricezione, insieme ai vettori di apodizzazione ed i nuovi centri dei subarray generati nella trasmis- sione, vengono prodotte delle nuove matrici che descrivono le caratteristiche degli array secondo l’ordine richiesto da FieldII. `E possibile ora assegnare i ritardi in fase di ricezione a questi array (array tx ed array rx) simulando la tecnica di micro- beamforming.

Assegnazione delle risposte impulsive e dell’eccitazione

Come gi`a discusso nel Capitolo II e III, gli array sono definiti geometricamente attraverso delle matrici ed elettro-meccanicamente attraverso le risposte impulsive del sistema in trasmissione e ricezione. Vengono quindi assegnate come risposte impulsive descriventi il fattore elettro-meccanico dell’intero sistema, le due curve rappresentate nel Capitolo II. Come segnale di eccitazione in ingresso al trasduttore

Appendice A - La simulazione

`e data una sinusoide di un ciclo a frequenza 2.5MHz con ampiezza unitaria.

A questo punto, il codice si differenzia in base al calcolo richiesto: il Beam Pattern del campo di pressione o la generazione di un’immagine in presenza del phantom. In entrambi i casi, all’interno delle funzioni FieldII di calcolo viene chiamato il MEX file, ossia la parte in C del programma FieldII. Come gi`a anticipato, uno dei van- taggi di effettuare la simulazione attraverso un file eseguibile lanciato con il MCR, `e proprio quello di poter richiamare oggetti esterni come MEX file, librerie o del codice C all’interno dell’applicazione Matlab generata.

Calcolo del Beam Pattern

Nel caso del calcolo della distribuzione del campo di pressione, in trasmissione come nella modalit`a pulse-echo, vengono calcolate rispettivamente la variabile hp(t) e la variabile hhp(t), relativamente alla direzione di steering descritta dagli angoli θ, φ e alla distanza focale df. Il calcolo si conclude con il salvataggio di tali variabili e la chiusura del programma FieldII attraverso il comando field end.

Calcolo del segnale RF

Nel caso di generazione di un’immagine planare del phantom, questo deve essere dapprima acquisito. Il phantom `e definito da una matrice di N scatterer, ognuno con una sua posizione nello spazio (xs, ys, zs) ed un’ampiezza che indica l’ecogenicit`a

di tale disomogeneit`a. Quindi, in base al tipo di scansione scelta vengono definite una serie di terne di coordinate polari θ, φ, df (75 nel caso presentato nell’esempio di shell scripting) e per ognuna di queste `e generato un segnale RF. Alla fine del- l’elaborazione di ogni segnale viene salvata la variabile RF (θ, φ, df ) ed al termine dell’intera scansione viene chiuso il programma FieldII con il comando field end. Per il codice si veda Appendice B - Stand-alone.