Spisu treści:

Projekt BME 60B Sandbox: 6 kroków
Projekt BME 60B Sandbox: 6 kroków

Wideo: Projekt BME 60B Sandbox: 6 kroków

Wideo: Projekt BME 60B Sandbox: 6 kroków
Wideo: BME Sandbox Project 2024, Lipiec
Anonim
Projekt piaskownicy BME 60B
Projekt piaskownicy BME 60B

Nasz projekt Sandbox ma na celu pomóc naukowcom z dziedziny biologii w analizie próbek komórek i poznaniu stanu ich komórek. Gdy użytkownik wprowadzi obraz próbki komórki, nasz kod przetwarza obraz, aby przygotować go do zliczania komórek, konwertując obraz na skalę szarości i binarny. Kod wykorzystuje progowanie w celu usunięcia nadmiaru informacji niezwiązanych z rzeczywistymi komórkami w celu dokładnego znalezienia mas komórek. Po zliczeniu liczby komórek w obrazie, nasz kod podaje rozmiar obrazu w pikselach, a następnie znajduje rozkład obszaru komórki, wykreślając liczbę komórek w stosunku do obszaru komórek, aby dać użytkownikowi konfluencję, która jest procent powierzchni naczynia do hodowli, który jest pokryty komórkami będącymi przedmiotem zainteresowania. Na podstawie konfluencji badacz może określić, czy komórki powinny być pasażowane; pasażowanie komórek odnosi się do wydłużenia życia lub liczby komórek lub mikroorganizmów poprzez przeniesienie części kultury do świeżej pożywki wzrostowej i jest przydatne, gdy komórki rosną zbyt duże lub brakuje im pożywienia. Po uruchomieniu kodu i przetworzeniu obrazu użytkownik może zdecydować, czy zaakceptować lub odrzucić wyniki, i w razie potrzeby przystąpić do dostosowania progu w celu lepszego pobierania danych.

Krok 1: Wybierz i skonfiguruj obraz do analizy

Wybierz i skonfiguruj obraz do analizy
Wybierz i skonfiguruj obraz do analizy

Pierwszym krokiem w naszym kodzie jest wybranie odpowiedniego obrazu i skonfigurowanie go do analizy w Matlabie. Jesteśmy w stanie wybrać obraz za pomocą funkcji uigetfile, która pozwala pobrać dowolny plik i wstawić go do programu. Następnie za pomocą imread odczytujemy obraz i konfigurujemy go do analizy w Matlabie. Wybrany obraz jest następnie wyświetlany na wykresie podrzędnym.

Krok 2: Próg i GUI

Próg i GUI
Próg i GUI
Próg i GUI
Próg i GUI

Na samym początku kodu obraz jest wybierany za pomocą „uigetfile”, a następnie definiując ten obraz ze zmienną. Zmienna będzie następnie używana do identyfikacji kodu podczas wykonywania różnych analiz. Na rysunku tworzony jest podwykres 2x2. Na pozycji 1 zostanie wyświetlony oryginalny obraz. Kolejna sekcja kodu to miejsce, w którym odbywa się korekta progów. Początkowo używany jest domyślny próg 0,6 i jest wyświetlany na pozycji 2 wykresu cząstkowego. Instrukcja if jest następnie używana do określenia, czy użytkownik chce zachować próg, czy go dostosować. Użytkownik może dostosować próg za pomocą graficznego interfejsu użytkownika, który zawiera obraz w różnych warunkach progowych, suwak i przycisk zapisu. Po ustawieniu progu, użytkownik kliknie przycisk Zapisz, aby zapisać obraz i zostanie on zapisany w plikach MATLAB użytkowników jako-p.webp

Krok 3: Wykreślanie konturów i rozkład komórek

Wykreślanie konturów i rozkład komórek
Wykreślanie konturów i rozkład komórek
Wykreślanie konturów i rozkład komórek
Wykreślanie konturów i rozkład komórek

Następna część kodu przedstawia kontury. Istnieje pętla, w której komórki są otoczone czerwonym obwodem, a komórki znajdujące się na górze innej komórki są zaznaczone na zielono. Zarysowany obraz jest następnie wyświetlany w pozycji 3 z interaktywną linią odległości. Ten wiersz określi liczbę pikseli w wierszu dostosowaną przez użytkownika dla konwertera pikseli na milimetry. Współczynnik odległości jest następnie mnożony przez obszar określony przez rekwizyty regionu, a obszar jest teraz wyrażony w milimetrach do kwadratu. Dane są następnie wykreślane za pomocą histogramu, aby zobaczyć rozkład komórek według ich obszaru. Ten histogram zostanie wyświetlony na pozycji 4.

Krok 4: Konwertuj obraz komórki

Konwertuj obraz komórki
Konwertuj obraz komórki

W tym kroku zrobiliśmy obraz w skali szarości i zbinaryzowaliśmy go, przefiltrowaliśmy i odwróciliśmy. Wykonanie tych funkcji na obrazie usunęło zaszumione piksele, które można pomylić z komórkami, i sprawiło, że obraz był bardziej gładki i miękki wokół krawędzi komórek. Zrobiono to, aby wyodrębnić komórki z obrazu jako rozróżnialne „kropelki”, które różniły się intensywnością od tła. „Krople” były białymi obrazami o wysokiej intensywności, a tło było czarne. Jeśli pozwoliłoby to na trochę więcej czasu, użylibyśmy innej konwersji obrazu Blob zamiast funkcji imbinarize, aby była dokładniejsza i bardziej dopasowana do naszych obrazów, ale potrzebowaliśmy więcej czasu na zbadanie i wdrożenie tej funkcji.

Krok 5: Policz komórki i oblicz konfluencję komórek

Policz komórki i oblicz konfluencję komórek
Policz komórki i oblicz konfluencję komórek

W tym kroku kodu chcieliśmy policzyć liczbę komórek, które znajdowały się na obrazie. Używaliśmy głównie funkcji regionprops do obliczania obszarów obiektów blob, a jeśli obszar został obliczony tak, aby znajdował się w pożądanej granicy, zostałby wykreślony na wykresie podrzędnym. Granice zostały ustalone w celu usunięcia małych, zaszumionych pikseli lub dużych intensywności, które nie były komórkami. Licznik komórek zliczałby następnie wykreślone centroidy i dodawał je do licznika w pętli for. Po określeniu obszarów komórek byliśmy w stanie obliczyć konfluencję. Głównym znaczeniem tego kroku w kodzie było znalezienie zbiegu komórek, co miało kluczowe znaczenie dla naszego końcowego celu kodu. Zrobiliśmy to, obliczając, sumując piksele(sum(allAreas)) w każdym obiekcie blob, a następnie dzieląc je przez całkowitą wartość pikseli obrazu (numel(img)). Ten stosunek dawałby nam konfluencję i gdyby ustalono, że jest większy niż 80%, to jest czas na pasażowanie komórek przez badacza. Staraliśmy się być jak najbardziej precyzyjni i dokładni, ale w ograniczonym czasie pojawiły się niedokładności. Gdyby czas na to pozwolił, szukalibyśmy sposobów na dokładniejsze liczenie plamek, takich jak więcej technik filtrowania i/lub transformacja Hougha, ponieważ nie przeprowadzono jeszcze wystarczających badań, aby wypróbować tę technikę filtrowania

Krok 6: Okrągłość komórek

Okrągłość komórek
Okrągłość komórek
Okrągłość komórek
Okrągłość komórek

Zanim będziemy mogli zmierzyć okrągłość plamy na obrazie, musimy przekonwertować z RGB na skalę szarości, zbinaryzować, odwrócić i przefiltrować obraz. Technika filtrowania wykorzystuje funkcję bwareaopen, która filtruje interesujący obraz i usuwa wszelkie specyfikacje lub piksele, które są zbyt małe, które nie reprezentują rozmiaru komórki. Tworzony jest element strukturyzujący w kształcie dysku i sąsiedztwa 2 i służy do wypełniania wszelkich luk w tle lub w komórkach. Następnie używamy funkcji bwboundaries, która śledzi bloby i przechowuje je w macierzy. Następnie oznaczamy obraz różnymi kolorami, aby stał się wyraźniejszy. Następnie, używając pętli for, która działa zgodnie z liczbą obiektów i dziur znalezionych w obrazie, wyznacza granicę wokół plamek odpowiadających tej tablicy. Po zakończeniu tej pętli rozpoczyna się kolejna pętla, ponownie zgodnie z liczbą obiektów i dziur znalezionych na obrazie. Tym razem używamy funkcji regionprops, która zbiera pewne właściwości, takie jak area z tablicy i przechowuje informacje zawierające liczbę obiektów i dziur. Korzystając z tych informacji, obliczamy powierzchnię i obwód tych obiektów przy użyciu kształtu środka ciężkości. Próg jest ustawiany w celu porównania wyników po obliczeniu jednostki metrycznej okrągłego obiektu i wykreśleniu tego pomiaru jako tekstu obok obliczonych centroidów. Ostateczny kod wyświetli zaokrąglenie różnych komórek znalezionych na obrazie, a wszelkie wartości zbliżone do wartości jednej będą bardziej zaokrąglone niż inne. Wartość 1 oznacza, że komórka jest idealnie okrągła i jest w dobrym stanie do pasażowania.

Zalecana: