תוכן עניינים:

פרויקט ארגז חול BME 60B: 6 שלבים
פרויקט ארגז חול BME 60B: 6 שלבים

וִידֵאוֹ: פרויקט ארגז חול BME 60B: 6 שלבים

וִידֵאוֹ: פרויקט ארגז חול BME 60B: 6 שלבים
וִידֵאוֹ: מחליקים לשבוע חדש🤪 2024, יולי
Anonim
פרויקט ארגז חול BME 60B
פרויקט ארגז חול BME 60B

פרויקט ארגז החול שלנו נועד לסייע לחוקרים בתחום הביולוגי לנתח דגימות תאים ולברר את תנאי התאים שלהם. לאחר שהמשתמש יזין תמונה של דגימת התא שלו, הקוד שלנו מעבד את התמונה בכדי שהיא תהיה מוכנה לספירת תאים על ידי המרת התמונה לגווני אפור ובינארי. הקוד מנצל סף להסרת מידע עודף שאינו קשור לתאים בפועל על מנת למצוא במדויק את המוני התא. לאחר ספירת מספר התאים בתמונה, הקוד שלנו נותן את גודל הפיקסל של התמונה ואז מוצא את התפלגות שטח התא על ידי מתווה מספר התאים מול שטח התאים על מנת לתת למשתמש את המפגש, שהוא אחוז השטח של צלחת תרבות המכוסה בתאים המעניינים. על סמך המפגש, החוקר יכול לקבוע אם יש לעבור את התאים או לא; מעבר של תאים מתייחס להרחבת החיים או מספר התאים או המיקרואורגניזמים על ידי העברת חלק מהתרבות למדיום גידול טרי, וזה שימושי כאשר התאים גדלים מדי או שנגמר להם המזון. לאחר הפעלת הקוד ועיבוד התמונה, המשתמש יכול להחליט אם הוא מקבל או דוחה את התוצאות, ולהמשיך להתאים את סף אחזור הנתונים במידת הצורך.

שלב 1: בחר והגדר את התמונה לניתוח

בחר והגדר את התמונה לניתוח
בחר והגדר את התמונה לניתוח

השלב הראשון בקוד שלנו הוא לבחור את התמונה המתאימה ולהגדיר אותה לניתוח ב- Matlab. אנו יכולים לבחור את התמונה באמצעות הפונקציה uigetfile המאפשרת לנו לתפוס כל קובץ ולהכניס אותו לתוכנית. לאחר מכן, באמצעות imread אנו קוראים את התמונה ומגדירים אותה לניתוח ב- Matlab. התמונה שנבחרה מוצגת לאחר מכן על חלקת משנה.

שלב 2: סף ו- GUI

סף ו- GUI
סף ו- GUI
סף ו- GUI
סף ו- GUI

ממש בתחילת הקוד נבחרת תמונה באמצעות "uigetfile" ולאחר מכן הגדרת התמונה עם משתנה. המשתנה ישמש לאחר מכן לזיהוי הקוד בעת הפעלת ניתוח שונה. חלקה של 2x2 נוצרת באיור. במיקום 1 תוצג התמונה המקורית. החלק הבא של הקוד הוא המקום בו מתבצעות התאמות של ספים. בתחילה נעשה שימוש בברירת מחדל של סף של 0.6 והוא מוצג במיקום 2 של חלקת המשנה. לאחר מכן משתמשים בהצהרת if-כדי לקבוע אם המשתמש רוצה לשמור על הסף או להתאים אותו. המשתמש יכול להתאים את הסף באמצעות GUI הכולל את התמונה בתנאי סף שונים, המחוון ולחצן שמירה. לאחר קביעת הסף, המשתמש ילחץ על כפתור השמירה כדי לשמור את התמונה והיא תישמר בקבצי MATLAB של משתמשים כקובץ-p.webp

שלב 3: תכנון קווי מתאר והפצת תאים

תכנון קווי מתאר והפצת תאים
תכנון קווי מתאר והפצת תאים
תכנון קווי מתאר והפצת תאים
תכנון קווי מתאר והפצת תאים

החלק הבא של הקוד משרטט את קווי המתאר. יש לולאה שבה התאים מוקפים בהיקף אדום, והתאים שנמצאים בחלקו העליון של תא אחר מסומנים בירוק. התמונה המתוארת מוצגת לאחר מכן במיקום 3 עם קו מרחק אינטראקטיבי. קו זה יקבע את מספר הפיקסלים בשורה המותאמת על ידי המשתמש לממיר פיקסל למילימטר. גורם המרחק מכפיל אז את השטח שנקבע על ידי אזור האזור והשטח מתבטא כעת במילימטרים בריבוע. לאחר מכן הנתונים משרטטים באמצעות היסטוגרמה כדי לראות את התפלגות התאים לפי שטחה. לאחר מכן יוצג היסטוגרמה זו במיקום 4.

שלב 4: המרת תמונת תא

המרת תמונת תא
המרת תמונת תא

בשלב זה לקחנו את התמונה בגווני אפור ובינארו, סיננו והפכנו אותה. ביצוע פונקציות אלה על התמונה הסיר פיקסלים רועשים שעלולים לטעות בתאים והפכו את התמונה לחלקה ורכה יותר סביב שולי התא. זה נעשה כדי לחלץ את התאים שבתמונה כ"כתמים "מובחנים שהיו שונים בעוצמתם מהרקע. ה"כתמים "היו תמונות לבנות בעוצמה גבוהה והרקע היה שחור. אם היו נותנים לנו עוד קצת זמן היינו משתמשים בהמרת תמונה אחרת של Blob במקום בפונקציה imbinarize כדי להיות מדויקים יותר ומתאימים יותר לתמונות שלנו, אבל היינו צריכים יותר זמן לחקור וליישם את הפונקציה.

שלב 5: ספירת תאים וחישוב התכנסות התא

ספירת תאים וחישוב התכנסות התא
ספירת תאים וחישוב התכנסות התא

בשלב זה של הקוד, כיוונו לספור את מספר התאים שהיו בתמונה. השתמשנו בעיקר בפונקציה regionprops כדי לחשב את שטחי הכתמים ואם השטח היה מחושב להיות בגבול הרצוי שלנו הוא היה מתווה על חלקת משנה. הגבולות נקבעו על מנת להסיר פיקסלים רועשים קטנים או עוצמות גדולות שלא היו תאים. מונה התא היה אז סופר את הצנטרואידים שנוספו לאחר מכן ומוסיף אותם לדלפק בלולאת ה- for. לאחר שנקבעו שטחי התאים הצלחנו לחשב מפגש. החשיבות העיקרית של שלב זה בקוד הייתה למצוא את מפגש התאים וזה היה מכריע למטרתנו הסופית של הקוד. עשינו זאת על ידי חישוב על ידי סיכום הפיקסלים (סכום (allAreas)) בכל כתם ולאחר מכן חלוקתו בערך הפיקסל הכולל של התמונה (numel (img)). יחס זה ייתן לנו את המפגש ואם הוא נקבע שהוא גדול מ -80% ממה שהגיע הזמן שהתאים יעברו על ידי החוקר. כיוונו להיות כמה שיותר מדויקים ומדויקים אך עם הזמן המוגבל כך אכן קרה דיוק. אם היה מאפשר זמן היינו בוחנים דרכים להפוך את ספירת הכתמים למדויקת יותר, כגון יותר טכניקות סינון ו/או טרנספורמציה של Hough מכיוון שלא נעשה מספיק מחקר כדי לנסות את טכניקת הסינון הזו.

שלב 6: עיגול התאים

עיגול התאים
עיגול התאים
עיגול התאים
עיגול התאים

לפני שנוכל למדוד את העיגול של כתם בתמונה, עלינו להמיר מ- RGB לגווני אפור, לבצע בינארי, להפוך ולהסנן את התמונה. טכניקת סינון משתמשת בפונקציה bwareaopen, המסננת את תמונת העניין והיא מסירה מפרטים או פיקסלים קטנים מדי שאינם מייצגים את גודל התא. אלמנט מבנה נוצר בצורת דיסק ושכונה של 2 והוא משמש למילוי פערים ברקע או בתוך התאים. לאחר מכן אנו משתמשים בפונקציה bwboundaries העוקבת אחר כתמים ומאחסנת אותם למטריצה. לאחר מכן אנו מסמנים את התמונה באמצעות צבעים שונים, כך שתהפוך לוויזואלי ברור יותר. לאחר מכן, באמצעות לולאת for הפועלת על פי מספר האובייקטים והחורים שנמצאים בתמונה, היא מציבה גבול סביב הכתמים המתאימים למערך זה. ברגע שהלולאה הזו מסתיימת, לולאה נוספת מתחילה, שוב בהתאם למספר האובייקטים והחורים שנמצאים בתמונה. הפעם אנו משתמשים בפונקציה regionprops שאוספת נכסים מסוימים כמו שטח מהמערך ומאחסנת את המידע המכיל את מספר האובייקטים והחורים. בעזרת מידע זה, אנו מחשבים את השטח וההיקף של אובייקטים אלה באמצעות צורת הצנטרואיד. נקבע סף על מנת להשוות את התוצאות לאחר שנחשב את היחידה המטרית של אובייקט מעגלי ומתווה מדידה זו כטקסט לצד הצנטרואידים המחושבים. הקוד הסופי יציג את העיגול של התאים השונים הנמצאים בתמונה וכל ערכים הקרובים לערך אחד יהיו עגולים יותר מאחרים. ערך 1 מרמז שהתא עגול לחלוטין ובמצב טוב לעבור אותו.

מוּמלָץ: