विषयसूची:

मैटलैब फेफड़े का विभाजन: 5 कदम
मैटलैब फेफड़े का विभाजन: 5 कदम

वीडियो: मैटलैब फेफड़े का विभाजन: 5 कदम

वीडियो: मैटलैब फेफड़े का विभाजन: 5 कदम
वीडियो: Fefdo Ka Sikudna, Lung Fibrosis Treatment, Lung Fibrosis Kya Hota Hai, Dr. Ashish Jain, Jaipur 2024, जून
Anonim
मैटलैब फेफड़े का विभाजन
मैटलैब फेफड़े का विभाजन

द्वारा: फुक लैम, पॉल येउंग, एरिक रेयेस

यह स्वीकार करते हुए कि फेफड़ों के विभाजन में त्रुटियां रोग क्षेत्र की पहचान के संबंध में गलत जानकारी उत्पन्न करेंगी और निदान प्रक्रिया को सीधे प्रभावित कर सकती हैं। आधुनिक कंप्यूटर-सहायता तकनीक सटीक परिणाम देने में विफल रही जब फेफड़ों की बीमारियों के आकार चुनौतीपूर्ण होते हैं। ये असामान्य आकार फुफ्फुस बहाव, समेकन आदि के कारण हो सकते हैं। फेफड़े के विभाजन तकनीक को लागू करना, जिसमें फेफड़े की सीमाएं आसपास के वक्ष ऊतक से अलग होती हैं, हमारा ऐप पूरी तरह से अनुकूलन योग्य दृश्य देने के लिए उपयोगकर्ता के इनपुट थ्रेसहोल्ड के साथ सीमाओं की पहचान कर सकता है फेफड़ों के आकार से, इस मैटलैब परियोजना का उद्देश्य फेफड़ों की एक्स-रे छवियों की रोग संबंधी स्थितियों का पता लगाने के लिए एक उपयोगकर्ता के अनुकूल इंटरैक्टिव लंग सेगमेंटेशन ऐप बनाना है। हमारा उद्देश्य डॉक्टरों और रेडियोलॉजिस्टों को फेफड़ों की बीमारियों के निदान के लिए एक अधिक विश्वसनीय तरीका देने के लिए असामान्य फेफड़ों को चित्रित करने और पहचानने के लिए एक अधिक प्रभावी तरीका बनाना है। मैटलैब में ऐप डिज़ाइनर टूल का उपयोग करते हुए, प्रोग्राम को विशेष रूप से छाती के एक्स-रे और कंप्यूटेड टोमोग्राफी (सीटी) स्कैन के साथ काम करने के लिए डिज़ाइन किया गया है, लेकिन एमआरआई स्कैन के साथ काम करने के लिए इसका परीक्षण भी किया जाता है।

नीचे दिए गए निर्देशों में हमारी शोर फ़िल्टरिंग तकनीक (कम-पास वीनर फ़िल्टर) के साथ-साथ छवि थ्रेशोल्ड (ग्रेस्केल छवि की तीव्रता हिस्टोग्राम का उपयोग करके) और एक रूपात्मक ढाल (एक छवि के फैलाव और क्षरण के बीच का अंतर) का उपयोग करना शामिल है। रुचि के क्षेत्र की पहचान करें। निर्देश तब समझाएगा कि हम सभी तत्वों को ग्राफिक यूजर इंटरफेस (जीयूआई) में कैसे एकीकृत करते हैं।

ध्यान दें:

१) । यह परियोजना एक शोध पत्र से प्रेरित है: "सीटी में असामान्य फेफड़ों का विभाजन और छवि विश्लेषण: वर्तमान दृष्टिकोण, चुनौतियां और भविष्य के रुझान"। जो यहाँ पाया जा सकता है

2))। हम एनआईएच: क्लिनिकल सेंटर से एक्स-रे छवियों का उपयोग कर रहे हैं। लिंक यहां पाया जा सकता है

3))। ऐप डिज़ाइनर सहायता यहाँ मिल सकती है

4))। कोड चलाने से पहले: आपको अपनी फ़ाइल निर्देशिका और छवि के प्रकार (पंक्ति 35) (हम *-p.webp

चरण 1: चरण 1: छवि लोड हो रहा है

चरण 1: छवि लोड हो रहा है
चरण 1: छवि लोड हो रहा है

यह चरण आपको मूल चित्र को ग्रे स्केल में दिखाएगा। 'name_of_Picture.png' को अपने इमेज के नाम में बदलें

स्पष्ट; सीएलसी; सब बंद करें;

%% चित्र लोड हो रहा है

raw_x_ray='name_of_Picture.png';

मैं = imread (raw_x_ray);

फिगर (101);

इम्शो (मैं);

रंगरूप (ग्रे);

शीर्षक ('ग्रेस्केल एक्स-रे');

चरण 2: चरण 2: शोर फ़िल्टरिंग और हिस्टोग्राम

चरण 2: शोर फ़िल्टरिंग और हिस्टोग्राम
चरण 2: शोर फ़िल्टरिंग और हिस्टोग्राम

ग्रे स्केल छवि के लिए थ्रेशोल्ड खोजने के लिए, हम हिस्टोग्राम को देखने के लिए देखते हैं कि क्या कोई अलग मोड है। यहां और पढ़ें

मैं = वीनर २ (मैं, [५ ५]);

फिगर(102);

सबप्लॉट (2, 1, 1);

इम्शो (मैं);

सबप्लॉट (2, 1, 2);

इम्हिस्ट (आई, 256);

चरण 3: चरण 3: सीमा निर्धारित करना

चरण 3: थ्रेसहोल्ड सेट करना
चरण 3: थ्रेसहोल्ड सेट करना
चरण 3: थ्रेसहोल्ड सेट करना
चरण 3: थ्रेसहोल्ड सेट करना

यह चरण आपको हिस्टोग्राम के अनुसार सीमा निर्धारित करने की अनुमति देता है। morphologicalGradient लाल रंग में रुचि के क्षेत्र को उजागर करेगा, और फ़ंक्शन visboundaries लाल रंग में फेफड़े की उल्लिखित और फ़िल्टर की गई छवि को ओवरले करता है।

रीजनप्रॉप का उपयोग करके, हम सॉलिडिटी के सरणियों को सटीक कर सकते हैं और उन्हें अवरोही में क्रमबद्ध कर सकते हैं। इसके बाद मैं ग्रे स्केल छवि को बिनराइज करता हूं और ब्याज के क्षेत्र (आरओआई) को उजागर करने के लिए रूपात्मक ढाल विधि और एमएलओरेन शूरस्किंग लागू करता हूं। अगला कदम छवि को उल्टा करना है ताकि काली पृष्ठभूमि में फेफड़े का आरओआई सफेद हो। मैं 2 मास्क प्रदर्शित करने के लिए फ़ंक्शन showMaskAsOverlay का उपयोग करता हूं। नोट: कोड लोरेन श्योर, लिंक से प्रेरित है।

अंत में, मैं bwbwboundaries का उपयोग करके और फ़िल्टर छवि और सीमाओं को मास्क करके लाल रूपरेखा तैयार करता हूं।

ए_थ्रेश = मैं >= १७२; % इस सीमा को सेट करें

[लेबल इमेज, नंबरऑफब्लॉब्स] = bwlabel(a_thresh);

प्रॉप्स = रीजनप्रॉप्स (a_thresh, 'ऑल');

सॉर्टेड सॉलिडिटी = सॉर्ट ([प्रॉप्स। सॉलिडिटी], 'उतरना');

एसबी = क्रमबद्ध सॉलिडिटी (1);

अगर एसबी == 1% एसबी केवल ठोसता स्वीकार करता है == 1 हड्डियों को फ़िल्टर करता है

बाइनरीइमेज = इम्बिनाराइज (आई); आंकड़ा(103);

इमशो (बाइनरी इमेज); रंगरूप (ग्रे);

एसई = स्ट्रेल ('वर्ग', 3);

morphologicalGradient = imsubtract (imdilate (बाइनरी इमेज, एसई), इमेरोड (बाइनरी इमेज, एसई));

मुखौटा = imbinarize (रूपात्मक ढाल, ०.०३);

एसई = स्ट्रेल ('वर्ग', 2);

मुखौटा = बंद (मुखौटा, एसई);

मुखौटा = इम्फिल (मुखौटा, 'छेद');

मास्क = बवेयरफिल्ट (मास्क, 2); क्षेत्र शो का % नियंत्रण संख्या

नॉटमास्क = ~ मास्क;

मुखौटा = मुखौटा | bwpropfilt(notMask, 'Area', [-Inf, 5000 - eps(5000)]);

showMaskAsOverlay (0.5, मुखौटा, 'आर'); % आपको ऐप/फ़ंक्शन डाउनलोड करना होगा शोMaskAsOverlay

BW2 = imfill (बाइनरी इमेज, 'छेद');

new_image = BW2;

new_image(~mask) = 0; % उलटा पृष्ठभूमि और छेद

बी = बी बाउंड्रीज़ (new_image); % केवल 2 आयाम स्वीकार कर सकता है

आंकड़ा(१०४);

आईएमशो (new_image);

रूको

सीमाएँ (बी);

समाप्त

चरण 4: जीयूआई बनाना

अब, हम पूर्व कोड को MATLAB ऐप में एकीकृत करते हैं। MATLAB में ऐप डिज़ाइनर खोलें (नया> ऐप)। सबसे पहले, हम इंटरफ़ेस को क्लिक-होल्ड-और तीन अक्षों में केंद्र कार्यक्षेत्र में खींचकर डिज़ाइन करते हैं। इसके बाद, हम दो बटन, एक संपादन फ़ील्ड (पाठ), एक संपादन फ़ील्ड (संख्यात्मक), एक स्लाइडर और एक ड्रॉप-डाउन मेनू पर क्लिक-होल्ड-ड्रैग करते हैं। दो अक्ष प्रत्येक पूर्वावलोकन प्रदर्शित करेंगे और छवि का विश्लेषण करेंगे, और तीसरा अक्ष पूर्वावलोकन "चयनित" छवि के लिए पिक्सेल का हिस्टोग्राम प्रदर्शित करेगा। संपादन फ़ील्ड (पाठ) बॉक्स चयनित छवि का फ़ाइल पथ प्रदर्शित करेगा, और संपादन फ़ील्ड (संख्यात्मक) फेफड़ों के ज्ञात पिक्सेल क्षेत्र को प्रदर्शित करेगा।

अब ऐप डिज़ाइनर में डिज़ाइन व्यू से कोड व्यू में स्विच करें। लाल "गुण" बटन पर प्लस चिह्न के साथ क्लिक करके गुणों के लिए कोड में कोड दर्ज करें। नीचे दिए गए कोड के अनुसार गुण I, थ्रेशोल्ड और क्षेत्रों को प्रारंभ करें। इसके बाद, कार्यक्षेत्र (घटक ब्राउज़र) के ऊपरी दाएँ भाग में एक बटन पर राइट-क्लिक करें और Callbacks>Go to… कॉलबैक से जाएं। "फ़ंक्शन SelectImageButtonPushed (ऐप, ईवेंट)" के लिए कोड जोड़ें। यह कोड आपको uigetfile का उपयोग करके अपने कंप्यूटर से विश्लेषण करने के लिए एक छवि का चयन करने की अनुमति देता है। एक छवि का चयन करने के बाद, एक पूर्वावलोकन छवि एक हिस्टोग्राम के साथ अक्षों के नीचे दिखाई देगी। फिर, दूसरे बटन पर राइट-क्लिक करें और कॉलबैक फ़ंक्शन बनाने के लिए उसी प्रक्रिया को दोहराएं।

"फ़ंक्शन एनालिसिस इमेजबटन पुश (ऐप, इवेंट)" के नीचे कोड में जोड़ें। यह कोड विश्लेषण छवि बटन (जो भी आपने इस कोड के लिए राइट-क्लिक किया हो) पर पूर्वावलोकन छवि पर पिक्सेल गिनती और ब्लॉब डिटेक्शन निष्पादित करेगा। बटनों को प्रोग्राम करने के बाद, अब हम स्लाइडर और ड्रॉप-डाउन मेनू को प्रोग्राम करेंगे। स्लाइडर पर राइट-क्लिक करें, कॉलबैक फ़ंक्शन बनाएं और अंत तक "फ़ंक्शन FilterThresholdSliderValueChanged (ऐप, ईवेंट)" के नीचे कोड जोड़ें। यह स्लाइडर को ग्रे-तीव्रता थ्रेशोल्ड को समायोजित करने की अनुमति देता है।

ड्रॉप डाउन मेनू के लिए कॉलबैक फ़ंक्शन बनाएं, और विश्लेषण किए गए छवि अक्षों पर प्रदर्शित ब्लॉब्स की संख्या को संशोधित करने के लिए ड्रॉप डाउन मेनू की अनुमति देने के लिए "फ़ंक्शन एरियास्टोएक्सट्रैक्टड्रॉपडाउनवैल्यू चेंज (ऐप, इवेंट)" के नीचे कोड जोड़ें। अब, घटक ब्राउज़र में प्रत्येक निकाय पर क्लिक करें और उनके गुणों को अपनी पसंद के अनुसार बदलें, जैसे कि संस्थाओं के नाम बदलना, कुल्हाड़ियों को हटाना और स्केलिंग को बदलना। डिज़ाइन व्यू में घटक ब्राउज़र की इकाइयों को एक कार्यात्मक और समझने में आसान लेआउट में खींचें और छोड़ें। अब आपके पास MATLAB में एक ऐप है जो पिक्सेल क्षेत्र के लिए फेफड़ों की छवियों का विश्लेषण कर सकता है!

गुण (पहुँच = निजी)मैं = ; % छवि फ़ाइल

दहलीज = २५७; ग्रे तीव्रता के द्विअर्थीकरण के लिए% दहलीज

क्षेत्रों के लिए निकालें = 2;

समाप्त

फ़ंक्शन SelectImageButtonPushed (ऐप, ईवेंट)

सीएलसी; डीआईआर = 'सी: / उपयोगकर्ता / डैनी / डाउनलोड / छवियां_004 / छवियां'; %अपरिवर्तनीय फ़ाइल "उपसर्ग" परिभाषित करें

[imageExt, पथ] = uigetfile('*.png'); छवि नाम के चर भाग को% हड़पें

इमेजनाम = [डीआईआर फाइलसेप इमेजएक्स्ट]; %concatenate invariate and variable strengs

ऐप.आई = इमरीड (इमेजनाम); % छवि पढ़ें

imshow(app. I, 'parent', app. UIAxes); % छवि प्रदर्शित करें

app. FilePathEditField. Value = पथ; % प्रदर्शन फ़ाइल पथ जहां से मूल छवि आई थी

समाप्त

फ़ंक्शन एनालिसिसइमेजबटन पुश (ऐप, इवेंट)

मूल छवि = ऐप। I;

ओरिजिनलइमेज = वीनर२ (ऐप.आई, [५ ५]); %डॉट-रिमूवल फ़िल्टर

हिस्टोग्राम (ऐप। एक्सिस हिस्टोग्राम, ऐप। I, 256); छवि का %प्रदर्शन हिस्टोग्राम

a_thresh = मूल छवि >= ऐप. दहलीज; % इस सीमा को सेट करें

लेबलइमेज = bwlabel (a_thresh);

प्रॉप्स = रीजनप्रॉप्स (a_thresh, 'ऑल');

सॉर्टेड सॉलिडिटी = सॉर्ट ([प्रॉप्स। सॉलिडिटी], 'उतरना');

एसबी = क्रमबद्ध सॉलिडिटी (1);

अगर SB == 1% SB केवल ठोसता स्वीकार करता है ==1 हड्डियों को फ़िल्टर करता है

एसई = स्ट्रेल ('वर्ग', 3);

morphologicalGradient = imsubtract (imdilate (लेबल इमेज, एसई), इमेरोड (लेबल इमेज, एसई));

मुखौटा = imbinarize (रूपात्मक ढाल, ०.०३);

एसई = स्ट्रेल ('वर्ग', 2);

मुखौटा = बंद (मुखौटा, एसई);

मुखौटा = इम्फिल (मुखौटा, 'छेद');

मुखौटा = bwareafilt (मुखौटा, app.regionsToExtract);

क्षेत्र शो का % नियंत्रण संख्या

नॉटमास्क = ~ मास्क;

मुखौटा = मुखौटा | bwpropfilt(notMask, 'Area', [-Inf, 5000 - eps(5000)]);

BW2 = imfill (लेबल इमेज, 'छेद');

new_image = BW2;

new_image(~mask) = 0;

बी = bwboundaries (new_image); % केवल 2 आयाम स्वीकार कर सकता है imshow(new_image, 'parent', app. UIAxes2);

होल्ड (ऐप। UIAxes2, 'चालू');

सीमाएँ (बी);

सेट (जीसीए, 'वाईडीआईआर', 'रिवर्स');

लंगअरिया = बवेरिया (new_image);

app. PixelAreaEditField. Value = लंगएरिया;

समाप्त

समाप्त

फ़ंक्शन FilterThresholdSliderValueChanged (ऐप, इवेंट)

ऐप.थ्रेशोल्ड = ऐप.फ़िल्टरथ्रेशोल्डस्लाइडर.वैल्यू;

समाप्त

फंक्शन एरियास्टो एक्सट्रैक्टड्रॉपडाउनवैल्यू चेंज (ऐप, इवेंट) स्ट्रिंगनंबर = ऐप। एरीस्टो एक्सट्रैक्टड्रॉपडाउन। वैल्यू;

app.regionsToExtract = str2double(stringNumber);

समाप्त

समाप्त

सिफारिश की: