Pagproseso ng Imahe ng Moyamoya: 8 Hakbang
Pagproseso ng Imahe ng Moyamoya: 8 Hakbang
Anonim
Pagproseso ng Imahe ng Moyamoya
Pagproseso ng Imahe ng Moyamoya

Ang Moyamoya, "puff ng usok," ay isang bihirang sakit na sanhi ng pagbara ng mga ugat sa basal ganglia, na isang lugar sa base ng utak. Ang sakit ay isang progresibong cerebrovascular disease na karamihan ay nakakaapekto sa mga bata. Ang mga sintomas ng moyamoya ay nagsasama ng paunang stroke, pare-pareho ang mga mini-stroke, kahinaan ng kalamnan, pagkalumpo, o mga seizure bilang resulta ng pagsulong ng mga arterya. Nang walang paggamot, ang moyamoya ay magdudulot ng mga problema sa pagsasalita, kapansanan sa pandama, at nasirang kamalayan. Sa aming proyekto, gagamitin namin ang MATLAB upang maiproseso ang isang imahe ng MRI o MRA gamit ang iba't ibang mga filter upang mabawasan ang ingay sa loob ng imahe upang hanapin ang apektadong lugar. Bilang karagdagan, gagamitin namin ang isang pagpapahusay ng tampok upang mas eksaktong makita ang mga apektadong lugar. Bukod dito, magpapatakbo kami ng isang independiyenteng mga sample na t-test upang matukoy kung mayroong isang makabuluhang pagkakaiba sa pagitan ng dami ng mga daluyan ng dugo sa isang normal na utak kumpara sa isang utak na apektado ng moyamoya.

Hakbang 1: Maghanap ng MRI at MRA Scan ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya

Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya
Maghanap ng MRI at MRA Scans ng isang Normal na Utak at isang Utak na Apektado kay Moyamoya

Ang mga imaheng ito ay ang mga pag-scan na ginamit namin para sa proyekto na nakita namin sa online. Ang dalawang imahe na may mga daluyan ng dugo na matatagpuan sa gitna ay mga pag-scan ng MRA, habang ang dalawa pang mga imahe ay mga pag-scan ng MRI.

Ang mga sumusunod na link ay kung saan matatagpuan ang mga imaheng ito:

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

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

Hakbang 2: Mag-load ng Mga Larawan Sa MATLAB at Magtalaga ng Mga Imahe sa isang Variable upang Maipakita ang Mga Larawan

Mag-load ng Mga Larawan Sa MATLAB at Magtalaga ng Mga Imahe sa isang Variable upang Maipakita ang Mga Larawan
Mag-load ng Mga Larawan Sa MATLAB at Magtalaga ng Mga Imahe sa isang Variable upang Maipakita ang Mga Larawan

Upang simulan ang proseso, magsimula sa pamamagitan ng pag-clear sa window ng utos, isara ang lahat ng mga posibleng mga numero at grap na maaaring bukas at limasin ang mga variable na naitalaga na sa iyong workspace.

Pagkatapos, lumikha ng isang para sa loop mula 1 hanggang 2 gamit ang command i = [1: 2]

Pagkatapos, i-load ang mga imahe ng MRA gamit ang command imread (sprintf ('filename%.filetype', i)) upang basahin ang mga imahe mula sa mga file na tinukoy ng pangalan ng file na sinusundan ng bilang na ginamit para sa loop gamit ang sprintf para sa paglo-load ng batch at italaga ito sa isang variable.

Pagkatapos upang ipakita ang imahe sa isang figure, gamitin ang command imshow (I).

Upang magtalaga ng isang kulay-abo na colormap, gamitin ang command colormap (grey).

Upang ganap na matanggal ang kulay at i-convert ang 3D matrix para sa mga imahe sa 2D, gamitin ang command rgb2gray (I) at italaga ito sa isang hiwalay na variable.

Pagkatapos i-load ang mga imahe ng MRI sa pamamagitan ng paggamit ng utos na dating nakasaad o imread (sprintf ('filename%.filetype', i)) at italaga ito sa isang bagong variable

Ulitin ang utos ng rgb2gray gamit ang bagong variable na ginamit para sa mga imahe ng MRI.

Kung kinakailangan, maaari mong baguhin ang laki ng isang imahe gamit ang imresize ng utos (A, scale) at magtalaga sa isang hiwalay na variable.

Hakbang 3: Pagandahin ang Mga Pinahabang Istraktura sa Imaheng Intensity Sa Pag-filter ng Multiscale

Pagandahin ang Mga Pinahabang Istraktura sa Imaheng Intensity Sa Pag-filter ng Multiscale
Pagandahin ang Mga Pinahabang Istraktura sa Imaheng Intensity Sa Pag-filter ng Multiscale

Gamit ang isang bagong variable, gamitin ang command fibermetric (A) upang mapahusay ang mga tubular na istraktura ng mga imahe

Gamit ang nakaraang variable, gamitin ang command histeq (B) upang mapahusay ang mga pagkakapantay-pantay ng histogram sa pamamagitan ng pagbago ng tindi ng mga imahe at italaga ito sa isang bagong variable.

Ipakita ang histogram gamit ang command imhist (B)

Lumikha ng isang bagong variable upang lumikha ng isang threshold para sa filter. Sa kasong ito italaga ang nakaraang variable> 0.875, pagsala ng intensity ng pixel sa ilalim ng halagang 0.875

Pagkatapos, lumikha ng isang bagong figure at gamitin ang command imshow (A) upang ipakita ang bagong nai-filter na imahe.

Hakbang 4: Patakbuhin ang isang 2D Median Filter

Patakbuhin ang isang 2D Median Filter
Patakbuhin ang isang 2D Median Filter

Gamit ang command medfilt2 (A, [m n]), magpatakbo ng isang 2D median filter, kung saan naglalaman ang bawat output pixel ng median na halaga sa mxn na hangganan sa paligid ng kani-kanilang pixel sa input na imahe.

Lumikha ng isang bagong pigura at gumamit ng imshow (A) upang maipakita ang median na na-filter na imahe.

Hakbang 5: Maskara ang Larawan

Maskara ang Larawan
Maskara ang Larawan

Gamit ang median na na-filter na imahe, gamitin ang utos na [labeledImage, numberOfBlots] = bwlabel (A) upang bilangin ang bilang ng mga puting blot sa imahe

Pagkatapos, gamitin ang mga estado ng props function na estado = regionprops (may label naImage, 'Area') upang makalkula ang mga lugar ng bawat blot o daluyan ng dugo

Italaga ang lahat ng mga lugar sa isang variable

Pagkatapos ay gumagamit ng isa pang variable, bilangin ang bilang ng mga blot na lumampas sa 50 pixel

Pagkatapos, pag-uri-uriin ang anumang mga blotter na mas mababa sa 50 mga pixel sa pababang pagkakasunud-sunod gamit ang utos [sortedAreas, sortedIndicies] = pag-uuri (Mga Lugar, 'pagbaba')

Pagkatapos, gamit ang isa pang variable, gamitin ang command ismember (labeledImage, sortedIndicies (1: numberToExtract)) upang ibalik ang isang hanay na may mga elemento ng labeledImage ay matatagpuan sa mga nakaayos naIndicies mula sa bilang 1 hanggang sa bilang ng mga daluyan ng dugo upang maibalik ang isang lohikal na 1 (totoo) o isang lohikal na 0 (hindi totoo).

Gamit ang variable sa nakaraang hakbang, hanapin ang mga puntos na totoo (halagang> 0) at lumikha ng isang lohikal na array upang makagawa ng isang binary na imahe at italaga ito sa isang bagong variable.

Lumikha ng isang bagong pigura at gumamit ng imshow (A) ng bagong imaheng binary.

Pagkatapos, baligtarin ang imahe gamit ang kawalan ng utos (A) at italaga ito sa ibang variable.

Upang lumikha ng isang nakamaskara na imahe, gumamit ng isang bagong variable na may pagbabago ng laki ng utos. * Uint8 (invertedimage)

Lumikha ng isang bagong figure at gumamit ng imshow (A) upang ipakita ang masked na imahe.

Upang wakasan ang buong code, siguraduhing gamitin ang command na 'end' upang wakasan ang buong para sa loop

Hakbang 6: Piliin ang MRA Scan para sa Pagsusulit sa Istatistika

Piliin ang MRA Scan para sa Pagsusulit sa Istatistika
Piliin ang MRA Scan para sa Pagsusulit sa Istatistika
Piliin ang MRA Scan para sa Pagsusulit sa Istatistika
Piliin ang MRA Scan para sa Pagsusulit sa Istatistika
Piliin ang MRA Scan para sa Pagsusulit sa Istatistika
Piliin ang MRA Scan para sa Pagsusulit sa Istatistika

Upang maghanda para sa pagsusuri sa istatistika, piliin ang mga pag-scan ng MRA na gagamitin para sa mga independiyenteng sample na t-test. Dahil ang aming dalawang mga sample ay magiging utak na apektado ng Moyamoya, at normal na utak, pumili ng disenteng halaga ng mga pag-scan ng MRA ng bawat pangkat.

Hakbang 7: Kalkulahin ang Lugar ng Mga Darahyan ng Dugo sa Paghahanda para sa Pagsusulit sa Istatistika

Kalkulahin ang Lugar ng Mga Dugo ng Dugo sa Paghahanda para sa Pagsusulit sa Istatistika
Kalkulahin ang Lugar ng Mga Dugo ng Dugo sa Paghahanda para sa Pagsusulit sa Istatistika

Ang pagsusuri sa istatistika ay magtutuon sa haba o dami ng mga daluyan ng dugo na ipinakita sa mga pag-scan ng MRA. Kaya, dapat nating kalkulahin ang lugar ng mga daluyan ng dugo bago ihambing.

Magsimula sa pamamagitan ng pag-filter ng MRA ng normal na talino at pagkalkula ng dami ng mga daluyan ng dugo. Upang magawa ito, magpatakbo ng isang para sa loop. Dahil mayroong tatlong mga imahe, ang kundisyon ay i = [1: 3].

Buksan ang imahe gamit ang imread command at italaga ito sa isang variable.

Susunod, lumikha ng isang kung / ibang pahayag na may kung, ibang utos. Para sa pahayag kung, gamitin ang laki ng utos (A, 3) == 3, kung saan ang A ay ang variable na ginamit upang buksan ang imahe, upang lumikha ng isang pahayag kung kailan ang pangatlong dimensyon ng array ay 3. Pagkatapos ay i-convert ang imahe sa 2D at mapupuksa ang kulay gamit ang command rgb2gray (A) at italaga ito sa isang bagong variable. Gamitin ang utos na imresize (A, [m n]) upang baguhin ang laki ng imahe. Sa kasong ito, pinalitan namin ng laki ang mga imahe sa 1024 x 1024 matrix. Upang mapahusay ang mga tubular na istraktura ng imahe, gamitin muli ang utos na fibermetric, at italaga ito sa isang bagong variable.

Ang sumusunod ay para sa ibang pahayag. Kung ang imahe ay hindi isang 3D matrix, nais naming laktawan ang conversion. Gawin ang pareho sa kung pahayag, ngunit nang walang utos ng rgb2gray (A).

Lumikha ng isang bagong variable, itatakda itong katumbas ng variable mula sa fibermetric na hakbang na mas malaki sa 0.15. Ito ang thresholds ng imahe para sa mga intensidad na higit sa 0.15.

Uulitin namin ang mga linya ng mga code mula sa mga hakbang 4 at 5 ng itinuturo mula sa median na linya ng filter hanggang sa linya ng imshow (I). Pagkatapos, gamitin ang command sum (I (:)) upang magdagdag ng lahat ng mga pixel na bumubuo sa mga daluyan ng dugo, at italaga ito sa isang hiwalay na variable. Pangalanan ang isang bagong variable na NormalBloodVessels (i) at itakda itong katumbas ng variable mula sa sum (I (:)) na utos. Dinadagdag nito ang data sa matrix.

Tapusin ang loop at ulitin ngunit para sa mga MRA ng utak na apektado ng Moyamoya. Pangalanan ang variable sa dulo ng MoyaMoyaBloodVessels (i) upang hindi ito malito sa mga normal na utak ng MRA.

Hakbang 8: Patakbuhin ang isang Independent Sample T-test

Patakbuhin ang isang Independent Sample T-test
Patakbuhin ang isang Independent Sample T-test

Dahil mayroong dalawang mga independiyenteng sample, at isang maliit na populasyon, magpatakbo ng isang independiyenteng mga sample na t-test.

Lumikha at pangalanan ang isang pagpapaandar na nagpapatakbo ng isang independiyenteng mga sample na t-test upang matukoy kung ang halaga ng mga daluyan ng dugo sa MRA ng normal na talino ay makabuluhang katumbas o hindi sa mga MRA ng utak na naapektuhan ng Moyamoya.

Ipakita ang itinakdang haka-haka para sa pagsubok sa pamamagitan ng paggamit ng command disp ('X'). Sa unang linya, ipakita, "Mga hypotype para sa dalawang sample na t pagsubok." Sa pangalawang linya, ipakita, "H0 = Ang dami ng mga daluyan ng dugo ng isang normal na utak ay katumbas ng dami ng mga daluyan ng dugo ng isang utak na may sakit na Moyamoya," upang sabihin ang null na teorya. Sa ikatlong linya, ipakita, "HA = Ang dami ng mga daluyan ng dugo ng isang normal na utak ay hindi katumbas ng dami ng mga daluyan ng dugo ng utak na may sakit na Moyamoya." upang mailahad ang kahaliling teorya.

Gamit ang isang 95% agwat ng kumpiyansa at isang sample na laki ng 3, kalkulahin ang t iskor sa pamamagitan ng paggamit ng command tinv ([0.025 0.975], 2) at italaga sa variable t. Gumamit ng command var (NormalBloodVessels) at var (MoyaMoyaBloodVessels) at italaga ang mga ito sa mga variable upang makalkula ang mga pagkakaiba-iba ng parehong mga set ng data.

Suriin kung ang mga pagkakaiba-iba ay malapit sa pantay o hindi. Gawin ito sa pamamagitan ng paglikha ng isang kung / ibang pahayag na may kung, ibang utos. Para sa kundisyon sa kung pahayag, isulat ang A / B == [0.25: 4], kung saan ang A ay ang variable na tumutukoy sa pagkakaiba-iba ng mga normal na daluyan ng dugo at ang B ay ang variable na tumutukoy sa pagkakaiba-iba ng mga daluyan ng dugo ng Moyamoya. Ang 0.25 at 4 ay nagmula sa isang pangkalahatang pagtatantya para sa pagtukoy kung ang mga pagkakaiba-iba ay pantay o hindi. Pagkatapos ay patakbuhin ang dalawang sample na t pagsubok na may [h, p] = ttest2 (A, B, 0.05, 'pareho', 'pantay'), na may A at B na magkatulad na mga variable tulad ng nabanggit dati. Para sa iba pang pahayag, gamitin ang [h, p] = ttest2 (A, B, 0.05, 'pareho', 'hindi pantay') upang magpatakbo ng isang dalawang sample na t pagsubok sa kaso kung saan ang mga pagkakaiba-iba ay hindi pantay. Tapusin ang pahayag kung / iba pa. Kalkulahin nito ang p.

Lumikha ng isang pahayag kung / iba pa na magpapakita ng isang konklusyon batay sa halaga ng p. Ang kundisyon para sa kung pahayag ay magiging p> 0.05. Dahil karaniwang nabigo kaming tanggihan ang null na teorya kung ang halaga ng p ay mas malaki sa 0.05, gamitin ang utos na disp ('X') upang ipakita ang "Dahil ang halaga ng p ay mas malaki sa 0.05 nabigo kaming tanggihan ang null na teorya," at " Samakatuwid nabigo kaming tanggihan na ang dami ng mga daluyan ng dugo ng isang normal na utak ay katumbas ng utak na may sakit na Moyamoya. " Sa ibang pahayag, dahil karaniwang tinatanggihan namin ang null na teorya kapag ang halaga ng p ay nasa ilalim ng 0.05, gamitin ang utos na disp ('X') upang ipakita ang "Dahil ang halaga ng p ay mas mababa sa 0.05 tinanggihan namin ang null na teorya," at " Samakatuwid nabigo kaming tanggihan na ang dami ng mga daluyan ng dugo ng isang normal na utak na hindi katumbas ng utak na may sakit na Moyamoya. " Tapusin ang pahayag kung / iba pa.