Moyamoya bildbehandling: 8 steg
Moyamoya bildbehandling: 8 steg
Anonim
Moyamoya bildbehandling
Moyamoya bildbehandling

Moyamoya, "rökpuff", är en sällsynt sjukdom som orsakas av blockering av artärer vid basalganglierna, som är ett område vid hjärnans bas. Sjukdomen är en progressiv cerebrovaskulär sjukdom som oftast drabbar barn. Symtom på moyamoya inkluderar en initial stroke, konstanta minislag, muskelsvaghet, förlamning eller anfall som en följd av progressiv förträngning av artärer. Utan behandling kommer moyamoya att orsaka problem med tal, sensorisk nedsättning och skadat medvetande. I vårt projekt kommer vi att använda MATLAB för att förbehandla en MR- eller MRA -bild med hjälp av olika filter för att minska brus i bilden för att lokalisera det drabbade området. Dessutom kommer vi att använda en funktionsförbättring för att lokalisera de drabbade områdena mer exakt. Dessutom kommer vi att köra ett oberoende t-test för att avgöra om det finns en signifikant skillnad mellan mängden blodkärl i en normal hjärna jämfört med en hjärna som påverkas av moyamoya.

Steg 1: Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya

Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya
Hitta MR- och MRA -skanningar av en normal hjärna och en hjärna som påverkas av Moyamoya

Dessa bilder är de skanningar vi använde för projektet som vi hittade online. De två bilderna med blodkärlen i mitten är MRA -skanningar, medan de andra två bilderna är MR -skanningar.

Följande länkar är där dessa bilder finns:

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

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

Steg 2: Ladda bilder till MATLAB och tilldela bilder till en variabel för att visa bilder

Ladda bilder till MATLAB och tilldela bilder till en variabel för att visa bilder
Ladda bilder till MATLAB och tilldela bilder till en variabel för att visa bilder

För att börja processen, börja med att rensa kommandofönstret, stäng alla möjliga figurer och grafer som redan kan vara öppna och rensa variabler som redan har tilldelats i din arbetsyta.

Skapa sedan en for loop från 1 till 2 med kommandot i = [1: 2]

Ladda sedan MRA -bilderna med kommandot imread (sprintf ('filnamn%.filetype', i)) för att läsa bilderna från filerna som anges av filnamnet följt av det nummer som används för slingan med sprintf för satsning och tilldelning det till en variabel.

Använd sedan kommandot imshow (I) för att visa bilden i en figur.

För att tilldela en grå färgkarta, använd kommandot kolormapp (grå).

För att helt eliminera färg och konvertera 3D -matrisen för bilderna till 2D, använd kommandot rgb2gray (I) och tilldela den till en separat variabel.

Ladda sedan MR -bilderna med kommandot som tidigare angetts eller imread (sprintf ('filnamn%.filetype', i)) och tilldela det till en ny variabel

Upprepa kommandot rgb2gray med den nya variabeln som används för MR -bilderna.

Om det behövs kan du ändra storlek på en bild med kommandot imresize (A, skala) och tilldela en separat variabel.

Steg 3: Förbättra långsträckta strukturer i intensitetsbild med multiskala filtrering

Förbättra långsträckta strukturer i intensitetsbild med multiskala filtrering
Förbättra långsträckta strukturer i intensitetsbild med multiskala filtrering

Använd en ny variabel, använd kommandot fibermetrisk (A) för att förbättra de rörformiga strukturerna i bilderna

Med den föregående variabeln använder du kommandot histeq (B) för att förbättra histogramutjämningarna genom att omvandla bildens intensitet och tilldela den till en ny variabel.

Visa histogrammet med kommandot imhist (B)

Skapa en ny variabel för att skapa en tröskel för filtret. I det här fallet tilldela den tidigare variabeln> 0,875, filtrera bort pixelintensiteten under värdet 0,875

Skapa sedan en ny siffra och använd kommandot imshow (A) för att visa den nya filtrerade bilden.

Steg 4: Kör ett 2D -medianfilter

Kör ett 2D -medianfilter
Kör ett 2D -medianfilter

Använd kommandot medfilt2 (A, [m n]), kör ett 2D -medianfilter, där varje utgångspixel innehåller medianvärdet i mxn -gränsen runt respektive pixel i inmatningsbilden.

Skapa en ny siffra och använd imshow (A) för att visa medianfiltrerad bild.

Steg 5: Maskera bilden

Maskera bilden
Maskera bilden

Använd medianfiltrerad bild, använd kommandot [labeledImage, numberOfBlots] = bwlabel (A) för att räkna antalet vita fläckar i bilden

Använd sedan regionstödsfunktionstillstånden = regionprops (labeledImage, 'Area') för att beräkna ytorna på varje blot eller blodkärl

Tilldela alla områden till en variabel

Använd sedan en annan variabel och räkna antalet blots som överstiger 50 pixlar

Sortera sedan bort alla blots som är under 50 pixlar i fallande ordning med kommandot [sortedAreas, sortedIndicies] = sort (Areas, 'descend')

Använd sedan en annan variabel med kommandot ismember (labeledImage, sortedIndicies (1: numberToExtract)) för att returnera en array med element av labeledImage som finns i sortedIndicies från nummer 1 till antalet blodkärl för att returnera en logisk 1 (true) eller ett logiskt 0 (falskt).

Med variabeln i föregående steg, hitta de punkter som är sanna (värden> 0) och skapa en logisk array för att skapa en binär bild och tilldela den till en ny variabel.

Skapa en ny figur och använd imshow (A) den nya binära bilden.

Vänd sedan bilden med kommandoimplementering (A) och tilldela den till en annan variabel.

För att skapa en maskerad bild, använd en ny variabel med kommandot resizedimage.*Uint8 (invertedimage)

Skapa en ny figur och använd imshow (A) för att visa maskerad bild.

För att avsluta hela koden, var noga med att använda kommandot 'end' för att avsluta hela for loop

Steg 6: Välj MRA -skanningar för statistisk testning

Välj MRA -skanningar för statistisk testning
Välj MRA -skanningar för statistisk testning
Välj MRA -skanningar för statistisk testning
Välj MRA -skanningar för statistisk testning
Välj MRA -skanningar för statistisk testning
Välj MRA -skanningar för statistisk testning

För att förbereda dig för statistisk testning, välj de MRA-skanningar som ska användas för de oberoende proverna t-test. Eftersom våra två prover kommer att vara hjärnor som påverkas av Moyamoya och vanliga hjärnor, välj en anständig mängd MRA -skanningar för varje grupp.

Steg 7: Beräkna området för blodkärl som förberedelse för statistisk testning

Beräkna området för blodkärl under förberedelse för statistisk testning
Beräkna området för blodkärl under förberedelse för statistisk testning

Det statistiska testet kommer att fokusera på längden eller mängden blodkärl som visas på MRA -skanningarna. Således måste vi beräkna blodkärlens yta före jämförelse.

Börja med att filtrera MRA för normala hjärnor och beräkna mängden blodkärl. För att göra detta, kör en for loop. Eftersom det finns tre bilder blir villkoret i = [1: 3].

Öppna bilden med kommandot imread och tilldela den till en variabel.

Skapa sedan en if/else -sats med kommandot if, else. För if -satsen använder du kommandostorleken (A, 3) == 3, där A är variabeln som används för att öppna bilden, för att skapa en if -sats för när den tredje dimensionen i matrisen är 3. Konvertera sedan bilden till 2D och bli av med färg med kommandot rgb2gray (A) och tilldela den till en ny variabel. Använd kommandot imresize (A, [m n]) för att ändra storlek på bilden. I det här fallet ändrade vi bilderna till 1024 x 1024 matris. För att förbättra bildens rörformade strukturer, använd det fibermetriska kommandot igen och tilldela den till en ny variabel.

Följande är för annat uttalande. Om bilden inte är en 3D -matris vill vi hoppa över konvertering. Gör samma sak som if -satsen, men utan kommandot rgb2gray (A).

Skapa en ny variabel och ställ in den lika med variabeln från det fibermetriska steget större än 0,15. Detta trösklar bilden för intensiteter större än 0,15.

Vi kommer att upprepa koderaderna från steg 4 och 5 i instruktionen från medianfilterlinjen till imshow (I) -raden. Använd sedan kommandosumman (I (:)) för att lägga till alla pixlar som utgör blodkärl och tilldela den till en separat variabel. Namnge en ny variabel NormalBloodVessels (i) och ställ den lika med variabeln från summan (I (:)) kommando. Detta lägger till data till matrisen.

Avsluta slingan och upprepa men för MRA i hjärnor som påverkas av Moyamoya. Namnge variabeln i slutet MoyaMoyaBloodVessels (i) för att inte förväxla den med de normala hjärnans MRA.

Steg 8: Kör ett Independent Samples T-test

Kör ett Independent Samples T-test
Kör ett Independent Samples T-test

Eftersom det finns två oberoende prover och en liten population, kör ett oberoende prover t-test.

Skapa och namnge en funktion som kör ett oberoende prov-t-test för att avgöra om mängden blodkärl i MRA för normala hjärnor är väsentligt lika med eller för MRA för hjärnor som påverkas av Moyamoya.

Visa hypotesen för testet med kommandot disp ('X'). På första raden visas "Hypoteser för två prov t -test." På den andra raden visas "H0 = Mängden blodkärl i en normal hjärna är lika med mängden blodkärl i en hjärna med Moyamoya sjukdom", för att ange nollhypotesen. På den tredje raden visas "HA = Mängden blodkärl i en normal hjärna motsvarar inte mängden blodkärl i en hjärna med Moyamoya sjukdom." att ange den alternativa hypotesen.

Använd ett 95% konfidensintervall och en urvalsstorlek på 3, beräkna t -poängen med kommandot tinv ([0.025 0.975], 2) och tilldela variabel t. Använd kommandot var (NormalBloodVessels) och var (MoyaMoyaBloodVessels) och tilldela dem till variabler för att beräkna avvikelserna för båda datamängderna.

Kontrollera om avvikelserna är nära lika eller inte. Gör detta genom att skapa en if/else -sats med kommandot if, else. För villkoret i if -satsen, skriv A / B == [0.25: 4], där A är variabeln som svarar för variansen av normala blodkärl och B är variabeln som står för variansen för Moyamoya -blodkärl. 0,25 och 4 kommer från en allmän uppskattning för att avgöra om avvikelser är lika eller inte. Kör sedan testet med två prov t med [h, p] = ttest2 (A, B, 0,05, "båda", "lika"), med A och B som samma variabler som nämnts tidigare. För den andra satsen, använd [h, p] = ttest2 (A, B, 0,05, "båda", "ojämlika") för att köra ett tvåprovstest i fallet där avvikelserna inte är lika. Avsluta if/else -uttalandet. Detta kommer att beräkna p.

Skapa en if/else -sats som visar en slutsats baserad på värdet p. Villkoret för if -satsen kommer att vara p> 0,05. Eftersom vi vanligtvis misslyckas med att avvisa nollhypotesen när värdet på p är större än 0,05 använder du kommandot disp ('X') för att visa "Eftersom p -värdet är större än 0,05 misslyckas vi med att förkasta nollhypotesen" och " Därför misslyckas vi med att mängden blodkärl i en normal hjärna är lika stor som i en hjärna med Moyamoya -sjukdom. " I den andra satsen, eftersom vi vanligtvis avvisar nollhypotesen när värdet på p är under 0,05, använd kommandot disp ('X') för att visa "Eftersom p -värdet är mindre än 0,05 förkastar vi nollhypotesen" och " Därför misslyckas vi med att mängden blodkärl i en normal hjärna inte är lika stor som i en hjärna med Moyamoya -sjukdom. " Avsluta if/else -uttalandet.