Πίνακας περιεχομένων:

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 Project μας στοχεύει να βοηθήσει τους ερευνητές στο βιολογικό πεδίο να αναλύσουν δείγματα κυττάρων και να μάθουν τις συνθήκες των κυττάρων τους. Αφού ο χρήστης εισάγει μια εικόνα του δείγματος κελιού, ο κώδικάς μας επεξεργάζεται την εικόνα για να την ετοιμάσει για καταμέτρηση κελιών μετατρέποντας την εικόνα σε κλίμακα του γκρι και δυαδική. Ο κώδικας χρησιμοποιεί το κατώτατο όριο για να αφαιρέσει την περίσσεια πληροφοριών που δεν σχετίζονται με τα πραγματικά κύτταρα για να βρει με ακρίβεια τις κυτταρικές μάζες. Αφού μετρήσουμε τον αριθμό των κελιών στην εικόνα, ο κώδικας μας δίνει το μέγεθος των εικονοστοιχείων της εικόνας και στη συνέχεια βρίσκει την κατανομή της περιοχής κελιών σχεδιάζοντας τον αριθμό των κελιών έναντι της περιοχής των κελιών για να δώσει στον χρήστη τη συμβολή, ποσοστό της επιφάνειας ενός πιάτου καλλιέργειας που καλύπτεται από τα κύτταρα που μας ενδιαφέρουν. Με βάση τη συμβολή, ο ερευνητής μπορεί να καθορίσει εάν τα κύτταρα πρέπει να περάσουν ή όχι. Η διέλευση των κυττάρων αναφέρεται στην επέκταση της ζωής ή του αριθμού των κυττάρων ή των μικροοργανισμών μεταφέροντας μέρος της καλλιέργειας σε ένα φρέσκο μέσο ανάπτυξης και είναι χρήσιμο όταν τα κύτταρα μεγαλώνουν πολύ ή εξαντλούνται τα τρόφιμα. Μετά την εκτέλεση του κώδικα και την επεξεργασία της εικόνας, ο χρήστης μπορεί να αποφασίσει εάν αποδέχεται ή απορρίπτει τα αποτελέσματα και προχωρά στην προσαρμογή του ορίου για καλύτερη ανάκτηση δεδομένων, εάν χρειάζεται.

Βήμα 1: Επιλέξτε και διαμορφώστε την εικόνα για ανάλυση

Επιλέξτε και διαμορφώστε την εικόνα για ανάλυση
Επιλέξτε και διαμορφώστε την εικόνα για ανάλυση

Το πρώτο βήμα στον κώδικα μας είναι να επιλέξουμε την κατάλληλη εικόνα και να τη διαμορφώσουμε για ανάλυση στο Matlab. Είμαστε σε θέση να επιλέξουμε την εικόνα χρησιμοποιώντας τη συνάρτηση uigetfile που μας επιτρέπει να πιάσουμε οποιοδήποτε αρχείο και να το εισάγουμε στο πρόγραμμα. Στη συνέχεια, χρησιμοποιώντας το imread διαβάζουμε την εικόνα και τη διαμορφώνουμε για ανάλυση στο Matlab. Στη συνέχεια, η επιλεγμένη εικόνα εμφανίζεται σε ένα δευτερεύον τμήμα.

Βήμα 2: Κατώφλι και GUI

Threshold και GUI
Threshold και GUI
Threshold και GUI
Threshold και GUI

Στην αρχή του κώδικα μια εικόνα επιλέγεται χρησιμοποιώντας το "uigetfile" και στη συνέχεια ορίζει αυτήν την εικόνα με μια μεταβλητή. Στη συνέχεια, η μεταβλητή θα χρησιμοποιηθεί για τον προσδιορισμό του κώδικα κατά την εκτέλεση διαφορετικής ανάλυσης. Δημιουργείται ένα δευτερεύον οικόπεδο 2x2 στο σχήμα. Στη θέση 1, θα εμφανιστεί η αρχική εικόνα. Το επόμενο τμήμα του κώδικα είναι το σημείο όπου πραγματοποιούνται οι προσαρμογές των ορίων. Αρχικά χρησιμοποιείται ένα προεπιλεγμένο όριο 0,6 και εμφανίζεται στη θέση 2 του δευτερεύοντος σχεδίου. Στη συνέχεια, χρησιμοποιείται μια δήλωση if για να καθοριστεί εάν ο χρήστης θέλει να διατηρήσει το όριο ή να το προσαρμόσει. Ο χρήστης μπορεί να προσαρμόσει το όριο χρησιμοποιώντας ένα GUI που περιλαμβάνει την εικόνα σε διαφορετικές συνθήκες κατωφλίου, το ρυθμιστικό και ένα κουμπί αποθήκευσης. Αφού οριστεί το όριο, ο χρήστης θα κάνει κλικ στο κουμπί αποθήκευσης για να αποθηκεύσει την εικόνα και θα αποθηκευτεί στα αρχεία MATLAB των χρηστών ως-p.webp

Βήμα 3: Σχεδιάζοντας περιγράμματα και διανομή κυττάρων

Σχεδιάζοντας περιγράμματα και διανομή κυττάρων
Σχεδιάζοντας περιγράμματα και διανομή κυττάρων
Σχεδιάζοντας περιγράμματα και διανομή κυττάρων
Σχεδιάζοντας περιγράμματα και διανομή κυττάρων

Το επόμενο μέρος του κώδικα απεικονίζει τα περιγράμματα. Υπάρχει βρόχος στον οποίο τα κελιά περικλείονται από μια κόκκινη περίμετρο και τα κελιά που βρίσκονται στην κορυφή ενός άλλου κελιού περιγράφονται με πράσινο χρώμα. Η περιγραμμένη εικόνα εμφανίζεται στη συνέχεια στη θέση 3 με μια διαδραστική γραμμή απόστασης. Αυτή η γραμμή θα καθορίσει τον αριθμό των εικονοστοιχείων στη γραμμή που προσαρμόζεται από τον χρήστη για έναν μετατροπέα εικονοστοιχείου σε χιλιοστό. Ο συντελεστής απόστασης στη συνέχεια πολλαπλασιάζεται με το εμβαδόν που καθορίζεται από την περιοχή και η περιοχή εκφράζεται τώρα σε τετραγωνικά χιλιοστά. Στη συνέχεια, τα δεδομένα απεικονίζονται με τη χρήση ιστογράμματος για να δείτε την κατανομή των κελιών ανά περιοχή. Αυτό το ιστόγραμμα θα εμφανιστεί στη συνέχεια στη θέση 4.

Βήμα 4: Μετατροπή εικόνας κελιού

Μετατροπή εικόνας κελιού
Μετατροπή εικόνας κελιού

Σε αυτό το βήμα, πήραμε την εικόνα σε κλίμακα του γκρι και τη δυαδικοποιήσαμε, τη φιλτραρίσαμε και την αντιστρέψαμε. Η εκτέλεση αυτών των λειτουργιών στην εικόνα κατάργησε θορυβώδη εικονοστοιχεία που θα μπορούσαν να συγχέονται με τα κελιά και έκαναν την εικόνα πιο λεία και απαλή γύρω από τις άκρες των κελιών. Αυτό έγινε για να εξαχθούν τα κελιά της εικόνας ως διακριτές "κηλίδες" που διέφεραν σε ένταση από το φόντο. Τα "Blobs" ήταν λευκές εικόνες υψηλής έντασης και το φόντο ήταν μαύρο. Αν επιτρεπόταν λίγο περισσότερος χρόνος, θα είχαμε χρησιμοποιήσει μια διαφορετική μετατροπή εικόνας Blob αντί για τη λειτουργία imbinarize για να είμαστε πιο ακριβείς και πιο κατάλληλες για τις εικόνες μας, αλλά χρειαζόμασταν περισσότερο χρόνο για να ερευνήσουμε και να εφαρμόσουμε τη συνάρτηση.

Βήμα 5: Μετρήστε κελιά και υπολογίστε τη συμβολή κυττάρων

Μετρήστε κύτταρα και υπολογίστε τη συμβολή κυττάρων
Μετρήστε κύτταρα και υπολογίστε τη συμβολή κυττάρων

Σε αυτό το βήμα του κώδικα, στοχεύσαμε να μετρήσουμε τον αριθμό των κελιών που υπήρχαν στην εικόνα. Χρησιμοποιήσαμε πρωτίστως τη συνάρτηση areaprops για τον υπολογισμό των επιφανειών των βολβών και αν η περιοχή υπολογιζόταν ότι ήταν στο επιθυμητό μας όριο, θα σχεδιαζόταν σε ένα υποπερίγραμμα. Τα όρια τέθηκαν προκειμένου να αφαιρεθούν μικρά θορυβώδη pixel ή μεγάλες εντάσεις που δεν ήταν κελιά. Ο μετρητής κυττάρων θα μετράει στη συνέχεια τα κεντροειδή που σχεδιάστηκαν και θα τα προσθέσει στον μετρητή στον βρόχο for. Μόλις προσδιοριστούν οι περιοχές των κυττάρων, μπορέσαμε να υπολογίσουμε τη συμβολή. Η κύρια σημασία αυτού του βήματος στον κώδικα ήταν να βρούμε τη συμβολή των κελιών και αυτό ήταν καθοριστικό για τον τελικό στόχο του κώδικα. Αυτό το κάναμε υπολογίζοντας αθροίζοντας τα εικονοστοιχεία (άθροισμα (allAreas)) σε κάθε σταγόνα και στη συνέχεια διαιρώντας το με τη συνολική τιμή των εικονοστοιχείων της εικόνας (numel (img)). Αυτή η αναλογία θα μας έδινε τη συμβολή και αν είχε προσδιοριστεί ότι ήταν μεγαλύτερη από 80% από ότι είναι ώρα για τα κύτταρα να περάσουν από τον ερευνητή. Στόχος μας ήταν να είμαστε όσο το δυνατόν ακριβέστεροι και ακριβέστεροι, αλλά με τον περιορισμένο χρόνο, έτσι προέκυψε ανακρίβεια. Αν ο χρόνος το επέτρεπε, θα είχαμε ψάξει τρόπους για να κάνουμε την καταμέτρηση των σταγόνων πιο ακριβή, όπως περισσότερες τεχνικές φιλτραρίσματος και/ή ένα Hough Transform, καθώς δεν έχει γίνει ακόμη αρκετή έρευνα για να δοκιμαστεί αυτή η τεχνική φιλτραρίσματος

Βήμα 6: Στρογγυλότητα κυττάρων

Στρογγυλότητα κυττάρων
Στρογγυλότητα κυττάρων
Στρογγυλότητα κυττάρων
Στρογγυλότητα κυττάρων

Πριν μπορέσουμε να μετρήσουμε τη στρογγυλότητα του blob σε μια εικόνα, πρέπει να μετατρέψουμε από RGB σε κλίμακα του γκρι, να κάνουμε δυαδικό χαρακτήρα, να αντιστρέψουμε και να φιλτράρουμε την εικόνα. Μια τεχνική φιλτραρίσματος χρησιμοποιεί τη λειτουργία bwareaopen, η οποία φιλτράρει την εικόνα που μας ενδιαφέρει και αφαιρεί τυχόν προδιαγραφές ή εικονοστοιχεία που είναι πολύ μικρά και δεν αντιπροσωπεύουν το μέγεθος ενός κελιού. Δημιουργείται ένα στοιχείο δομής με σχήμα δίσκου και γειτονιά 2 και χρησιμοποιείται για να συμπληρώσει τυχόν κενά στο παρασκήνιο ή εντός των κελιών. Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση bwboundaries, η οποία εντοπίζει blobs και την αποθηκεύει σε έναν πίνακα. Στη συνέχεια, επισημαίνουμε την εικόνα χρησιμοποιώντας διαφορετικά χρώματα, έτσι ώστε να γίνει πιο καθαρή οπτική. Στη συνέχεια, χρησιμοποιώντας έναν βρόχο for που εκτελείται σύμφωνα με τον αριθμό των αντικειμένων και των οπών που βρίσκονται στην εικόνα, θέτει ένα όριο γύρω από τις κηλίδες που αντιστοιχούν σε αυτόν τον πίνακα. Μόλις τελειώσει αυτός ο βρόχος, ξεκινά ένας άλλος βρόχος, πάλι σύμφωνα με τον αριθμό των αντικειμένων και των οπών που βρίσκονται στην εικόνα. Αυτή τη φορά χρησιμοποιούμε τη συνάρτηση regionprops η οποία συγκεντρώνει ορισμένες ιδιότητες όπως η περιοχή από τον πίνακα και αποθηκεύει τις πληροφορίες που περιέχουν τον αριθμό των αντικειμένων και των οπών. Χρησιμοποιώντας αυτές τις πληροφορίες, υπολογίζουμε το εμβαδόν και την περίμετρο αυτών των αντικειμένων χρησιμοποιώντας το σχήμα centroid. Ορίζεται ένα κατώφλι για να συγκρίνουμε τα αποτελέσματα μόλις υπολογίσουμε τη μετρική μονάδα ενός κυκλικού αντικειμένου και σχεδιάσουμε αυτήν τη μέτρηση ως κείμενο δίπλα στα κεντροειδή που υπολογίζονται. Ο τελικός κώδικας θα εμφανίσει τη στρογγυλότητα των διαφορετικών κελιών που βρίσκονται στην εικόνα και τυχόν τιμές κοντά στην τιμή ενός θα είναι πιο στρογγυλές από άλλες. Η τιμή 1 υποδηλώνει ότι το κελί είναι τέλεια στρογγυλό και είναι σε καλή κατάσταση για να περάσει.

Συνιστάται: