Orodha ya maudhui:
- Hatua ya 1: Hatua ya 1: Inapakia Picha
- Hatua ya 2: Hatua ya 2: Kuchuja kelele na Histogram
- Hatua ya 3: Hatua ya 3: Kuweka Vizingiti
- Hatua ya 4: Kuunda GUI
- Hatua ya 5: Maonyesho ya Video
Video: Ugawaji wa Mapafu ya MatLab: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:48
Na: Phuc Lam, Paul Yeung, Eric Reyes
Kukubali kuwa makosa katika sehemu ya mapafu yatatoa habari ya uwongo juu ya utambuzi wa eneo la ugonjwa na inaweza kuathiri moja kwa moja mchakato wa utambuzi. Mbinu za kisasa za msaada wa kompyuta zilishindwa kutoa matokeo sahihi wakati magonjwa ya mapafu yana maumbo yenye changamoto. Maumbo haya yasiyo ya kawaida yanaweza kusababishwa na athari za kuambatana, ujumuishaji, n.k Kutumia mbinu ya kugawanya mapafu, ambayo mipaka ya mapafu imetengwa na tishu zinazozunguka za kifua, programu yetu inaweza kutambua mipaka na vizingiti vya pembejeo vya mtumiaji ili kutoa maoni yanayoweza kubadilishwa kikamilifu ya maumbo ya mapafu, Madhumuni ya mradi huu wa MatLab ni kuunda programu ya kugawanya mapafu inayoweza kutumiwa na mtumiaji ili kugundua hali ya ugonjwa wa picha za X-ray za mapafu. Lengo letu ni kuunda njia bora zaidi ya kuonyesha na kutambua mapafu yasiyo ya kawaida ili kuwapa madaktari na wataalamu wa radiolojia njia ya kuaminika zaidi ya kugundua magonjwa ya mapafu. Kutumia zana ya mtengenezaji wa programu katika MatLab, programu hiyo imeundwa kufanya kazi haswa na eksirei ya kifua na skanati za kompyuta za kompyuta (CT), lakini pia inajaribiwa kufanya kazi na skan za MRI.
Maagizo hapa chini yana mbinu yetu ya kuchuja kelele (kichujio cha chini cha Wiener) pamoja na kizingiti cha picha (kwa kutumia histogram ya kiwango cha picha ya kijivu) na kutumia gradient ya morpholojia (tofauti kati ya upanuzi na mmomonyoko wa picha) kwa tambua mkoa unaovutia. Maagizo kisha yataelezea jinsi tunavyounganisha vitu vyote kwenye kiolesura cha mtumiaji wa picha (GUI).
Kumbuka:
1). Mradi huu umeongozwa na jarida la utafiti: "Ugawaji na Uchambuzi wa Picha ya Mapafu yasiyo ya kawaida huko CT: Njia za Sasa, Changamoto, na Mwelekeo wa Baadaye". Ambayo inaweza kupatikana hapa
2). Tunatumia picha za X-ray kutoka NIH: Kituo cha Kliniki. Kiungo kinaweza kupatikana hapa
3). Msaada wa mbuni wa programu unaweza kupatikana hapa
4). Kabla ya kutumia nambari: unahitaji kubadilisha njia ya Dir (katika mstari wa 34) hadi saraka yako ya faili na aina ya picha (mstari wa 35) (tunachambua *.png).
Hatua ya 1: Hatua ya 1: Inapakia Picha
Hatua hii itakuonyesha picha ya asili kwa kiwango cha kijivu. Badilisha 'jina_ la_picha.png' na jina la picha yako
wazi; clc; funga zote;
%% Inapakia picha
raw_x_ray = 'jina_ la_picha.png';
I = soma (ghafi_x_ray);
takwimu (101);
onyesha (I);
colormap (kijivu);
kichwa ('Grayscale X-Ray');
Hatua ya 2: Hatua ya 2: Kuchuja kelele na Histogram
Ili kupata kizingiti cha picha ya kijivu, tunaangalia histogram ili kuona ikiwa kuna njia tofauti. Soma zaidi hapa
Mimi = wiener2 (mimi, [5 5]);
takwimu (102);
sehemu ndogo (2, 1, 1);
onyesha (I);
sehemu ndogo (2, 1, 2);
imhistia (I, 256);
Hatua ya 3: Hatua ya 3: Kuweka Vizingiti
Hatua hii hukuruhusu kuweka kizingiti kulingana na histogram. MorphologicalGradient itaangazia mkoa wa kupendeza kwa nyekundu, na vielelezo vya kazi hufunika picha iliyoonyeshwa na iliyochujwa ya mapafu kwenye nyekundu.
Kwa kutumia viunga vya mkoa, tunaweza kusawazisha safu za uthabiti na kuzipanga kwa kushuka. Ifuatayo ninaweka picha ya sclae kijivu na utumie njia ya upendeleo wa morphlogical na mLoren Shurasking kuonyesha mkoa wa riba (ROI). Hatua inayofuata ni kugeuza picha ili ROI ya mapafu iwe nyeupe kwenye asili nyeusi. Ninatumia showMaskAsOverlay ya kazi kuonyesha 2 mask. Kumbuka: nambari imeongozwa kutoka kwa Loren Shure, kiunga.
Lasly, ninaunda muhtasari mwekundu kwa kutumia mipaka ya bwb na kufunika picha ya kichungi na mipaka.
a_thresh = I> = 172; % weka kizingiti hiki
[labelImage, numberOfBlobs] = bwlabel (a_thresh);
props = kanda ya mkoa (a_thresh, 'all');
IliyopangwaSolidity = aina ([props. Solidity], 'shuka');
SB = Iliyopangwa Ukali (1);
ikiwa SB == 1% SB inakubali tu uthabiti == 1 chuja mifupa
binaryImage = imbinarize (I); takwimu (103);
imshow (binaryImage); colormap (kijivu);
SE = safu ('mraba', 3);
morphologicalGradient = imsubtract (imdilate (binaryImage, SE), imerode (binaryImage, SE));
mask = imbinarize (morphologicalGradient, 0.03);
SE = safu ('mraba', 2);
mask = imclose (mask, SE);
mask = kujaza (mask, 'mashimo');
mask = bwareafilt (mask, 2); Idadi ya udhibiti wa onyesho la eneo
notMask = ~ kinyago;
mask = mask | bwpropfilt (sioMask, 'Area', [-Inf, 5000 - eps (5000)]);
onyeshaMaskAsOverlay (0.5, mask, 'r'); % lazima upakue programu / kazi showMaskAsOverlay
BW2 = kujaza (binaryImage, 'mashimo');
picha mpya = BW2;
picha mpya (~ mask) = 0; % geuza nyuma na mashimo
B = mipaka (picha mpya); % inaweza kukubali vipimo 2 tu
takwimu (104);
imshow (picha mpya);
subiri
mipaka (B);
mwisho
Hatua ya 4: Kuunda GUI
Sasa, tunaunganisha nambari ya awali kwenye programu ya MATLAB. Fungua Mbuni wa App katika MATLAB (Mpya> App). Kwanza, tunabuni kiolesura kwa kubofya-kushikilia-na kuvuta shoka tatu kwenye nafasi ya kazi ya kituo. Ifuatayo, tunabofya-kushikilia-buruta vifungo viwili, uwanja mmoja wa kuhariri (maandishi), uwanja mmoja wa kuhariri (nambari), kitelezi kimoja, na menyu moja ya kushuka. Shoka mbili kila moja itaonyesha hakikisho na kuchambua picha, na shoka za tatu zitaonyesha histogram ya saizi kwa picha ya hakikisho "iliyochaguliwa". Sehemu ya kuhariri (maandishi) itaonyesha njia ya faili ya picha iliyochaguliwa, na uwanja wa kuhariri (nambari) utaonyesha eneo la pikseli lililogunduliwa la mapafu.
Sasa badilisha kutoka kwa mtazamo wa muundo kuwa mtazamo wa nambari katika Mbuni wa App. Ingiza msimbo nambari ya mali kwa kubofya kitufe nyekundu cha "Mali" na ishara ya kuongeza nayo. Anzisha mali mimi, kizingiti, na mikoaToExtract kama ilivyo kwenye nambari iliyotolewa hapa chini. Ifuatayo, bonyeza kitufe cha kulia upande wa juu wa kulia wa nafasi ya kazi (Kivinjari cha Sehemu) na uende kutoka kwa Callbacks> Nenda kwa… callback. Ongeza nambari ya "kazi SelectImageButtonPushed (programu, tukio)." Nambari hii hukuruhusu kuchagua picha ya kuchambua kutoka kwa kompyuta yako kwa kutumia uigetfile. Baada ya kuchagua picha, picha ya hakikisho itaonekana chini ya shoka ikifuatana na histogram. Kisha, bonyeza-bonyeza kitufe kingine na urudia utaratibu huo huo ili kuunda kazi ya kupiga tena simu.
Ongeza kwenye nambari chini ya "kazi AnalyzeImageButtonPushed (programu, tukio)." Nambari hii itafanya uhesabuji wa pikseli na kugundua blob kwenye picha ya hakikisho kwenye kitufe cha kuchambua picha (yoyote ambayo umebofya kulia kwa nambari hii). Baada ya kupanga vifungo, sasa tutapanga slider na menyu ya kushuka. Bonyeza kulia kitelezi, unda kazi ya kupiga tena simu na ongeza nambari iliyo chini ya "kazi FilterThresholdSliderValueChanged (programu, tukio)" hadi mwisho. Hii inaruhusu kitelezi kurekebisha kizingiti cha kiwango cha kijivu.
Unda kazi ya kupiga tena simu kwa menyu kunjuzi, na ongeza kwenye nambari iliyo chini ya "kazi AreastoExtractDropDownValueChanged (programu, tukio)" kuruhusu menyu ya kushuka kurekebisha idadi ya matone yaliyoonyeshwa kwenye shoka za picha zilizochanganuliwa. Sasa, bofya kila kitu kwenye Kivinjari cha Vipengele na ubadilishe mali zao upendavyo, kama vile kubadilisha majina ya vyombo, kuondoa shoka, na kubadilisha kuongezeka. Buruta na uangushe vyombo vya Kivinjari cha Vipengee katika Muonekano wa Kubuni kwa mpangilio wa kazi na rahisi kuelewa. Sasa una programu katika MATLAB inayoweza kuchambua picha za mapafu kwa eneo la pikseli!
mali (Ufikiaji = faragha) I = ; Picha ya faili
kizingiti = 257; % ya kizingiti cha kupunguza nguvu ya kijivu
mikoaToExtract = 2;
mwisho
kazi SelectImageButtonPushed (programu, tukio)
clc; Dir = 'C: / Watumiaji / danie / Upakuaji / picha_004 / picha'; % fafanua kiambishi cha faili "kiambishi awali"
[ImageExt, path] = uigetfile ('*. png'); % shika sehemu inayobadilika ya jina la picha
imageName = [Dir filesep imageExt]; % concatenate shida na mabadiliko yanayobadilika
programu. I = imread (imageName); soma picha
imshow (programu. I, 'mzazi', programu. UIAxes); % Onyesha picha
programu. FilePathEditField. Value = njia; % onyesha njia ya faili ambapo picha asili ilitoka
mwisho
kazi ChambuaImageButtonPushed (programu, tukio)
awaliImage = programu. I;
awaliImage = wiener2 (programu. I, [5 5]); Kichujio cha kuondoa nukta%
histogram (programu. AxesHistogram, programu. I, 256); % onyesha histogram ya picha
a_thresh = originalImage> = app.bado; % weka kizingiti hiki
leboImage = bwlabel (a_thresh);
props = kanda ya mkoa (a_thresh, 'all');
IliyopangwaSolidity = aina ([props. Solidity], 'shuka');
SB = Iliyopangwa Ukali (1);
ikiwa SB == 1% SB inakubali tu uthabiti == 1 chuja mifupa
SE = safu ('mraba', 3);
morphologicalGradient = imsubtract (imdilate (studioImage, SE), imerode (studioImage, SE));
mask = imbinarize (morphologicalGradient, 0.03);
SE = safu ('mraba', 2);
mask = imclose (mask, SE);
mask = kujaza (mask, 'mashimo');
mask = bwareafilt (mask, app.regionsToExtract);
Idadi ya kudhibiti eneo la onyesho la eneo
notMask = ~ kinyago;
mask = mask | bwpropfilt (sioMask, 'Area', [-Inf, 5000 - eps (5000)]);
BW2 = kujaza (lebo ya picha, 'mashimo');
picha mpya = BW2;
picha mpya (~ mask) = 0;
B = mipaka (picha mpya); % inaweza tu kukubali vipimo 2 imshow (new_image, 'parent', app. UIAxes2);
shikilia (app. UIAxes2, 'on');
mipaka (B);
kuweka (gca, 'YDir', 'reverse');
lungArea = bwarea (picha mpya);
programu. PixelAreaEditField. Value = lungArea;
mwisho
mwisho
kazi FilterThresholdSliderValueChanged (programu, tukio)
app.threshold = app. FilterThresholdSlider. Uthamini;
mwisho
kazi AreastoExtractDropDownValueChanged (programu, tukio) stringNumber = app. AreastoExtractDropDown. Value;
app.regionsToExtract = str2double (stringNumber);
mwisho
mwisho
Ilipendekeza:
MATLAB Kugundua Uso Rahisi: Hatua 4
Kugundua Uso Rahisi wa MATLAB: Lengo kuu la mafundisho haya ni kuonyesha jinsi rahisi, usindikaji wa picha utakuwa, Kwa msaada wa kugundua na ufuatiliaji wa MATLAB imekuwa uwanja muhimu wa utafiti, kwa hivyo ndio sababu nitaelezea jinsi inaweza kufanywa
Jinsi ya Kuandikisha na Kuchapisha Matlab 2016b kwa Neno (Mwongozo wa Kompyuta): Hatua 4
Jinsi ya Kuandikisha na Kuchapisha Matlab 2016b kwa Neno (Mwongozo wa Kompyuta): Matlab ni programu ya lugha ya utendaji wa hali ya juu ambayo hutumiwa kuhesabu matokeo ya kiufundi. Ina uwezo wa kujumuisha vielelezo, hesabu, na programu kwa njia inayoweza kutumiwa na mtumiaji. Na programu hii, mtumiaji anaweza kuchapisha shida na suluhisho
Kudhibiti Raspberry Pi Kutumia Matlab: Hatua 5
Kudhibiti Raspberry Pi Kutumia Matlab: Hei, mafunzo haya ni juu ya kudhibiti pi yako ya rasipberry isiyo na kichwa ukitumia matlab. Unaweza kulazimika kusanikisha matlab kwa toleo la hivi karibuni kwa msaada wa bodi mpya ya rasipberry pi
Mdhibiti wa Roboti ya msingi wa Matlab: Hatua 9
Mdhibiti wa Roboti wa makao ya Matlab: Tangu nilipokuwa mtoto, nimekuwa nikitamani kuwa Iron Man na bado ninafanya hivyo. Iron Man ni mmoja wa wahusika ambao kwa kweli inawezekana na kuweka tu ninatamani kuwa Iron Man siku moja hata kama watu watanicheka au wanasema haiwezekani
Uboreshaji wa Programu ya Mafunzo katika MATLAB: 6 Hatua
Uboreshaji wa Uandaaji wa Mafunzo katika MATLAB: Lengo: Lengo la mfumo huu uliopangwa ni kuangalia Arduino ndogo na kutumia usimbuaji kwa kiwango kikubwa ili kuwezesha huduma fulani za usalama za mifumo ya Reli ya Amtrak. Ili kufanya hivyo, tumeongeza unyevu wa mchanga