Obsah:

Projekt sandboxu BME 60B: 6 krokov
Projekt sandboxu BME 60B: 6 krokov

Video: Projekt sandboxu BME 60B: 6 krokov

Video: Projekt sandboxu BME 60B: 6 krokov
Video: BME Sandbox Project 2024, Júl
Anonim
Projekt sandboxu BME 60B
Projekt sandboxu BME 60B

Cieľom nášho projektu Sandbox je pomôcť výskumníkom v biologickom poli analyzovať vzorky buniek a zistiť stav ich buniek. Potom, čo používateľ zadá obrázok svojej bunkovej vzorky, náš kód obrázok spracuje, aby bol pripravený na počítanie buniek prevedením obrázku na stupne šedej a binárne. Kód využíva prahové hodnoty na odstránenie prebytočných informácií, ktoré sa netýkajú skutočných buniek, s cieľom presne nájsť masy buniek. Po spočítaní počtu buniek na obrázku náš kód udáva veľkosť obrázka v pixeloch a potom zistí distribúciu oblasti buniek vynesením počtu buniek voči ploche buniek, aby mal používateľ k dispozícii sútok. percento povrchu kultivačnej misky, ktorá je pokrytá požadovanými bunkami. Na základe sútoku môže výskumník určiť, či by bunky mali byť pasážované alebo nie; pasážovanie buniek sa týka predĺženia života alebo počtu buniek alebo mikroorganizmov prenosom časti kultúry do čerstvého rastového média a je užitočné, keď bunky rastú príliš veľké alebo im dochádza jedlo. Po spustení kódu a spracovaní obrázku sa používateľ môže rozhodnúť, či výsledky prijme alebo odmietne, a v prípade potreby pristúpi k úprave prahu pre lepšie načítanie údajov.

Krok 1: Vyberte a nakonfigurujte obrázok na analýzu

Vyberte a nakonfigurujte obrázok na analýzu
Vyberte a nakonfigurujte obrázok na analýzu

Prvým krokom v našom kóde je vybrať príslušný obrázok a nakonfigurovať ho na analýzu v programe Matlab. Obrázok sme schopní vybrať pomocou funkcie uigetfile, ktorá nám umožní chytiť ľubovoľný súbor a vložiť ho do programu. Potom pomocou imread prečítame obrázok a nakonfigurujeme ho na analýzu v Matlabe. Vybraný obrázok sa potom zobrazí na subplote.

Krok 2: Prah a GUI

Prah a GUI
Prah a GUI
Prah a GUI
Prah a GUI

Na úplnom začiatku kódu je zvolený obrázok pomocou „uigetfile“a potom je tento obrázok definovaný premennou. Premenná sa potom použije na identifikáciu kódu pri vykonávaní rôznych analýz. Na obrázku je vytvorený subplot 2x2. Na pozícii 1 sa zobrazí pôvodný obrázok. V ďalšej časti kódu sa uskutočňujú úpravy prahových hodnôt. Na začiatku sa použije predvolená hodnota prahu 0,6, ktorá sa zobrazí na pozícii 2 subploty. Príkaz if sa potom používa na určenie, či si používateľ chce prah ponechať alebo ho upraviť. Užívateľ potom môže nastaviť prahovú hodnotu pomocou GUI, ktoré obsahuje obrázok za rôznych prahových podmienok, posúvač a tlačidlo uloženia. Keď je prah nastavený, používateľ kliknutím na tlačidlo uloženia obrázok uloží a bude uložený v súboroch MATLAB používateľov ako súbor-p.webp

Krok 3: Vykreslenie obrysov a distribúcia buniek

Vykresľovanie obrysov a distribúcia buniek
Vykresľovanie obrysov a distribúcia buniek
Vykresľovanie obrysov a distribúcia buniek
Vykresľovanie obrysov a distribúcia buniek

Ďalšia časť kódu vykresľuje obrysy. Existuje slučka, v ktorej sú bunky uzavreté červeným obvodom, a tie bunky, ktoré sú v hornej časti inej bunky, sú vyznačené zelenou farbou. Načrtnutý obrázok sa potom zobrazí na pozícii 3 s interaktívnou čiarou vzdialenosti. Tento riadok určí počet pixelov v riadku, ktorý používateľ upraví pre prevodník pixelov na milimetre. Faktor vzdialenosti sa potom vynásobí plochou určenou regionálnymi rekvizitami a plocha sa teraz vyjadrí v milimetroch na druhú. Dáta sú potom vykreslené pomocou histogramu, aby sa zistilo rozdelenie buniek podľa jeho oblasti. Tento histogram sa potom zobrazí na pozícii 4.

Krok 4: Previesť obrázok bunky

Previesť obrázok bunky
Previesť obrázok bunky

V tomto kroku sme urobili obrázok v odtieňoch sivej a binarizovali sme ho, filtrovali a prevrátili. Vykonaním týchto funkcií na obrázku boli odstránené hlučné pixely, ktoré by sa mohli zameniť za bunky, a obraz bol hladší a jemnejší okolo okrajov buniek. To sa uskutočnilo s cieľom extrahovať bunky na obrázku ako rozlíšiteľné „škvrny“, ktoré sa líšili intenzitou od pozadia. „Blobs“boli biele obrázky s vysokou intenzitou a pozadie bolo čierne. Ak je to dovolené trochu viac času, použili by sme namiesto funkcie imbinarize inú konverziu Blob obrazu, aby bola presnejšia a vhodnejšia pre naše obrázky, ale potrebovali sme viac času na výskum a implementáciu funkcie.

Krok 5: Spočítajte bunky a vypočítajte sútok buniek

Spočítajte bunky a vypočítajte sútok buniek
Spočítajte bunky a vypočítajte sútok buniek

V tomto kroku kódu sme si dali za cieľ spočítať počet buniek, ktoré boli na obrázku. Na výpočet oblastí blobov sme primárne použili funkciu regionprops a ak by bola plocha vypočítaná tak, aby bola v našej požadovanej hranici, vykreslila by sa na podkres. Hranice boli nastavené tak, aby sa odstránili malé hlučné pixely alebo veľké intenzity, ktoré neboli bunkami. Počítadlo buniek potom spočítalo centroidy, ktoré boli potom vykreslené, a pridal ich k počítadlu v slučke for. Akonáhle boli určené oblasti buniek, boli sme schopní vypočítať sútok. Hlavnou dôležitosťou tohto kroku v kóde bolo nájsť sútok buniek a to bolo kľúčové pre náš konečný cieľ kódu. Urobili sme to tak, že sme spočítali súčet pixelov (súčet (všetky oblasti)) v každom bloku a potom ho vydelíme celkovou hodnotou pixelu obrázku (číslo (obrázok)). Tento pomer by nám poskytol sútok a keby bol stanovený ako viac ako 80%, ako je čas na pasážovanie buniek výskumníkom. Našim cieľom bolo byť čo najpresnejší a najpresnejší, ale s obmedzeným časom, aby došlo k nepresnosti. Ak to čas dovolí, hľadali by sme spôsoby, ako spresniť počítanie blobov, ako napríklad viac filtračných techník a/alebo Houghovu transformáciu, pretože ešte nebol vykonaný dostatočný výskum na vyskúšanie tejto filtračnej techniky.

Krok 6: Kruhovitosť buniek

Kruhovitosť buniek
Kruhovitosť buniek
Kruhovitosť buniek
Kruhovitosť buniek

Predtým, ako budeme môcť zmerať okrúhlosť objektu blob na obrázku, musíme obrázok previesť z RGB na stupne šedej, binarizovať, invertovať a filtrovať. Technika filtrovania používa funkciu bwareaopen, ktorá filtruje požadovaný obrázok a odstráni všetky príliš malé špecifikácie alebo pixely, ktoré nereprezentujú veľkosť bunky. Vytvorí sa štruktúrujúci prvok s tvarom disku a susednosťou 2 a použije sa na vyplnenie medzier na pozadí alebo v bunkách. Potom použijeme funkciu bwboundaries, ktorá sleduje objekty blob a ukladá ich do matice. Potom obrázok označíme pomocou rôznych farieb, aby sa stal jasnejším vizuálom. Ďalej pomocou slučky for, ktorá beží podľa počtu objektov a dier nachádzajúcich sa na obrázku, nastaví hranicu okolo blobov zodpovedajúcich tomuto poľu. Akonáhle sa táto slučka skončí, začne sa ďalšia slučka, opäť podľa počtu predmetov a dier, ktoré sa na obrázku nachádzajú. Tentokrát používame funkciu regionprops, ktorá z poľa zhromažďuje určité vlastnosti, ako napríklad oblasť, a ukladá informácie obsahujúce počet objektov a otvorov. Na základe týchto informácií vypočítame plochu a obvod týchto objektov pomocou tvaru ťažiska. Prah je nastavený na porovnanie výsledkov, keď vypočítame metrickú jednotku kruhového objektu a vykreslíme toto meranie ako text vedľa vypočítaných centroidov. Konečný kód zobrazí zaoblenie rôznych buniek nachádzajúcich sa na obrázku a všetky hodnoty blízke hodnote jedna budú okrúhlejší ako ostatné. Hodnota 1 znamená, že bunka je dokonale guľatá a je v dobrom stave na pasážovanie.

Odporúča: