Cuprins:

Proiectul Sandbox BME 60B: 6 pași
Proiectul Sandbox BME 60B: 6 pași

Video: Proiectul Sandbox BME 60B: 6 pași

Video: Proiectul Sandbox BME 60B: 6 pași
Video: UCI BME 60A: Heart Rate Monitor Project 2024, Noiembrie
Anonim
BME 60B Sandbox Project
BME 60B Sandbox Project

Proiectul nostru Sandbox își propune să ajute cercetătorii din domeniul biologic să analizeze probele de celule și să afle condițiile celulelor lor. După ce utilizatorul introduce o imagine a eșantionului său de celule, codul nostru procesează imaginea pentru ao pregăti pentru numărarea celulei, convertind imaginea în tonuri de gri și binar. Codul utilizează praguri pentru a elimina informațiile în exces care nu aparțin celulelor reale pentru a găsi cu precizie masele de celule. După numărarea numărului de celule din imagine, codul nostru oferă dimensiunea pixelilor imaginii și apoi găsește distribuția zonei celulei trasând numărul de celule în raport cu aria celulelor pentru a da utilizatorului confluența, care este procentul din suprafața unui vas de cultură care este acoperit de celulele de interes. Pe baza confluenței, cercetătorul poate determina dacă celulele trebuie sau nu trecute; trecerea celulelor se referă la extinderea duratei de viață sau a numărului de celule sau microorganisme prin transferarea unei părți din cultură într-un mediu de creștere proaspăt și este util atunci când celulele cresc prea mari sau rămân fără alimente. După rularea codului și procesarea imaginii, utilizatorul poate decide dacă acceptă sau respinge rezultatele și poate continua să ajusteze pragul pentru o mai bună recuperare a datelor, dacă este necesar.

Pasul 1: Selectați și configurați imaginea pentru analiză

Selectați și configurați imaginea pentru analiză
Selectați și configurați imaginea pentru analiză

Primul pas din codul nostru este să selectăm imaginea potrivită și să o configurăm pentru analiză în Matlab. Putem selecta imaginea folosind funcția uigetfile care ne permite să preluăm orice fișier și să îl introducem în program. Apoi, folosind imread citim imaginea și o configurăm pentru analiză în Matlab. Imaginea selectată este apoi afișată pe o parcela secundară.

Pasul 2: Prag și GUI

Prag și GUI
Prag și GUI
Prag și GUI
Prag și GUI

La începutul codului se alege o imagine folosind „uigetfile” și apoi definind acea imagine cu o variabilă. Variabila va fi apoi utilizată pentru a identifica codul atunci când rulați diferite analize. O figură secundară 2x2 este creată. În poziția 1, va fi afișată imaginea originală. Următoarea secțiune a codului este locul în care au loc ajustările pragurilor. Inițial se utilizează o valoare implicită a unui prag de 0,6 și este afișată în poziția 2 a subplotului. O instrucțiune if este apoi utilizată pentru a determina dacă utilizatorul dorește să păstreze pragul sau să îl ajusteze. Utilizatorul poate regla pragul utilizând o interfață grafică care include imaginea în diferite condiții de prag, glisorul și un buton de salvare. După setarea pragului, utilizatorul va face clic pe butonul de salvare pentru a salva imaginea și va fi stocat în fișierele MATLAB ale utilizatorilor ca-p.webp

Pasul 3: Trasarea contururilor și distribuția celulei

Trasarea contururilor și distribuția celulei
Trasarea contururilor și distribuția celulei
Trasarea contururilor și distribuția celulei
Trasarea contururilor și distribuția celulei

Următoarea parte a codului trasează contururile. Există o buclă în care celulele sunt închise de un perimetru roșu, iar acele celule care sunt în partea de sus a altei celule sunt conturate în verde. Imaginea conturată este apoi afișată în poziția 3 cu o linie interactivă de distanță. Această linie va determina numărul de pixeli în linie ajustat de utilizator pentru un convertor de pixeli în milimetri. Factorul de distanță este apoi înmulțit suprafața determinată de reperele regiunii și aria este acum exprimată în milimetri pătrați. Datele sunt apoi reprezentate grafic folosind o histogramă pentru a vedea distribuția celulelor după aria sa. Această histogramă va fi apoi afișată în poziția 4.

Pasul 4: Convertiți imaginea celulei

Convertiți imaginea celulei
Convertiți imaginea celulei

În acest pas am luat imaginea în tonuri de gri și am binarizat-o, filtrată și inversată. Efectuarea acestor funcții asupra imaginii a eliminat pixeli zgomotoși care ar putea fi confundați cu celulele și a făcut ca imaginea să fie mai netedă și mai moale în jurul marginilor celulei. Acest lucru a fost făcut pentru a extrage celulele din imagine ca „bloburi” distincte, care diferă în intensitate de fundal. „Blobs” erau imagini albe de intensitate mare, iar fundalul era negru. Dacă ni s-ar fi permis puțin mai mult timp, am fi folosit o conversie diferită a imaginii Blob în loc de funcția imbinarize pentru a fi mai exacți și mai adecvați imaginilor noastre, dar aveam nevoie de mai mult timp pentru a cerceta și implementa funcția.

Pasul 5: Numărați celulele și calculați confluența celulei

Numărați celulele și calculați confluența celulară
Numărați celulele și calculați confluența celulară

În acest pas al codului, ne-am propus să numărăm numărul de celule care erau în imagine. Am folosit în primul rând funcția regionprops pentru a calcula suprafețele blob-urilor și dacă zona a fost calculată pentru a fi în limita dorită, aceasta ar fi reprezentată pe un subplot. Limitele au fost stabilite pentru a elimina pixeli mici zgomotoși sau intensități mari care nu erau celule. Contorul de celule ar număra apoi centroizii care au fost apoi trasați și i-ar adăuga la contor în bucla for. Odată ce zonele celulelor au fost determinate, am putut calcula confluența. Principala importanță a acestui pas în cod a fost de a găsi confluența celulelor și acest lucru a fost esențial pentru obiectivul nostru final al codului. Am făcut acest lucru calculând prin însumarea pixelilor (suma (allAreas)) din fiecare blob și apoi împărțirea acestuia la valoarea totală a pixelilor imaginii (numel (img)). Acest raport ne-ar da confluența și dacă s-a stabilit că este mai mare de 80% decât este timpul ca celulele să fie trecute de cercetător. Ne-am propus să fim cât mai exacți și exacți cu putință, dar cu timpul limitat, astfel încât s-a produs inexactitatea. Dacă timpul ne-ar fi permis, am fi căutat modalități de a face contorizarea bloburilor mai precisă, cum ar fi mai multe tehnici de filtrare și / sau o transformare Hough, deoarece nu s-au făcut încă suficiente cercetări pentru a încerca această tehnică de filtrare.

Pasul 6: Rotunjirea celulelor

Rotunjimea celulelor
Rotunjimea celulelor
Rotunjimea celulelor
Rotunjimea celulelor

Înainte de a putea măsura rotunjimea blob-ului într-o imagine, trebuie să convertim din RGB în tonuri de gri, să binarizăm, să inversăm și să filtrăm imaginea. O tehnică de filtrare utilizează funcția bwareaopen, care filtrează imaginea de interes și elimină orice specificații sau pixeli prea mici care nu reprezintă dimensiunea unei celule. Un element de structurare este creat cu forma unui disc și vecinătatea de 2 și este utilizat pentru a completa orice goluri din fundal sau din interiorul celulelor. Apoi folosim funcția bwboundaries care urmărește bloburile și o stochează într-o matrice. Apoi etichetăm imaginea folosind diferite culori, astfel încât să devină un vizual mai clar. Apoi, folosind o buclă for care rulează în funcție de numărul de obiecte și găuri găsite în imagine, stabilește o delimitare în jurul bloburilor corespunzătoare acestei matrice. Odată ce această buclă se termină, începe o altă buclă, din nou în funcție de numărul de obiecte și găuri găsite în imagine. De data aceasta folosim funcția regionprops care adună anumite proprietăți precum zona din matrice și stochează informațiile care conțin numărul de obiecte și găuri. Folosind aceste informații, calculăm aria și perimetrul acestor obiecte folosind forma centrului. Se stabilește un prag pentru a compara rezultatele odată ce calculăm unitatea metrică a unui obiect circular și reprezentăm această măsurătoare ca text lângă centrele calculate. Codul final va afișa rotunjimea diferitelor celule găsite în imagine și orice valori apropiate valorii vor fi mai rotunde decât altele. O valoare 1 implică faptul că celula este perfect rotundă și este în stare bună pentru a fi trecută.

Recomandat: