Segmentazione di immagini

Da Wikipedia, l'enciclopedia libera.

La segmentazione di un'immagine nell'elaborazione digitale delle immagini è il processo di partizionare un'immagine in regioni significative. Viene utilizzata per ottenere una rappresentazione più compatta, estrarre degli oggetti o comunque 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 tipi principali di algoritmo per segmentare un'immagine: basati sull'istogramma, basati sulla crescita/divisione delle regioni, basati sulla tecnica del rilassamento.

Growing[modifica | modifica sorgente]

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 di caratteristiche asscoiate 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)\le\ 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 |M1M2| < (k) dev.st. (i), con i = 1,\ 2, le due regioni sono fuse insieme.

Split[modifica | modifica sorgente]

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[modifica | modifica sorgente]

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.

Voci correlate[modifica | modifica sorgente]