Satura rādītājs:

BME 60B smilškastes projekts: 6 soļi
BME 60B smilškastes projekts: 6 soļi

Video: BME 60B smilškastes projekts: 6 soļi

Video: BME 60B smilškastes projekts: 6 soļi
Video: Waves Plugins a Complete Guide 2024, Jūlijs
Anonim
BME 60B smilškastes projekts
BME 60B smilškastes projekts

Mūsu smilškastes projekta mērķis ir palīdzēt pētniekiem bioloģiskajā jomā analizēt šūnu paraugus un noskaidrot viņu šūnu apstākļus. Pēc tam, kad lietotājs ir ievadījis sava šūnu parauga attēlu, mūsu kods apstrādā attēlu, lai tas būtu gatavs šūnu skaitīšanai, pārvēršot attēlu pelēktoņos un bināros. Kods izmanto sliekšņus, lai noņemtu lieko informāciju, kas neattiecas uz faktiskajām šūnām, lai precīzi atrastu šūnu masas. Pēc attēla šūnu skaita saskaitīšanas mūsu kods norāda attēla pikseļa lielumu un pēc tam atrod šūnu laukuma sadalījumu, uzzīmējot šūnu skaitu pret šūnu laukumu, lai lietotājam nodrošinātu saplūšanu, kas ir procentuālā daļa no kultūras trauka virsmas, ko pārklāj interesējošās šūnas. Pamatojoties uz saplūšanu, pētnieks var noteikt, vai šūnas ir jāpārnes; Šūnu pāreja attiecas uz šūnu vai mikroorganismu dzīves vai skaita paplašināšanu, pārnesot daļu kultūras uz svaigu augšanas vidi, un tas ir noderīgi, ja šūnas izaug pārāk lielas vai pārtrūkst barības. Pēc koda palaišanas un attēla apstrādes lietotājs var izlemt, vai pieņemt vai noraidīt rezultātus, un vajadzības gadījumā turpināt pielāgot slieksni labākai datu izgūšanai.

1. darbība: atlasiet un konfigurējiet attēlu analīzei

Atlasiet un konfigurējiet attēlu analīzei
Atlasiet un konfigurējiet attēlu analīzei

Mūsu koda pirmais solis ir izvēlēties atbilstošu attēlu un konfigurēt to analīzei Matlab. Mēs varam izvēlēties attēlu, izmantojot funkciju uigetfile, kas ļauj mums paņemt jebkuru failu un ievietot to programmā. Pēc tam, izmantojot imread, mēs lasām attēlu un konfigurējam to analīzei Matlab. Atlasītais attēls tiek parādīts apakšplānā.

2. darbība. Slieksnis un GUI

Slieksnis un GUI
Slieksnis un GUI
Slieksnis un GUI
Slieksnis un GUI

Koda pašā sākumā attēls tiek izvēlēts, izmantojot “uigetfile” un pēc tam definējot šo attēlu ar mainīgo. Pēc tam mainīgais tiks izmantots, lai identificētu kodu, veicot dažādu analīzi. Attēlā ir izveidots 2x2 apakšplāksne. 1. pozīcijā tiks parādīts oriģinālais attēls. Nākamā koda sadaļa ir vieta, kur notiek sliekšņu pielāgošana. Sākotnēji tiek izmantota noklusējuma vērtība 0,6, un tā tiek parādīta apakšplāna 2. pozīcijā. Ja paziņojums tiek izmantots, lai noteiktu, vai lietotājs vēlas saglabāt slieksni vai to pielāgot. Lietotājs var pielāgot slieksni, izmantojot GUI, kas ietver attēlu dažādos sliekšņa apstākļos, slīdni un saglabāšanas pogu. Pēc sliekšņa iestatīšanas lietotājs noklikšķinās uz pogas Saglabāt, lai saglabātu attēlu, un tas tiks saglabāts lietotāju MATLAB failos kā-p.webp

3. darbība: kontūru uzzīmēšana un šūnu sadalījums

Kontūru iezīmēšana un šūnu sadalījums
Kontūru iezīmēšana un šūnu sadalījums
Kontūru iezīmēšana un šūnu sadalījums
Kontūru iezīmēšana un šūnu sadalījums

Nākamā koda daļa attēlo kontūras. Ir cilpa, kurā šūnas ir norobežotas ar sarkanu perimetru, un tās šūnas, kas atrodas citas šūnas augšpusē, ir iezīmētas zaļā krāsā. Apzīmētais attēls tiek parādīts 3. pozīcijā ar interaktīvu attāluma līniju. Šī rinda noteiks pikseļu skaitu līnijā, ko lietotājs pielāgojis pikseļu un milimetru pārveidotājam. Pēc tam attāluma koeficientu reizina ar apgabalu noteikto laukumu, un tagad platība tiek izteikta kvadrātmetros. Pēc tam dati tiek attēloti, izmantojot histogrammu, lai redzētu šūnu sadalījumu pēc to apgabala. Šī histogramma tiks parādīta 4. pozīcijā.

4. solis: pārveidojiet šūnas attēlu

Pārvērst šūnas attēlu
Pārvērst šūnas attēlu

Šajā solī mēs uzņēmām pelēktoņu attēlu un binarizējām, filtrējām un apgriezām to otrādi. Veicot šīs funkcijas attēlā, tika noņemti trokšņaini pikseļi, kurus varētu sajaukt ar šūnām, un padarīts attēls vienmērīgāks un mīkstāks ap šūnu malām. Tas tika darīts, lai attēlā esošās šūnas iegūtu kā atšķiramus "lāses", kuru intensitāte atšķiras no fona. "Lāse" bija augstas intensitātes balti attēli, un fons bija melns. Ja būtu atļauts nedaudz vairāk laika, mēs būtu izmantojuši citu Blob attēlu pārveidošanu, nevis imbinarizēšanas funkciju, lai būtu precīzāki un piemērotāki mūsu attēliem, taču mums bija nepieciešams vairāk laika, lai izpētītu un ieviestu šo funkciju.

5. solis: saskaitiet šūnas un aprēķiniet šūnu saplūšanu

Skaitīt šūnas un aprēķināt šūnu saplūšanu
Skaitīt šūnas un aprēķināt šūnu saplūšanu

Šajā koda solī mūsu mērķis bija saskaitīt attēlā esošo šūnu skaitu. Mēs galvenokārt izmantojām funkciju regionprops, lai aprēķinātu lāseņu laukumus, un, ja platība tika aprēķināta, lai tā būtu mūsu vēlamajā robežā, tā tiktu uzzīmēta uz apakšplāna. Robežas tika noteiktas, lai noņemtu mazus trokšņainus pikseļus vai lielu intensitāti, kas nebija šūnas. Šūnu skaitītājs pēc tam saskaitītu centridus, kas pēc tam tika uzzīmēti, un pievienoja tos skaitītājam for cilpā. Kad šūnu laukumi tika noteikti, mēs varējām aprēķināt saplūšanu. Šī koda soļa galvenā nozīme bija atrast šūnu saplūšanu, un tas bija galvenais mūsu koda gala mērķim. Mēs to darījām, aprēķinot, summējot katra bloba pikseļus (summa (allAreas)) un pēc tam dalot to ar attēla kopējo pikseļu vērtību (numel (img)). Šī attiecība dotu mums saplūšanu un, ja tika konstatēts, ka tā ir lielāka par 80%, ir pienācis laiks pētniekam iziet šūnas. Mēs centāmies būt pēc iespējas precīzāki un precīzāki, taču ar ierobežotu laiku radās neprecizitāte. Ja būtu atļauts laiks, mēs būtu meklējuši veidus, kā padarīt blūžu skaitīšanu precīzāku, piemēram, vairāk filtrēšanas paņēmienu un/vai Hough transformāciju, jo vēl nebija veikts pietiekami daudz pētījumu, lai izmēģinātu šo filtrēšanas paņēmienu.

6. solis: šūnu apaļums

Šūnu apaļums
Šūnu apaļums
Šūnu apaļums
Šūnu apaļums

Pirms mēs varam izmērīt lāseņu apaļumu attēlā, mums ir jāpārvērš no RGB uz pelēktoņu, binarizējams, jāapgriež un jāfiltrē attēls. Filtrēšanas paņēmienā tiek izmantota funkcija bwareaopen, kas filtrē interesējošo attēlu un noņem visas specifikācijas vai pikseļus, kas ir pārāk mazi un neatspoguļo šūnas lielumu. Strukturējošs elements ir izveidots ar diska formu un 2 apkārtni, un to izmanto, lai aizpildītu visas tukšumus fonā vai šūnās. Tad mēs izmantojam funkciju bwboundaries, kas izseko lāses un saglabā to matricā. Pēc tam mēs marķējam attēlu, izmantojot dažādas krāsas, lai tas kļūtu skaidrāks. Tālāk, izmantojot for cilpu, kas darbojas atbilstoši attēlā atrasto objektu un caurumu skaitam, tā nosaka robežu ap šim masīvam atbilstošajiem burbuļiem. Kad šī cilpa ir pabeigta, sākas cita cilpa, atkal atbilstoši attēlā atrasto objektu un caurumu skaitam. Šoreiz mēs izmantojam funkciju regionprops, kas apkopo noteiktus rekvizītus, piemēram, apgabalu no masīva, un saglabā informāciju, kas satur objektu un caurumu skaitu. Izmantojot šo informāciju, mēs aprēķinām šo objektu laukumu un perimetru, izmantojot centrālo formu. Lai salīdzinātu rezultātus, tiek noteikts slieksnis, kad mēs aprēķinām apļveida objekta metrisko vienību un uzrādām šo mērījumu kā tekstu blakus aprēķinātajiem centrīdiem. Galīgais kods parādīs attēlā atrodamo dažādu šūnu apaļumu, un visas vērtības, kas ir tuvu vienai vērtībai, būs apaļākas nekā citas. Vērtība 1 nozīmē, ka šūna ir pilnīgi apaļa un ir labā stāvoklī, lai to varētu pārvietot.

Ieteicams: