Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:41
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
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ä
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
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
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
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
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:
Gimbal Stabilizer Project: 9 vaihetta (kuvilla)
Gimbal Stabilizer Project: How to make a Gimbal Opi tekemään 2-akselinen gimbal toimintakamerallesi Nykypäivän kulttuurissa me kaikki rakastamme videon tallentamista ja hetkien tallentamista, varsinkin kun olet sisällöntuottaja kuten minä, olet varmasti kohdannut ongelman niin hämmentävää videota
Automaattinen EKG-BME 305 Lopullinen projekti Lisäluotto: 7 vaihetta
Automaattinen EKG-BME 305 Lopullinen hankkeen lisäluotto: EKG: tä tai EKG: tä käytetään lyövän sydämen tuottamien sähköisten signaalien mittaamiseen, ja sillä on suuri merkitys sydän- ja verisuonitautien diagnosoinnissa ja ennustamisessa. Jotkut EKG: stä saadut tiedot sisältävät rytmin
IEEE WORD CLOCK PROJECT: 12 vaihetta (kuvilla)
IEEE WORD CLOCK PROJECT: Tämä on UNO: n IEEE -klubin projekti, ja se on ainutlaatuinen tapa edustaa kellonaikaa. Sanakello näyttää ajan ja RGB -nauhan avulla voit saada kellon haluamallasi värillä. Käyttämällä ESP32: n WiFi -ominaisuuksia, clo
Project Mood Lamp: 11 vaihetta
Project Mood Lamp: Tämän opetusohjelman avulla voit suunnitella ja luoda yksinkertaisen piirin tehdäksesi mielialalampun, joka käyttää nappiparistoa, alligaattoripidikkeitä ja yhtä LED -valoa
BME 305 EEG: 4 vaihetta
BME 305 EEG: Elektroenkefalogrammi (EEG) on laite, jota käytetään kohteen sähköisen aivotoiminnan mittaamiseen. Nämä testit voivat olla erittäin hyödyllisiä eri aivosairauksien diagnosoinnissa. Kun yritetään tehdä EEG, on olemassa erilaisia parametreja, joita ei tarvita