Բովանդակություն:
- Քայլ 1: Քայլ 1: Պատկերի բեռնում
- Քայլ 2. Քայլ 2. Աղմուկի զտում և հիստոգրամ
- Քայլ 3: Քայլ 3. Շեմերի սահմանում
- Քայլ 4: Ստեղծեք GUI
- Քայլ 5: Տեսանյութի ցուցադրում
Video: MatLab թոքերի հատվածավորում. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Հեղինակ ՝ Ֆուկ Լամ, Պոլ Յոնգ, Էրիկ Ռեյես
Ընդունելով, որ թոքերի հատվածավորման սխալները կստեղծեն կեղծ տեղեկություններ հիվանդության տարածքի նույնականացման վերաբերյալ և կարող են ուղղակիորեն ազդել ախտորոշման գործընթացի վրա: Համակարգչային օգնության ժամանակակից տեխնիկան չկարողացավ ճշգրիտ արդյունքներ տալ այն դեպքում, երբ թոքերի հիվանդությունները ունեն բարդ ձևեր: Այս աննորմալ ձևերը կարող են առաջանալ պլևարային էֆուզիայի, կոնսոլիդացիայի և այլնի միջոցով: Թոքերի հատվածավորման տեխնիկայի կիրառմամբ, որով թոքերի սահմանները մեկուսացված են շրջապատող կրծքավանդակի հյուսվածքից, մեր ծրագիրը կարող է սահմանել օգտագործողի մուտքի շեմերը `լիովին հարմարեցնող տեսարաններ տալու համար: թոքերի ձևերը, Այս MatLab նախագծի նպատակն է ստեղծել թոքերի սեգմենտավորման ինտերակտիվ ծրագիր, որը թույլ կտա հայտնաբերել թոքերի ռենտգեն պատկերների պաթոլոգիական պայմանները: Մեր նպատակն է ստեղծել թոքերի աննորմալ նկարազարդման և բացահայտման ավելի արդյունավետ միջոց, որպեսզի բժիշկներին և ճառագայթաբաններին տրվի թոքերի հիվանդությունները ախտորոշելու ավելի հուսալի միջոց: Օգտագործելով հավելվածների դիզայներական գործիքը MatLab- ում ՝ ծրագիրը նախատեսված է հատուկ կրծքավանդակի ռենտգեն և համակարգչային տոմոգրաֆիա (ՀՏ) սկաների հետ աշխատելու համար, սակայն փորձարկվում է նաև ՄՌՏ սկաներով աշխատելու համար:
Ստորև բերված հրահանգները պարունակում են աղմուկի զտման մեր տեխնիկան (ցածր անցումային Wiener զտիչ), ինչպես նաև պատկերի շեմը (օգտագործելով մոխրագույն մասշտաբի պատկերի ինտենսիվության հիստոգրամը) և մորֆոլոգիական գրադիենտ (պատկերի ընդլայնման և էրոզիայի միջև տարբերությունը) բացահայտել հետաքրքրություն ներկայացնող տարածաշրջանը: Այնուհետև հրահանգը կբացատրի, թե ինչպես ենք մենք ինտեգրում բոլոր տարրերը գրաֆիկական ինտերֆեյսի (GUI) մեջ:
Նշում:
1). Այս նախագիծը ոգեշնչված է հետազոտական հոդվածից `« Սովորական մոտեցումներ, մարտահրավերներ և ապագա միտումներ CT- ում աննորմալ թոքերի հատվածների և պատկերի վերլուծություն »: Որը կարելի է գտնել այստեղ
2). Մենք օգտագործում ենք NIH: Clinical Center- ի ռենտգենյան պատկերները: Հղումը կարելի է գտնել այստեղ
3): Հավելվածների դիզայների օգնությունը կարելի է գտնել այստեղ
4): Մինչև կոդը գործարկելը. Դուք պետք է փոխեք Dir ուղին (տող 34 -ում) ձեր ֆայլերի գրացուցակին և պատկերի տեսակին (տող 35) (մենք վերլուծում ենք *.png):
Քայլ 1: Քայլ 1: Պատկերի բեռնում
Այս քայլը ցույց կտա բնօրինակ պատկերը մոխրագույն մասշտաբով: Փոխեք «name_of_picture.png» - ը ձեր պատկերի անվան
պարզ; clc; փակել բոլորը;
%% Պատկերների բեռնում
raw_x_ray = 'name_of_picture.png';
I = imread (raw_x_ray);
գործիչ (101);
ցուցադրել (I);
գունային քարտեզ (մոխրագույն);
վերնագիր («Մոխրագույն մասշտաբի ռենտգեն»);
Քայլ 2. Քայլ 2. Աղմուկի զտում և հիստոգրամ
Մոխրագույն մասշտաբի պատկերի շեմը գտնելու համար մենք նայում ենք հիստոգրամին `պարզելու, թե արդյոք դրանք հստակ ռեժիմներ են: Ավելին կարդացեք այստեղ
I = wiener2 (I, [5 5]);
գործիչ (102);
ենթահող (2, 1, 1);
ցուցադրել (I);
ենթահող (2, 1, 2);
իմհիստ (I, 256);
Քայլ 3: Քայլ 3. Շեմերի սահմանում
Այս քայլը թույլ է տալիս սահմանել շեմը ըստ հիստոգրամի: morphologicalGradient- ը կարևորում է կարմիրի հետաքրքրության շրջանը, իսկ visboundaries գործառույթը ծածկում է թոքի ուրվագծված և զտված պատկերը կարմիրով:
Օգտագործելով regionprops- ը, մենք կարող ենք ճշգրտել պինդության զանգվածները և տեսակավորել դրանք նվազման կարգով: Հաջորդը ես երկուականացնում եմ մոխրագույն սկլայի պատկերը և կիրառում մորֆոլոգիական գրադիենտի մեթոդը և mLoren Shurasking- ը `հետաքրքրության տարածաշրջանը (ROI) ընդգծելու համար: Հաջորդ քայլը պատկերը շրջելն է, որպեսզի թոքի ROI- ն սպիտակ լինի սև ֆոնի վրա: 2 դիմակ ցուցադրելու համար օգտագործում եմ showMaskAsOverlay գործառույթը: Նշում. Կոդը ներշնչված է Loren Shure- ից, հղում:
Լազի, ես ստեղծում եմ կարմիր ուրվագիծ ՝ օգտագործելով bwbwboundaries- ը և քողարկելով ֆիլտրի պատկերը և սահմանները:
a_thresh = I> = 172; % սահմանեց այս շեմը
[labelImage, numberOfBlobs] = bwlabel (a_thresh);
props = regionprops (a_thresh, 'all');
sortedSolidity = տեսակավորում ([props. Solidity], 'իջնել');
SB = տեսակավորված Պինդություն (1);
եթե SB == 1 % SB- ն ընդունում է միայն պինդություն == 1 զտել ոսկորները
binaryImage = անօրինականացնել (I); գործիչ (103);
imshow (binaryImage); գունային քարտեզ (մոխրագույն);
SE = strel ('քառակուսի', 3);
morphologicalGradient = imsubtract (imdilate (binaryImage, SE), imerode (binaryImage, SE));
դիմակ = imbinarize (morphologicalGradient, 0.03);
SE = strel ('քառակուսի', 2);
դիմակ = փակել (դիմակ, SE);
դիմակ = լցնել (դիմակ, «անցքեր»);
դիմակ = bwareafilt (դիմակ, 2); Տարածքի շոուի % վերահսկիչ թիվը
notMask = ~ դիմակ;
դիմակ = դիմակ | bwpropfilt (notMask, 'Area', [-Inf, 5000 - eps (5000)]);
showMaskAsOverlay (0.5, դիմակ, 'r'); % պետք է ներբեռնեք ծրագիրը/գործառույթը showMaskAsOverlay
BW2 = imfill (binaryImage, 'անցքեր');
new_image = BW2;
new_image (~ դիմակ) = 0; % շրջել ֆոնը և անցքերը
B = սահմաններ (նոր_պատկեր); % -ը կարող է ընդունել միայն 2 չափս
գործիչ (104);
ցուցադրել (new_image);
սպասիր
visboundaries (B);
վերջ
Քայլ 4: Ստեղծեք GUI
Այժմ մենք ինտեգրում ենք նախորդ կոդը MATLAB հավելվածին: Բացեք հավելվածների դիզայները MATLAB- ում (Նոր> հավելված): Նախ, մենք նախագծում ենք ինտերֆեյսը `սեղմելով-պահելով և երեք առանցքով քարշ տալով կենտրոնական աշխատանքային տարածք: Հաջորդը, մենք սեղմում-պահում-քաշում ենք երկու կոճակ, մեկ խմբագրման դաշտ (տեքստ), մեկ խմբագրման դաշտ (թվային), մեկ սահող և մեկ բացվող ընտրացանկ: Երկու առանցք կցուցադրեն նախադիտումը և կվերլուծեն պատկերը, իսկ երրորդ առանցքները կցուցադրեն պիքսելների հիստոգրամ նախադիտման «ընտրված» պատկերի համար: Խմբագրման դաշտը (տեքստը) տուփում կցուցադրվի ընտրված պատկերի ֆայլի ուղին, իսկ խմբագրման դաշտում (թվային) ՝ թոքերի հայտնաբերված պիքսելային տարածքը:
Այժմ դիզայնի տեսքից անցեք ծրագրի դիզայների կոդի տեսքի: Մուտքագրեք ծածկագրի մեջ գտնվող հատկությունների ծածկագիրը ՝ կտտացնելով «Հատկություններ» կարմիր կոճակը, որի վրա նշվում է գումարած նշանը: Նախաստորագրեք I, շեմը և regionToExtract հատկությունները, ինչպես նշված է ներքևում տրված ծածկագրում: Հաջորդը, աջ սեղմեք աշխատանքային տարածքի վերին աջ մասում գտնվող կոճակի վրա (Բաղադրիչի դիտարկիչ) և անցեք Հետադարձ կապ> Գնալ դեպի … հետադարձ կապ: Ավելացրեք «գործառույթ SelectImageButtonPused (ծրագիր, իրադարձություն)» գործառույթի համար: Այս ծածկագիրը թույլ է տալիս ընտրել պատկեր ՝ ձեր համակարգչից վերլուծելու համար ՝ օգտագործելով uigetfile: Պատկեր ընտրելուց հետո առանցքների տակ հիստոգրամի ուղեկցությամբ կհայտնվի նախադիտման պատկեր: Այնուհետև, աջ կոճակը սեղմեք մյուս կոճակի վրա և կրկնեք նույն ընթացակարգը ՝ հետադարձ գործառույթ ստեղծելու համար:
Ավելացրեք «AnalyzeImageButtonPushed գործառույթ (ծրագիր, իրադարձություն)» տակի ծածկագիրը: Այս ծածկագիրը կիրականացնի պիքսելների հաշվարկը և բլբի հայտնաբերումը նախադիտման պատկերի վրա ՝ վերլուծված պատկերի կոճակի վրա (որի կոճակի վրա աջ սեղմել եք): Կոճակները ծրագրավորելուց հետո մենք այժմ ծրագրավորելու ենք սահիկը և բացվող ընտրացանկը: Աջ սեղմեք սահողին, ստեղծեք հետադարձման գործառույթ և ավելացրեք «FilterThresholdSliderValueChanged (ծրագիր, միջոցառում)» գործառույթի տակ գտնվող ծածկագիրը մինչև վերջ: Սա թույլ է տալիս սահողին հարմարեցնել գորշ ինտենսիվության շեմը:
Ստեղծեք հետադարձ գործառույթ բացվող ընտրացանկի համար և ավելացրեք «AreastoExtractDropDownValueChanged գործառույթ» (ծրագրի, իրադարձության) ներքևի ծածկագիրը, որը թույլ կտա բացվող ընտրացանկին փոփոխել վերլուծված պատկերի առանցքների վրա ցուցադրվող բլթերի քանակը: Այժմ, սեղմեք բաղադրիչ զննարկչի յուրաքանչյուր սուբյեկտի վրա և փոխեք դրանց հատկությունները ըստ ձեր ցանկության, օրինակ ՝ սուբյեկտների անունները փոխելը, առանցքները հեռացնելը և մասշտաբավորումը փոխելը: Քաշեք և գցեք Component Browser- ի սուբյեկտները Design View- ում դեպի ֆունկցիոնալ և հասկանալի դասավորություն: Այժմ դուք ունեք ծրագիր MATLAB- ում, որը կարող է վերլուծել թոքերի պատկերները պիքսելային տարածքի համար:
հատկություններ (Մուտք = մասնավոր) I = ; % պատկերի ֆայլ
շեմ = 257; մոխրագույն ինտենսիվության երկուականացման շեմ
regionToExtract = 2;
վերջ
գործառույթ SelectImageButtonPushed (ծրագիր, իրադարձություն)
clc; Dir = 'C: / Users / danie / Downloads / images_004 / images'; %define invariate ֆայլ «նախածանց»
[imageExt, path] = uigetfile ('*. png'); %գրավել պատկերի անվան փոփոխական մասը
imageName = [Dir filesep imageExt]; %concatenate անփոփոխ և փոփոխական լարեր
app. I = imread (imageName); %կարդացել է պատկերը
imshow (հավելված I, «ծնող», հավելված. UIAxes); %ցուցադրել պատկերը
app. FilePathEditField. Value = ուղի; %ցուցադրել ֆայլի ուղին, թե որտեղից է եկել սկզբնական պատկերը
վերջ
գործառույթ AnalyzeImageButtonPushed (ծրագիր, իրադարձություն)
originalImage = app. I;
originalImage = wiener2 (հավելված I., [5 5]); %կետերի հեռացման զտիչ
հիստոգրամ (հավելված. AxesHistogram, հավելված I, 256); %ցուցադրել պատկերի հիստոգրամը
a_thresh = originalImage> = app.threshold; % սահմանեց այս շեմը
labelImage = bwlabel (a_thresh);
props = regionprops (a_thresh, 'all');
sortedSolidity = տեսակավորում ([props. Solidity], 'իջնել');
SB = տեսակավորված Պինդություն (1);
եթե SB == 1 % SB- ն ընդունում է միայն պինդություն == 1 զտել ոսկորները
SE = strel ('քառակուսի', 3);
morphologicalGradient = imsubtract (imdilate (labelImage, SE), imerode (labelImage, SE));
դիմակ = imbinarize (morphologicalGradient, 0.03);
SE = strel ('քառակուսի', 2);
դիմակ = փակել (դիմակ, SE);
դիմակ = լցնել (դիմակ, «անցքեր»);
դիմակ = bwareafilt (դիմակ, app.regionsToExtract);
Տարածքի շոուի % վերահսկիչ թիվը
notMask = ~ դիմակ;
դիմակ = դիմակ | bwpropfilt (notMask, 'Area', [-Inf, 5000 - eps (5000)]);
BW2 = լցնել (labelImage, «անցքեր»);
new_image = BW2;
new_image (~ դիմակ) = 0;
B = սահմաններ (նոր_պատկեր); % -ը կարող է ընդունել միայն 2 չափսերի ցուցադրում (new_image, 'ծնող', հավելված. UIAxes2);
պահել (հավելված. UIAxes2, «on»);
visboundaries (B);
սահմանել (gca, 'YDir', 'reverse');
lungArea = bwarea (new_image);
app. PixelAreaEditField. Value = lungArea;
վերջ
վերջ
գործառույթը FilterThresholdSliderValueChanged (ծրագիր, միջոցառում)
app.threshold = app. FilterThresholdSlider. Value;
վերջ
գործառույթը AreastoExtractDropDownValueChanged (ծրագիր, իրադարձություն) stringNumber = app. AreastoExtractDropDown. Value;
app.regionsToExtract = str2double (stringNumber);
վերջ
վերջ
Խորհուրդ ենք տալիս:
MATLAB Հեշտ դեմքի հայտնաբերում. 4 քայլ
MATLAB Easy Face Detection. Այս հրահանգների հիմնական նպատակն է ցույց տալ, թե որքան հեշտ կլինի պատկերի մշակումը: MATLAB- ի օգնությամբ դեմքի հայտնաբերումը և հետևելը կարևոր և ակտիվ հետազոտական ոլորտ է, ուստի դրա համար էլ ես պատրաստվում եմ բացատրել ինչպես կարելի է դա անել խելամտորեն
Ինչպես ծածկագրել և հրապարակել Matlab 2016b- ը Word- ին (սկսնակների ուղեցույց). 4 քայլ
Ինչպես ծածկագրել և հրապարակել Matlab 2016b- ը Word- ին (սկսնակների ուղեցույց). Matlab- ը բարձրորակ լեզվական ծրագիր է, որն օգտագործվում է տեխնիկական արդյունքները հաշվելու համար: Այն ունի տեսողական, հաշվարկային և ծրագրավորման ինտեգրման ունակություն օգտագործողի համար հարմարավետ: Այս ծրագրով օգտվողը կարող է հրապարակել խնդիրներ և լուծումներ
Ազնվամորու Pi- ի վերահսկում Matlab- ի միջոցով. 5 քայլ
Վերահսկել ազնվամորի Pi- ն ՝ օգտագործելով Matlab- ը. Գուցե ստիպված լինեք տեղադրել matlab- ը վերջին տարբերակին `ավելի նոր ազնվամորու pi տախտակին աջակցելու համար
Matlab- ի վրա հիմնված ROS Robotic Controller: 9 քայլ
Matlab- ի վրա հիմնված ROS Robotic Controller. Դեռ մանկուց ես միշտ երազել եմ լինել Երկաթե մարդ և դեռ դա անում եմ: Երկաթե մարդը այն կերպարներից է, որն իրատեսորեն հնարավոր է, և պարզապես ես ձգտում եմ մի օր դառնալ Երկաթե մարդ, նույնիսկ եթե մարդիկ ծիծաղեն ինձ վրա կամ ասեն, որ դա անհնար է
Գնացքների ծրագրավորման բարելավումներ MATLAB- ում. 6 քայլ
Գնացքների ծրագրավորման կատարելագործում MATLAB- ում. Նպատակը. Այս ծրագրավորված համակարգի նպատակն է դիտել փոքր մասշտաբով Arduino և կիրառել կոդավորումն ավելի մեծ մասշտաբով ՝ Ամտրակի երկաթուղային համակարգերի անվտանգության որոշակի հնարավորությունների պոտենցիալ բարձրացման համար: Դա անելու համար մենք ավելացրել ենք հողի խոնավության սեն