Sommario:

Progetto sandbox BME 60B: 6 passaggi
Progetto sandbox BME 60B: 6 passaggi

Video: Progetto sandbox BME 60B: 6 passaggi

Video: Progetto sandbox BME 60B: 6 passaggi
Video: UCI BME 60A: Heart Rate Monitor Project 2024, Dicembre
Anonim
Progetto sandbox BME 60B
Progetto sandbox BME 60B

Il nostro progetto Sandbox mira ad aiutare i ricercatori nel campo biologico ad analizzare campioni di cellule e scoprire le condizioni delle loro cellule. Dopo che l'utente ha immesso un'immagine del proprio campione di cella, il nostro codice elabora l'immagine per prepararla per il conteggio delle celle convertendo l'immagine in scala di grigi e binaria. Il codice utilizza la sogliatura per rimuovere le informazioni in eccesso non pertinenti alle celle effettive al fine di trovare con precisione le masse cellulari. Dopo aver contato il numero di celle nell'immagine, il nostro codice fornisce la dimensione in pixel dell'immagine e quindi trova la distribuzione dell'area delle celle tracciando il numero di celle rispetto all'area delle celle per dare all'utente la confluenza, che è la percentuale della superficie di un piatto di coltura che è coperta dalle cellule di interesse. Sulla base della confluenza, il ricercatore può determinare se le cellule debbano essere fatte passare o meno; il passaggio delle cellule si riferisce all'espansione della vita o del numero di cellule o microrganismi trasferendo parte della coltura in un terreno di crescita fresco, ed è utile quando le cellule crescono troppo o esauriscono il cibo. Dopo aver eseguito il codice ed elaborato l'immagine, l'utente può decidere se accettare o rifiutare i risultati e, se necessario, procedere alla regolazione della soglia per un migliore recupero dei dati.

Passaggio 1: selezionare e configurare l'immagine per l'analisi

Seleziona e configura l'immagine per l'analisi
Seleziona e configura l'immagine per l'analisi

Il primo passo nel nostro codice è selezionare l'immagine appropriata e configurarla per l'analisi in Matlab. Siamo in grado di selezionare l'immagine utilizzando la funzione uigetfile che ci permette di prendere qualsiasi file e inserirlo nel programma. Quindi, usando imread leggiamo l'immagine e la configuriamo per l'analisi in Matlab. L'immagine selezionata viene quindi visualizzata su una sottotrama.

Passaggio 2: soglia e GUI

Soglia e GUI
Soglia e GUI
Soglia e GUI
Soglia e GUI

All'inizio del codice viene scelta un'immagine utilizzando "uigetfile" e quindi definendo quell'immagine con una variabile. La variabile verrà quindi utilizzata per identificare il codice durante l'esecuzione di analisi diverse. In figura viene creata una sottotrama 2x2. Nella posizione 1, verrà visualizzata l'immagine originale. La sezione successiva del codice è quella in cui avviene l'adeguamento delle soglie. Inizialmente viene utilizzato un valore predefinito di una soglia di 0,6 e viene visualizzato nella posizione 2 della sottotrama. Viene quindi utilizzata un'istruzione if per determinare se l'utente desidera mantenere la soglia o modificarla. L'utente può regolare la soglia utilizzando una GUI che include l'immagine in diverse condizioni di soglia, il dispositivo di scorrimento e un pulsante di salvataggio. Dopo aver impostato la soglia, l'utente farà clic sul pulsante Salva per salvare l'immagine e verrà archiviata nei file MATLAB degli utenti come-p.webp

Passaggio 3: tracciare i contorni e la distribuzione delle celle

Tracciare i contorni e la distribuzione delle celle
Tracciare i contorni e la distribuzione delle celle
Tracciare i contorni e la distribuzione delle celle
Tracciare i contorni e la distribuzione delle celle

La parte successiva del codice traccia i contorni. C'è un ciclo in cui le celle sono racchiuse da un perimetro rosso e quelle celle che si trovano sopra un'altra cella sono delineate in verde. L'immagine delineata viene quindi visualizzata nella posizione 3 con una linea di distanza interattiva. Questa linea determinerà il numero di pixel nel allineato regolato dall'utente per un convertitore da pixel a millimetri. Il fattore distanza viene quindi moltiplicato per l'area determinata dai regionprops e l'area è ora espressa in millimetri al quadrato. I dati vengono quindi tracciati utilizzando un istogramma per vedere la distribuzione delle celle in base alla sua area. Questo istogramma verrà quindi visualizzato nella posizione 4.

Passaggio 4: convertire l'immagine della cella

Converti immagine cella
Converti immagine cella

In questo passaggio abbiamo preso l'immagine in scala di grigi e l'abbiamo binarizzata, filtrata e invertita. L'esecuzione di queste funzioni sull'immagine rimuoveva i pixel rumorosi che potevano essere scambiati per celle e rendeva l'immagine più liscia e morbida attorno ai bordi delle celle. Questo è stato fatto per estrarre le cellule nell'immagine come "blob" distinguibili che differivano in intensità dallo sfondo. I "Blob" erano immagini bianche ad alta intensità e lo sfondo era nero. Se ci fosse stato concesso un po' più di tempo avremmo usato una conversione dell'immagine Blob diversa invece della funzione imbinarize per essere più precisi e più adatti alle nostre immagini, ma avevamo bisogno di più tempo per ricercare e implementare la funzione.

Passaggio 5: conta le celle e calcola la confluenza cellulare

Conta le cellule e calcola la confluenza cellulare
Conta le cellule e calcola la confluenza cellulare

In questo passaggio del codice, abbiamo mirato a contare il numero di celle presenti nell'immagine. Abbiamo utilizzato principalmente la funzione regionprops per calcolare le aree dei blob e se l'area è stata calcolata per essere nel nostro confine desiderato, sarebbe stata tracciata su una sottotrama. I limiti sono stati fissati per rimuovere piccoli pixel rumorosi o grandi intensità che non erano celle. Il contatore di celle conterebbe quindi i centroidi che sono stati quindi tracciati e li aggiungerà al contatore nel ciclo for. Una volta determinate le aree delle celle, siamo stati in grado di calcolare la confluenza. L'importanza principale di questo passaggio nel codice era trovare la confluenza delle celle e questo era fondamentale per il nostro obiettivo finale del codice. Lo abbiamo fatto calcolando sommando i pixel(sum(allAreas)) in ogni blob e poi dividendo per il valore totale dei pixel dell'immagine(numel(img)). Questo rapporto ci darebbe la confluenza e se fosse determinato essere maggiore dell'80% di quanto è tempo che le cellule vengano passate dal ricercatore. Abbiamo cercato di essere il più precisi e accurati possibile, ma con il tempo limitato si sono verificate imprecisioni. Se il tempo ci fosse stato concesso, avremmo cercato dei modi per rendere il conteggio dei blob più accurato come più tecniche di filtraggio e/o una trasformazione di Hough poiché non sono state ancora fatte abbastanza ricerche per provare quella tecnica di filtraggio

Passaggio 6: rotondità delle cellule

Rotondità delle cellule
Rotondità delle cellule
Rotondità delle cellule
Rotondità delle cellule

Prima di poter misurare la rotondità del blob in un'immagine, dobbiamo convertire da RGB a scala di grigi, binarizzare, invertire e filtrare l'immagine. Una tecnica di filtraggio utilizza la funzione bwareaopen, che filtra l'immagine di interesse e rimuove eventuali specifiche o pixel troppo piccoli che non rappresentano le dimensioni di una cella. Viene creato un elemento strutturante a forma di disco e intorno a 2 e viene utilizzato per riempire eventuali spazi vuoti sullo sfondo o all'interno delle celle. Quindi usiamo la funzione bwboundaries che traccia i blob e li memorizza in una matrice. Quindi etichettiamo l'immagine usando colori diversi in modo che diventi una visuale più chiara. Successivamente, utilizzando un ciclo for che viene eseguito in base al numero di oggetti e buchi trovati nell'immagine, imposta un confine attorno ai blob corrispondenti a questa matrice. Una volta terminato questo ciclo, ne inizia un altro, sempre in base al numero di oggetti e buchi trovati nell'immagine. Questa volta usiamo la funzione regionprops che raccoglie alcune proprietà come area dall'array e memorizza le informazioni contenenti il numero di oggetti e buchi. Usando queste informazioni, calcoliamo l'area e il perimetro di questi oggetti usando la forma del baricentro. Viene impostata una soglia per confrontare i risultati una volta calcolata l'unità metrica di un oggetto circolare e tracciata questa misurazione come testo accanto ai centroidi calcolati. Il codice finale mostrerà la rotondità delle diverse celle trovate nell'immagine e qualsiasi valore vicino al valore uno sarà più rotondo degli altri. Un valore di 1 implica che la cella è perfettamente rotonda ed è in buone condizioni per essere attraversata.

Consigliato: