• Non ci sono risultati.

4. Implementazione programma di analisi microtomografie

4.2 Algoritmo di studio

terizzata e ricostruiti in 2000 immagini per ogni campione, ogni immagine `e distanziato dall’altra per una lunghezza pari allo spessore di un pixel (6.43µm).

Dati ricostruzioni immagini

Result File Type JPG

Result Image Width (pixels) 3216 Result Image Height (pixels) 3216

Pixel Size (um) 6.42711

Reconstruction Angular Range (deg) 204.40

4.2

Algoritmo di studio

L’analisi viene effettuata a partire dal 2D, dove si studiano composizioni e distri- buzioni delle particelle frame per frame, passando poi a ricavare le informazioni nel 3D, come volumi e distribuzioni particelle nello spazio, concentrazioni e dia- metri medi, basandosi sullo studio delle immagini tomografiche in JPG, che matlab acquisisce, attraverso la funzione: imread come immagini rgb , ovvero degli array m x n x 3 dove m e n sono le dimensioni in pixel dell’immagine, e nella profondit`a troviamo un numero che indica l’intensit`a dei 3 colori primari in quel punto. Lavorare con tali tipi di array implica un costo computazionale eccessivamente oneroso, quindi si converte l’array in una matrice binaria delle dimensioni m x n attraverso la funzione

Ibw = im2bw(array rgb, soglia di contrasto) (4.1) funzione che riceve in ingresso il nome dell’immagine da convertire ed in uscita si ottiene la matrice binaria Ibw. Il parametro sogli di contrasto `e un parametro che varia da 0 a 1, fondamentale per la conversione dell’immagine perch´e determina sotto quale soglia i pixel possono essere considerati accesi o spenti, ovvero,la funzione di conversione in binaria legge l’array in rgb e fa una media delle intensit`a dei colori nei vari pixel, se tale intensit`a `e minore della soglia stabilita dall’utente tale pixel viene considerato spento e quindi indicato con uno zero nella matrice binaria, in Fig.4.2, o acceso se si trova sopra tale soglia.

L’algoritmo che si occupa di studiare i vari frame presi in considerazione si divide in due componenti principali, l’individuazione delle caratteristiche volu- metriche di ogni particella che man mano la si rileva nell’analisi, e lo studio delle propriet`a del frame bidimensionale. La prima parte classifica le particelle presenti nel frame che si st`a analizzando, racchiudendo in una cella tutte le caratteristiche delle particelle rilevate, ovvero:

• il numero di pixel che la compongono.

• l’indice di ogni pixel della particella in questione.(CC.PixelIdxList ) Tale compito viene svolto dalla funzione

CC = bwconncomp(Ibw); (4.2)

Dove Ibw rappresenta la matrice logica associata al ROI che studiato, CC `e la cella in cui vengono racchiusi i dati legati alle particelle del frame. Dopo di che a partire da tali dati ci si costruiscono:

• Un vettore di dati, in cui andiamo a racchiudere il numero di pixel bianchi appartenenti alle particelle, ovvero dim Part, in cui ogni elemento del vettore corrisponde alla particella, ed al suo interno contiene il numero di pixel bianchi appartenenti a tale particella

• Una cella in cui ogni componente corrisponde ad una particella, e con- tiene le coordinate cartesiane tridimensionali dei pixel appartenenti alla particella stessa.

Tale procedimento viene implementato al primo ciclo dal seguente script:

i f i i ==1 m a t r i c e=z e r o s ( s i z e ( Ibw ) ) ; N p a r t=CC. NumObjects ; f o r oo =1:CC. NumObjects %a n a l i s i d i m e n s i o n e s i n g o l o e l e m e n t o aux ( oo)=numel (CC. P i x e l I d x L i s t { oo } ) ; m a t r i c e (CC. P i x e l I d x L i s t { oo })= oo ; [ row , c o l ] = i n d 2 s u b ( s i z e ( m a t r i c e ) ,CC. P i x e l I d x L i s t { oo } ) ; P a r t p i x c o o r d s { oo , 1 } = [ row , c o l , i i +0*row ] ; end v e c t N p i x w ( i i )=sum ( aux ) ; d i m P a r t=aux ; e l s e

mentre nei cicli successivi varia, dato che si deve tener conto delle particelle gi`a rilevate e quindi non contarle due volte nella classificazione. Ci`o avviene attraverso il confronto delle matrici binarie corrispondenti ai due ROI dei frame

4.2. Algoritmo di studio 43

consecutivi analizzati, che messe a confronto e sovrapposte, mostrano se la par- ticella rilevata nel frame in analisi, `e stata rilevata anche nel frame precende, allora i pixel di tale particella vanno a sommarsi nel vettore dim Part agli altri gi`a assegnati nel precedente studio; nel caso in cui invece tale particella non risulti essere sovrapposta o semi-coincidente con una del frame precedente, allora essa viene rilevata come una nuova particella e quindi viene aggiunto un nuovo elemento al vettore dim Part in cui saranno salvati i pixel di questa.

e l s e m a t r i c e n e w=z e r o s ( s i z e ( m a t r i c e ) ) ; f o r oo =1:CC. NumObjects % a n a l i s i d i m e n s i o n e s i n g o l o e l e m e n t o aux ( oo)=numel (CC. P i x e l I d x L i s t { oo } ) ; [ row , c o l ] = i n d 2 s u b ( s i z e ( m a t r i c e ) , CC. P i x e l I d x L i s t { oo } ) ; %l a p a r t i c e l l a e r a p r e s e n t e n e l p r e c e d e n t e frame i f any ( I b w o l d (CC. P i x e l I d x L i s t { oo } ) ) % i n d i c e p a r t i c e l l a p r e c e d e n t e i n d=max ( m a t r i c e (CC. P i x e l I d x L i s t { oo } ) ) ; d i m P a r t ( i n d )= d i m P a r t ( i n d )+aux ( oo ) ; m a t r i c e n e w (CC. P i x e l I d x L i s t { oo })= i n d ; % c e l l a c h e immagazzina l e c o o r d i n a t e d i o g n i s i n g o l o p i x e l P a r t p i x c o o r d s { ind ,1}= c a t ( 1 , P a r t p i x c o o r d s { ind , 1 } , . . . [ row , c o l , i i +0*row ] ) ; e l s e N p a r t=N p a r t +1;

d i m P a r t=c a t ( 1 , dim Part , aux ( oo ) ) ;

m a t r i c e n e w (CC. P i x e l I d x L i s t { oo })= N p a r t ; P a r t p i x c o o r d s { N part , 1 } = [ row , c o l , i i +0*row ] ;

end end

v e c t N p i x w ( i i )=sum ( aux ) ; % numero p i x e l b i a n c h i m a t r i c e=m a t r i c e n e w ;

end

I b w o l d=Ibw ; CC old=CC;

In questo modo si ottiene un conteggio su pi`u frame dei pixel di una particella e sapendo che la distanza tra un frame e l’altro `e di un pixel allora possiamo calcolare il volume nello spazio della singola particella, sapendo che il pixel cubo, o meglio il Voxel , occupa (6,43µm)3; l’analisi calcola il volume di ogni particella

trovata ed immagazzina l’informazione nel vettore Volume particella: f o r i i =1: numel ( d i m P a r t )

V o l u m e p a r t i c e l l a ( i i )= d i m P a r t ( i i )* ( p i x e l s i z e ˆ 3 ) ; R m e d i o e q u i v a l e n t e ( i i ) = . . .

( ( 3* V o l u m e p a r t i c e l l a ( i i ) ) / ( 4 * pi ) ) ˆ ( 1 / 3 ) ; end

oltre a calcolare il raggio medio della particella, ed immagazzinare il dato in R medio equivalente.

Per quanto riguarda invece lo studio del frame nel bidimensionale, a tale compito `

e adibita la funzione novapacccomp:

[Propriet`a, numero particelle, coordinate centroidi] = novapacccomp(CC) (4.3) dove CC `e la cella sopracitata, contenente le informazioni delle particelle del frame

Propriet`a consiste in una matrice n x 9 dove sono racchiuse le 9 propriet`a delle n particelle studiate, di particolare importanza, l’area delle particelle, il perime- tro, l’eccentricit`a e l’orientazione nel piano.

Tale analisi dimensionale di avvale dell’utilizzo della funzione regionprop che studia le principali caratteristiche delle matrici logiche (o binarie). Dallo stu- dio bidimensionale, si ricavano parametri come l’area massima, media e mini- ma delle particelle del frame 2D, la loro concentrazione ed il diametro medio, che vengono poi salvati in celle contenenti tali parametri per ogni parametro studiato.

Per la ricostruzione 3D dei frame studiati per determinare l’orientazione delle particelle si `e usata la cella contenente le coordinate dei pixel, da cui si sono ricavate sia le coordinate del centro di massa in coordinate cartesiane , che l’orientazione della particella. Il centro di massa `e stato calcolato attraverso la formula: (XCdm, YCdm, ZCdm) = PN i=1mi(xi, yi, zi) PN i=1mi (4.4) dove N corrisponde al numero di Voxel appartenenti alla particella;

mi`e la massa del voxel;

(xi,yi,zi) sono le coordinate cartesiane del voxel Ipotizzando che le particelle

Documenti correlati