Агуулгын хүснэгт:

MatLab уушгины сегментчилэл: 5 алхам
MatLab уушгины сегментчилэл: 5 алхам

Видео: MatLab уушгины сегментчилэл: 5 алхам

Видео: MatLab уушгины сегментчилэл: 5 алхам
Видео: Natural meanings of the family in Hindi fact logic truth by pkpal094 2024, Арваннэгдүгээр
Anonim
MatLab уушигны сегментчилэл
MatLab уушигны сегментчилэл

Оруулсан: Phuc Lam, Paul Yeung, Eric Reyes

Уушигны сегментчилэл дэх алдаа нь өвчний талбайг тодорхойлохтой холбоотой хуурамч мэдээлэл гаргаж, оношлогооны үйл явцад шууд нөлөөлдөг болохыг хүлээн зөвшөөрч байна. Уушигны өвчин хүнд хэлбэртэй байхад орчин үеийн компьютерийн техник нь үнэн зөв үр дүнг өгч чадаагүй юм. Эдгээр хэвийн бус хэлбэрүүд нь гялтангийн хамар, нягтрах гэх мэт зүйлээс үүдэлтэй байж болно. Уушигны хил хязгаарыг тойрсон цээжний эдээс тусгаарладаг уушгины сегментчилэх аргыг хэрэглэснээр манай апп нь хэрэглэгчийн оролтын босго хязгаарыг тодорхойлж, бүрэн тохируулах боломжтой болно. уушигны хэлбэр, Энэхүү MatLab төслийн зорилго нь уушгины рентген зурагны эмгэгийн нөхцлийг илрүүлэхэд хэрэглэгчид ээлтэй интерактив уушгины сегментчилсэн аппликейшн үүсгэх явдал юм. Бидний зорилго бол эмч, рентген судлаачдад уушгины өвчнийг оношлох илүү найдвартай аргыг өгөхийн тулд хэвийн бус уушгийг дүрслэх, тодорхойлох илүү үр дүнтэй аргыг бий болгох явдал юм. MatLab дахь програм зохион бүтээгчийн хэрэгслийг ашиглан уг програм нь цээжний рентген болон компьютер томографи (CT) сканнердахад тусгайлан зориулагдсан боловч MRI шинжилгээгээр ажиллах туршилтыг хийсэн болно.

Доорх заавар нь бидний дуу чимээг шүүх техник (бага нэвтрүүлэх Wiener шүүлтүүр), мөн зургийн босго (саарал өнгийн зургийн эрчмийн гистограмм ашиглан) ба морфологийн градиент (зургийн тэлэлт ба элэгдэл хоорондын ялгаа) -ийг агуулсан болно. сонирхож буй бүс нутгаа тодорхойлох. Дараа нь заавар нь бид бүх элементүүдийг график хэрэглэгчийн интерфэйс (GUI) рүү хэрхэн нэгтгэх талаар тайлбарлах болно.

Тэмдэглэл:

1). Энэхүү төсөл нь "СТ -ийн хэвийн бус уушгины сегментчилэл ба дүрсний шинжилгээ: Одоогийн арга барил, сорилт, ирээдүйн чиг хандлага" гэсэн судалгааны ажлаас санаа авсан болно. Үүнийг эндээс олж болно

2). Бид NIH: Клиникийн төвийн рентген зургийг ашиглаж байна. Холбоосыг эндээс олж болно

3). Апп дизайнерын тусламжийг эндээс олж болно

4). Кодыг ажиллуулахын өмнө: та Dir (34 -р мөрөнд) замыг өөрийн файлын лавлах болон зургийн төрөл (35 -р мөр) болгон өөрчлөх хэрэгтэй (бид *-p.webp

Алхам 1: Алхам 1: Зургийг ачаалж байна

Алхам 1: Зургийг ачаалж байна
Алхам 1: Зургийг ачаалж байна

Энэ алхам нь анхны зургийг саарал масштабаар харуулах болно. 'Name_of_picture.png' -ийг зургийн нэр болгон өөрчилнө үү

тодорхой; clc; бүгдийг хаах;

%% Зураг ачаалж байна

raw_x_ray = 'image_picture.png';

Би = уншсан (raw_x_ray);

зураг (101);

imshow (I);

өнгөт зураг (саарал);

гарчиг ('Саарал өнгийн рентген туяа');

Алхам 2: Алхам 2: Дуу чимээг шүүх ба гистограм

Алхам 2: Дуу чимээг шүүх ба гистограм
Алхам 2: Дуу чимээг шүүх ба гистограм

Саарал масштабтай зургийн босгыг олохын тулд бид өөр өөр горим байгаа эсэхийг харахын тулд гистограмыг хардаг. Дэлгэрэнгүйг эндээс уншина уу

I = wiener2 (I, [5 5]);

зураг (102);

дэд хэсэг (2, 1, 1);

imshow (I);

дэд хэсэг (2, 1, 2);

имхист (I, 256);

Алхам 3: Алхам 3: Босго тогтоох

Алхам 3: Босго тогтоох
Алхам 3: Босго тогтоох
Алхам 3: Босго тогтоох
Алхам 3: Босго тогтоох

Энэ алхам нь гистограммын дагуу босгыг тогтоох боломжийг танд олгоно. morphologicalGradient нь улаанаар сонирхож буй бүсийг онцлон харуулах бөгөөд функцийн хил хязгаар нь уушгины дүрсэлсэн болон шүүсэн дүрсийг улаанаар будна.

Regionprops -ийг ашигласнаар бид хатуу байдлын массивыг нарийвчлан тодорхойлж, буурах байдлаар нь ангилж болно. Дараа нь би саарал өнгийн зургийг дүрслэн харуулаад морфологийн градиент арга, mLoren Shurasking ашиглан ашиг сонирхлын бүсийг (ROI) тодруулна. Дараагийн алхам бол дүрсийг эргүүлэх явдал бөгөөд ингэснээр уушигны ROI нь хар дэвсгэр дээр цагаан өнгөтэй болно. Би 2 маск харуулахын тулд showMaskAsOverlay функцийг ашигладаг. Анхаарна уу: кодыг Loren Shure холбоосоос авсан болно.

Би bwbwboundaries ашиглан шүүлтүүрийн дүрс болон хил хязгаарыг далдлах замаар улаан тойм бүтээдэг.

a_thresh = I> = 172; % энэ босгыг тогтоосон

[labelImage, numberOfBlobs] = bwlabel (a_thresh);

таяг = regionprops (a_thresh, 'бүгд');

sortedSolidity = эрэмбэлэх ([props. Solidity], 'буух');

SB = sortedSolidity (1);

хэрэв SB == 1 % SB зөвхөн хатуу байдлыг хүлээн зөвшөөрвөл == 1 ясыг шүүнэ

binaryImage = imbinarize (I); зураг (103);

imshow (binaryImage); өнгөт зураг (саарал);

SE = strel ('дөрвөлжин', 3);

morphologicalGradient = imsubtract (imdilate (binaryImage, SE), imerode (binaryImage, SE));

маск = imbinarize (морфологийн Градиент, 0.03);

SE = strel ('дөрвөлжин', 2);

маск = imclose (маск, 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 = bwboundaries (new_image); % нь зөвхөн 2 хэмжээсийг хүлээн авах боломжтой

зураг (104);

imshow (шинэ_ зураг);

түр хүлээгээрэй

хил хязгаар (B);

Төгсгөл

Алхам 4: GUI үүсгэх

Одоо бид өмнөх кодыг MATLAB програмд нэгтгэж байна. Апп дизайнерыг MATLAB дээр нээнэ үү (Шинэ> Апп). Нэгдүгээрт, бид интерфэйсийг гурван тэнхлэгээр дарж, төвийн ажлын талбар руу чирж зохион бүтээдэг. Дараа нь бид хоёр товчлуур, нэг засварлах талбар (текст), нэг засварлах талбар (тоон), нэг гулсагч, нэг унах цэсийг дарна уу. Хоёр тэнхлэг тус бүр нь дүрсийг урьдчилан харах, дүн шинжилгээ хийх, гурав дахь тэнхлэгт "сонгосон" дүрсийг урьдчилан харах пикселийн гистограмыг харуулах болно. Засах талбар (текст) хайрцагт сонгосон зургийн файлын замыг, засварлах талбар (тоон) уушигны пикселийн талбайг харуулна.

Одоо App Designer дахь дизайны харагдацаас кодын харагдац руу шилжих. Нэмэх тэмдэг бүхий улаан "Properties" товчлуур дээр дарж өмчийн кодыг оруулна уу. Доорх кодын дагуу I, threshold, and regionToExtract шинж чанаруудыг эхлүүлнэ үү. Дараа нь ажлын талбарын баруун дээд хэсэгт байрлах товчлуур дээр хулганы баруун товчийг дараад (Бүрэлдэхүүн хэсэг хөтөч) Callbacks> Go to… backback руу очно уу. "SelectImageButtonPushed функц (апп, үйл явдал)" кодыг нэмнэ үү. Энэ код нь uigetfile ашиглан дүн шинжилгээ хийх зургийг сонгох боломжийг танд олгоно. Зургийг сонгосны дараа гистограмтай хамт тэнхлэгүүдийн доор урьдчилан харах дүрс гарч ирнэ. Дараа нь нөгөө товчлуур дээр хулганы баруун товчлуурыг дарж, буцаах функцийг үүсгэхийн тулд ижил процедурыг давтана уу.

"AnalyzeImageButtonPushed функц (апп, үйл явдал)" доорх кодыг нэмнэ үү. Энэ код нь зургийн дүн шинжилгээ хийх товчлуур дээр урьдчилан харах зурган дээр пиксел тоолох, бөмбөрцөг илрүүлэх ажлыг гүйцэтгэх болно (энэ кодын аль нь баруун товчлуур дээр дарагдсан байна). Товчлууруудыг програмчилсны дараа бид гулсагч болон унах цэсийг програмчлах болно. Слайдер дээр хулганы баруун товчийг дараад буцааж буцаах функцийг үүсгээд "FilterThresholdSliderValueChanged функц (апп, үйл явдал)" доорх кодыг эцэс хүртэл нэмнэ үү. Энэ нь гулсагч нь саарал өнгөний босгыг тохируулах боломжийг олгодог.

Унтраах цэс рүү буцааж залгах функц үүсгээд, "AreastoExtractDropDownValueChanged функц (апп, үйл явдал)" доорх кодыг нэмж оруулснаар унаж буй цэсэнд дүн шинжилгээ хийсэн зургийн тэнхлэгүүд дээр харагдах бөмбөлгүүдийн тоог өөрчлөх боломжтой болно. Одоо Бүрэлдэхүүн хэсэг хөтөч дээрх объект бүр дээр дарж, объектын нэрийг өөрчлөх, тэнхлэгийг хасах, масштабыг өөрчлөх гэх мэт шинж чанаруудыг өөрийн хүссэнээр өөрчилнө үү. Дизайн харагдац дахь Бүрэлдэхүүн хэсэг хөтчийн объектуудыг чирж, буулгаж, функциональ, ойлгоход хялбар зохион байгуулалт руу оруулна уу. Та одоо MATLAB дээр уушигны пикселийн талбайн зургийг шинжлэх боломжтой апптай боллоо!

шинж чанарууд (Хандалт = хувийн) I = ; % дүрс файл

босго = 257; Саарал эрчмийг бинаризацийн %босго

regionToExtract = 2;

Төгсгөл

SelectImageButtonPushed функц (апп, үйл явдал)

clc; Dir = 'C: / Users / danie / Downloads / images_004 / images'; %"угтвар" гэсэн хувьсах бус файлыг тодорхойлох

[imageExt, зам] = uigetfile ('*. png'); %нь зургийн нэрний хувьсах хэсгийг авна

imageName = [Файл файлууд imageExt]; %хувьсах ба хувьсах стратингуудыг нэгтгэнэ

app. I = imread (imageName); %зургийг уншсан

imshow (app. I, 'эцэг эх', app. UIAxes); %зургийг харуулна

app. FilePathEditField. Value = зам; %анхны зургийг хаанаас авсан файлын замыг харуулна

Төгсгөл

AnalyzeImageButtonPushed функц (апп, үйл явдал)

originalImage = app. I;

originalImage = wiener2 (app. I, [5 5]); %цэг арилгах шүүлтүүр

гистограм (app. AxesHistogram, app. I, 256); %зурагны гистограмыг харуулна

a_thresh = originalImage> = app.threshold; % энэ босгыг тогтоосон

labelImage = bwlabel (a_thresh);

таяг = regionprops (a_thresh, 'бүгд');

sortedSolidity = эрэмбэлэх ([props. Solidity], 'буух');

SB = sortedSolidity (1);

хэрэв SB == 1 % SB зөвхөн хатуу байдлыг хүлээн зөвшөөрвөл == 1 ясыг шүүнэ

SE = strel ('дөрвөлжин', 3);

morphologicalGradient = imsubtract (imdilate (labelImage, SE), imerode (labelImage, SE));

маск = imbinarize (морфологийн Градиент, 0.03);

SE = strel ('дөрвөлжин', 2);

маск = imclose (маск, SE);

маск = бөглөх (маск, 'нүх');

маск = bwareafilt (маск, app.regionsToExtract);

Талбайн шоуны % хяналтын тоо

notMask = ~ маск;

маск = маск | bwpropfilt (notMask, 'Area', [-Inf, 5000 - eps (5000)]);

BW2 = бөглөх (labelImage, 'нүх');

new_image = BW2;

new_image (~ маск) = 0;

B = bwboundaries (new_image); % нь зөвхөн 2 хэмжээсийг хүлээн авах боломжтой imshow (new_image, 'parent', app. UIAxes2);

барих (app. UIAxes2, 'on');

хил хязгаар (B);

тохируулах (gca, 'YDir', 'урвуу');

lungArea = bwarea (new_image);

app. PixelAreaEditField. Value = lungArea;

Төгсгөл

Төгсгөл

FilterThresholdSliderValueChanged функц (апп, үйл явдал)

app.threshold = app. FilterThresholdSlider. Value;

Төгсгөл

AreastoExtractDropDownValueChanged функц (апп, үйл явдал) stringNumber = app. AreastoExtractDropDown. Value;

app.regionsToExtract = str2double (stringNumber);

Төгсгөл

Төгсгөл

Зөвлөмж болгож буй: