Parte I — Fondamenti: acquisizione e immagini · Capitolo 3

Segmentazione: soglie, colore, morfologia e clustering

~35 min di lettura5 widget interattivi4 tavole

In questo capitolo

  1. Che cosa vuol dire segmentare
  2. Binarizzazione con soglia globale
  3. Segmentazione basata sul colore
  4. Morfologia matematica: erosione e dilatazione
  5. Opening, closing e uso degli edge
  6. Segmentazione tramite clustering: K-means
  7. L'algoritmo Mean Shift
  8. Verifica le tue conoscenze

1. Che cosa vuol dire segmentare

La segmentazione può avere obiettivi diversi a seconda della specifica applicazione. Le due letture principali viste a lezione sono:

La segmentazione oggetto/sfondo può essere un compito a volte semplice ma talvolta anche molto complesso: un oggetto scuro su fondo chiaro uniforme si separa con una soglia; un oggetto di colore e tessitura variabili, su fondo strutturato e con illuminazione non uniforme, richiede tutto l'arsenale di questo capitolo (e, per i casi difficili, le reti del capitolo 11).

Nota del redattore

Attenzione a non confondere questa segmentazione — di basso livello, basata su proprietà fotometriche — con la semantic segmentation del capitolo 11, che assegna a ogni pixel una classe di un insieme predefinito. Qui separiamo regioni omogenee, lì attribuiamo significato. Sono due problemi con lo stesso nome e obiettivi diversi.

2. Binarizzazione con soglia globale

Nel caso di una singola soglia globale T (per esempio quando c'è un solo oggetto), il metodo consiste nell'impostare a 0 i pixel la cui intensità è inferiore a T e a 1 i rimanenti:

              ⎧ 0    se  I(x,y) < T
NewI(x,y) =   ⎨
              ⎩ 1    se  I(x,y) ≥ T

Sebbene molto semplice, il metodo presenta tre problemi ben precisi:

istogramma dei livelli di grigio T oggetto (scuro) sfondo (chiaro) I sfondo a intensità variabile soglia unica: metà sfondo diventa oggetto
Tavola 3.1 — A sinistra: l'istogramma bimodale è il caso fortunato, in cui la valle tra i due modi indica la soglia. A destra: con un gradiente di luce la stessa soglia globale classifica come oggetto una porzione di sfondo — il limite strutturale del metodo.

Soglia globale su un'immagine sintetica

La mini-immagine 10×8 contiene un oggetto scuro su fondo chiaro, con l'opzione di aggiungere un gradiente di illuminazione e rumore. Cerca una soglia che funzioni in tutti i casi: nel caso col gradiente non esiste.

immagine
binarizzata
istogramma

3. Segmentazione basata sul colore

Il colore è spesso l'informazione più discriminante. L'esempio visto a lezione è la localizzazione del volto e delle sue componenti interne: nello spazio RGB le diverse regioni del volto non sono spazialmente raggruppate, mentre in HSI si notano cluster ben evidenti per bocca, occhi, pelle. È quindi relativamente semplice isolare tali caratteristiche — a patto di scegliere lo spazio colore giusto.

Perché non usare regole empiriche

L'utilizzo di tecniche empiriche per estrarre le regioni dello spazio colore che contengono gli oggetti da segmentare non è raccomandabile (tranne nei casi molto semplici), per due ragioni:

L'alternativa: un classificatore

Molto meglio etichettare manualmente (per esempio racchiudendo con poligonali) le regioni di interesse su alcune immagini di training e lasciare a un classificatore il compito di individuare la sottoregione — anche non connessa — dello spazio colore. Terminato il training, il classificatore addestrato potrà essere utilizzato per segmentare nuove immagini. I vantaggi:

Nell'esempio del volto, i pixel di foreground sono definiti come i pixel interni a 3 poligoni marcati a mano, quelli di background come i pixel interni a 4 poligoni marcati a mano. Visualizzando il training set in una vista 2D (RG) dello spazio RGB si vedono le due nuvole, foreground in rosso e background in blu. Un classificatore bayesiano parametrico con distribuzioni multinormali viene addestrato a separare le due classi in RGB e applicato a una nuova immagine; il risultato si sovrappone all'immagine originale.

Lo stesso schema è stato applicato al problema del verde pubblico in un quartiere di Cesena: si etichettano a mano aree "verde pubblico" e aree "non verde pubblico" sullo stesso quartiere, si addestra il classificatore bayesiano in RGB e lo si applica a una nuova immagine.

Per l'esame

Il punto da saper argomentare non è "quale classificatore", ma perché un classificatore batte una regola a soglie: le soglie indipendenti per canale definiscono un parallelepipedo allineato agli assi, mentre la regione di interesse nello spazio colore è tipicamente obliqua, curva e persino non connessa. Il classificatore la apprende dai dati e si riadatta rietichettando pochi esempi quando cambiano le condizioni.

4. Morfologia matematica: erosione e dilatazione

La morfologia matematica, derivata dalla teoria degli insiemi, offre strumenti che consentono di estrarre informazioni utili per rappresentare la forma degli oggetti e di rimuovere particolari irrilevanti. Lavora solitamente su immagini binarie (foreground/background) — tipicamente il risultato di una binarizzazione come quella della sezione 2.

Gli operatori morfologici modificano il contenuto dell'immagine binaria applicando un elemento strutturante S, che può avere una qualsiasi forma rappresentabile tramite una maschera digitale; solitamente si utilizzano elementi strutturanti circolari o quadrati.

OperatoreDefinizione formaleEffetto
Erosione F ⊖ S = { q | S_q ⊆ F } L'immagine risultante ha valore di foreground nei pixel q tali che, traslando in essi S, l'intero elemento strutturante è contenuto in F. Contrae gli insiemi connessi di pixel di foreground: assottiglia gli oggetti, separa oggetti debolmente connessi.
Dilatazione F ⊕ S = { q | (S^r)_q ∩ F ≠ ∅ } L'immagine risultante ha valore di foreground nei pixel q tali che, traslando in essi S^r (il riflesso di S), almeno uno dei suoi elementi è contenuto in F. Espande gli insiemi connessi di foreground: aumenta le dimensioni degli oggetti, riempie buchi o zone vuote.
F originale F ⊖ S (erosione) F ⊕ S (dilatazione) elemento strutturante S: quadrato 3×3
Tavola 3.2 — Erosione e dilatazione con elemento strutturante quadrato 3×3. L'erosione elimina la protuberanza sottile e stacca il ponte tra le due parti; la dilatazione chiude il buco interno e salda il ponte. La forma originale è tratteggiata nelle due immagini di destra.

Laboratorio di morfologia

Clicca le celle per disegnare la tua forma binaria (nero = foreground), poi applica gli operatori. Prova a costruire un oggetto con un buco e un sottile ponte, poi confronta opening e closing.

immagine binaria (clicca)
Elemento strutturante: quadrato 3×3.

5. Opening, closing e uso degli edge

Combinando erosione e dilatazione si ottengono due operazioni derivate, che sono quelle davvero usate nella pratica:

OperazioneComposizioneEffetto
Apertura (opening)erosione + dilatazioneSepara oggetti debolmente connessi e rimuove regioni piccole.
Chiusura (closing)dilatazione + erosioneRiempie buchi e piccole concavità, e rafforza la connessione di regioni unite debolmente.

La logica è: la prima operazione produce l'effetto voluto (rimuovere il piccolo, oppure riempire il buco), la seconda ripristina approssimativamente la dimensione originale dell'oggetto. Per questo opening e closing sono preferibili all'erosione o alla dilatazione usate da sole.

Impiego di edge per la segmentazione

Nei casi in cui lo sfondo è sufficientemente uniforme ma gli oggetti non sono caratterizzati da intensità (grigi) o colori uniformi, l'impiego di edge può aiutare nella segmentazione: un oggetto screziato non ha un'intensità caratteristica, ma ha comunque un contorno. La pipeline mostrata a lezione:

  1. Gradiente e binarizzazione — si calcola la magnitudo del gradiente (capitolo 2) e la si sogliata: si ottiene una mappa di edge, generalmente frammentata.
  2. Dilatazione morfologica — chiude le interruzioni nel contorno, saldando i frammenti in una curva chiusa.
  3. Riempimento buchi — l'interno del contorno chiuso diventa foreground pieno.
  4. Eliminazione delle componenti sul bordo ed erosione morfologica — si scartano le regioni che toccano il bordo dell'immagine (oggetti tagliati) e si compensa la dilatazione del passo 2 riportando l'oggetto alle dimensioni corrette.
1. gradiente +binarizzazione 2. dilationmorfologica 3. riempimentobuchi 4. bordi rimossi +erosion
Tavola 3.3 — Segmentazione basata su edge: il contorno frammentato viene ispessito dalla dilatazione fino a chiudersi, riempito, e infine riportato alle dimensioni originali dall'erosione. È la ricetta per oggetti non uniformi su sfondo uniforme.

Un'ultima avvertenza vista a lezione: la segmentazione in presenza di rumore è sensibilmente più difficile. Il rumore produce falsi edge e falsi foreground; l'opening morfologico è lo strumento standard per rimuovere le piccole componenti spurie prima di ogni analisi successiva.

6. Segmentazione tramite clustering: K-means

Gli oggetti di interesse possono essere individuati applicando algoritmi di clustering, per esempio K-Means. Il punto decisivo è che la scelta dello spazio delle feature è fondamentale.

Supponiamo di utilizzare solo il valore di intensità: lo spazio delle feature è monodimensionale e ogni pixel è un punto su una retta. I migliori centroidi sono quelli che minimizzano la Sum of Squared Distances:

SSD =    Σ         Σ      ‖ p_j − c_i ‖
      cluster C_i   p_j ∈ C_i

L'algoritmo

K-means si fonda su due domande complementari, che l'algoritmo risolve alternandole: conoscendo i centroidi, quali punti saranno assegnati a ogni cluster? e conoscendo l'attribuzione ai cluster, come determinare i centroidi?

  1. Inizializza casualmente i centri dei cluster.
  2. Assegna i punti ai cluster: per ciascun punto p, trova il cluster più vicino c_i e assegna p al cluster c_i.
  3. Ricalcola i centroidi sulla base dell'assegnamento effettuato al passo 2: calcola c_i come media dei punti assegnati al cluster.
  4. Se i cluster sono stati modificati, ripeti dal passo 2.

K-means passo per passo (feature space 1D)

Alterna manualmente i due passi dell'algoritmo e osserva la SSD scendere. Cambiando K o reinizializzando si vede anche il difetto principale: la sensibilità alla scelta iniziale dei centroidi.

La scelta dello spazio delle feature

Un feature space più rappresentativo consente di ottenere risultati migliori: usando la sola intensità si perdono le distinzioni cromatiche; usando il colore (RGB) la segmentazione migliora sensibilmente. Resta però un problema: oggetti distanti possono essere assegnati allo stesso cluster, perché nello spazio delle feature non c'è nulla che dica dove si trovano nell'immagine. La soluzione è codificare nello spazio delle feature anche informazioni spaziali (e volendo anche tessitura, gradiente, ...): il vettore di ciascun pixel diventa per esempio (R, G, B, x, y).

K-means: proK-means: contro
  • Algoritmo molto semplice.
  • Converge a un minimo locale della funzione errore.
  • Elevata complessità computazionale.
  • Necessità di definire il valore di k.
  • Sensibile alla scelta iniziale dei centroidi.
  • Sensibile alla presenza di outlier.
  • Individua cluster di forma "sferica", non ottimale per alcune distribuzioni di pattern.

7. L'algoritmo Mean Shift

Mean Shift nasce per rimuovere due dei difetti di K-means: la necessità di fissare k e il vincolo dei cluster sferici. L'idea: ricercare i massimi locali di densità nello spazio delle feature.

Mean Shift è un algoritmo iterativo che considera lo spazio delle feature come una densità di probabilità empirica. L'input è un insieme di punti che possono essere considerati come campioni estratti dalla densità di probabilità in oggetto. Se esistono regioni dense (cluster) di punti, esse corrispondono alla moda (massimo locale) della distribuzione di probabilità; scopo dell'algoritmo è individuare questi punti di massimo locale.

L'algoritmo ad alto livello

  1. Fissa una finestra attorno a ciascun punto.
  2. Calcola la media dei dati all'interno della finestra.
  3. Sposta la finestra centrandola sulla nuova media.
  4. Ripeti i passi precedenti fino a convergenza.

Il vettore che va dal centro della finestra al centro di massa dei punti che contiene è il mean shift vector: seguirlo significa salire lungo il gradiente della densità. Le finestre (kernel) più usate sono Epanechnikov, uniforme e gaussiana.

mean shift vector region of interest iniziale convergenza: moda della densità
Tavola 3.4 — Ogni iterazione sposta la finestra sul centro di massa dei punti che contiene: la traiettoria risale la densità fino alla moda. Nessun k da fissare, nessuna ipotesi di forma sferica sui cluster.

Mean shift 1D: le finestre convergono sulle mode

Ogni finestra parte centrata su un punto (segmenti blu in alto). Premendo "Itera" ciascuna si sposta sulla media dei punti che contiene. Con una finestra piccola trovi molte mode; allargandola i cluster si fondono: la dimensione della finestra è l'unico parametro, e determina tutto.

Segmentazione con Mean Shift

Il cluster è definito come l'insieme dei punti che si trovano nello stesso bacino di attrazione di un massimo locale. L'algoritmo di segmentazione è quindi:

  1. Codificare opportunamente l'immagine tramite feature (intensità, colore, colore + posizione, ...).
  2. Inizializzare le finestre di osservazione (es. gaussiane) in corrispondenza di ciascun feature vector.
  3. Eseguire l'algoritmo mean shift fino a convergenza.
  4. Fondere le finestre (pixel) che si riferiscono allo stesso massimo locale.
Mean Shift: vantaggiMean Shift: svantaggi
  • Ricerca automatica dei massimi locali (nessun k da specificare).
  • È necessario impostare un singolo parametro: la dimensione della finestra di osservazione.
  • È in grado di rilevare cluster di forma arbitraria.
  • Tecnica generica.
  • Determinare la dimensione ottimale della finestra non è semplice.
  • Non adatto a vettori di feature ad alta dimensionalità.
Idea chiave

K-means e Mean Shift si scambiano un parametro con un altro: in K-means devi dire quanti cluster ci sono; in Mean Shift devi dire quanto sono larghi. Nessuno dei due elimina la scelta — ma la larghezza della finestra è spesso una grandezza fisica su cui si ha un'intuizione (quanto varia il colore dentro un oggetto), mentre il numero di oggetti in una scena, in generale, non lo si conosce.

Verifica le tue conoscenze

Quali sono i tre problemi della binarizzazione con soglia globale?

1) La scelta automatica della soglia ottimale. 2) La non corretta gestione di sfondi a intensità variabile (es. gradienti di luce): una sola soglia non può funzionare su tutta l'immagine. 3) L'incapacità di segmentare oggetti non uniformi: se l'oggetto contiene sia pixel chiari sia scuri, nessuna soglia globale lo isola.

Perché non conviene segmentare il colore con range indipendenti per canale?

Perché range del tipo 50 < R < 60, 100 < G < 120, 90 < B < 140 definiscono un parallelepipedo allineato agli assi, che approssima male la regione di interesse nello spazio colore; inoltre l'approccio è difficilmente generalizzabile e richiede tarature manuali a ogni cambio di condizioni. Meglio etichettare a mano alcune regioni su immagini di training e lasciare a un classificatore (es. bayesiano parametrico con distribuzioni multinormali) il compito di individuare la sottoregione — anche non connessa — dello spazio colore.

Perché nell'esempio del volto lo spazio HSI funziona meglio di RGB?

Perché nello spazio RGB le diverse regioni del volto non sono spazialmente raggruppate, mentre in HSI si notano cluster ben evidenti per bocca, occhi e pelle: separare le classi diventa quindi relativamente semplice. È un esempio di come la scelta dello spazio di rappresentazione conti quanto l'algoritmo di classificazione.

Definite formalmente erosione e dilatazione.

Erosione: F ⊖ S = {q | S_q ⊆ F}, cioè il pixel q è foreground se traslando in esso l'elemento strutturante S questo è interamente contenuto in F; contrae gli insiemi di foreground. Dilatazione: F ⊕ S = {q | (S^r)_q ∩ F ≠ ∅}, cioè q è foreground se traslando in esso il riflesso S^r almeno un suo elemento cade in F; espande gli insiemi di foreground.

Che differenza c'è tra opening e closing?

Opening = erosione seguita da dilatazione: separa oggetti debolmente connessi e rimuove regioni piccole. Closing = dilatazione seguita da erosione: riempie buchi e piccole concavità e rafforza la connessione di regioni unite debolmente. In entrambi i casi la seconda operazione serve a ripristinare approssimativamente la dimensione originale degli oggetti.

Descrivete la pipeline di segmentazione basata su edge e dite quando conviene.

Conviene quando lo sfondo è uniforme ma gli oggetti non lo sono (intensità o colori non uniformi). Passi: 1) gradiente e binarizzazione; 2) dilatazione morfologica per chiudere il contorno; 3) riempimento dei buchi; 4) eliminazione delle componenti che toccano il bordo dell'immagine ed erosione morfologica per ripristinare le dimensioni.

Scrivete l'algoritmo K-means e la funzione che minimizza.

Minimizza la Sum of Squared Distances: SSD = Σ_{cluster C_i} Σ_{p_j ∈ C_i} ‖p_j − c_i‖. Algoritmo: 1) inizializza casualmente i centri dei cluster; 2) assegna ogni punto p al cluster c_i più vicino; 3) ricalcola ogni c_i come media dei punti assegnati; 4) se i cluster sono cambiati, ripeti dal passo 2.

Elencate pro e contro di K-means.

Pro: algoritmo molto semplice; converge a un minimo locale della funzione errore. Contro: elevata complessità computazionale; necessità di definire k; sensibilità alla scelta iniziale dei centroidi; sensibilità agli outlier; individua cluster di forma "sferica", non ottimale per alcune distribuzioni di pattern.

Perché due oggetti distanti nell'immagine possono finire nello stesso cluster, e come si evita?

Perché lo spazio delle feature (per esempio la sola intensità, o il solo colore) non contiene informazione spaziale: due pixel dello stesso colore sono lo stesso punto, ovunque si trovino. La soluzione è codificare nello spazio delle feature anche informazioni spaziali — e all'occorrenza tessitura o gradiente — per esempio usando vettori (R, G, B, x, y).

Descrivete i quattro passi dell'algoritmo Mean Shift.

1) Fissa una finestra attorno a ciascun punto; 2) calcola la media dei dati all'interno della finestra; 3) sposta la finestra centrandola sulla nuova media; 4) ripeti fino a convergenza. Lo spostamento è il mean shift vector e conduce la finestra verso il massimo locale di densità (la moda). Kernel tipici: Epanechnikov, uniforme, gaussiano.

Come si usa Mean Shift per segmentare un'immagine?

1) Codificare l'immagine tramite feature; 2) inizializzare le finestre di osservazione (es. gaussiane) in corrispondenza di ciascun feature vector; 3) eseguire mean shift fino a convergenza; 4) fondere le finestre (pixel) che si riferiscono allo stesso massimo locale. Un cluster è l'insieme dei punti nello stesso bacino di attrazione di un massimo locale.

Confrontate K-means e Mean Shift su parametri e forma dei cluster.

K-means richiede di fissare k, è sensibile all'inizializzazione e agli outlier e trova cluster sostanzialmente sferici. Mean Shift individua automaticamente i massimi locali, richiede un solo parametro (la dimensione della finestra) e rileva cluster di forma arbitraria; i suoi limiti sono la difficoltà di scegliere la finestra ottimale e l'inadeguatezza per feature ad alta dimensionalità.