Sommario:

Elaborazione delle immagini Moyamoya: 8 passaggi
Elaborazione delle immagini Moyamoya: 8 passaggi

Video: Elaborazione delle immagini Moyamoya: 8 passaggi

Video: Elaborazione delle immagini Moyamoya: 8 passaggi
Video: Elaborazione digitale dell immagine 1 - Prof. Massimiliano Lisi 2024, Dicembre
Anonim
Elaborazione delle immagini Moyamoya
Elaborazione delle immagini Moyamoya

Moyamoya, "sbuffo di fumo", è una malattia rara causata dal blocco delle arterie nei gangli della base, che è un'area alla base del cervello. La malattia è una malattia cerebrovascolare progressiva che colpisce soprattutto i bambini. I sintomi di moyamoya includono un ictus iniziale, mini-ictus costanti, debolezza muscolare, paralisi o convulsioni a causa del progressivo restringimento delle arterie. Senza trattamento, moyamoya causerà problemi con il linguaggio, disturbi sensoriali e danni alla coscienza. Nel nostro progetto, utilizzeremo MATLAB per preelaborare un'immagine MRI o MRA utilizzando vari filtri per ridurre il rumore all'interno dell'immagine per individuare l'area interessata. Inoltre, utilizzeremo un miglioramento delle funzionalità per individuare le aree interessate in modo più preciso. Inoltre, eseguiremo quindi un test t su campioni indipendenti per determinare se esiste una differenza significativa tra la quantità di vasi sanguigni in un cervello normale rispetto a un cervello affetto da moyamoya.

Passaggio 1: trova le scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya

Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya
Trova scansioni MRI e MRA di un cervello normale e di un cervello affetto da Moyamoya

Queste immagini sono le scansioni che abbiamo usato per il progetto che abbiamo trovato online. Le due immagini con i vasi sanguigni situati nel mezzo sono scansioni MRA, mentre le altre due immagini sono scansioni MRI.

I seguenti link sono dove si trovano queste immagini:

static.cambridge.org/resource/id/urn:cambr…

static.cambridge.org/resource/id/urn:cambr…

Passaggio 2: carica le immagini su MATLAB e assegna le immagini a una variabile per visualizzare le immagini

Carica immagini su MATLAB e assegna immagini a una variabile per visualizzare le immagini
Carica immagini su MATLAB e assegna immagini a una variabile per visualizzare le immagini

Per iniziare il processo, inizia cancellando la finestra di comando, chiudi tutte le possibili figure e grafici che potrebbero essere già aperti e cancella le variabili già assegnate nel tuo spazio di lavoro.

Dopo, crea un ciclo for da 1 a 2 usando il comando i = [1:2]

Successivamente, caricare le immagini MRA utilizzando il comando imread(sprintf('filename%.filetype', i)) per leggere le immagini dai file specificati dal nome file seguito dal numero utilizzato per il ciclo utilizzando sprintf per il caricamento in batch e assegnare esso a una variabile.

Quindi per visualizzare l'immagine in una figura, utilizzare il comando imshow(I).

Per assegnare una mappa di colore grigia, usa il comando mappa di colore(grigio).

Per eliminare completamente il colore e convertire la matrice 3D per le immagini in 2D, utilizzare il comando rgb2gray(I) e assegnarlo a una variabile separata.

Quindi caricare le immagini MRI utilizzando il comando precedentemente indicato o imread(sprintf('filename%.filetype', i)) e assegnarlo a una nuova variabile

Ripetere il comando rgb2gray con la nuova variabile utilizzata per le immagini MRI.

Se necessario, puoi ridimensionare un'immagine usando il comando imresize(A, scale) e assegnarla a una variabile separata.

Passaggio 3: migliora le strutture allungate nell'immagine di intensità con il filtraggio multiscala

Migliora le strutture allungate nell'immagine di intensità con il filtraggio multiscala
Migliora le strutture allungate nell'immagine di intensità con il filtraggio multiscala

Utilizzando una nuova variabile, utilizzare il comando fibremetric(A) per migliorare le strutture tubolari nelle immagini

Con la variabile precedente, utilizzare il comando histeq(B) per migliorare le equalizzazioni dell'istogramma trasformando l'intensità delle immagini e assegnandola a una nuova variabile.

Visualizza l'istogramma usando il comando imhist(B)

Crea una nuova variabile per creare una soglia per il filtro. In questo caso assegnare la variabile precedente > 0.875, filtrando l'intensità dei pixel sotto il valore di 0.875

Successivamente, crea una nuova figura e usa il comando imshow(A) per visualizzare la nuova immagine filtrata.

Passaggio 4: eseguire un filtro mediano 2D

Esegui un filtro mediano 2D
Esegui un filtro mediano 2D

Usando il comando medfilt2(A, [m n]), esegui un filtro mediano 2D, in cui ogni pixel di output contiene il valore mediano nel limite mxn attorno al rispettivo pixel nell'immagine di input.

Crea una nuova figura e usa imshow(A) per visualizzare l'immagine mediana filtrata.

Passaggio 5: maschera l'immagine

Maschera l'immagine
Maschera l'immagine

Usando l'immagine mediana filtrata, usa il comando [labeledImage, numberOfBlots] = bwlabel(A) per contare il numero di macchie bianche nell'immagine

Quindi, usa gli stati della funzione region props = regionprops(labeledImage, 'Area') per calcolare le aree di ogni macchia o vaso sanguigno

Assegna tutte le aree in una variabile

Quindi, utilizzando un'altra variabile, conta il numero di macchie che superano i 50 pixel

Dopo, riordina tutte le macchie inferiori a 50 pixel in ordine decrescente usando il comando [sortedAreas, sortedIndicies] = sort(Areas, 'descend')

Quindi, utilizzando un'altra variabile, utilizzare il comando ismember(labeledImage, sortedIndicies(1:numberToExtract)) per restituire un array con elementi di labeledImage trovati in sortedIndicies dal numero 1 al numero di vasi sanguigni per restituire un 1 logico (vero) o uno 0 logico (falso).

Con la variabile nel passaggio precedente, trova i punti che sono veri (valori > 0) e crea un array logico per creare un'immagine binaria e assegnarla a una nuova variabile.

Crea una nuova figura e usa imshow(A) la nuova immagine binaria.

Quindi, inverti l'immagine usando il comando implement(A) e assegnala a una variabile diversa.

Per creare un'immagine mascherata, usa una nuova variabile con il comando resizedimage.*uint8(invertedimage)

Crea una nuova figura e usa imshow (A) per visualizzare l'immagine mascherata.

Per terminare l'intero codice, assicurati di utilizzare il comando 'end' per terminare l'intero ciclo for

Passaggio 6: selezionare le scansioni MRA per i test statistici

Seleziona le scansioni MRA per i test statistici
Seleziona le scansioni MRA per i test statistici
Seleziona le scansioni MRA per i test statistici
Seleziona le scansioni MRA per i test statistici
Seleziona le scansioni MRA per i test statistici
Seleziona le scansioni MRA per i test statistici

Per prepararsi ai test statistici, selezionare le scansioni MRA da utilizzare per il t-test dei campioni indipendenti. Poiché i nostri due campioni saranno cervelli affetti da Moyamoya e cervelli normali, selezionare una discreta quantità di scansioni MRA di ciascun gruppo.

Passaggio 7: calcolare l'area dei vasi sanguigni in preparazione per i test statistici

Calcola l'area dei vasi sanguigni in preparazione per i test statistici
Calcola l'area dei vasi sanguigni in preparazione per i test statistici

Il test statistico si concentrerà sulla lunghezza o sulla quantità di vasi sanguigni mostrati nelle scansioni MRA. Quindi, dobbiamo calcolare l'area dei vasi sanguigni prima del confronto.

Inizia filtrando gli MRA del cervello normale e calcolando la quantità di vasi sanguigni. Per fare ciò, esegui un ciclo for. Poiché ci sono tre immagini, la condizione sarà i = [1:3].

Apri l'immagine con il comando imread e assegnala a una variabile.

Quindi, crea un'istruzione if/else con il comando if, else. Per l'istruzione if, utilizzare il comando size(A, 3)==3, dove A è la variabile utilizzata per aprire l'immagine, per creare un'istruzione if per quando la terza dimensione dell'array è 3. Quindi convertire l'immagine in 2D ed elimina il colore usando il comando rgb2gray(A) e assegnalo a una nuova variabile. Usa il comando imresize(A, [m n]) per ridimensionare l'immagine. In questo caso, abbiamo ridimensionato le immagini alla matrice 1024 x 1024. Per valorizzare le strutture tubolari dell'immagine, utilizzare nuovamente il comando Fibermetric e assegnarlo ad una nuova variabile.

Quanto segue è per l'istruzione else. Se l'immagine non è una matrice 3D, vogliamo saltare la conversione. Fai lo stesso dell'istruzione if, ma senza il comando rgb2gray(A).

Creare una nuova variabile, ponendola uguale alla variabile dal passo fibrometrico maggiore di 0,15. Questo limita l'immagine per intensità maggiori di 0,15.

Ripeteremo le righe dei codici dai passaggi 4 e 5 dell'istruibile dalla riga del filtro mediano fino alla riga imshow(I). Successivamente, usa il comando sum(I(:)) per sommare tutti i pixel che compongono i vasi sanguigni e assegnarlo a una variabile separata. Assegna un nome a una nuova variabile NormalBloodVessels(i) e impostala uguale alla variabile del comando sum(I(:)). Questo aggiunge i dati alla matrice.

Termina il ciclo e ripeti ma per gli MRA dei cervelli affetti da Moyamoya. Denominare la variabile alla fine MoyaMoyaBloodVessels(i) per non confonderla con i normali MRA cerebrali.

Passaggio 8: eseguire un test T per campioni indipendenti

Eseguire un T-test per campioni indipendenti
Eseguire un T-test per campioni indipendenti

Poiché sono presenti due campioni indipendenti e una piccola popolazione, eseguire un test t per campioni indipendenti.

Creare e denominare una funzione che esegua un test t di campioni indipendenti per determinare se la quantità di vasi sanguigni negli MRA dei cervelli normali è significativamente uguale o meno a quella degli MRA dei cervelli affetti da Moyamoya.

Visualizza l'ipotesi impostata per il test utilizzando il comando disp('X'). Nella prima riga, visualizzare "Ipotesi per test t su due campioni". Sulla seconda riga, visualizzare "H0 = La quantità di vasi sanguigni di un cervello normale è uguale alla quantità di vasi sanguigni di un cervello con malattia di Moyamoya", per affermare l'ipotesi nulla. Sulla terza riga, visualizzare "HA = La quantità di vasi sanguigni di un cervello normale non è uguale alla quantità di vasi sanguigni di un cervello con malattia di Moyamoya". enunciare l'ipotesi alternativa.

Utilizzando un intervallo di confidenza del 95% e una dimensione del campione di 3, calcolare il punteggio t utilizzando il comando tinv([0.025 0.975], 2) e assegnarlo alla variabile t. Utilizzare il comando var(NormalBloodVessels) e var(MoyaMoyaBloodVessels) e assegnarli alle variabili per calcolare le varianze di entrambi i set di dati.

Controlla se le varianze sono vicine all'uguale o meno. Fallo creando un'istruzione if/else con il comando if, else. Per la condizione nell'istruzione if, scrivi A / B == [0.25:4], dove A è la variabile che spiega la varianza dei vasi sanguigni normali e B è la variabile che spiega la varianza dei vasi sanguigni Moyamoya. 0.25 e 4 provengono da una stima generale per determinare se le varianze sono uguali o meno. Quindi esegui i due test t di esempio con [h, p] = ttest2 (A, B, 0,05, 'entrambi', 'uguale'), con A e B che sono le stesse variabili menzionate prima. Per l'istruzione else, usa [h, p] = ttest2(A, B, 0.05, 'both', 'inequal') per eseguire un test t a due campioni nel caso in cui le varianze non siano uguali. Termina l'istruzione if/else. Questo calcolerà p.

Crea un'istruzione if/else che mostrerà una conclusione basata sul valore di p. La condizione per l'istruzione if sarà p > 0,05. Poiché in genere non riusciamo a rifiutare l'ipotesi nulla quando il valore di p è maggiore di 0,05, utilizzare il comando disp('X') per visualizzare "Poiché il valore di p è maggiore di 0,05 non riusciamo a rifiutare l'ipotesi nulla" e " Pertanto non possiamo rifiutare che la quantità di vasi sanguigni di un cervello normale sia uguale a quella di un cervello con malattia di Moyamoya". Nell'istruzione else, poiché in genere rifiutiamo l'ipotesi nulla quando il valore di p è inferiore a 0,05, utilizzare il comando disp('X') per visualizzare "Poiché il valore p è inferiore a 0,05 rifiutiamo l'ipotesi nulla" e " Pertanto non possiamo rifiutare che la quantità di vasi sanguigni di un cervello normale non sia uguale a quella di un cervello con malattia di Moyamoya". Termina l'istruzione if/else.

Consigliato: