• Non ci sono risultati.

4.2 Tracciamento e scomposizione

5.1.2 Valutazione algoritmo 2D su fantoccio

Una volta costruito il fantoccio, a questo è stato applicato l’algoritmo. Prendendo co- me riferimento un contorno circolare interno al fantoccio, output principali sono state quindi le immagini del fantoccio dilatate, compresse e ruotate nel tempo in cui fosse contemporaneamente visibile anche lo spostamento del contorno stesso (vedi Fig.5.4). Per valutarne però l’efficienza, si è reso necessario stabilire quale fosse l’errore, rispetto a determinate condizioni, tra lo spostamento stimato tramite l’algoritmo e quello impo- sto durante la creazione del fantoccio. Sono stati quindi valutati i due spostamenti del contorno preso a riferimento precedentemente. Trattandosi di un contorno circolare,

Figura 5.4: La figura mostra l’andamento dello spostamento, in particolare a rappresentarlo sono le frecce blu.

lo spostamento imposto è uguale per tutti i punti facenti parte di esso. Si tratta quindi di ripercorrere in parallelo le operazioni effettuate per la costruzione del fantoccio, ap- plicando tali operazioni, di volta in volta, ad una matrice delle sue stesse dimensioni. Essa è infatti una matrice di zeri, con solo una piccola regione di pixels, posta ad una certa distanza dal centro, ad un’alta intensità: risulta quindi ben definibile anche dopo i vari ridimensionamenti. Stabilendo, passo passo, all’interno dei vari frames dove fos- se localizzata tale regione, è stato possibile calcolare lo spostamento imposto, detto di riferimento. Dapprincipio sono stati calcolati l’errore percentuale e la deviazione stan- dard tra la stima dei due spostamenti dei punti del contorno, facendo variare i valori di SNR (rapporto segnale-rumore). Per attuare ciò in Matlab è stato impostato un ciclo "for" in cui a variare fosse il rumore, e quindi l’SNR, che è stato possibile calcolare per ogni iterazione dividendo la somma del segnale del contorno tracciato nel primo frame per il rumore aggiunto. Siccome il processo di rumore è casuale, per lo stesso valore di

rumore imposto è stato ripetuto l’esperimento per più volte. Ciò viene rappresentato in ambiente Matlab grazie al comando "errorbar" che costruisce delle barre di errore cor- rispondenti al doppio della deviazione standard. La variabilità nell’ "errorbar" è dovuta al fatto che il processo di rumore è random ed è quindi diverso volta per volta. Nel codice Matlab scritto è stato infatti inserito un ciclo for che tenesse conto di tale fatto.

Figura 5.5: La figura presenta l’andamento dell’errore percentuale tra lo spostamento stimato e quello imposto in relazione al rapporto segnale rumore. I parametri impo- sti sono stati quelli di rotazione, di traslazione e numero di frames. E’ stato scelto di rappresentare la situazione in cui rotazione (10°) e numero di frames (31) nelle due figure non cambiasse, ma sono stai presi in considerazione per la figura sopra una traslazione dello 0.2% mentre per la figura sotto una traslazione di 2%.

Dal grafico è stato possibile determinare il valore di SNR considerato limite per il corretto funzionamento dell’algoritmo. Tracciando infatti il grafico dell’errore tra lo spostamento stimato e quello imposto per quel particolare SNR si mostrano infatti zone in cui l’errore va ad aumentare rispetto a quelle con SNR maggiore.

Figura 5.6: La figura presenta i valori dello spostamento medio dei punti del contor- no tracciato nel caso stimato tramite l’algoritmo messo a confronto con lo spostamen- to imposto di riferimento. Sono stati calcolati i valori del displacement per SNR pari circa a 4,10 e 50, per un numero di frames pari a 31 e con parametri di rotazione e traslazione rispettivamente di 10° e dello 0.2%.

Sono stati verificati gli scostamenti dello spostamento calcolato rispetto a quello di riferimento anche nel caso di traslazione pari al 2% (vedi fig.5.7).

Figura 5.7: La figura presenta i valori dello spostamento medio dei punti del contor- no tracciato nel caso stimato tramite l’algoritmo messo a confronto con lo spostamen- to imposto di riferimento. Sono stati calcolati i valori del displacement per SNR pari circa a 4,10 e 50, per un numero di frames pari a 31 e con parametri di rotazione e traslazione rispettivamente di 10° e del 2%.

Per entrambi i valori di traslazione, quello che si vede, come detto poco sopra, è che per SNR bassi l’algoritmo diverge, mentre per SNR considerevoli esso acquista consistenza. In particolare per SNR maggiori di 5 e per un numero di frames pari a 31 vi è la sicurezza di commettere un errore percentuale minore del 10%. Da qui la volontà di stabilire quale fosse l’errore percentuale commesso dall’algoritmo, con un particolare valore di SNR imposto (in questo caso 4, dove si cominciano ad apprezzare scostamenti rilevanti), a seconda del numero di frames considerato. Per fare ciò è stato sufficiente in Matlab impostare un ciclo "for" in cui a variare fosse il numero di frames. La valutazione è stata ripetuta per una traslazione pari al 2%.

Figura 5.8: La figura in alto presenta i valori dell’errore percentuale tra lo sposta- mento medio stimato e quello imposto in funzione del numero di frames utilizzato. I parametri imposti sono stati quello di rotazione e di traslazione, rispettivamente di 10° e dello 0.2%. Il valore di SNR per cui il tutto è stato calcolato è di 4. La figura in basso invece mostra uno zoom della figura precedente.

Figura 5.9: La figura in alto presenta i valori dell’errore percentuale tra lo spostamen- to medio stimato e quello imposto in funzione del numero di frames utilizzato. I pa- rametri imposti sono stati quello di rotazione e di traslazione, rispettivamente di 10° e del 2%. Il valore di SNR per cui il tutto è stato calcolato è di 4. La figura in basso invece mostra uno zoom della figura precedente.

Nelle Fig.5.8 e 5.9 si vede che è stata tracciata una linea di colore rosso per poter identificare il numero di frames oltre il quale poter ottenere un errore minore del 10%. Diminuendo il numero dei frames infatti si vede che l’errore aumenta considerevolmen- te. E’ stato inoltre calcolato quale fosse l’errore percentuale in base all’andamento del rapporto tra il rumore di acquisizione e quello biologico. Impostando infatti un ciclo

"for"in cui a variare fosse il rumore di acquisizione, si è calcolato l’andamento medio. In particolare il numero di volte in cui è stato ripetuto l’algoritmo è stato pari a 20, con il valore di "noise" aumentato di volta in volta di 0.2. Come si può vedere dalle Fig.5.10 e 5.11 l’errore aumenta all’aumentare del rapporto N bN .

Figura 5.10: La figura mostra l’andamento dell’errore percentuale tra la stima dello spostamento calcolato tramite l’algoritmo e quello imposto in funzione del rapporto tra rumore di acquisizione e quello biologico. I parametri imposti sono stati quelli di traslazione e rotazione (rispettivamente 0.2% e 10°) e anche il numero di frames pari a 31.

Figura 5.11: La figura mostra l’andamento dell’errore percentuale tra la stima dello spostamento calcolato tramite l’algoritmo e quello imposto in funzione del rapporto tra rumore di acquisizione e quello biologico. I parametri imposti sono stati quelli di traslazione e rotazione (rispettivamente 2% e 10°) e anche il numero di frames pari a 31.

Nello sviluppo dell’algoritmo, come detto nel Capitolo 4, sono state valutate anche le componenti radiali e tangenziali dello spostamento così calcolato.

Figura 5.12: La figura di sx mostra l’andamento dello spostamento ( in blu) scompo- sto in componente radiale (frecce rosse) e componente tangenziale (frecce verdi). La figura di dx invece rappresenta uno zoom della precedente. I parametri imposti sono stati quelli di traslazione e rotazione (rispettivamente 0.2% e 10°) e anche il numero di frames pari a 31.

Per riuscire ad estrappolare le componenti radiali e tangenziali che sono state im- poste, si procede in modo equivalente rispetto a quello che è stato fatto per il calcolo dello spostamento imposto. Utilizzando infatti la funzione "calcolo_componenti" con input le coordinate x ed y delle posizioni consecutive occupate da un punto generico del fantoccio, gli spostamenti ottenuti con il comando "diff ", e le coordinate del centro dell’immagine, sono state calcolate le varie componenti. Dal grafico seguente si può ve- dere come la funzione "calcola_componenti" funzioni adeguatamente per il calcolo delle componenti, in quanto l’andamento dello spostamento imposto sia quasi equivalente a quello derivante dalla scomposizione in componenti.

Figura 5.13: La figura mostra lo spostamento medio del contorno in 3 casi, in quello di riferimento (giallo), in quello derivante dall’applicazione dell’algoritmo (blu) e in quello derivante dalla somma delle componenti radiale e tangenziale (rosso). I parametri imposti sono stati quelli di traslazione e rotazione (rispettivamente 0.2% e 10°) e anche il numero di frames pari a 31.

Come mostrato precedentemente, l’algoritmo implementato funziona entro certi limiti. I valori di traslazione e di rotazione presi a riferimento sono stati dello 0.2% e del 2% per il primo, 10° per il secondo in modo da simulare i valori limite del movimento valvolare. Sono state fatte valutazioni per valori di SNR differenti dato come numero di frame 31, potendo quindi affermare che si è sicuri di ottenere in entrambi i casi di traslazione un errore minore del 10% per valori di SNR maggiori di 4. Tale affermazione è stata verificata procedendo in modo inverso, ovvero calcolando l’errore in funzione del numero di frames con un valore dato di SNR pari a 4. I risultati hanno mostrato che si ottiene sicuramente un errore minore del 10%, in entrambi i casi di traslazione, per un numero di frames maggiore di 30. Sperabilmente i risultati ottenuti dall’applicazione dell’algoritmo al fantoccio ci confermano che l’algoritmo dovrebbe funzionare anche

su dati ecografici dato che risoluzione temporale, dimensioni dell’immagine ed SNR risultano compatibili con il funzionamento.

Documenti correlati