3.3 Algoritmo 2: Stereo matching
3.3.4 Ottimizzazione della mappa
Con la fase appena conclusa, l’algoritmo mantiene una struttura piuttosto semplice che, vedremo, non richiede un elevato quantitativo di risorse. Al tempo stesso, l’utilizzo della trasformata Census (modificata) garantisce un certo grado di robustezza quando le immagini in input presentano i classici difetti delle fotocamere amatoriali.
Nella fase successiva si ha la possibilit`a di raffinare le informazioni circa le profondit`a, ad esempio rimuovendo i rimanenti picchi di rumore e ride- finendone meglio i bordi. La mappa presenta infatti i noti svantaggi degli algoritmi stereo locali: una maschera troppo piccola (ad esempio 3x3) per- mette performance migliori a discapito della precisione, mentre una troppo
grande (nell’ordine dei 10x10 pixel) rende la procedura pi`u lenta. La di- mensione scelta per la nostra finestra, 7x7, `e un buon compromesso ma fa in modo che i bordi degli oggetti vengano letteralmente ”gonfiati”, come si nota, ad esempio, nel volto dell’immagine statua.
Prima di introdurre una soluzione a questo problema, si `e ragionato su come si potessero diminuire efficacemente le regioni affette da rumore, le quali presentano, in pochi pixel, alte variazioni di intensit`a.
Applicazione di filtri di smoothing
Tra i molteplici filtri di image processing, a loro volta derivati dalla teoria dei segnali, quelli appartenenti alla categoria di smoothing eseguono opera- zioni di sfuocatura sulle immagini, attenuando il rumore di conseguenza.
Tali operatori, detti passa-basso proprio per il fatto che eliminano dal- l’output le alte frequenze, hanno uno svantaggio: rendono meno definiti i bordi delle zone su cui operano, effetto che, nelle nostre mappe, si vuole in- vece correggere. Per questo, un secondo filtro che prende il nome di mediano [48] `e stato preso in considerazione: dato un pixel, il nuovo valore applicatogli `e, appunto, il mediano tra tutti quelli del suo intorno, solitamente definito da una finestra quadrata di ridotte dimensioni.
Nell’esempio in Figura 3.13, il pixel centrale ha intensit`a 0, `e quindi total- mente nero e, visto localmente assieme ai suoi vicini, rappresenta un punto di rumore. Applicando il filtro mediano il suo valore sale a 60, migliorando visibilmente.
3.3 Algoritmo 2: Stereo matching 49
Figura 3.14: Confronto tra mappe di disparit`a prima e dopo l’applicazione di un filtro mediano con maschera 7x7
Recupero dei contorni tramite segmentazione
Eliminata un’evidente quantit`a di rumore dalla mappa, l’ultima fase `e dedicata al recupero dei dettagli relativi ai bordi degli oggetti. Un’operazione di questo tipo pu`o essere intesa in vari modi, ad esempio, se il problema maggiore risiede nei bordi delle zone pi`u chiare, si potrebbe ricorrere ad un ulteriore filtro di imaging della classe degli operatori morfologici, detto di erosione [48]. Il suddetto, infatti, con un’operazione anch’essa basata su maschere, aiuta a ridurre l’area di tutte le zone esclusivamente chiare.
E’ evidente che tale operazione risulta troppo generica e non si focaliz- zata su determinate aree, pur essendo per i suoi scopi efficace e veloce. Si `e deciso, invece, di ricorrere alle pi`u complesse tecniche di segmentazione, con- sapevoli del fatto che buona parte di tali algoritmi non brillano per efficienza computazionale.
Un’operazione di segmentazione `e un processo che partiziona un’imma- gine digitale in superpixel, ovvero sezioni di pixel che si accomunano per una certa propriet`a, solitamente per colori simili. Da un punto di vista pi`u
generico, si pu`o intendere come un’operazione che assegna ad ogni punto un’etichetta, in modo tale da identificare insiemi di elementi che condividono caratteristiche comuni.
Altamente sfruttata nella fotografia medica [49], la segmentazione per- mette di evidenziare in una immagine le differenze non solo di colore, ma anche logiche, delle entit`a in essa contenute. Tecniche di questo tipo, ad esempio, vengono utilizzate nelle operazioni di ”taglio” tra oggetti di diversa natura nella stessa scena [50], o per dividere i primi piani dalle entit`a sullo sfondo.
Uno degli algoritmi che rappresentano il ”punto di partenza” per la realiz- zazione di metodi pi`u evoluti `e senza dubbio il K-means, che iterativamente divide un input in un numero prefissato di segmenti (o cluster), appunto K: 1. A random, o secondo una data euristica, si scelgono K punti interni
allo spazio.
2. Per ogni punto nello spazio, vi si assegna il cluster tale per cui `e mi- nimizzata la distanza (intesa come metrica di similarit`a, come lo sono SAD e SSD per le intensit`a di grigio) tra il punto e il centro del cluster. 3. Si aggiorna il valore del punto centrale di ogni cluster con la media dei
valori racchiusi in esso.
4. Si ripete dal punto 2 fino alla convergenza (ad esempio quanto non esistono pi`u pixel senza etichetta).
La complessit`a computazionale di questa procedura `e O(N KI), dove N `e il numero totale di pixel, K il numero di cluster e I il numero di iterazio- ni prima di arrivare alla convergenza. E’ evidente che, per valori alti di I, l’algoritmo risulta piuttosto inefficiente. Da questo sono nate tecniche otti- mizzate, ad esempio basate su grafi [51], che garantiscono una complessit`a che dipende esclusivamente da N . Lo svantaggio di tali soluzioni `e il poco controllo sul numero di segmenti risultanti e sulla loro dimensione.
3.3 Algoritmo 2: Stereo matching 51
Un algoritmo, invece, di recente ideazione, derivato da K-Means ma con complessit`a lineare O(N ) `e SLIC - Simple linear iterative clustering [52]. Viene sfruttata una meno diffusa metrica di confronto tra un pixel e il cen- tro di un cluster, basata sullo spazio-colore CIELAB, formato di scambio e conversione usato nei moderni programmi di imaging professionale3.
Il set-up della procedura divide l’immagine in una griglia di celle quadrate di area S2 (questa sar`a intesa come la grandezza massima che ogni cluster potr`a assumere). Il punto centrale di ogni cella `e fissato come l’origine di un cluster. L’area di ricerca `e dunque limitata a questo parametro.
Conoscendo le componenti (L, a, b, x, y) di colore e spazio di ogni pixel p, la distanza D da un centro k viene calcolata con la seguente formula:
dlab = q (lk− lp)2+ (ak− ap)2+ (bk− bp)2 dxy = q (xk− xp)2+ (yk− yp)2 D = dlab+ m Sdxy (3.17)
Dove dlab `e la differenza sul colore, dxy sullo spazio (entrambe intese come distanze euclidee) e m `e un parametro che regola la ”compattezza” di ogni cluster nel range [1; 20]: pi`u `e alto e pi`u i segmenti assumeranno la forma quadrata della cella d’origine.
Implementato in SuperStereo, con alcune modifiche alle strutture dati per ottimizzare l’utilizzo di RAM e calcoli in virgola mobile, SLIC ha permesso di ricostruire i bordi originali delle forme nella mappa generata segmentando la sola immagine di sinistra. In particolare, definita una sezione, il colore al suo interno `e la moda dei valori di profondit`a di tutti i pixel che la compongono. Tale passaggio ha anche permesso di eliminare ogni lieve rumore residuo della fase precedente di smoothing (Figura 3.16).
3Si pu`o trovare un’analisi dello spazio-colore CIELAB a questo indirizzo: http:
//www.colourphil.co.uk/lab_lch_colour_space.shtml, mentre un algoritmo di con- versione dallo spazio RGB a CIELAB esiste ed `e disponibile al sito https://github.com/ THEjoezack/ColorMine/tree/master/ColorMine/ColorSpaces/Conversions
Figura 3.15: Esempi di applicazione di SLIC variando il numero di cluster
Figura 3.16: Confronto tra mappe di disparit`a prima e dopo l’operazione di segmentazione
3.3 Algoritmo 2: Stereo matching 53