INHOUDSOPGAWE:

BME 60B Sandbox -projek: 6 stappe
BME 60B Sandbox -projek: 6 stappe

Video: BME 60B Sandbox -projek: 6 stappe

Video: BME 60B Sandbox -projek: 6 stappe
Video: MEJORANDO CREACIONES DE LA GALERÍA DE EVERTECH SANDBOX #6 2024, Julie
Anonim
BME 60B Sandbox Project
BME 60B Sandbox Project

Ons Sandbox -projek het ten doel om navorsers in die biologiese veld te help om selmonsters te ontleed en die toestande van hul selle uit te vind. Nadat die gebruiker 'n beeld van hul selmonster ingevoer het, verwerk ons kode die beeld om dit gereed te maak vir die telling van selle deur die beeld na grysskaal en binêre om te skakel. Die kode gebruik drempelwaarde om oortollige inligting wat nie met die werklike selle verband hou nie, te verwyder om die selmassas akkuraat te vind. Nadat ons die aantal selle in die prent getel het, gee ons kode die pixelgrootte van die beeld en vind ons dan die verspreiding van die seloppervlak deur die aantal selle teenoor die oppervlakte selle te teken om die samevloeiing aan die gebruiker te gee, wat die persentasie van die oppervlak van 'n kultuurgereg wat deur die selle van belang gedek word. Op grond van die samevloeiing kan die navorser bepaal of die selle verbysteek of nie; deurgang van selle verwys na die uitbreiding van die lewensduur of aantal selle of mikroörganismes deur 'n deel van die kultuur na 'n vars groeimedium oor te dra, en dit is handig as selle te groot word of voedsel opraak. Nadat die kode uitgevoer is en die beeld verwerk is, kan die gebruiker besluit of hy die resultate aanvaar of verwerp, en kan die drempel aangepas word vir 'n beter herwinning van data indien nodig.

Stap 1: Kies en konfigureer beeld vir analise

Kies en konfigureer beeld vir analise
Kies en konfigureer beeld vir analise

Die eerste stap in ons kode is om die toepaslike prentjie te kies en dit vir analise in Matlab op te stel. Ons kan die prent kies met die uigetfile -funksie waarmee ons enige lêer kan gryp en in die program kan plaas. Dan lees ons die prent met behulp van imread en stel dit op vir analise in Matlab. Die gekose prentjie word dan op 'n subplot vertoon.

Stap 2: Drempel en GUI

Drempel en GUI
Drempel en GUI
Drempel en GUI
Drempel en GUI

Heel aan die begin van die kode word 'n beeld gekies met 'uigetfile' en dan die beeld met 'n veranderlike gedefinieer. Die veranderlike sal dan gebruik word om die kode te identifiseer wanneer verskillende analises uitgevoer word. 'N 2x2 subplot word in figuur geskep. In posisie 1 sal die oorspronklike prent vertoon word. Die volgende afdeling van die kode is waar die aanpassings van drempels plaasvind. Aanvanklik word 'n standaard van 'n drempel van 0.6 gebruik en word dit in posisie 2 van die subplot vertoon. 'N As-verklaring word dan gebruik om te bepaal of die gebruiker die drempel wil behou of wil aanpas. Die gebruiker kan dan die drempel aanpas met behulp van 'n GUI wat die beeld bevat by verskillende drempelomstandighede, die skuifbalk en 'n stoorknoppie. Nadat die drempel ingestel is, klik die gebruiker op die knoppie Stoor om die prentjie te stoor, en dit word in die MATLAB -lêers van gebruikers gestoor as 'n-p.webp

Stap 3: Skets kontoere en selverdeling

Kontoer en selverspreiding te teken
Kontoer en selverspreiding te teken
Kontoer en selverspreiding te teken
Kontoer en selverspreiding te teken

Die volgende deel van die kode teken die kontoere. Daar is 'n lus waarin die selle omring word deur 'n rooi omtrek, en die selle wat bo -op 'n ander sel is, is groen omlyn. Die omlynde beeld word dan in posisie 3 vertoon met 'n interaktiewe afstandlyn. Hierdie reël bepaal die aantal pixels in die lyn wat deur die gebruiker aangepas is vir 'n pixel tot millimeter converter. Die afstandsfaktor word dan vermenigvuldig met die oppervlakte bepaal deur die gebiedstut en die oppervlakte word nou uitgedruk in millimeters in kwadraat. Die data word dan met 'n histogram uitgebeeld om die verspreiding van selle volgens sy oppervlakte te sien. Hierdie histogram sal dan in posisie 4 vertoon word.

Stap 4: Skakel selbeeld om

Skakel selbeeld om
Skakel selbeeld om

In hierdie stap het ons die grysskaalbeeld geneem en dit binariseer, gefiltreer en omgekeer. Deur hierdie funksies op die prent uit te voer, word raserige pixels verwyder wat deur selle verwar kan word en die beeld gladder en sagter om die selrande gemaak. Dit is gedoen om die selle in die prent te onttrek as onderskeibare "blobs" wat in intensiteit van die agtergrond verskil. Die "Blobs" was wit beelde met 'n hoë intensiteit en die agtergrond was swart. As ons 'n bietjie meer tyd toegelaat het, sou ons 'n ander Blob -beeldomskakeling in plaas van die imbinarize -funksie gebruik het om meer akkuraat en meer by ons beelde te pas, maar ons het meer tyd nodig gehad om die funksie te ondersoek en te implementeer.

Stap 5: Tel selle en bereken selinvloei

Tel selle en bereken selinvloei
Tel selle en bereken selinvloei

In hierdie stap van die kode wou ons die aantal selle in die prent tel. Ons het hoofsaaklik die funksie regionprops gebruik om die oppervlaktes van die blobs te bereken, en as die oppervlakte in die gewenste grens was, sou dit op 'n subplot geteken word. Die grense is gestel om klein raserige pixels of groot intensiteite wat nie selle is nie, te verwyder. Die selteller tel dan die sentroïede wat daarna geplot is en voeg dit by die toonbank in die for lus. Sodra die oppervlaktes van die selle bepaal is, kon ons samevloeiing bereken. Die belangrikste belang van hierdie stap in die kode was om die samevloeiing van die selle te vind, en dit was van deurslaggewende belang vir ons einddoel van die kode. Ons het dit gedoen deur te bereken deur die pixels (som (allAreas)) in elke blob op te som en dit dan te deel deur die totale pixelwaarde van die beeld (getal (img)). Hierdie verhouding gee ons die samevloeiing en as dit bepaal word dat dit groter as 80% is, is dit tyd dat die selle deur die navorser geslaag word. Ons was daarop gemik om so akkuraat en akkuraat as moontlik te wees, maar met die beperkte tyd het onnoukeurigheid plaasgevind. As die tyd dit toelaat, sou ons gekyk het na maniere om die tel van blobs meer akkuraat te maak, soos meer filtertegnieke en/of 'n Hough Transform, aangesien daar nog nie genoeg navorsing gedoen is om die filtertegniek te probeer nie

Stap 6: Rondheid van selle

Rondheid van selle
Rondheid van selle
Rondheid van selle
Rondheid van selle

Voordat ons die rondheid van die blob in 'n beeld kan meet, moet ons van RGB na grysskaal omskakel, binariseer, omkeer en filter. 'N Filtreringstegniek gebruik die funksie bwareaopen, wat die prentjie van belang filtreer en alle spesifikasies of pixels wat te klein is wat nie die grootte van 'n sel verteenwoordig nie, verwyder word. 'N Struktuurelement word geskep met die vorm van 'n skyf en omgewing van 2 en dit word gebruik om gapings op die agtergrond of binne die selle in te vul. Dan gebruik ons die funksie bwboundaries wat blobs naspeur en dit in 'n matriks stoor. Ons gee die prent dan 'n etiket met verskillende kleure, sodat dit 'n duideliker beeld word. Deur 'n for -lus te gebruik wat volgens die aantal voorwerpe en gate in die prentjie loop, stel dit 'n grens rondom die blobs wat ooreenstem met hierdie skikking. Sodra hierdie lus klaar is, begin 'n ander lus, weer volgens die aantal voorwerpe en gate in die prent. Hierdie keer gebruik ons die funksie regionprops wat sekere eienskappe soos oppervlakte uit die skikking versamel en die inligting wat die aantal voorwerpe en gate bevat, stoor. Met behulp van hierdie inligting, bereken ons die oppervlakte en omtrek van hierdie voorwerpe met behulp van die sentroïedvorm. 'N Drempel word gestel om die resultate te vergelyk sodra ons die metrieke eenheid van 'n sirkelvormige voorwerp bereken en hierdie meting as 'n teks langs die sentroïede bereken. Die finale kode sal die rondheid van die verskillende selle in die prentjie vertoon, en enige waardes naby die waarde van die een sal meer rond wees as ander. 'N Waarde van 1 impliseer dat die sel perfek rond is en in 'n goeie toestand is om deur te gaan.

Aanbeveel: