• Non ci sono risultati.

Appendice B ALGORITMI IN MATLAB

N/A
N/A
Protected

Academic year: 2021

Condividi "Appendice B ALGORITMI IN MATLAB"

Copied!
12
0
0

Testo completo

(1)

Introduzione

In questa Appendice verranno riportati gli algoritmi realizzati in

MATLAB per l’esecuzione delle varie analisi.

Quelli riportati in verde sono i vari commenti presenti nel file,

inseriti attraverso il simbolo di percentuale.

Analisi della raggiungibilità e studio delle

distanze

%% ANALISI DELLA RAGGIUNGIBILITA' DELLE DISTANZE

% Tale programma consente la costruzione del grafo di raggiungibilità dei

% nodi e di calcolare la distanza tra di essi

%% Step 1: lettura e visualizzazione dell'immagine % Lettura e visualizzazione dell'immagine della rete neurale in vitro

% acquisita con la telecamera

J = imread('giorno7.bmp'); figure;

imshow(J);

title('Immagine originale');

%% Step 2: rilevamento nodi

% La matrice xy è inizialmente vuota

(2)

n = 0;

% I nodi vengono identificati cliccandoci sopra con il tasto sin del mouse

% Il clic con il tasto destro identifica l'ultimo punto

disp('Left mouse button picks points.')

disp('Right mouse button picks last point.') imshow(J,axes) hold on but = 1; while but == 1 [xi,yi,but] = ginput(1); plot(xi,yi,'mx'); text(xi+5,yi,num2str(n+1)); text(xi+5.0,yi+20,num2str(xi)); text(xi+5.0,yi+40.0,num2str(yi)); n = n+1;

xy(:,n) = [xi yi];

end

A=xy; B=A'

% ogni riga della matrice B riporta le coordinate X,Y di un nodo

% B è perciò una matrice nX2, dove n è il numero dei nodi

%% Step 3: Trasformazione dell'immagine RGB in immagine a livelli di grigio

% Per la conversione si usa il comando rgb2gray

I = rgb2gray(J); figure;

(3)

imshow(I);

title('Immagine a livelli di grigio');

%% Step 4: Rilevamento cellule

% Segmentazione: isolamento delle cellule

% Si sfrutta il differente livello di grigio rispetto al resto dell'immagine

% X realizzare la segmentazione si usa un operatore di bordo basato sul

% gradiente: operatore di Sobel, che coinvolge un pixel di un intorno 3x3

% Si realizza quindi la sogliatura per creare una maschera binaria

% contenente la cellula segmentata

[junk threshold] = edge(I, 'sobel'); fudgeFactor = 0.6;

% tale parametro deve essere opportunamente scelto a seconda dell'immagine

BWs = edge(I,'sobel', threshold * fudgeFactor); subplot(2,3,2)

imshow(BWs);

title('binary gradient mask');

%% Step 5: Dilatazione

% L'operazione di sogliatura ha consentito la selezione dei pixel

% caratterizzati da significativi cambiamenti di intensità.

% Vengono mostrate le linee di alto contrasto, che però possono non

% delineare abbastanza bene il contorno dell'oggetto di interesse.

(4)

% Ad esempio possono esservi "buchi" nelle linee che circondano

% l'oggetto nella maschera

% l'immagine è perciò sottoposta all'operatore morfologico di dilatazione

% Si usano elementi strutturali che possono essere creati con la funzione

% |strel|

se90 = strel('line', 3, 90); se0 = strel('line', 3, 0);

% Si usano elementi strutturali verticali seguiti da quelli orizzontali

% La funzione |imdilate| dilata l'immagine % Il contorno é mostrato abbastanza nettamente

BWsdil = imdilate(BWs, [se90 se0]); subplot(2,3,3)

imshow(BWsdil);

title('dilated gradient mask');

%% Step 6: Riempimento "Interior Gaps"

% Ci sono ancora piccole cavità all'interno della cellula e per riempirle

% si usa un altro operatore morfologico: imfill

BWdfill = imfill(BWsdil, 'holes'); subplot(2,3,4)

imshow(BWdfill);

title('binary image with filled holes');

%% Step 7: Smoothen

% Gli oggetti segmentati vengono resi più naturali rifinendoli erodendo

(5)

% l'immagine 2 volte con un "diamante" creato usando la funzione |strel|

seD = strel('diamond',1);

BWfinal = imerode(BWdfill,seD); BWfinal = imerode(BWdfill,seD); subplot(2,3,5)

imshow(BWfinal);

title('segmented image');

%% step 8: Divisione in regioni

% bwlabel marca i componenti connessi in un'immagine binaria

% 8 è la connettività scelta

X = bwlabel(BWfinal,8);

% il comando label2rgb converte la matrice label in una

% immagine a colori RGB, così da % visualizzare le regioni marcate

% A ciascun oggetto identificato è assegnato un colore

RGB = label2rgb(X,@jet,'k'); figure

imshow(RGB,axes)

title('labeled image'); hold on [l,m]=size(B); for k=1:l plot(B(k,1),B(k,2),'w*') text(B(k,1),B(k,2), num2str(k)); hold on end

(6)

%% Step 9 Costruzione della matrice di raggiungibilità

% La matrice di raggiungibilità è una matrice quadrata,

% di dimensione pari al num dei nodi individuati al passo 2

% Se il nodo i raggiunge il nodo j, allora l'elemento i,j

% della matrice è 1, diversamente 0

% 2 nodi sono connessi se appartengono allo stesso oggetto,

% ovvero se il pixel che li rappresenta ha gli stessi valori di R, G, B

C=B(:,1);

% ogni riga del vettore C rappresenta la coordinata x di un nodo

D=B(:,2);

% ogni riga del vettore D rappresenta la coordinata y di un nodo

[l,m]=size(B);

pixels = impixel(RGB,C,D)

% ogni riga di questa matrice riporta i valori R, G e B di un pixel, le cui

% coordinate sono specificate nella riga corrispondente della matrice B

R=zeros(l); for i=1:l for j=1:l if pixels(i,:)==pixels(j,:) R(i,j)=1; else R(i,j)=0;

(7)

end if i==j R(i,j)=0; end end end Rag=R

% Rag è la matrice di raggiungibilità

%% Step 10 Costruzione del grafo di raggiungibilità

BGobj = biograph(Rag) h=view(BGobj)

%% Step 11 Costruzione della matrice delle distanze % La matrice delle distanze è una matrice quadrata, % di dimensione pari al num dei nodi individuati al passo 2

% L'elemento i,j della matrice è la distanza euclidea tra il nodo i e il % nodo j dist=zeros(l); for i=1:l for j=1:l ai=B(i,1); bi=B(i,2); aj=B(j,1); bj=B(j,2); a=(ai-aj)^2; b=(bi-bj)^2; dist(i,j)=sqrt(a+b); if dist(i,j)< 10 dist(i,j)=0;

(8)

else dist(i,j)=dist(i,j); end

end end

Distanze=dist

Il fudgeFactor per la rete 1 è pari a:

9

giorno 1 = 0.46;

9

giorno 2 = 0.475;

9

giorno 3 = 0.51;

9

giorno 4 = 0.51;

9

giorno 5 = 0.6;

9

giorno 6= 0.65;

9

giorno 7 = 0.6.

I valori della rete 2 sono:

9

giorno 1 = 0.59;

9

giorno 2 = 0.5;

9

giorno 3 = 0.6;

9

giorno 4 = 0.61;

9

giorno 5 = 0.6;

9

giorno 6 = 0.748;

9

giorno 7 = 0.495.

I valori della rete 3 sono:

9

giorno 1 = 0.38;

9

giorno 2 = 0.5;

9

giorno 3 = 0.5;

(9)

9

giorno 4 = 0.45;

9

giorno 5 = 0.5;

9

giorno 6 = 0.55;

9

giorno 7 = 0.55.

Analisi della connettività e costruzione del grafo

Una volta ottenuta la matrice delle adiacenze, il vettore delle

connettività e la connettività media vengono calcolati

automaticamente dal programma scritto in Matlab, che consente

anche la costruzione automatica del grafo.

L’esempio riportato riguarda l’analisi della rete 1 al primo giorno di

coltura ed è ripetuta in maniera identica per tutti gli altri giorni e per

le altre due reti.

%% STUDIO DI CONNETTIVITA' %% Giorno 1

% Matrice delle adiacenze:

A1=[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];

(10)

% l'elemento iesimo del vettore k1 é il grado del vertice i, ottenuto addizionando

% gli elementi della iesima colonna di A1

k1=sum(A1)

% k1m è la connettività media

k1m=mean(k1) % Costruzione istogramma x = 0:1:14; figure hist(k1,x) ylabel('frequenza') xlabel('connettività')

title('distribuzione della connettività dei nodi al giorno 1')

% Creazione del grafo

B1 = biograph(A1) h1=view(B1)

Analisi della distribuzione delle lunghezze del

cammino e calcolo della lunghezza media

Dall’immagine della rete è possibile valutare la lunghezza del

cammino tra 2 generici nodi i e j e costruire un vettore delle

distanze, in cui sono riportati tutti i valori: d12, d13,...

Naturalmente poi, nel vettore, d31, uguale a d13, non è ripetuta.

(11)

Tale vettore è stato inserito in un file di Matlab che, a partire da

esso, consente di calcolare sia la distribuzione delle lunghezze del

cammino che la lunghezza media data da:

= ≠ =

=

N j ij N j i i

d

N

N

L

1 , 1

)

1

(

1

dove N è il numero dei nodi.

Tale analisi è stata effettuata per tutte le 7 immagini di ogni rete, ma

di seguito, per brevità, è riportata l’analisi della rete 1 al primo

giorno di coltura. Ciò che cambia nei vari giorni sono solo gli

elementi del vettore e gli indici, ma i comandi sono gli stessi.

%% DISTRIBUZIONE DELLE LUNGHEZZE DEL CAMMINO E CALCOLO DELLA LUNGHEZZA MEDIA

% Ogni elemento del vettore è la distanza tra 2 nodi % E' inoltre calcolata la distanza media del cammino come media delle

% distanze tra le tutte le coppie di nodi

% 210 è il prodotto N*(N-1), dove N è il num dei nodi pari a 15 %% giorno1 l1=[1 3 2 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0]; x = 0:1:5; figure hist(l1,x) ylabel('frequenza')

(12)

xlabel('lunghezza del cammino')

title('distribuzione della lunghezza del cammino al giorno 1')

% m1 è la lunghezza media del cammino al giorno 1

Riferimenti

Documenti correlati

Della richiesta di parere indicata nelle premesse deve essere esaminata, preliminarmente, l’ammissibilità sotto i profili soggettivo e oggettivo, alla luce dei criteri elaborati dalla

Map (a) ‘Contains Ordnance Survey data © Crown copyright and database right 2013’; (b) Aerial image from Google Earth ‘Imagery ©2017 Google, Map data ©2017’; (c) Waveform lidar

Il sentimento nazionale mancese trova le sue origini nella prima metà del XVII secolo, negli anni dell’unificazione del popolo Jurchen, e continuò almeno fino al 1924, quando

Il termine gateway non si rifà precisamente ad un dispositivo fisico (hardware), ma si identifica più con una funzionalità generica che può essere compresa in dispositivi quali

- con ciascun fornitore è stato stipulato un Contratto Quadro della durata di sette anni e, durante questo periodo, il fornitore si impegna a stipulare Contratti

di affidare a Fastweb S.p.a nell'ambito del contratto quadro stipulato da CONSIP SPA per i servizi del Sistema Pubblico di Connettività SPC2 la variazione del

ICS_Materials: materiali interattivi, connessi e smart Valentina Rognoli, Venanzio Arquilla, Marinella Ferrara Manifattura digitale e produzione su misura a distanza Annalisa Di

Il progetto ha l’obiettivo di indicare soluzioni di compatibilità nel trasferire ed impiegare i dati nei sistemi di agricoltura di precisione: l’imprenditore acquisisce dati dai