Inhaltsverzeichnis:
- Schritt 1: Finden Sie MRT- und MRA-Scans eines normalen Gehirns und eines Gehirns, das von Moyamoya betroffen ist
- Schritt 2: Bilder in MATLAB laden und Bilder einer Variablen zuweisen, um Bilder anzuzeigen
- Schritt 3: Verbessern von länglichen Strukturen im Intensitätsbild mit Multiskalenfilterung
- Schritt 4: Führen Sie einen 2D-Medianfilter aus
- Schritt 5: Maskieren Sie das Bild
- Schritt 6: Wählen Sie die MRA-Scans für statistische Tests
- Schritt 7: Berechnen Sie die Fläche der Blutgefäße in Vorbereitung auf die statistische Prüfung
- Schritt 8: Führen Sie einen T-Test für unabhängige Stichproben durch
Video: Moyamoya-Bildverarbeitung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Moyamoya, "Rauchwolke", ist eine seltene Krankheit, die durch die Blockade von Arterien in den Basalganglien, einem Bereich an der Basis des Gehirns, verursacht wird. Die Krankheit ist eine fortschreitende zerebrovaskuläre Erkrankung, die vor allem Kinder betrifft. Zu den Symptomen von Moyamoya gehören ein anfänglicher Schlaganfall, ständige Mini-Schlaganfälle, Muskelschwäche, Lähmung oder Krampfanfälle als Folge der fortschreitenden Verengung der Arterien. Ohne Behandlung verursacht Moyamoya Probleme mit der Sprache, Sinnesstörungen und Bewusstseinsstörungen. In unserem Projekt werden wir MATLAB verwenden, um ein MRT- oder MRA-Bild mit verschiedenen Filtern vorzuverarbeiten, um das Rauschen innerhalb des Bildes zu reduzieren, um den betroffenen Bereich zu lokalisieren. Darüber hinaus werden wir eine Funktionserweiterung nutzen, um die betroffenen Gebiete genauer zu lokalisieren. Darüber hinaus werden wir dann einen t-Test mit unabhängigen Stichproben durchführen, um festzustellen, ob es einen signifikanten Unterschied zwischen der Anzahl der Blutgefäße in einem normalen Gehirn im Vergleich zu einem von Moyamoya betroffenen Gehirn gibt.
Schritt 1: Finden Sie MRT- und MRA-Scans eines normalen Gehirns und eines Gehirns, das von Moyamoya betroffen ist
Diese Bilder sind die Scans, die wir für das Projekt verwendet haben, das wir online gefunden haben. Die beiden Bilder mit den Blutgefäßen in der Mitte sind MRA-Aufnahmen, die anderen beiden Bilder sind MRT-Aufnahmen.
Unter den folgenden Links sind diese Bilder zu finden:
static.cambridge.org/resource/id/urn:cambr…
static.cambridge.org/resource/id/urn:cambr…
Schritt 2: Bilder in MATLAB laden und Bilder einer Variablen zuweisen, um Bilder anzuzeigen
Um den Vorgang zu starten, löschen Sie zunächst das Befehlsfenster, schließen Sie alle möglichen Abbildungen und Grafiken, die möglicherweise bereits geöffnet sind, und löschen Sie bereits zugewiesene Variablen in Ihrem Arbeitsbereich.
Erstellen Sie anschließend eine for-Schleife von 1 bis 2 mit dem Befehl i = [1:2]
Laden Sie anschließend die MRA-Bilder mit dem Befehl imread(sprintf('filename%.filetype', i)), um die Bilder aus den Dateien zu lesen, die durch den Dateinamen gefolgt von der Nummer für die Schleife mit sprintf für das Stapelladen und Zuweisen angegeben werden es zu einer Variablen.
Um das Bild dann in einer Abbildung anzuzeigen, verwenden Sie den Befehl imshow(I).
Um eine Grau-Colormap zuzuweisen, verwenden Sie den Befehl colormap(gray).
Um Farben vollständig zu eliminieren und die 3D-Matrix für die Bilder in 2D umzuwandeln, verwenden Sie den Befehl rgb2gray(I) und weisen Sie ihn einer separaten Variablen zu.
Laden Sie dann die MRT-Bilder mit dem zuvor angegebenen Befehl oder imread(sprintf('filename%.filetype', i)) und weisen Sie es einer neuen Variablen zu
Wiederholen Sie den Befehl rgb2gray mit der neuen Variablen, die für die MRT-Bilder verwendet wird.
Bei Bedarf können Sie ein Bild mit dem Befehl imresize(A, scale) skalieren und einer separaten Variablen zuweisen.
Schritt 3: Verbessern von länglichen Strukturen im Intensitätsbild mit Multiskalenfilterung
Verwenden Sie mit einer neuen Variablen den Befehl fibermetric(A), um die röhrenförmigen Strukturen in den Bildern zu verbessern
Verwenden Sie bei der vorherigen Variablen den Befehl histeq(B), um die Histogramm-Entzerrung zu verbessern, indem Sie die Intensität der Bilder transformieren und einer neuen Variablen zuweisen.
Zeigen Sie das Histogramm mit dem Befehl imhist(B) an
Erstellen Sie eine neue Variable, um einen Schwellenwert für den Filter zu erstellen. Weisen Sie in diesem Fall die vorherige Variable > 0,875 zu und filtern Sie die Pixelintensität unter dem Wert von 0,875. heraus
Erstellen Sie anschließend eine neue Abbildung und verwenden Sie den Befehl imshow(A), um das neue gefilterte Bild anzuzeigen.
Schritt 4: Führen Sie einen 2D-Medianfilter aus
Führen Sie mit dem Befehl medfilt2(A, [m n]) einen 2D-Medianfilter aus, bei dem jedes Ausgabepixel den Medianwert in der mxn-Grenze um das jeweilige Pixel im Eingabebild enthält.
Erstellen Sie eine neue Abbildung und verwenden Sie imshow(A), um das Median-gefilterte Bild anzuzeigen.
Schritt 5: Maskieren Sie das Bild
Verwenden Sie das Median-gefilterte Bild mit dem Befehl [labeledImage, numberOfBlots] = bwlabel(A), um die Anzahl der weißen Flecken im Bild zu zählen
Verwenden Sie dann die Regionsprops-Funktion States = regionprops(labeledImage, 'Area'), um die Flächen jedes Blots oder Blutgefäßes zu berechnen
Weisen Sie alle Bereiche einer Variablen zu
Zählen Sie dann mit einer anderen Variablen die Anzahl der Blots, die 50 Pixel überschreiten
Sortieren Sie danach alle Blots, die unter 50 Pixel liegen, in absteigender Reihenfolge mit dem Befehl [sortedAreas, sortedIndicies] = sort(Areas, 'descend')
Verwenden Sie dann mit einer anderen Variablen den Befehl ismember(labeledImage, sortedIndicies(1:numberToExtract)), um ein Array mit Elementen von labeledImage zurückzugeben eine logische 0 (falsch).
Suchen Sie mit der Variablen im vorherigen Schritt die Punkte, die wahr sind (Werte > 0) und erstellen Sie ein logisches Array, um ein binäres Bild zu erstellen und es einer neuen Variablen zuzuweisen.
Erstellen Sie eine neue Figur und verwenden Sie imshow(A) das neue Binärbild.
Dann invertieren Sie das Bild mit dem Befehl imcomplement(A) und weisen Sie es einer anderen Variablen zu.
Um ein maskiertes Bild zu erstellen, verwenden Sie eine neue Variable mit dem Befehl resizedimage.*uint8(invertedimage)
Erstellen Sie eine neue Figur und verwenden Sie imshow(A), um das maskierte Bild anzuzeigen.
Um den gesamten Code zu beenden, verwenden Sie unbedingt den Befehl 'end', um die gesamte for-Schleife zu beenden
Schritt 6: Wählen Sie die MRA-Scans für statistische Tests
Wählen Sie zur Vorbereitung des statistischen Tests die MRA-Scans aus, die für den t-Test mit unabhängigen Stichproben verwendet werden sollen. Da es sich bei unseren beiden Proben um Gehirne handelt, die von Moyamoya betroffen sind, und um normale Gehirne, wählen Sie eine angemessene Anzahl von MRA-Scans jeder Gruppe aus.
Schritt 7: Berechnen Sie die Fläche der Blutgefäße in Vorbereitung auf die statistische Prüfung
Der statistische Test konzentriert sich auf die Länge oder Menge der Blutgefäße, die auf den MRA-Scans angezeigt werden. Daher müssen wir vor dem Vergleich die Fläche der Blutgefäße berechnen.
Beginnen Sie damit, die MRAs normaler Gehirne zu filtern und die Anzahl der Blutgefäße zu berechnen. Führen Sie dazu eine for-Schleife aus. Da es drei Bilder gibt, ist die Bedingung i = [1:3].
Öffnen Sie das Bild mit dem Befehl imread und weisen Sie es einer Variablen zu.
Erstellen Sie als Nächstes eine if/else-Anweisung mit dem Befehl if, else. Verwenden Sie für die if-Anweisung den Befehl size(A, 3)==3, wobei A die Variable ist, die zum Öffnen des Bildes verwendet wird, um eine if-Anweisung zu erstellen, wenn die dritte Dimension des Arrays 3 ist. Dann das Bild konvertieren in 2D und entfernen Sie die Farbe mit dem Befehl rgb2gray(A) und weisen Sie sie einer neuen Variablen zu. Verwenden Sie den Befehl imresize(A, [m n]), um die Größe des Bildes zu ändern. In diesem Fall haben wir die Größe der Bilder auf eine Matrix von 1024 x 1024 geändert. Um die röhrenförmigen Strukturen des Bildes zu verbessern, verwenden Sie erneut den Befehl fibermetric und weisen Sie ihn einer neuen Variablen zu.
Das Folgende ist für die else-Anweisung. Wenn das Bild keine 3D-Matrix ist, möchten wir die Konvertierung überspringen. Machen Sie dasselbe wie die if-Anweisung, jedoch ohne den Befehl rgb2gray(A).
Erstellen Sie eine neue Variable und setzen Sie sie gleich der Variable aus dem fibermetrischen Schritt größer als 0,15. Dadurch wird das Bild für Intensitäten größer als 0,15 schwellenwert.
Wir werden die Codezeilen aus den Schritten 4 und 5 des anweisbaren von der Medianfilterzeile bis zur imshow (I) Zeile wiederholen. Verwenden Sie anschließend den Befehl sum(I(:)), um alle Pixel zu addieren, aus denen Blutgefäße bestehen, und weisen Sie sie einer separaten Variablen zu. Benennen Sie eine neue Variable NormalBloodVessels(i) und setzen Sie sie gleich der Variablen aus dem Befehl sum(I(:)). Dadurch werden die Daten zur Matrix hinzugefügt.
Beenden Sie die Schleife und wiederholen Sie den Vorgang, außer für die MRAs von Gehirnen, die von Moyamoya betroffen sind. Nennen Sie die Variable am Ende MoyaMoyaBloodVessels(i), um sie nicht mit den normalen Gehirn-MRAs zu verwechseln.
Schritt 8: Führen Sie einen T-Test für unabhängige Stichproben durch
Da es zwei unabhängige Stichproben und eine kleine Grundgesamtheit gibt, führen Sie einen t-Test mit unabhängigen Stichproben durch.
Erstellen und benennen Sie eine Funktion, die einen t-Test mit unabhängigen Stichproben durchführt, um zu bestimmen, ob die Anzahl der Blutgefäße in den MRAs normaler Gehirne der von MRAs von Gehirnen, die von Moyamoya betroffen sind, signifikant gleich ist oder nicht.
Zeigen Sie den Hypothesensatz für den Test an, indem Sie den Befehl disp('X') verwenden. Zeigen Sie in der ersten Zeile "Hypothesen für den t-Test mit zwei Stichproben" an. Zeigen Sie in der zweiten Zeile „H0 = Die Anzahl der Blutgefäße eines normalen Gehirns entspricht der Anzahl der Blutgefäße eines Gehirns mit Moyamoya-Krankheit“an, um die Nullhypothese zu formulieren. In der dritten Zeile wird angezeigt: "HA = Die Anzahl der Blutgefäße eines normalen Gehirns entspricht nicht der Anzahl der Blutgefäße eines Gehirns mit Moyamoya-Krankheit." die Alternativhypothese zu formulieren.
Berechnen Sie den t-Score mit dem Befehl tinv([0.025 0.975], 2) unter Verwendung eines 95-%-Konfidenzintervalls und einer Stichprobengröße von 3 und weisen Sie ihn der Variablen t zu. Verwenden Sie die Befehle var(NormalBloodVessels) und var(MoyaMoyaBloodVessels) und weisen Sie sie Variablen zu, um die Varianzen beider Datensätze zu berechnen.
Prüfen Sie, ob die Varianzen annähernd gleich sind oder nicht. Erstellen Sie dazu eine if/else-Anweisung mit dem if, else-Befehl. Für die Bedingung in der if-Anweisung schreiben Sie A / B == [0,25:4], wobei A die Variable ist, die die Varianz normaler Blutgefäße erklärt und B die Variable ist, die die Varianz der Moyamoya-Blutgefäße erklärt. 0,25 und 4 stammen aus einer allgemeinen Schätzung zur Bestimmung, ob die Varianzen gleich sind oder nicht. Führen Sie dann den t-Test mit zwei Stichproben mit [h, p] = ttest2(A, B, 0.05, 'beide', 'gleich') aus, wobei A und B die gleichen Variablen sind wie zuvor erwähnt. Verwenden Sie für die else-Anweisung [h, p] = ttest2(A, B, 0.05, 'beide', 'ungleich'), um einen t-Test mit zwei Stichproben durchzuführen, falls die Varianzen nicht gleich sind. Beenden Sie die if/else-Anweisung. Dies berechnet p.
Erstellen Sie eine if/else-Anweisung, die eine Schlussfolgerung basierend auf dem Wert von p anzeigt. Die Bedingung für die if-Anweisung ist p > 0,05. Da wir die Nullhypothese normalerweise nicht ablehnen, wenn der Wert von p größer als 0,05 ist, verwenden Sie den Befehl disp('X'), um anzuzeigen "Weil der p-Wert größer als 0,05 ist, können wir die Nullhypothese nicht ablehnen" und " Daher können wir nicht ablehnen, dass die Anzahl der Blutgefäße eines normalen Gehirns der eines Gehirns mit Moyamoya-Krankheit entspricht." Da wir in der else-Anweisung normalerweise die Nullhypothese ablehnen, wenn der Wert von p unter 0,05 liegt, verwenden Sie den Befehl disp('X'), um anzuzeigen "Weil der p-Wert kleiner als 0,05 ist, lehnen wir die Nullhypothese ab" und " Daher können wir nicht ablehnen, dass die Anzahl der Blutgefäße eines normalen Gehirns nicht der eines Gehirns mit Moyamoya-Krankheit entspricht." Beenden Sie die if/else-Anweisung.