Sisällysluettelo:

BME 60B Sandbox Project: 6 vaihetta
BME 60B Sandbox Project: 6 vaihetta

Video: BME 60B Sandbox Project: 6 vaihetta

Video: BME 60B Sandbox Project: 6 vaihetta
Video: BME Sandbox Project 2024, Heinäkuu
Anonim
BME 60B hiekkalaatikkohanke
BME 60B hiekkalaatikkohanke

Hiekkalaatikkoprojektimme tavoitteena on auttaa biologisen alan tutkijoita analysoimaan solunäytteitä ja selvittämään niiden solujen olosuhteet. Kun käyttäjä on syöttänyt kuvan solunäytteestään, koodimme käsittelee kuvan saadakseen sen valmiiksi solujen laskemiseksi muuntamalla kuvan harmaasävyiseksi ja binääriseksi. Koodi käyttää kynnystä poistamaan ylimääräiset tiedot, jotka eivät liity varsinaisiin soluihin, jotta solumassat löydetään tarkasti. Kun olemme laskeneet kuvan solujen lukumäärän, koodimme antaa kuvan pikselikoon ja löytää sitten solualueen jakauman piirtämällä solujen lukumäärän solujen pinta -alan suhteen, jotta käyttäjä saa yhtymäkohdan, joka on prosenttiosuus viljelyastian pinnasta, joka on kiinnostavien solujen peitossa. Yhdistymisen perusteella tutkija voi päättää, onko solut siirrettävä vai ei; solujen siirtäminen viittaa solujen tai mikro -organismien elämän tai lukumäärän laajentamiseen siirtämällä osa viljelmästä tuoreelle kasvualustalle, ja se on hyödyllinen, kun solut kasvavat liian suuriksi tai ruoka loppuu. Koodin suorittamisen ja kuvan käsittelyn jälkeen käyttäjä voi päättää, hyväksyykö vai hylkääkö tulokset, ja jatkaa tarvittaessa kynnyksen säätämistä tietojen parempaa noutamista varten.

Vaihe 1: Valitse ja määritä kuva analysoitavaksi

Valitse ja määritä kuva analysoitavaksi
Valitse ja määritä kuva analysoitavaksi

Ensimmäinen vaihe koodissamme on valita sopiva kuva ja määrittää se analysoitavaksi Matlabissa. Pystymme valitsemaan kuvan uigetfile -toiminnolla, jonka avulla voimme napata minkä tahansa tiedoston ja lisätä sen ohjelmaan. Sitten luemme kuvan imreadin avulla ja määritämme sen analysoitavaksi Matlabissa. Valittu kuva näkyy sitten osajoukossa.

Vaihe 2: Kynnysarvo ja graafinen käyttöliittymä

Kynnys ja graafinen käyttöliittymä
Kynnys ja graafinen käyttöliittymä
Kynnys ja graafinen käyttöliittymä
Kynnys ja graafinen käyttöliittymä

Koodin alussa kuva valitaan "uigetfile" -toiminnolla ja määritetään sitten kuva muuttujalla. Muuttujaa käytetään sitten koodin tunnistamiseen eri analyysejä suoritettaessa. Kuvioon luodaan 2x2 -osakaavio. Kohdassa 1 alkuperäinen kuva näytetään. Koodin seuraavassa osassa käsitellään kynnysarvoja. Aluksi käytetään kynnyksen oletusarvoa 0,6, ja se näkyy osakaavion kohdassa 2. If-lausetta käytetään sitten määrittämään, haluaako käyttäjä pitää kynnyksen vai muuttaa sitä. Käyttäjä voi säätää kynnystä käyttämällä graafista käyttöliittymää, joka sisältää kuvan eri kynnysolosuhteissa, liukusäätimen ja tallennuspainikkeen. Kun kynnys on asetettu, käyttäjä tallentaa kuvan napsauttamalla Tallenna -painiketta ja se tallennetaan käyttäjien MATLAB -tiedostoihin-p.webp

Vaihe 3: Muotojen piirtäminen ja solujen jakautuminen

Muotojen piirtäminen ja solujen jakautuminen
Muotojen piirtäminen ja solujen jakautuminen
Muotojen piirtäminen ja solujen jakautuminen
Muotojen piirtäminen ja solujen jakautuminen

Koodin seuraava osa piirtää ääriviivat. On silmukka, jossa solut on suljettu punaisella kehällä, ja ne solut, jotka ovat toisen solun päällä, on piirretty vihreänä. Rajattu kuva näytetään sitten kohdassa 3 vuorovaikutteisen etäisyysviivan kanssa. Tämä rivi määrittää pikselien lukumäärän, jonka käyttäjä on säätänyt pikseli -millimetri -muuntimelle. Etäisyyskerroin kerrotaan sitten aluepropsien määrittämällä alueella ja alue ilmaistaan nyt millimetreinä neliöinä. Tiedot piirretään sitten histogrammin avulla nähdäkseen solujen jakautumisen alueensa mukaan. Tämä histogrammi näytetään sitten kohdassa 4.

Vaihe 4: Muunna solukuva

Muunna solukuva
Muunna solukuva

Tässä vaiheessa otimme harmaasävykuvan ja binarisoitiin, suodatettiin ja käännettiin se. Näiden toimintojen suorittaminen kuvassa poisti meluisia pikseleitä, jotka voidaan sekoittaa soluihin, ja teki kuvasta tasaisemman ja pehmeämmän solun reunojen ympäriltä. Tämä tehtiin poimimaan kuvan solut erottuviksi "möykkyiksi", joiden intensiteetti eroaa taustasta. "Blobs" olivat voimakkaita valkoisia kuvia ja tausta musta. Jos olisimme sallineet hieman enemmän aikaa, olisimme käyttäneet eri Blob -kuvien muuntamista imbinarisointitoiminnon sijasta, jotta olisimme tarkempia ja paremmin kuviimme sopivia, mutta tarvitsimme enemmän aikaa toiminnon tutkimiseen ja toteuttamiseen.

Vaihe 5: Laske solut ja laske solujen yhtymäkohta

Laske solut ja laske solujen yhtymäkohta
Laske solut ja laske solujen yhtymäkohta

Tässä koodin vaiheessa pyrimme laskemaan kuvassa olevien solujen lukumäärän. Käytimme ensisijaisesti funktiota alueprops laskemalla möykkyjen alueet ja jos pinta -ala laskettiin haluamallemme rajalle, se piirrettiin osakaavioon. Rajat asetettiin poistamaan pienet meluisat pikselit tai suuret intensiteetit, jotka eivät olleet soluja. Solulaskuri laski sitten piirretyt keskustat ja lisäsi ne for -silmukan laskuriin. Kun solujen alueet oli määritetty, pystyimme laskemaan yhtymäkohdan. Tämän koodin vaiheen tärkein tarkoitus oli löytää solujen yhtymäkohta ja tämä oli keskeistä koodin lopputavoitteen kannalta. Teimme tämän laskemalla laskemalla yhteen kunkin blobin pikselit (summa (allAreas)) ja jakamalla sen sitten kuvan koko pikseliarvolla (numel (img)). Tämä suhde antaisi meille yhtymäkohdan ja jos sen todettiin olevan suurempi kuin 80% kuin on aika, jolloin tutkijan on läpäistävä solut. Pyrimme olemaan mahdollisimman täsmällisiä ja täsmällisiä, mutta rajallisessa ajassa virheitä tapahtui. Jos aika olisi sallinut, olisimme etsineet keinoja tehdä möykkyjen laskemisesta tarkempia, kuten enemmän suodatustekniikoita ja/tai Hough -muunnosta, koska tätä suodatustekniikkaa ei ole vielä tutkittu tarpeeksi

Vaihe 6: Solujen pyöreys

Solujen pyöreys
Solujen pyöreys
Solujen pyöreys
Solujen pyöreys

Ennen kuin voimme mitata möykkyjen pyöreyttä kuvassa, meidän on muutettava RGB harmaasävyiseksi, binaaristettava, käännettävä ja suodatettava kuva. Suodatustekniikka käyttää toimintoa bwareaopen, joka suodattaa kiinnostavan kuvan ja poistaa kaikki liian pienet tiedot tai pikselit, jotka eivät edusta solun kokoa. Rakenneelementti luodaan levyn muodolla ja naapurustolla 2, ja sitä käytetään täyttämään kaikki aukot taustalla tai solujen sisällä. Sitten käytämme funktiota bwboundaries, joka jäljittää blobit ja tallentaa sen matriisiin. Sitten merkitsemme kuvan eri väreillä, jotta siitä tulee selkeämpi visuaalinen. Seuraavaksi se käyttää for -silmukkaa, joka kulkee kuvassa olevien objektien ja reikien lukumäärän mukaan, ja asettaa tämän taulukon vastaavien möykkyjen ympärille rajan. Kun tämä silmukka on päättynyt, alkaa toinen silmukka, jälleen kuvassa olevien objektien ja reikien lukumäärän mukaan. Tällä kertaa käytämme toimintoa alueprops, joka kokoaa taulukosta tiettyjä ominaisuuksia, kuten alueen ja tallentaa tiedot, jotka sisältävät objektien ja reikien määrän. Näiden tietojen perusteella laskemme näiden kohteiden pinta -alan ja kehän käyttämällä keskipisteen muotoa. Kynnys asetetaan tulosten vertaamiseksi, kun laskemme ympyrän muotoisen kohteen metrisen yksikön ja piirrämme tämän mittauksen tekstiksi laskettujen keskipisteiden viereen. Lopullinen koodi näyttää kuvassa olevien eri solujen pyöreyden ja kaikki yhden arvon lähellä olevat arvot ovat pyöreämpiä kuin muut. Arvo 1 tarkoittaa, että kenno on täysin pyöreä ja hyvässä kunnossa.

Suositeltava: