فهرست مطالب:

پردازش تصویر مویامویا: 8 مرحله
پردازش تصویر مویامویا: 8 مرحله

تصویری: پردازش تصویر مویامویا: 8 مرحله

تصویری: پردازش تصویر مویامویا: 8 مرحله
تصویری: پردازش تصویر و هوش مصنوعی در صنعت و تولید Computer Vision in Industry 2024, جولای
Anonim
پردازش تصویر مویامویا
پردازش تصویر مویامویا

مویامویا ، "دود" ، یک بیماری نادر است که در اثر انسداد شریان ها در گانگلیون های پایه ، که ناحیه ای در قاعده مغز است ، ایجاد می شود. این بیماری یک بیماری عروقی مغزی پیشرونده است که بیشتر کودکان را درگیر می کند. علائم مویامویا شامل سکته مغزی اولیه ، سکته مغزی کوچک ، ضعف عضلانی ، فلج یا تشنج در نتیجه تنگ شدن پیشرونده عروق است. بدون درمان ، مویامویا مشکلاتی در گفتار ، اختلال حسی و آسیب هوشیاری ایجاد می کند. در پروژه ما ، ما از MATLAB برای پیش پردازش یک تصویر MRI یا MRA با استفاده از فیلترهای مختلف برای کاهش نویز درون تصویر برای مکان یابی منطقه آسیب دیده استفاده خواهیم کرد. علاوه بر این ، ما از یک ویژگی برای تعیین دقیق مناطق آسیب دیده استفاده خواهیم کرد. علاوه بر این ، ما یک آزمایش t نمونه مستقل انجام می دهیم تا مشخص شود آیا تفاوت قابل توجهی بین میزان رگ های خونی در یک مغز معمولی در مقایسه با مغزی که تحت تأثیر مویامویا قرار دارد وجود دارد یا خیر.

مرحله 1: اسکن های MRI و MRA یک مغز معمولی و مغز مبتلا به مویامویا را پیدا کنید

یافتن اسکن های MRI و MRA از مغز معمولی و مغز مبتلا به مویامویا
یافتن اسکن های MRI و MRA از مغز معمولی و مغز مبتلا به مویامویا
یافتن اسکن های MRI و MRA از مغز طبیعی و مغز تحت تأثیر مویامویا
یافتن اسکن های MRI و MRA از مغز طبیعی و مغز تحت تأثیر مویامویا
یافتن اسکن های MRI و MRA از مغز طبیعی و مغز تحت تأثیر مویامویا
یافتن اسکن های MRI و MRA از مغز طبیعی و مغز تحت تأثیر مویامویا
یافتن اسکن های MRI و MRA از مغز معمولی و مغز مبتلا به مویامویا
یافتن اسکن های MRI و MRA از مغز معمولی و مغز مبتلا به مویامویا

این تصاویر اسکن هایی هستند که برای پروژه استفاده کردیم و به صورت آنلاین پیدا کردیم. دو تصویر با رگ های خونی در وسط اسکن MRA هستند ، در حالی که دو تصویر دیگر اسکن MRI هستند.

پیوندهای زیر محل مشاهده این تصاویر است:

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

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

مرحله 2: بارگذاری تصاویر بر روی متلب و اختصاص تصاویر به متغیری برای نمایش تصاویر

بارگذاری تصاویر بر روی متلب و اختصاص تصاویر به متغیری برای نمایش تصاویر
بارگذاری تصاویر بر روی متلب و اختصاص تصاویر به متغیری برای نمایش تصاویر

برای شروع فرآیند ، با پاک کردن پنجره فرمان شروع کنید ، تمام شکل ها و نمودارهای ممکن را که قبلاً باز شده است ببندید و متغیرهایی را که قبلاً در فضای کاری شما تعیین شده اند ، پاک کنید.

بعد ، با استفاده از دستور i = [1: 2] یک حلقه for از 1 تا 2 ایجاد کنید

پس از آن ، بارگذاری تصاویر MRA با استفاده از دستور imread (sprintf ('filename٪.filetype'، i)) برای خواندن تصاویر از فایل های مشخص شده با نام فایل و سپس شماره مورد استفاده برای حلقه با استفاده از sprintf برای بارگذاری دسته ای و اختصاص آن را به یک متغیر

سپس برای نمایش تصویر در شکل ، از دستور imshow (I) استفاده کنید.

برای تعیین رنگ نقشه خاکستری ، از دستور colormap (خاکستری) استفاده کنید.

برای حذف کامل رنگ و تبدیل ماتریس سه بعدی تصاویر به دو بعدی ، از دستور rgb2gray (I) استفاده کرده و آن را به یک متغیر جداگانه اختصاص دهید.

سپس تصاویر MRI را با استفاده از فرمان قبلی یا imread بارگذاری کنید (sprintf ('filename٪.filetype'، i)) و آن را به یک متغیر جدید اختصاص دهید

دستور rgb2gray را با متغیر جدیدی که برای تصاویر MRI استفاده می شود ، تکرار کنید.

در صورت لزوم ، می توانید یک تصویر را با استفاده از دستور imresize (A ، scale) تغییر اندازه دهید و به یک متغیر جداگانه اختصاص دهید.

مرحله 3: تقویت ساختارهای کشیده در شدت تصویر با فیلتر چند مقیاس

با استفاده از فیلتر چند مقیاس ، ساختارهای کشیده را در شدت تصویر افزایش دهید
با استفاده از فیلتر چند مقیاس ، ساختارهای کشیده را در شدت تصویر افزایش دهید

با استفاده از یک متغیر جدید ، از دستور fibermetric (A) برای تقویت ساختارهای لوله ای در تصاویر استفاده کنید

در متغیر قبلی ، از دستور histeq (B) استفاده کنید تا با تبدیل شدت تصاویر و تبدیل آن به یک متغیر جدید ، معادلات هیستوگرام را افزایش دهید.

نمایش هیستوگرام با استفاده از دستور imhist (B)

برای ایجاد آستانه برای فیلتر ، یک متغیر جدید ایجاد کنید. در این حالت ، متغیر قبلی> 0.875 را تعیین کرده و شدت پیکسل را زیر مقدار 0.875 فیلتر کنید

بعد ، یک شکل جدید ایجاد کنید و از دستور imshow (A) برای نمایش تصویر فیلتر شده جدید استفاده کنید.

مرحله 4: یک فیلتر متوسط 2 بعدی را اجرا کنید

یک فیلتر متوسط دو بعدی را اجرا کنید
یک فیلتر متوسط دو بعدی را اجرا کنید

با استفاده از دستور medfilt2 (A ، [m n]) ، یک فیلتر میانی دو بعدی را اجرا کنید ، جایی که هر پیکسل خروجی حاوی مقدار متوسط در مرز mxn در اطراف پیکسل مربوطه در تصویر ورودی است.

یک شکل جدید ایجاد کنید و از imshow (A) برای نمایش تصویر متوسط فیلتر شده استفاده کنید.

مرحله 5: تصویر را ماسک کنید

ماسک تصویر
ماسک تصویر

با استفاده از تصویر فیلتر شده متوسط ، از دستور [labeledImage، numberOfBlots] = bwlabel (A) برای شمارش تعداد لکه های سفید در تصویر استفاده کنید.

سپس ، برای محاسبه مساحت هر لکه یا رگ خونی ، از تابع state props state = regionprops (labeledImage ، 'Area') استفاده کنید.

همه مناطق را به یک متغیر اختصاص دهید

سپس با استفاده از یک متغیر دیگر ، تعداد لکه های بیش از 50 پیکسل را بشمارید

پس از آن ، با استفاده از فرمان [sortedAreas، sortedIndicies] = مرتب سازی (خطوط ، 'نزول') مرتب سازی هرگونه لکه زیر 50 پیکسل را به ترتیب نزولی مرتب کنید.

سپس ، با استفاده از یک متغیر دیگر ، از دستور ismember (labeledImage، sortedIndicies (1: numberToExtract)) برای بازگشت یک آرایه با عناصر برچسب زده شده استفاده کنید. تصاویر در sortedIndicies از شماره 1 تا تعداد رگ های خونی برای بازگشت 1 منطقی (درست) یا 0 منطقی (غلط)

با متغیر در مرحله قبل ، نقاطی را که درست هستند (مقادیر> 0) پیدا کنید و یک آرایه منطقی برای ایجاد یک تصویر باینری و اختصاص آن به یک متغیر جدید ایجاد کنید.

یک شکل جدید ایجاد کنید و از تصویر دودویی جدید imshow (A) استفاده کنید.

سپس ، تصویر را با استفاده از دستور imcomplement (A) وارونه کرده و آن را به متغیر دیگری اختصاص دهید.

برای ایجاد یک تصویر مخفی ، از یک متغیر جدید با دستور resizedimage استفاده کنید.*uint8 (عکس معکوس)

یک شکل جدید ایجاد کنید و از imshow (A) برای نمایش تصویر پوشانده شده استفاده کنید.

برای پایان دادن به کل کد ، حتماً از دستور 'end' برای خاتمه کل حلقه استفاده کنید

مرحله 6: MRA Scans for Statistical Testing را انتخاب کنید

MRA Scans for Statistical Test را انتخاب کنید
MRA Scans for Statistical Test را انتخاب کنید
MRA Scans for Statistical Test را انتخاب کنید
MRA Scans for Statistical Test را انتخاب کنید
MRA Scans for Statistical Test را انتخاب کنید
MRA Scans for Statistical Test را انتخاب کنید

برای آمادگی برای آزمایش آماری ، اسکن های MRA را که باید برای آزمون t نمونه های مستقل استفاده شود ، انتخاب کنید. از آنجا که دو نمونه ما تحت تأثیر مویامویا از مغز قرار می گیرند و مغزهای معمولی ، مقدار مناسبی از اسکن MRA از هر گروه را انتخاب کنید.

مرحله 7: مساحت رگهای خونی را برای آمادگی برای آزمایش آماری محاسبه کنید

محاسبه مساحت عروق خونی در آماده سازی برای آزمایش آماری
محاسبه مساحت عروق خونی در آماده سازی برای آزمایش آماری

این آزمون آماری بر طول یا میزان رگ های خونی نشان داده شده در اسکن MRA متمرکز می شود. بنابراین ، قبل از مقایسه باید مساحت رگ های خونی را محاسبه کنیم.

با فیلتر کردن MRAs مغزهای معمولی و محاسبه میزان رگ های خونی شروع کنید. برای انجام این کار ، حلقه for را اجرا کنید. از آنجا که سه تصویر وجود دارد ، شرط i = [1: 3] خواهد بود.

تصویر را با دستور imread باز کرده و آن را به یک متغیر اختصاص دهید.

در مرحله بعد ، دستور if/else را با دستور if، else ایجاد کنید. برای دستور if ، از دستور اندازه (A ، 3) == 3 استفاده کنید ، جایی که A متغیری است که برای باز شدن روی تصویر استفاده می شود ، برای ایجاد دستور if برای زمانی که بعد سوم آرایه 3 است. سپس تصویر را تبدیل کنید 2D و با استفاده از دستور rgb2gray (A) رنگ را از بین ببرید و آن را به یک متغیر جدید اختصاص دهید. برای تغییر اندازه تصویر از دستور imresize (A ، [m n]) استفاده کنید. در این حالت ، اندازه تصاویر را به ماتریس 1024 x 1024 تغییر دادیم. برای تقویت ساختار لوله ای تصویر ، دوباره از دستور fibermetric استفاده کنید و آن را به یک متغیر جدید اختصاص دهید.

موارد زیر برای عبارت else است. اگر تصویر ماتریس سه بعدی نیست ، می خواهیم از تبدیل صرف نظر کنیم. همانند دستور if عمل کنید ، اما بدون دستور rgb2gray (A).

یک متغیر جدید ایجاد کنید و آن را برابر با متغیر از مرحله فیبر متریک بزرگتر از 0.15 قرار دهید. این آستانه تصویر را برای شدت های بیشتر از 0.15 نشان می دهد.

ما خطوط کدها را از مراحل 4 و 5 دستورالعمل از خط فیلتر متوسط تا خط نمایش (I) تکرار می کنیم. بعد ، از دستور sum (I (:)) برای جمع کردن تمام پیکسل های تشکیل دهنده رگ های خونی استفاده کنید و آن را به یک متغیر جداگانه اختصاص دهید. یک متغیر جدید NormalBloodVessels (i) نامگذاری کنید و آن را برابر با متغیر از دستور sum (I (:)) قرار دهید. این داده ها را به ماتریس اضافه می کند.

حلقه را تمام کرده و برای MRA مغزهایی که تحت تأثیر مویامویا قرار گرفته اند ، تکرار کنید. نام متغیر را در پایان MoyaMoyaBloodVessels (i) بگذارید تا آن را با MRA های معمولی مغز اشتباه نگیرید.

مرحله 8: یک آزمون T نمونه های مستقل اجرا کنید

یک آزمون T نمونه های مستقل اجرا کنید
یک آزمون T نمونه های مستقل اجرا کنید

از آنجا که دو نمونه مستقل و جمعیت کمی وجود دارد ، یک آزمون t نمونه مستقل اجرا کنید.

ایجاد و نامگذاری عملکردی که یک نمونه t مستقل را برای تعیین اینکه آیا میزان رگهای خونی در MRA مغزهای معمولی به میزان قابل توجهی برابر با MRA مغزهای تحت تأثیر مویامویا است یا خیر ، نامگذاری می کند.

فرضیه تنظیم شده برای آزمون را با استفاده از دستور disp ('X') نمایش دهید. در خط اول ، نمایش "فرضیه های دو نمونه t آزمون". در خط دوم ، "H0 = مقدار رگ های خونی یک مغز عادی برابر با میزان رگ های خونی مغز با بیماری مویامویا است" ، برای بیان فرضیه صفر. در خط سوم ، صفحه نمایش "HA = میزان رگ های خونی یک مغز عادی با میزان رگ های خونی مغز مبتلا به بیماری مویامویا برابر نیست." برای بیان فرضیه جایگزین

با استفاده از فاصله اطمینان 95٪ و اندازه نمونه 3 ، نمره t را با استفاده از فرمان tinv ([0.975 0.2525] ، 2) محاسبه کرده و به متغیر t اختصاص دهید. از دستور var (NormalBloodVessels) و var (MoyaMoyaBloodVessels) استفاده کنید و آنها را برای محاسبه واریانس هر دو مجموعه داده به متغیرها اختصاص دهید.

بررسی کنید که آیا واریانس نزدیک به یک است یا خیر. این کار را با ایجاد دستور if/else با دستور if، else انجام دهید. برای شرط در دستور if ، A / B == [0.25: 4] را بنویسید ، جایی که A متغیری است که واریانس عروق خونی طبیعی را در بر می گیرد و B متغیری است که واریانس عروق خونی مویامویا را در بر می گیرد. 25/0 و 4 از یک برآورد کلی برای تعیین مساوی بودن یا نبودن واریانس ها بدست می آید. سپس دو نمونه t را با [h، p] = ttest2 (A ، B ، 0.05 ، "هر دو" ، "برابر") اجرا کنید ، و A و B همان متغیرهایی هستند که قبلاً ذکر شد. برای عبارت else ، از [h، p] = ttest2 (A ، B ، 0.05 ، "هر دو" ، "نابرابر") برای اجرای دو نمونه t آزمون در مواردی که واریانس ها برابر نیستند استفاده کنید. دستور if/else را پایان دهید. با این کار p محاسبه می شود.

یک عبارت if/else ایجاد کنید که نتیجه ای بر اساس مقدار p نمایش دهد. شرط دستور if p> 0.05 خواهد بود. از آنجا که ما معمولاً در رد فرضیه صفر هنگامی که مقدار p بزرگتر از 0.05 است ، شکست می خوریم ، از دستور disp ('X') برای نمایش "چون مقدار p بیشتر از 0.05 است نمی توانیم فرضیه صفر را رد کنیم" و " بنابراین ما نمی توانیم رد کنیم که میزان رگ های خونی یک مغز طبیعی برابر با یک مغز مبتلا به بیماری مویامویا است. " در عبارت else ، از آنجا که ما معمولاً فرض صفر را هنگامی که مقدار p زیر 0.05 است رد می کنیم ، از دستور disp ('X') برای نمایش "چون مقدار p کمتر از 0.05 است فرضیه صفر را رد می کنیم" و " بنابراین ما نمی توانیم رد کنیم که میزان رگ های خونی یک مغز طبیعی برابر با مغز مبتلا به بیماری مویامویا نیست. " دستور if/else را پایان دهید.

توصیه شده: