Zpracování obrazu Moyamoya: 8 kroků
Zpracování obrazu Moyamoya: 8 kroků
Anonim
Zpracování obrazu Moyamoya
Zpracování obrazu Moyamoya

Moyamoya, „obláček kouře“, je vzácné onemocnění, které je způsobeno ucpáním tepen v bazálních gangliích, což je oblast na bázi mozku. Toto onemocnění je progresivní cerebrovaskulární onemocnění, které většinou postihuje děti. Příznaky moyamoya zahrnují počáteční mrtvici, konstantní mini-tahy, svalovou slabost, paralýzu nebo záchvaty v důsledku postupného zúžení tepen. Bez léčby způsobí moyamoya problémy s řečí, smyslovým postižením a poškozeným vědomím. V našem projektu použijeme MATLAB k předběžnému zpracování obrazu MRI nebo MRA pomocí různých filtrů ke snížení šumu v obrazu k lokalizaci postižené oblasti. Kromě toho použijeme vylepšení funkcí k přesnější lokalizaci postižených oblastí. Kromě toho poté spustíme nezávislý t-test vzorků, abychom zjistili, zda existuje významný rozdíl mezi množstvím krevních cév v normálním mozku ve srovnání s mozkem postiženým moyamoyou.

Krok 1: Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou

Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou
Najděte skeny MRI a MRA normálního mozku a mozku ovlivněného Moyamoyou

Tyto obrázky jsou skeny, které jsme použili pro projekt a které jsme našli online. Dva obrazy s krevními cévami umístěnými uprostřed jsou skeny MRA, zatímco další dva obrázky jsou skeny MRI.

Na těchto obrázcích se nacházejí následující odkazy:

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

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

Krok 2: Načíst obrázky do MATLABu a přiřadit obrázky proměnné k zobrazení obrázků

Načíst obrázky do MATLABu a přiřadit obrázky proměnné k zobrazení obrázků
Načíst obrázky do MATLABu a přiřadit obrázky proměnné k zobrazení obrázků

Chcete -li zahájit proces, začněte vymazáním příkazového okna, zavřete všechny možné obrázky a grafy, které již mohou být otevřené, a vymažte proměnné již přiřazené ve vašem pracovním prostoru.

Poté vytvořte smyčku for z 1 na 2 pomocí příkazu i = [1: 2]

Poté načtěte obrázky MRA pomocí příkazu imread (sprintf ('název_souboru%.filetype', i)) a přečtěte si obrázky ze souborů specifikovaných názvem souboru následovaným číslem použitým pro smyčku pomocí sprintf pro dávkové načítání a přiřaďte to na proměnnou.

Poté pro zobrazení obrázku na obrázku použijte příkaz imshow (I).

Chcete -li přiřadit šedou barevnou mapu, použijte příkaz colormap (šedá).

Chcete -li zcela eliminovat barvy a převést 3D matici pro obrázky na 2D, použijte příkaz rgb2gray (I) a přiřaďte ji k samostatné proměnné.

Poté načtěte obrázky MRI pomocí dříve uvedeného příkazu nebo imread (sprintf ('název_souboru%.filetype', i)) a přiřaďte jej k nové proměnné

Opakujte příkaz rgb2gray s novou proměnnou použitou pro obrazy MRI.

V případě potřeby můžete změnit velikost obrázku pomocí příkazu imresize (A, scale) a přiřadit k samostatné proměnné.

Krok 3: Vylepšete prodloužené struktury v intenzitním obrazu pomocí víceúrovňového filtrování

Vylepšete prodloužené struktury v intenzitním obrazu pomocí víceúrovňového filtrování
Vylepšete prodloužené struktury v intenzitním obrazu pomocí víceúrovňového filtrování

Pomocí nové proměnné použijte příkaz fibermetric (A) k vylepšení tubulárních struktur v obrazech

U předchozí proměnné použijte příkaz histeq (B) ke zlepšení ekvalizace histogramu transformací intenzity obrázků a přiřazením nové proměnné.

Zobrazte histogram pomocí příkazu imhist (B)

Vytvořením nové proměnné vytvoříte práh pro filtr. V tomto případě přiřaďte předchozí proměnnou> 0,875 a odfiltrujte intenzitu pixelů pod hodnotou 0,875

Poté vytvořte nový obrázek a pomocí příkazu imshow (A) zobrazte nový filtrovaný obrázek.

Krok 4: Spusťte 2D mediánový filtr

Spusťte 2D mediánový filtr
Spusťte 2D mediánový filtr

Pomocí příkazu medfilt2 (A, [m n]) spusťte filtr 2D mediánu, kde každý výstupní pixel obsahuje hodnotu mediánu v hranici mxn kolem příslušného pixelu ve vstupním obrázku.

Vytvořte novou figuru a použijte imshow (A) k zobrazení mediánu filtrovaného obrázku.

Krok 5: Zakryjte obrázek

Maskovat obrázek
Maskovat obrázek

Pomocí mediánu filtrovaného obrázku pomocí příkazu [labeledImage, numberOfBlots] = bwlabel (A) spočítejte počet bílých skvrn na obrázku

Poté pomocí funkce rekvizity regionů stavy = regionprops (označená jakoObrázek, 'Oblast') vypočítejte oblasti každé skvrny nebo cévy

Přiřaďte všechny oblasti do jedné proměnné

Poté pomocí jiné proměnné spočítejte počet blotů, které přesahují 50 pixelů

Poté seřaďte všechny bloty, které jsou menší než 50 pixelů, v sestupném pořadí pomocí příkazu [tříděnéAreas, tříděnéIndicies] = sort (Oblasti, 'sestoupit')

Potom pomocí jiné proměnné pomocí příkazu ismember (labeledImage, triededIndicies (1: numberToExtract)) pro vrácení pole s prvky labeledImage najdete v tříděnýchIndicies od čísla 1 do počtu cév pro vrácení logické 1 (true) nebo logická 0 (nepravda).

S proměnnou v předchozím kroku najděte body, které jsou pravdivé (hodnoty> 0), a vytvořte logické pole pro vytvoření binárního obrazu a přiřaďte ho nové proměnné.

Vytvořte novou figurku a použijte imshow (A) nový binární obraz.

Poté obrázek převeďte pomocí příkazu imcomplement (A) a přiřaďte jej k jiné proměnné.

Chcete -li vytvořit maskovaný obrázek, použijte novou proměnnou s příkazem resizedimage.*Uint8 (invertedimage)

Vytvořte novou figurku a pomocí imshow (A) zobrazte maskovaný obrázek.

Chcete -li ukončit celý kód, nezapomeňte použít příkaz 'end' k ukončení celého cyklu for

Krok 6: Vyberte skeny MRA pro statistické testování

Vyberte skeny MRA pro statistické testování
Vyberte skeny MRA pro statistické testování
Vyberte skeny MRA pro statistické testování
Vyberte skeny MRA pro statistické testování
Vyberte skeny MRA pro statistické testování
Vyberte skeny MRA pro statistické testování

Chcete-li se připravit na statistické testování, vyberte skeny MRA, které mají být použity pro t-test nezávislých vzorků. Protože naše dva vzorky budou mozky ovlivněné Moyamoyou a normální mozky, vyberte slušné množství skenů MRA každé skupiny.

Krok 7: Vypočítejte plochu krevních cév v rámci přípravy na statistické testování

Vypočítejte plochu krevních cév v rámci přípravy na statistické testování
Vypočítejte plochu krevních cév v rámci přípravy na statistické testování

Statistický test se zaměří na délku nebo množství krevních cév zobrazených na skenech MRA. Před porovnáním tedy musíme vypočítat plochu cév.

Začněte filtrováním MRA normálních mozků a výpočtem množství cév. Chcete -li to provést, spusťte smyčku for. Protože existují tři obrázky, podmínka bude i = [1: 3].

Otevřete obrázek příkazem imread a přiřaďte jej k proměnné.

Dále vytvořte příkaz if/else příkazem if, else. Pro příkaz if použijte příkaz size (A, 3) == 3, kde A je proměnná používaná k otevření obrázku, k vytvoření příkazu if pro případ, kdy je třetí dimenze pole 3. Poté obrázek převeďte do 2D a zbavte se barvy pomocí příkazu rgb2gray (A) a přiřaďte ji k nové proměnné. Ke změně velikosti obrázku použijte příkaz imresize (A, [m n]). V tomto případě jsme změnili velikost obrázků na matici 1024 x 1024. Chcete -li vylepšit tubulární struktury obrazu, použijte znovu vláknový příkaz a přiřaďte jej nové proměnné.

Následuje prohlášení else. Pokud obrázek není 3D maticí, chceme konverzi přeskočit. Postupujte stejně jako příkaz if, ale bez příkazu rgb2gray (A).

Vytvořte novou proměnnou a nastavte ji na stejnou hodnotu jako proměnná z vláknového kroku větší než 0,15. Toto nastaví prahovou hodnotu obrazu pro intenzity větší než 0,15.

Budeme opakovat řádky kódů z kroků 4 a 5 instrukčního od středního řádku filtru až do řádku imshow (I). Poté pomocí příkazu sum (I (:)) sečtěte všechny pixely, které tvoří cévy, a přiřaďte jej k samostatné proměnné. Pojmenujte novou proměnnou NormalBloodVessels (i) a nastavte ji jako proměnnou z příkazu sum (I (:)). To přidá data do matice.

Ukončete smyčku a opakujte, ale pro MRA mozků postižených Moyamoyou. Pojmenujte proměnnou na konci MoyaMoyaBloodVessels (i), abyste ji nezaměňovali s normálními MRA mozku.

Krok 8: Spusťte T-test nezávislých vzorků

Spusťte T-test nezávislých vzorků
Spusťte T-test nezávislých vzorků

Protože existují dva nezávislé vzorky a malá populace, proveďte t-test nezávislých vzorků.

Vytvořte a pojmenujte funkci, která spustí nezávislý t-test vzorků a určí, zda je množství krevních cév v MRA normálních mozků významně stejné nebo ne jako u MRA mozků postižených Moyamoya.

Zobrazte hypotézu nastavenou pro test pomocí příkazu disp ('X'). Na prvním řádku zobrazte „Hypotézy pro dva testy t test“. Na druhém řádku zobrazte „H0 = množství krevních cév normálního mozku se rovná množství krevních cév v mozku s Moyamoyovou nemocí“, čímž uvedete nulovou hypotézu. Na třetím řádku zobrazte „HA = množství krevních cév normálního mozku se nerovná množství krevních cév v mozku s Moyamoyovou nemocí“. uvést alternativní hypotézu.

Pomocí 95% intervalu spolehlivosti a velikosti vzorku 3 vypočítejte skóre t pomocí příkazu tinv ([0,025 0,975], 2) a přiřaďte proměnné t. Použijte příkaz var (NormalBloodVessels) a var (MoyaMoyaBloodVessels) a přiřaďte je k proměnným pro výpočet odchylek obou datových sad.

Zkontrolujte, zda jsou odchylky téměř stejné nebo ne. To provedete vytvořením příkazu if/else pomocí příkazu if, else. Pro podmínku v příkazu if napište A / B == [0,25: 4], kde A je proměnná, která odpovídá odchylce normálních cév a B je proměnná, která odpovídá odchylce krevních cév Moyamoya. 0,25 a 4 vycházejí z obecného odhadu pro určení, zda jsou odchylky stejné nebo ne. Poté spusťte t test dvou vzorků s [h, p] = ttest2 (A, B, 0,05, 'both', 'equal'), přičemž A a B jsou stejné proměnné, jak bylo uvedeno výše. Pro příkaz else použijte [h, p] = ttest2 (A, B, 0,05, 'both', 'nerovný') pro spuštění t testu dvou vzorků v případě, že se odchylky nerovná. Ukončete příkaz if/else. Tím se vypočítá p.

Vytvořte příkaz if/else, který zobrazí závěr na základě hodnoty p. Podmínka pro příkaz if bude p> 0,05. Protože se nám obvykle nedaří odmítnout nulovou hypotézu, když je hodnota p větší než 0,05, použijte příkaz disp ('X') k zobrazení „Protože hodnota p je větší než 0,05, neodmítneme nulovou hypotézu“a „ Proto odmítáme odmítnout, že množství krevních cév normálního mozku se rovná množství mozku s Moyamoyovou nemocí. “V příkazu else, protože obvykle odmítáme nulovou hypotézu, když je hodnota p nižší než 0,05, použijte příkaz disp ('X') k zobrazení "Protože hodnota p je menší než 0,05, odmítáme nulovou hypotézu" a " Proto odmítáme odmítnout, že množství krevních cév normálního mozku není stejné jako v mozku s Moyamoyovou nemocí. “Ukončete příkaz if/else.