Sisukord:

BME 60B liivakasti projekt: 6 sammu
BME 60B liivakasti projekt: 6 sammu

Video: BME 60B liivakasti projekt: 6 sammu

Video: BME 60B liivakasti projekt: 6 sammu
Video: ЛЕТУАЛЬ СОШЕЛ С УМА и СДЕЛАЛ ГОДНЫЙ БРЕНД? 😱ПРОВЕРЯЕМ BME! 2024, Juuli
Anonim
BME 60B liivakasti projekt
BME 60B liivakasti projekt

Meie liivakasti projekti eesmärk on aidata bioloogilise valdkonna teadlastel analüüsida rakuproove ja selgitada välja nende rakkude tingimused. Pärast seda, kui kasutaja on sisestanud oma lahtriproovi pildi, töötleb meie kood pilti, et see oleks valmis rakkude loendamiseks, teisendades pildi halltoonideks ja binaarseks. Rakkude masside täpseks leidmiseks kasutab kood künnist, et eemaldada liigne teave, mis ei puuduta tegelikke lahtreid. Pärast pildil olevate rakkude arvu loendamist annab meie kood pildi pikslisuuruse ja leiab seejärel lahtri pindala jaotuse, joonistades lahtrite arvu lahtrite pindalaga, et anda kasutajale liitumispaik, mis on protsent kultuuri tassi pinnast, mis on kaetud huvipakkuvate rakkudega. Ühinemise põhjal saab uurija kindlaks teha, kas rakud tuleks läbida või mitte; rakkude läbimine viitab rakkude või mikroorganismide eluea või arvu laiendamisele, kandes osa kultuurist värskele kasvusöötmele, ja see on kasulik, kui rakud kasvavad liiga suureks või toit otsa saab. Pärast koodi käivitamist ja pildi töötlemist saab kasutaja otsustada, kas ta nõustub tulemustega või lükkab need tagasi ning vajadusel vajadusel andmete paremaks hankimiseks läve kohandada.

Samm: valige ja konfigureerige pilt analüüsiks

Valige ja konfigureerige pilt analüüsiks
Valige ja konfigureerige pilt analüüsiks

Meie koodi esimene samm on valida sobiv pilt ja seadistada see Matlabis analüüsimiseks. Meil on võimalik valida pilt, kasutades funktsiooni uigetfile, mis võimaldab meil haarata mis tahes faili ja sisestada selle programmi. Seejärel loeme imreadi abil pildi ja konfigureerime selle Matlabis analüüsimiseks. Seejärel kuvatakse valitud pilt alamjoonisel.

2. samm: künnis ja graafiline kasutajaliides

Lävi ja GUI
Lävi ja GUI
Lävi ja GUI
Lävi ja GUI

Koodi alguses valitakse pilt, kasutades “uigetfile” ja määratledes selle pildi muutujaga. Muutujat kasutatakse seejärel koodi tuvastamiseks erinevate analüüside tegemisel. Joonisel on loodud 2x2 alamjoon. Positsioonis 1 kuvatakse algne pilt. Koodi järgmises osas käsitletakse künniste kohandamist. Esialgu kasutatakse vaikeväärtust 0,6 ja see kuvatakse alamjoone 2. positsioonil. Seejärel kasutatakse if-lauset, et teha kindlaks, kas kasutaja soovib künnist säilitada või seda kohandada. Kasutaja saab künnist reguleerida graafilise kasutajaliidese abil, mis sisaldab pilti erinevates lävenditingimustes, liugurit ja salvestusnuppu. Pärast läve seadmist klõpsab kasutaja pildi salvestamiseks nupul Salvesta ja see salvestatakse kasutajate MATLAB -failidesse-p.webp

3. samm: kontuuride joonistamine ja rakkude jaotus

Kontuuride joonistamine ja rakkude jaotus
Kontuuride joonistamine ja rakkude jaotus
Kontuuride joonistamine ja rakkude jaotus
Kontuuride joonistamine ja rakkude jaotus

Koodi järgmine osa joonistab kontuurid. Seal on silmus, milles rakud on ümbritsetud punase ümbermõõduga ja need lahtrid, mis asuvad teise lahtri peal, on joonistatud rohelisega. Seejärel kuvatakse visandatud pilt positsioonis 3 koos interaktiivse kaugusjoonega. See rida määrab joonisel olevate pikslite arvu, mille kasutaja on kohandanud pikslite ja millimeetrite muunduri jaoks. Seejärel korrutatakse kaugustegur piirkonnapropsidega määratud pindalaga ja pindala väljendatakse nüüd ruutmillimeetrites. Seejärel joonistatakse andmed histogrammi abil, et näha rakkude jaotust nende pindala järgi. See histogramm kuvatakse seejärel positsioonis 4.

Samm: teisendage lahtripilt

Teisenda lahtripilt
Teisenda lahtripilt

Selles etapis võtsime halltoonide pildi ja binariseerisime, filtreerisime ja pöörasime selle ümber. Nende funktsioonide täitmine pildil eemaldas mürarikkad pikslid, mida võis ekslikult lahtritega segada, ning muutis pildi lahtriservade ümber sujuvamaks ja pehmemaks. Seda tehti selleks, et eraldada pildil olevad rakud eristatavate "plekidena", mille intensiivsus erines taustast. "Plekid" olid suure intensiivsusega valged pildid ja taust must. Kui meil oleks lubatud veidi rohkem aega, oleksime kasutanud imbineerimisfunktsiooni asemel teistsugust Blobi kujutise teisendamist, et olla meie piltidele täpsem ja sobivam, kuid vajasime selle uurimiseks ja rakendamiseks rohkem aega.

5. samm: loendage rakud ja arvutage rakkude liitumine

Loendage rakud ja arvutage rakkude liitumine
Loendage rakud ja arvutage rakkude liitumine

Koodi selles etapis püüdsime loendada pildil olevate lahtrite arvu. Tilkade pindalade arvutamiseks kasutasime peamiselt funktsiooni regionprops ja kui pindala arvutati soovitud piirile, joonistatakse see alamkrundile. Piirid seati selleks, et eemaldada väikesed mürarikkad pikslid või suured intensiivsused, mis ei olnud rakud. Seejärel loendab rakkude loendur tsentrid, mis seejärel joonistati, ja lisab need for -ahela loendurile. Kui rakkude alad olid kindlaks määratud, saime arvutada ühinemise. Selle sammu peamine tähtsus koodis oli rakkude liitumise leidmine ja see oli meie koodi lõppeesmärgi jaoks keskse tähtsusega. Tegime seda arvutades, liites kokku iga plekikese pikslid (summa (allAreas)) ja jagades selle siis pildi kogu piksliväärtusega (numel (img)). See suhe annaks meile ühinemise ja kui see oleks määratud olema suurem kui 80%, on teadlase poolt rakkude läbimise aeg. Meie eesmärk oli olla võimalikult täpne ja täpne, kuid piiratud ajaga tekkis ebatäpsus. Kui aeg oleks lubatud, oleksime otsinud võimalusi, kuidas täppide loendamist täpsemaks muuta, näiteks rohkem filtreerimistehnikaid ja/või Houghi teisendust, kuna selle filtreerimistehnika proovimiseks ei olnud veel piisavalt uuritud

6. samm: rakkude ümarus

Lahtrite ümarus
Lahtrite ümarus
Lahtrite ümarus
Lahtrite ümarus

Enne kui saame pilti ümmargust mõõta, peame muutma RGB -st halltoonideks, binaarima, ümber pöörama ja filtreerima. Filtreerimistehnikas kasutatakse funktsiooni bwareaopen, mis filtreerib huvipildi ja eemaldab kõik andmed või pikslid, mis on liiga väikesed ja mis ei esinda lahtri suurust. Struktureeriv element luuakse ketta kujuga ja naabruskonnaga 2 ning seda kasutatakse taustal või lahtrites olevate lünkade täitmiseks. Seejärel kasutame funktsiooni bwboundaries, mis jälgib plekke ja salvestab selle maatriksisse. Seejärel märgistame pildi erinevate värvide abil, et see muutuks visuaalselt selgemaks. Järgmisena määrab see for for loop, mis jookseb vastavalt pildil leiduvate objektide ja aukude arvule, sellele massiivile vastavate plekide ümber piiri. Kui see tsükkel on lõppenud, algab teine tsükkel, uuesti vastavalt pildil leiduvate objektide ja aukude arvule. Seekord kasutame funktsiooni regionprops, mis kogub massiivist teatud omadused, näiteks ala, ja salvestab objektide ja aukude arvu sisaldava teabe. Seda teavet kasutades arvutame nende objektide pindala ja ümbermõõdu, kasutades tsentroidkuju. Tulemuste võrdlemiseks määratakse künnis, kui arvutame ringikujulise objekti meeterühiku ja joonistame selle mõõtmise tekstina arvutatud tsentroidide kõrvale. Lõplik kood kuvab pildil leiduvate erinevate lahtrite ümaruse ja kõik väärtused, mis on selle väärtuse lähedal, on teistest ümaramad. Väärtus 1 tähendab, et lahter on täiesti ümmargune ja läbimiseks heas seisukorras.

Soovitan: