فهرست مطالب:

BME 60B Sandbox Project: 6 مرحله
BME 60B Sandbox Project: 6 مرحله

تصویری: BME 60B Sandbox Project: 6 مرحله

تصویری: BME 60B Sandbox Project: 6 مرحله
تصویری: BME Sandbox Project 2024, جولای
Anonim
BME 60B Sandbox Project
BME 60B Sandbox Project

هدف پروژه Sandbox ما کمک به محققان در زمینه بیولوژیکی تجزیه و تحلیل نمونه های سلولی و اطلاع از شرایط سلول های آنها است. بعد از اینکه کاربر تصویری از نمونه سلول خود را وارد کرد ، کد ما تصویر را پردازش می کند تا با تبدیل تصویر به مقیاس خاکستری و باینری ، آن را برای شمارش سلول آماده کند. کد از آستانه برای حذف اطلاعات اضافی که مربوط به سلولهای واقعی نیست استفاده می کند تا توده های سلولی را به طور دقیق پیدا کند. پس از شمارش تعداد سلولهای موجود در تصویر ، کد ما اندازه پیکسل تصویر را نشان می دهد و سپس با رسم تعداد سلولها در مقابل سطح سلولها توزیع ناحیه سلول را پیدا می کند تا کاربر به هم متصل شود. درصد از سطح یک ظرف کشت که توسط سلولهای مورد نظر پوشانده شده است. بر اساس محل تلاقی ، محقق می تواند تعیین کند که آیا سلول ها باید پاساژ شوند یا نه. انتقال سلولها به گسترش عمر یا تعداد سلولها یا میکروارگانیسمها با انتقال مقداری از کشت به محیط رشد تازه اشاره دارد و زمانی مفید است که سلولها بیش از حد بزرگ شوند یا مواد غذایی آنها تمام شود. پس از اجرای کد و پردازش تصویر ، کاربر می تواند تصمیم بگیرد که آیا نتایج را می پذیرد یا رد می کند و در صورت نیاز آستانه را برای بازیابی بهتر داده ها تنظیم می کند.

مرحله 1: انتخاب و پیکربندی تصویر برای تجزیه و تحلیل

انتخاب و پیکربندی تصویر برای تجزیه و تحلیل
انتخاب و پیکربندی تصویر برای تجزیه و تحلیل

اولین قدم در کد ما انتخاب تصویر مناسب و پیکربندی آن برای تجزیه و تحلیل در Matlab است. ما قادر به انتخاب تصویر با استفاده از تابع uigetfile هستیم که به ما امکان می دهد هر فایلی را گرفته و آن را در برنامه قرار دهیم. سپس ، با استفاده از imread ، تصویر را می خوانیم و آن را برای تجزیه و تحلیل در Matlab پیکربندی می کنیم. سپس تصویری که انتخاب می شود بر روی یک قطعه فرعی نمایش داده می شود.

مرحله 2: Threshold و GUI

آستانه و GUI
آستانه و GUI
آستانه و GUI
آستانه و GUI

در ابتدای کد ، یک تصویر با استفاده از "uigetfile" انتخاب می شود و سپس آن تصویر را با یک متغیر تعریف می کند. سپس از متغیر برای شناسایی کد هنگام انجام تجزیه و تحلیل های مختلف استفاده می شود. یک زیرپلات 2x2 در شکل ایجاد شده است. در موقعیت 1 ، تصویر اصلی نمایش داده می شود. بخش بعدی کد جایی است که تنظیمات آستانه انجام می شود. در ابتدا از پیش فرض آستانه 0.6 استفاده می شود و در موقعیت 2 قسمت فرعی نمایش داده می شود. سپس از دستور if برای تعیین اینکه آیا کاربر می خواهد آستانه را حفظ کند یا آن را تنظیم کند استفاده می شود. کاربر می تواند آستانه را با استفاده از GUI که شامل تصویر در شرایط مختلف آستانه ، نوار لغزنده و دکمه ذخیره است تنظیم کند. پس از تعیین آستانه ، کاربر برای ذخیره تصویر روی دکمه ذخیره کلیک می کند و در فایل های MATLAB کاربران به صورت-p.webp

مرحله 3: رسم خطوط و توزیع سلول

ترسیم خطوط و توزیع سلولی
ترسیم خطوط و توزیع سلولی
ترسیم خطوط و توزیع سلولی
ترسیم خطوط و توزیع سلولی

قسمت بعدی کد خطوط را ترسیم می کند. یک حلقه وجود دارد که در آن سلولها با یک محیط قرمز محصور شده اند و سلولهایی که در بالای یک سلول دیگر قرار دارند با رنگ سبز مشخص شده اند. سپس تصویر ترسیم شده در موقعیت 3 با خط فاصله تعاملی نمایش داده می شود. این خط تعداد پیکسل ها را در خط تنظیم شده توسط کاربر برای مبدل پیکسل به میلی متر تعیین می کند. سپس فاکتور فاصله مساحت تعیین شده توسط ناحیه را ضرب می کند و مساحت اکنون بر حسب میلی متر مربع بیان می شود. سپس داده ها با استفاده از هیستوگرام رسم می شوند تا توزیع سلول ها بر اساس ناحیه آن را مشاهده کنند. این هیستوگرام سپس در موقعیت 4 نمایش داده می شود.

مرحله 4: تبدیل تصویر سلول

تبدیل تصویر سلول
تبدیل تصویر سلول

در این مرحله ما تصویر مقیاس خاکستری را گرفتیم و آن را دوتایی ، فیلتر و وارونه کردیم. انجام این عملکردها روی تصویر ، پیکسل های پر سر و صدا را که ممکن بود با سلول اشتباه گرفته شوند ، حذف کرده و باعث صاف و نرم شدن تصویر در اطراف لبه های سلول شده است. این کار برای استخراج سلول های موجود در تصویر به عنوان "حباب" قابل تشخیص انجام شده است که شدت آنها با پس زمینه متفاوت است. "حباب" تصاویر سفید با شدت بالا و پس زمینه سیاه بود. اگر زمان کمی بیشتر مجاز می بودیم ، از تصویر مختلف Blob به جای تابع imbinarize استفاده می کردیم تا دقیق تر و مناسب تصاویر ما باشد ، اما به زمان بیشتری برای تحقیق و پیاده سازی این تابع نیاز داشتیم.

مرحله 5: شمارش سلولها و محاسبه تلاقی سلولها

شمارش سلولها و محاسبه تلاقی سلولی
شمارش سلولها و محاسبه تلاقی سلولی

در این مرحله از کد ، هدف ما شمارش تعداد سلولهای موجود در تصویر بود. ما در درجه اول از تابع areaprops برای محاسبه مساحت حباب ها استفاده کردیم و اگر مساحت در محدوده مورد نظر ما محاسبه شود ، در یک فرعی فرعی ترسیم می شود. محدوده ها به منظور حذف پیکسل های کوچک پر سر و صدا یا شدت زیاد که سلول نبودند تعیین شد. سپس شمارنده سلولی سانتروئیدهایی را که سپس ترسیم شده بود می شمارد و آنها را به شمارنده در حلقه for اضافه می کند. پس از تعیین سطح سلول ها ، ما توانستیم محل تلاقی را محاسبه کنیم. اهمیت اصلی این مرحله در کد ، یافتن محل تلاقی سلول ها بود و این برای هدف نهایی ما از کد محوری بود. ما این کار را با جمع بندی پیکسل ها (sum (allAreas)) در هر لکه و سپس تقسیم بر مقدار پیکسل کل تصویر (numel (img)) انجام دادیم. این نسبت به ما تلاقی می دهد و اگر بیشتر از 80٪ زمان تعیین شده برای زمان عبور سلول ها توسط محقق تعیین شود. ما قصد داشتیم تا آنجا که ممکن است دقیق و دقیق باشیم ، اما با زمان محدود ، بنابراین نادرستی رخ داد. اگر زمان مجاز بود ، ما به دنبال راه هایی برای دقیق تر شمارش حباب ها مانند تکنیک های فیلتر بیشتر و/یا Hough Transform بودیم ، زیرا هنوز تحقیقات کافی برای آزمایش این روش فیلترینگ انجام نشده است.

مرحله 6: گرد بودن سلول ها

گرد بودن سلول ها
گرد بودن سلول ها
گرد بودن سلول ها
گرد بودن سلول ها

قبل از اینکه بتوانیم گردی لکه را در یک تصویر اندازه گیری کنیم ، باید از RGB به مقیاس خاکستری تبدیل کنیم ، تصویر را دوتایی ، معکوس و فیلتر کنیم. یک تکنیک فیلترینگ از عملکرد bwareaopen استفاده می کند که تصویر مورد علاقه را فیلتر می کند و هرگونه مشخصات یا پیکسل های بسیار کوچک را که اندازه یک سلول را نشان نمی دهد حذف می کند. یک عنصر ساختاردهی با شکل دیسک و محله 2 ایجاد می شود و از آن برای پر کردن هرگونه شکاف در پس زمینه یا درون سلول ها استفاده می شود. سپس از تابع bwboundaries استفاده می کنیم که blobs را ردیابی می کند و آن را در یک ماتریس ذخیره می کند. سپس تصویر را با استفاده از رنگهای مختلف برچسب گذاری می کنیم تا بصری واضح تر شود. در مرحله بعد ، با استفاده از حلقه for که با توجه به تعداد اشیاء و حفره های موجود در تصویر اجرا می شود ، محدوده ای در اطراف لکه های مربوط به این آرایه تعیین می کند. پس از اتمام این حلقه ، حلقه دیگری شروع می شود ، دوباره با توجه به تعداد اشیاء و حفره های موجود در تصویر. این بار از تابع regionprops استفاده می کنیم که ویژگی های خاصی مانند منطقه را از آرایه جمع آوری کرده و اطلاعات حاوی تعداد اشیاء و حفره ها را ذخیره می کند. با استفاده از این اطلاعات ، مساحت و محیط این اجسام را با استفاده از شکل centroid محاسبه می کنیم. هنگامی که واحد متریک یک شیء دایره ای را محاسبه می کنیم و این اندازه گیری را به عنوان متن در کنار محاسبه سانتریدها نشان می دهیم ، یک آستانه به منظور مقایسه نتایج تعیین می شود. کد نهایی گردی سلولهای مختلف موجود در تصویر را نشان می دهد و هر مقداری نزدیک به مقدار یک از دیگر گردتر خواهد بود. مقدار 1 به این معنی است که سلول کاملاً گرد است و در وضعیت خوبی قرار دارد.

توصیه شده: