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.