# Segmentazione di immagini

La segmentazione di un'immagine nell'elaborazione digitale delle immagini è il processo di partizione di un'immagine in regioni significative. Viene utilizzata per ottenere una rappresentazione più compatta, per estrarre degli oggetti o come strumento per l'analisi delle immagini e permette di partizionare le immagini digitali in insiemi di pixel. Lo scopo della segmentazione è semplificare e/o cambiare la rappresentazione delle immagini in qualcosa che è più significativo e facile da analizzare.
La segmentazione è di solito utilizzata per localizzare oggetti e bordi (linee, curve, ecc.). Più precisamente, la segmentazione è il processo con il quale si classificano i pixel dell'immagine che hanno caratteristiche comuni, pertanto ciascun pixel in una regione è simile agli altri della stessa regione per una qualche proprietà o caratteristica (colore, intensità o texture). Regioni adiacenti sono significativamente differenti rispetto ad almeno una di queste caratteristiche. Il risultato di un'immagine segmentata è un insieme di segmenti che, collettivamente, coprono l'intera immagine.
Esistono tre tipologie principali di algoritmo per segmentare un'immagine: basati sull'istogramma, basati sulla crescita/divisione delle regioni e basati sulla tecnica del rilassamento.

## Metodologie di segmentazione

Di seguito un elenco dei metodi di segmentazione:
* Sogliatura (Thresholding)
* Metodi di raggruppamento
* Metodi basati sulla compressione
* Metodi basati sull'istogramma
* Riconoscimento dei contorni
* Metodo di raggruppamento duale
* Metodo di crescita della regione
* Metodi basati su equazioni differenziali parziali
** Metodi parametrici
** Metodi ad impostazione del livello
** Metodi di riscontro rapido
* Metodi variazionali
* Metodi di partizione a grafo
** Campi casuali markoviani
*** Segmentazione dell'immagine supervisionata usando MRF e MAP
*** Algoritmi di ottimizzazione
**** Iterated conditional modes/gradient descent
**** Annealing simulato (SA)
**** Algoritmi alternanti
*** Segmentazione dell'immagine non supervisionata usando MRF e massimizzazione dell'aspettazione
*** Segmentazione d'immagini basati sull'implementazione di MRF
* Trasformazione di Watershed
* Segmentazione basata sul modello
* Segmentazione multi-scala
** Segmentazione del segnale gerarchico monodimensionale
* Segmentazione semi-automatica
* Segmentazione allenabile

### Region growing

Tali meccanismi si basano sull'idea che bisogna trovare regioni che rappresentano oggetti o parti di essi; per questo motivo, il dominio dell'immagine deve essere diviso in $n$ regioni $R(1)\ ...\ R(n)$ e la regola di segmentazione è un predicato logico $P(R)$. La procedura di segmentazione partiziona l'insieme $X$ dell'immagine in $N$ sottoinsiemi tali che: l'unione di tali sottoinsiemi corrisponda con l'insieme $X$, i sottoinsiemi siano disgiunti, il predicato $P(R)$ assuma valore di verità positivo per ciascuno di tali sottoinsiemi e che non sia possibile che venga verificato il predicato $P(R)$ per una regione corrispondente all'unione di più sottoinsiemi $Ri$. Il risultato della segmentazione è un predicato logico avente la forma $P(R,\ x,\ t)$, in cui $x$ è un vettore delle caratteristiche associate al pixel (luminosità, texture, colore, coordinate spaziali), $t$ è un vettore di parametri (generalmente dei valori di soglia).
Il cosiddetto region growing utilizza un semplice approccio, cioè parte da alcuni pixel (seeds) che rappresentano regioni distinte dell'immagine (per fare ciò ci si può basare sulle informazioni fornite dall'istogramma) e li "accresce" fino a che tutta l'immagine risulta coperta. Per fare ciò servono una regola che descriva il meccanismo di crescita ed una regola che controlla l'omogeneità di ogni regione dopo ogni "accrescimento" e che verifica se è possibile unire due regioni distinte. Il meccanismo di crescita funziona in questa maniera: ad ogni passo $k$ e per ciascuna regione $Ri(k),\ i\ =\ 1,...,N$, si controlla se ci sono pixel non classificati nel vicinato 8-connesso (in poche parole gli otto pixel che circondano quello in esame) di ciascun pixel del bordo della regione; nel caso, prima di assegnare tale pixel alla regione $Ri(k)$, si verifica se la regione è ancora omogenea, ovvero se $P(Ri(k),\ U{x})\ =\ TRUE$.
Un possibile esempio di test di omogeneità è il seguente: se l'intensità del pixel è vicina al valore medio della regione, cioè $I(r,\ c)-M(i)\leq \ T(i)$.
La soglia $Ti$ varia a seconda della regione $Rn$ e dell'intensità del pixel $I(r,\ c)$, una possibile soglia è: $T(i)$ = $(1$– $\Sigma (i)/M(i)$ $)T$. Un meccanismo simile può essere usato per fare il merging, ovvero la fusione, di regione distinte: date le deviazioni standard dei valori presenti nelle due regioni, se |$M1$ – $M2$| < $(k)dev.st.(i)$, con $i=1,\ 2$, le due regioni sono fuse insieme.

### Split

Un approccio differente al region growing e di tipo top-down è quello dello splitting: esso parte dall'ipotesi che l'immagine sia omogenea; se ciò non è verificato l'immagine viene suddivisa in altre sottoimmagini (generalmente 4, per creare un cosiddetto quad-tree). Tale procedura viene ripetuta ricorsivamente fino a che restano esclusivamente regioni omogenee. Poiché la procedura è ricorsiva, produce una rappresentazione che può essere descritta da un albero i cui nodi hanno quattro (o comunque il numero di sottoimmagini che vengono ottenute suddividendo) figli ciascuno. Un problema che si pone a questo punto con la tecnica di split è come unire le regioni adiacenti ed omogenee che risultano distinte: per tale motivazione ad ogni iterazione è seguito un merging; proceduralmente, ciò significa che date due regioni $Ri$ e $Rj$, se $P(Ri\cup Rj)=TRUE$ esse vengono fuse.

### Clustering

Una procedura più elaborata per effettuare l'image segmentation è quella di utilizzare la tecnica del clustering, peraltro usata in moltissimi ambiti applicativi. Questa tecnica consente di determinare, a partire da un insieme di dati, gruppi con caratteristiche "simili", connotando ovviamente in modo matematico questa affermazione (distanza euclidea, distanza in termini di colore, ecc). Per una spiegazione elaborata si fa riferimento alla voce corrispondente, tuttavia bisogna ricordare che nel caso specifico dell'image processing, tra le caratteristiche da tenere in considerazione devono esservi anche le coordinate spaziali, per evitare che vengano rilevate regioni omogenee ed uniche ma che di fatto sono distinte nell'immagine.