Innholdsfortegnelse:

BME 60B Sandbox Project: 6 trinn
BME 60B Sandbox Project: 6 trinn

Video: BME 60B Sandbox Project: 6 trinn

Video: BME 60B Sandbox Project: 6 trinn
Video: BME Sandbox Project 2024, Juli
Anonim
BME 60B Sandbox Project
BME 60B Sandbox Project

Sandkasseprosjektet vårt har som mål å hjelpe forskere i det biologiske feltet med å analysere celleprøver og finne ut forholdene til cellene deres. Etter at brukeren har lagt inn et bilde av celleprøven, behandler koden vårt bildet for å gjøre det klart for celletelling ved å konvertere bildet til gråtoner og binært. Koden bruker terskelverdi for å fjerne overflødig informasjon som ikke angår de faktiske cellene for å finne cellemassene nøyaktig. Etter å ha talt antall celler i bildet, gir koden vår pikselstørrelsen til bildet og finner deretter fordelingen av celleområdet ved å plotte antall celler versus celleområdet for å gi brukeren samløpet, som er prosentandel av overflaten på en kulturrett som er dekket av cellene av interesse. Basert på samløpet kan forskeren avgjøre om cellene skal passeres eller ikke; passering av celler refererer til å utvide levetiden eller antallet celler eller mikroorganismer ved å overføre noe av kulturen til et nytt vekstmedium, og det er nyttig når celler blir for store eller går tom for mat. Etter å ha kjørt koden og behandlet bildet, kan brukeren bestemme om de godtar eller avviser resultatene, og fortsetter å justere terskelen for bedre henting av data om nødvendig.

Trinn 1: Velg og konfigurer bilde for analyse

Velg og konfigurer bilde for analyse
Velg og konfigurer bilde for analyse

Det første trinnet i koden vår er å velge riktig bilde og konfigurere det for analyse i Matlab. Vi kan velge bildet ved hjelp av uigetfile -funksjonen som lar oss ta en hvilken som helst fil og sette den inn i programmet. Deretter leser vi bildet og får det konfigurert for analyse i Matlab ved hjelp av imread. Bildet som er valgt, vises deretter på en delplot.

Trinn 2: Terskel og GUI

Terskel og GUI
Terskel og GUI
Terskel og GUI
Terskel og GUI

Helt i begynnelsen av koden velges et bilde ved hjelp av "uigetfile" og deretter definere det bildet med en variabel. Variabelen vil deretter bli brukt til å identifisere koden når du kjører annen analyse. En 2x2 subplot er opprettet i figur. I posisjon 1 vises det originale bildet. Den neste delen av koden er hvor justeringene av terskler finner sted. I utgangspunktet brukes en standard på en terskel på 0,6 og vises i posisjon 2 på delplottet. En if-setning brukes deretter til å avgjøre om brukeren vil beholde terskelen eller justere den. Brukeren kan justere terskelen ved hjelp av en GUI som inkluderer bildet ved forskjellige terskelbetingelser, glidebryteren og en lagringsknapp. Etter at terskelen er angitt, klikker brukeren på lagre -knappen for å lagre bildet, og det vil bli lagret i brukernes MATLAB -filer som en-p.webp

Trinn 3: Plotte konturer og celledistribusjon

Plotte konturer og celledistribusjon
Plotte konturer og celledistribusjon
Plotte konturer og celledistribusjon
Plotte konturer og celledistribusjon

Den neste delen av koden plotter konturene. Det er en sløyfe der cellene er omsluttet av en rød omkrets, og cellene som er på toppen av en annen celle er skissert med grønt. Det skisserte bildet vises deretter i posisjon 3 med en interaktiv avstandslinje. Denne linjen vil bestemme antall piksler i linjen justert av brukeren for en piksel til millimeter omformer. Avstandsfaktoren multipliseres deretter med arealet som er bestemt av regionprops, og området er nå uttrykt i millimeter i kvadrat. Dataene blir deretter plottet ved hjelp av et histogram for å se fordelingen av celler etter sitt område. Dette histogrammet vises deretter i posisjon 4.

Trinn 4: Konverter cellebilde

Konverter cellebilde
Konverter cellebilde

I dette trinnet tok vi gråtonebildet og binariserte, filtrerte og snudde det. Ved å utføre disse funksjonene på bildet fjernet støyende piksler som kan forveksles med celler og gjorde bildet mer jevnt og mykt rundt cellekantene. Dette ble gjort for å trekke ut cellene i bildet som skillbare "klatter" som skilte seg i intensitet fra bakgrunnen. "Blobs" var hvite bilder med høy intensitet og bakgrunnen var svart. Hvis det var tillatt litt mer tid, ville vi ha brukt en annen Blob -bildekonvertering i stedet for funksjonen imbinarize for å være mer nøyaktig og mer passende for bildene våre, men vi trengte mer tid til å forske på og implementere funksjonen.

Trinn 5: Tell celler og beregne cellekonfluens

Telle celler og beregne cellekonfluens
Telle celler og beregne cellekonfluens

I dette trinnet i koden hadde vi som mål å telle antall celler som var i bildet. Vi brukte først og fremst funksjonen regionprops for å beregne arealene på klattene, og hvis området ble beregnet til å være i ønsket grense, ville det bli plottet på en delplot. Grensene ble satt for å fjerne små støyende piksler eller store intensiteter som ikke var celler. Celletelleren vil deretter telle sentroidene som deretter ble plottet og legge dem til telleren i for -løkken. Når områdene i cellene var bestemt, var vi i stand til å beregne konfluens. Hovedviktigheten til dette trinnet i koden var å finne samløpet av cellene, og dette var avgjørende for vårt endelige mål med koden. Vi gjorde dette ved å beregne ved å summere opp pikslene (sum (allAreas)) i hver klatt og deretter dele den med den totale pikselverdien til bildet (nummer (img)). Dette forholdet vil gi oss samløpet, og hvis det ble bestemt å være større enn 80% enn det er på tide at cellene passeres av forskeren. Vi hadde som mål å være så presise og nøyaktige som mulig, men med begrenset tid så oppstod unøyaktighet. Hvis tiden tillot det, ville vi ha sett på måter å gjøre tellingen av klatter mer nøyaktig, for eksempel flere filtreringsteknikker og/eller en Hough Transform, ettersom det ikke var gjort nok forskning for å prøve den filtreringsteknikken

Trinn 6: Rundhet av celler

Rundhet av celler
Rundhet av celler
Rundhet av celler
Rundhet av celler

Før vi kan måle rundheten til blob i et bilde, må vi konvertere fra RGB til gråtoner, binære, invertere og filtrere bildet. En filtreringsteknikk bruker funksjonen bwareaopen, som filtrerer bildet av interesse, og den fjerner spesifikasjoner eller piksler som er for små som ikke representerer størrelsen på en celle. Et struktureringselement opprettes med en form på en disk og et område på 2, og det brukes til å fylle ut hull i bakgrunnen eller i cellene. Deretter bruker vi funksjonen bwboundaries som sporer blobs og lagrer den i en matrise. Vi merker deretter bildet med forskjellige farger, slik at det blir et tydeligere visuelt. Deretter setter den en grense rundt klossene som tilsvarer denne matrisen ved å bruke en for -løkke som går i henhold til antall objekter og hull som finnes i bildet. Når denne løkken er ferdig, begynner en annen sløyfe, igjen i henhold til antall objekter og hull som finnes i bildet. Denne gangen bruker vi funksjonen regionprops som samler visse egenskaper som område fra matrisen og lagrer informasjonen som inneholder antall objekter og hull. Ved hjelp av denne informasjonen beregner vi arealet og omkretsen til disse objektene ved hjelp av sentroidformen. En terskel er satt for å sammenligne resultatene når vi har beregnet den metriske enheten til et sirkulært objekt og plotter denne målingen som tekst ved siden av sentroider beregnet. Den endelige koden viser rundheten til de forskjellige cellene som finnes i bildet, og alle verdier nær verdien en vil være mer runde enn andre. En verdi på 1 innebærer at cellen er perfekt rund og er i god stand for å passeres.

Anbefalt: