tesi di laurea sistemi di visione per la navigazione...

56
UNIVERSIT ` A DEGLI STUDI DI PADOVA FACOLT ` A DI INGEGNERIA Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE AUTONOMA Relatore: Ch.mo Prof. Ruggero FREZZA Laureando: Andrea ROSSETTI CORSO DI LAUREA IN INGEGNERIA INFORMATICA ANNO ACCADEMICO 2003-2004

Upload: danghanh

Post on 15-Feb-2019

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

UNIVERSITA DEGLI STUDI DI PADOVA

FACOLTA DI INGEGNERIA

Tesi di Laurea

SISTEMI DI VISIONE PER LANAVIGAZIONE AUTONOMA

Relatore: Ch.mo Prof. Ruggero FREZZA

Laureando: Andrea ROSSETTI

CORSO DI LAUREA IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO 2003-2004

Page 2: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Indice

Introduzione 4Letteratura precedente sull’argomento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1 Geometria della visione binoculare 71.1 Modello geometrico delle telecamere . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Horopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 Risoluzione di profondita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4 Focale degli obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5 Campo visivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.6 Ricostruzione della posizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.7 Calibrazione e rettificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.8 Errore in allineamento e configurazioni singolari . . . . . . . . . . . . . . . . . . . . . 15

2 Ricerca locale della disparita 172.1 Introduzione ai metodi di ricerca locale . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Linee guida per un algoritmo a ricerca locale . . . . . . . . . . . . . . . . . . . . . . 172.3 Programmazione dinamica per la SSD . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4 Raffinamento subpixel della disparita . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5 Considerazioni sull’algoritmo a ricerca locale . . . . . . . . . . . . . . . . . . . . . . 20

3 Ricerca globale della disparita 233.1 Introduzione ai metodi di ricerca globale . . . . . . . . . . . . . . . . . . . . . . . . . 233.2 Verosimiglianza locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3 Vincoli di programmazione dinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4 Matching in programmazione dinamica . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Ricerca globale avanzata 314.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 La funzione MSD nell’algoritmo globale . . . . . . . . . . . . . . . . . . . . . . . . . 314.3 Vincolo di stabilizzazione per la MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 324.4 Filtraggio di Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.5 Termine a priori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.6 Uso integrato delle strategie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5 Sperimentazione 425.1 Hardware a disposizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.2 Realizzazione software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.3 Risultati in laboratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2

Page 3: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

6 Conclusione 486.1 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

A Richiami teorici 49A.1 Regola di Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49A.2 Classificatore Bayesiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50A.3 Filtro di Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

A.3.1 Definizioni preliminari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51A.3.2 Le equazioni del filtro di Kalman . . . . . . . . . . . . . . . . . . . . . . . . . 52A.3.3 Algoritmo per il filtro di Kalman . . . . . . . . . . . . . . . . . . . . . . . . . 53A.3.4 Regolazione dei parametri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Bibliografia 55

3

Page 4: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Introduzione

I sistemi di navigazione autonoma sono dispositivi in grado di spostarsi da un punto preimpostatoad un altro di un certo ambiente senza bisogno di intervento esterno.

Questo spostamento necessita di uno o piu sensori in grado di rilevare la posizione di ostacoliche impediscano la traiettoria corrente del veicolo, di un opportuno sistema di attuatori per deviaredalla traiettoria corrente, e di un programma di controllo che, in base alle informazioni ottenutedai sensori, indirizzi il veicolo verso il punto destinazione (usualmente minimizzando la distanzapercorsa) ed eviti la collisione con gli ostacoli presenti.

La nostra tesi verte sullo sviluppo di un sistema di visione stereo, che dovra essere montato suun veicolo autonomo in grado di muoversi in ambienti inesplorati evitando gli ostacoli.

I requisiti di questo sistema dovranno essere: buona generalita d’uso, ossia esso dovra essereapplicabile a un’ampia gamma di ambienti (ad es.interni-esterni); totale autonomia di funziona-mento, ossia una volta concluse le operazioni iniziali di calibrazione e configurazione dei parametri,il sistema non dovra piu richiedere intervento umano; una buona robustezza nelle misure di distanzafornite; e infine una adeguata performance di velocita, dato che il veicolo verra pilotato in real-time.

Letteratura precedente sull’argomento

Il problema della visione stereo in generale e motivo di ricerca da alcuni decenni. A partire daglistudi di Julesz sulla visione stereoscopica, e alle conclusioni da lui tratte nel 1971 sul funzionamentodella visione binoculare, [Marr e Poggio] nel 1976 si concentrano sulla ricostruzione della profonditaa partire da stereogrammi in bianco e nero.

Del 1979 e invece il lavoro di [Moravec], che compie uno studio dedicato esplicitamente allanavigazione autonoma con un veicolo dotato di ben 9 punti di vista stereo, alla ricerca di “punti diinteresse” o features, rilevate da un operatore matematico ad hoc chiamato per l’appunto operatoredi Moravec o DET, che e anche uno dei primi algoritmi di corner detection. Il veicolo utilizzato equello di figura 1.

Successivamente, nell’81 in [Baker e Binford] e nell’85 in [Ohta e Kanade] si vogliono ricostruiremappe di profondita di immagini reali, con un algoritmo di matching in programmazione dinamicache utilizza gli edge come features; riportiamo un esempio dei loro risultati in figura 1. In particolare,il lavoro di Ohta e Kanade si distingue per la proposta di un metodo di risoluzione bidimensionaledel problema di minimo.

Analoghi algoritmi di matching, usando pero l’intensita dei singoli pixel come features, sono pro-posti in [Birchfield e Tomasi] e [Cox et al.], e piu recentemente nel sofisticato modello probabilisticoproposto da [Belhumeur e Mumford].

Una soluzione totalmente diversa, ma sempre basata sulla programmazione dinamica e intensitadei pixel, e quella in [Tomasi e Manduchi I], dove si cerca di massimizzare la lunghezza di unacatena di accoppiamenti tra segmenti di scanline, con un metodo di analisi della scanline analogo aquello utilizzato per il tracciamento dei diagrammi di fase.

4

Page 5: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Figura 1: in alto, [Ohta e Kanade] sfrutta un approccio in programmazione dinamica usando gliedge come feature; in basso, il pionieristico veicolo autonomo utilizzato nel 1979 da Moravec

Per la loro grande rapidita e semplicita, molti autori hanno anche proposto algoritmi a correla-zione con l’uso di finestre, ad esempio [Trucco et al.] oppure [Feaugeras et al.], che ne ha realizzatoanche una trasposizione in hardware. Questi metodi locali sono in genere affetti da notevole disturboin alcune aree particolari dell’immagine: ad esempio, zone buie o comunque di colorazione uniforme;in entrambe le ricerche si propongono alcuni rimedi a questa carenza, ad esempio l’osservazione deidati di correlazione per stimare l’affidabilita della misura, o un’analisi incrociata dei dati ottenuti,tenendo come riferimento fisso prima l’immagine destra, poi la sinistra. Quest’ultimo approccio darisultati di un certo interesse perche la loro realizzazione in hardware risulta piuttosto intuitiva ediretta, per uno sguardo piu approfondito dei dettagli rimandiamo dunque a [Feaugeras et al.].

Infine citiamo ancora due autori che hanno proposto realizzazioni hardware dei loro algoritmi: in[Darabiha et al.] si descrive lo sviluppo di un complesso algoritmo a correlazione di fase su FPGA,in [Mahowald e Delbruck] viene proposto invece uno schema elettronico che realizza l’algoritmo diMarr e Poggio.

Le feature utilizzate negli algoritmi citati fin qui variano a seconda della destinazione d’utilizzodegli algoritmi: le principali sono gli edge, i corner o punti di interesse, le distanze tra due edge,o infine le intensita dei singoli pixel. Tra tutte le opzioni possibili, abbiamo scelto di usare comefeature l’intensita luminosa dei pixel, perche le mappe di profondita in output sono molto dense eperche ci sembrava un approccio piu robusto in ambientazioni naturali, dove ci aspettiamo superfici

5

Page 6: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

variegate ma prive di quelle feature piu tipiche di ambienti costruiti dall’uomo (in particolare edgee corner).

Struttura della tesi

Affronteremo passo passo tutti i problemi relativi alla realizzazione di un sistema di visione speci-ficamente pensato per l’utilizzo in real-time su veicoli autonomi dotati una coppia di telecamere.

Nel Capitolo 1 analizzeremo gli aspetti geometrici riguardanti la visione binoculare, enunciandole opportune formule di triangolazione che mettono in relazione la distanza di un oggetto dallatelecamera e la sua disparita, ossia la sua differenza di posizione sul piano focale tra immaginedestra e sinistra.

Sotto opportune condizioni di posizionamento delle telecamere (allineamento verticale e com-planarita dei piani focali), il problema della ricerca della disparita e grandemente semplificato,rendendolo accessibile anche a sistemi real-time: illustreremo quindi l’algoritmo di rettificazioneche ci consente di riportare una generica coppia stereo alle suddette condizioni; grazie alla rettifi-cazione, potremo restringere la nostra attenzione alla sviluppo di algoritmi rapidi ed efficienti peril calcolo della disparita orizzontale.

Nel Capitolo 2 illustriamo le linee guida per un algoritmo di ricerca locale della disparita conl’uso di finestre a correlazione, discutendone pregi e difetti; proponiamo poi alcune strategie perrendere piu rapido l’algoritmo e per migliorare la risoluzione dell’output a livello subpixel.

Nel Capitolo 3 riformuliamo il problema della ricerca della disparita per risolverlo con metodi diricerca globale, ovvero minimizzando una funzione energia rispetto a tutte le possibili configurazionidi disparita. Il metodo proposto e unidimensionale, nel senso che risolve il problema scanlineper scanline; non abbiamo tentato la ricerca bidimensionale proposta da alcuni autori, poiche ilconseguente allungamento dei tempi di elaborazione risulterebbe inaccettabile per l’utilizzo in real-time.

Nel Capitolo 4 abbiamo sviluppato una serie di strategie di miglioramento della ricerca glob-ale unidimensionale, volte a rendere piu preciso e robusto l’output del programma. Le strategieproposte sono tra loro completamente indipendenti, e sono state progettate tenendo in debito con-to le esigenze di velocita di funzionamento dell’intero sistema, ed evitando qualsiasi aumento dicomplessita asintotica del programma.

Nel Capitolo 5 riportiamo i risultati ottenuti nel Laboratorio di Visione Computazionale eNavigazione Autonoma dell’Universita di Padova. Descriviamo brevemente l’hardware utilizzato,alcune caratteristiche del software sviluppato e l’output visuale del programma durante una tipicasessione di funzionamento.

Nel Capitolo 6 trarremo le conclusioni del nostro lavoro, evidenziando i punti che necessitanodi ulteriori approfondimenti e miglioramenti.

Infine in Appendice riportiamo alcuni concetti teorici che sono alla base di molte scelte pro-gettuali dell’algoritmo, ovvero l’uso della regola di Bayes, la teoria del classificatore Bayesiano edel filtro di Kalman; l’esclusione di queste sezioni da una prima lettura non pregiudica la pienacomprensione degli argomenti trattati nel corpo della tesi, tuttavia e uno sforzo che ci sentiamo diconsigliare a chi voglia approfondire piu in dettaglio le motivazioni teoriche delle soluzioni proposte.

6

Page 7: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 1

Geometria della visione binoculare

1.1 Modello geometrico delle telecamere

Per semplificare la trattazione, assumeremo di avere telecamere che approssimino bene il modellodella pinhole camera, che e valido quando il diametro della lente e di dimensione trascurabile rispettoalla lunghezza focale.

Assumeremo inoltre che le due telecamere abbiano identica focale f , assi focali paralleli e pianifocali complanari, allineati lungo l’asse Y. In tali condizioni, le telecamere sono congruenti a menodi una traslazione lungo l’asse X, parallelo alle scanline dei CCD. Il vettore che collega i due centrifocali e detto baseline e lo indicheremo col simbolo b.

In figura 1.1 illustriamo con una vista dall’alto la disposizione delle telecamere; possiamo notarealcune similitudini tra triangoli: in particolare, quella fra il triangolo di base d e altezza f , e quellodi base b e altezza Z. La similitudine implica uguaglianza tra i rapporti di base e altezza dei

�����������������B

BBBBBBBBBBBBBBBBpppppppppp

pppppppppppppppppppp

pppppppppppppppppppp

pppppppppppppppppppp

pppppppppp-

b

-b

6f

6

Z

sP

-d

Figura 1.1: la disposizione delle telecamere (vista dall’alto) e le relazioni geometriche che legano labaseline b, la disparita d, la focale f e la distanza Z

7

Page 8: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

8

triangoli, ovvero:f

d=

Z

b⇒ Z =

bf

d(1.1)

Abbiamo dunque ricavato un metodo per misurare la distanza dalla telecamera di un oggettopuntiforme: note le sue coordinate nell’immagine destra e sinistra, che a meno di disallineamentiavranno identica ordinata, misuriamo la differenza di ascissa o disparita, e in base alla equazione1.1 otteniamo la distanza dal piano delle lenti; Z + f e invece la distanza dai piani focali.

Una volta che siano note baseline, focale degli obiettivi e dimensione di un singolo pixel (usual-mente e espressa in µm, ma nelle formule va opportunamente riportata in metri), e immediatoricavare la distanza dalla disparita; il nostro obiettivo principale, che caratterizzera il contenutodei capitoli successivi di questa tesi, sara dunque quello di valutare in modo rapido ed efficace ladisparita tra le due immagini.

In particolare, andremo a valutare la cosiddetta disparita sinistra, ovvero teniamo come rifer-imento fisso l’immagine destra e osserviamo nell’immagine sinistra lo spostamento in pixel (versodestra) dell’oggetto.

La nostra definizione di disparita e distanza prende spunto da [Micheli], ma esistono alcunevarianti degne di nota: ad esempio in [Belhumeur e Mumford] si formula una differente definizionedella disparita: essa e riferita alla posizione di una telecamera ipotetica (detta “cyclopean eye”)posizionata lungo la baseline a meta strada tra le due telecamere; se questo da una parte bilanciai problemi di occlusione da ambo i lati degli oggetti nella scena, dall’altro esso si puo applicaresolo quando sia piccolo l’angolo θ formato dall’asse ottico e dalla linea congiungente centro ottico eoggetto. Questa approssimazione e sconsigliabile quando sia richiesto un campo visivo di aperturaconsiderevole, come nel nostro caso.

1.2 Horopter

E detto horopter l’intervallo di distanze distinguibili da parte dell’algoritmo che andremo a svilup-pare.

Supponendo di trovarci nelle condizioni di parallelismo e allineamento introdotte nella sezioneprecedente, e fissate baseline e focale dell’obiettivo, applichiamo formula di relazione tra disparitae distanza; tracciando il grafico (che e riportato in figura 1.2) con disparita in ascissa e distanza inordinata notiamo che la curva e un ramo di iperbole.

6

-

d = disparita [pixel]

Z =distanza [m]

0 (lev-1)

Figura 1.2: grafico della relazione tra disparita e distanza

La ricerca della disparita ci fornisce usualmente valori interi, il che significa che in ascissapossiamo spaziare solo entro un insieme finito e discreto di punti, che usualmente identifichiamocon l’intervallo [0, lev − 1].

Page 9: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

9

Figura 1.3: oggetti posizionati al di fuori dell’horopter non vengono riconosciuti correttamente; laprima mappa di disparita e corretta, nella seconda abbiamo allargato la baseline sicche la calcolatricein primo piano esce dai limiti dell’horopter

Dunque, potremo determinare solo un insieme discreto e finito di distanze, che sono distribuite(non linearmente) nell’intervallo [hmin, hmax], in cui

hmin =bf

(lev − 1) · (Wpixel)(1.2)

hmax =bf

1 · (Wpixel)

dove Wpixel e la larghezza (in metri) di un singolo pixel. Per valori di disparita pari a zero, l’oggettosara a una distanza compresa nell’intervallo [hmax,+∞].

L’horopter ci informa dunque sul campo di distanze che saremo in grado di rilevare corretta-mente. Mentre pero per oggetti molto distanti si pone solo un problema di imprecisione nella misura(non e infatti molto stringente dire che un oggetto e “lontano almeno hmax metri”), per oggetti piuvicini di hmin metri il problema e molto piu delicato: infatti prevediamo che il nostro algoritmo nonsia capace di determinare livelli di disparita fuori dall’intervallo [0, lev − 1] e quindi si verificherasicuramente un errore di valutazione della distanza.

Un esempio degli effetti drammatici della presenza di oggetti piu vicini del limite imposto dal-l’horopter e illustrato in figura 1.3, dove abbiamo prima realizzato una mappa di disparita rego-lare, e poi abbiamo allargato la baseline al punto che il soggetto in primo piano si trovasse fuoridall’horopter; il risultato netto e che la distanza dell’oggetto piu vicino non si puo piu stimarecorrettamente, con i risultati abbastanza catastrofici dell’ultima immagine.

Si faccia bene attenzione al fatto che nel primo caso ho una misura che so essere corretta macon fascia d’incertezza molto ampia, nel secondo caso ho invece una valutazione della distanza incui sono totalmente errate sia la misura che l’incertezza.

Page 10: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

10

1.3 Risoluzione di profondita

Differenziando l’equazione di relazione tra disparita e distanza, otteniamo d(z)d(d) = z2

bf , ovvero

δz = z2

bf δd. Quindi l’errore aumenta quadraticamente con la distanza dell’oggetto dalla telecam-era, mentre e inversamente proporzionale alla baseline e alla focale; questa considerazione spingespesso, nella progettazione di sistemi di visione, a scegliere sistemi con baseline e focali quanto piularghe possibile, compatibilmente con le capacita elaborative a disposizione (aumenta infatti ancheil numero di livelli di disparita da scansire).

1.4 Focale degli obiettivi

In base alla relazione tra disparita e distanza, potremo valutare preventivamente la focale degliobiettivi piu adatti alle nostre esigenze di misura.

Il costruttore delle telecamere di cui disponiamo fornisce i seguenti dati tecnici: CCD di 11millimetri di diagonale, risoluzione 1280×1024 e pixel quadrati, di lato 6.7 µm.

Possiamo verificare la correttezza per la misura del lato dei pixel applicando una semplice formu-la: dette rows e columns il numero di righe e colonne del CCD, e diag la sua diagonale, applichiamola formula:

Xpixel = diag · cos(arctan(rows

columns))/columns = (1.3)

= 11 · 10−3 · cos(arctan(1024/1280))/1280 =

= 6.71059 µm

La baseline e obbligatoriamente fissata a 1.5 metri per esigenze costruttive del veicolo autonomo:si vuole infatti che le due telecamere stiano ai lati del veicolo, e che non siano disposte all’internoo al di sopra di esso; inoltre l’horopter richiesto e tra circa 10-15 metri e 100 metri, e per esigenzedi real-time abbiamo scelto di processare coppie stereo di dimensione attorno a 320×240 pixel(operando quindi un downsampling dell’immagine originale di 4 volte) con 32 livelli di disparita.

Riarrangiamo ora la relazione disparita-distanza, per ottenere una funzione che ci suggerisca lafocale ottimale per i nostri scopi. La focale vale dunque:

f(Z, d) =Z · d · (4Wpixel)

b(1.4)

Sostituiamo dunque i valori gia noti della baseline e della dimensione dei pixel (moltiplicata per4 in conseguenza del downsampling) e vediamo quali focali ci porge la formula per distanze minimedi 10 e 15 metri:

f(10, 31) =10 · 31 · (4 · 6.7 · 10−6)

1.5= 5.53 · 10−3 (1.5)

f(15, 31) =15 · 31 · (4 · 6.7 · 10−6)

1.5= 8.31 · 10−3 (1.6)

Dovremo quindi scegliere una coppia di obiettivi di focale tra 5.53 e 8.31 mm: poiche gia disponi-amo in laboratorio di obiettivi da 8 mm, questa e risultata la scelta piu semplice e conveniente;nella tabella in figura 1.4 riportiamo le coppie disparita-distanza per questa focale.

Se con lo stesso obiettivo volessimo spingerci a rilevare oggetti vicini fino a 10 metri, dovremmoeventualmente estendere la disparita fino a

d =bf

Z · (4Wpixel)= 1.5 · 8 · 10−3 = 44.7 ≈ 45 livelli (1.7)

Page 11: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

11

Disparita Distanza Disparita Distanza1 447 m 8 55.8 m2 223 m 16 27.9 m4 111 m 31 14.4 m

45 9.93 m

Figura 1.4: distanze associate alle disparita per la configurazione 320x240x32, con baseline 1.5 metrie focale 8 mm

1.5 Campo visivo

Il campo visivo degli obiettivi e molto semplice da calcolare nel modello della pinhole camera: notala focale dell’obiettivo e la larghezza del CCD, il campo visivo in orizzontale e l’angolo formatodalla punta del triangolo isoscele con base sul CCD, e vale

α = 2 arctan(WCCD

2f) (1.8)

Nel nostro caso, f e 8mm, WCCD e 8.59mm, quindi α = 0.985 rad = 56.44◦.Per il campo visivo verticale, la formula e analoga ma la base del triangolo isoscele e ora l’al-

tezza del CCD. Sottolineiamo che 320x240 e un’immagine con rapporto 4/3, mentre l’originale e1280x1024, che ha rapporto 5/4: cio vuol dire che prima della riduzione dovremo operare il tagliodi una piccola banda superiore e inferiore. L’altezza (della fascia utilizzata) del CCD e di 6.43mm,il campo visivo verticale risultera dunque α = 0.764 rad = 43.80◦.

1.6 Ricostruzione della posizione

Avvalendoci del modello della pinhole camera, potremo ricostruire la posizione spaziale dell’oggettoP nel sistema di riferimento della telecamera, secondo lo schema di figura 1.5. In particolarepossiamo notare che, una volta noto Z in base alla disparita, possiamo ricavare anche i vettori X

e Y , sfruttando nuovamente le similitudini tra triangoli:

Z =bf

d(1.9)

X

x=

Z

f⇒ X =

Z

fx =

bfx

df=

bx

d

Y

y=

Z

f⇒ Y =

Z

fy =

bfy

df=

by

d

Se applichiamo una rototraslazione in base alla posizione e all’orientamento della telecamerarispetto a un sistema di riferimento a terra, possiamo infine ricostruire la posizione di P rispetto aquest’ultimo. A questo proposito, ricordiamo che le matrici di rotazione appartengono allo spazioSO(3), che e cosı definito:

SO(3) = {M ∈ R3×3 : MT M = MMT = I, detM = +1} (1.10)

Le matrici in SO(3) godono di alcune importanti proprieta, quella che qui ci interessa evidenziaree la coincidenza di matrice inversa e trasposta:

M ∈ SO(3)⇒ R−1 = RT (1.11)

Illustriamo nella figura 1.6 la disposizione spaziale dei due sistemi di riferimento (sdr nel seguito),che sono posti in relazione da una rototraslazione.

Page 12: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

12

6

P

-

-x

6f

X

Z

u

Figura 1.5: ricostruzione della coordinata X in base alla posizione dell’oggetto nell’immagine sulpiano focale; la ricostruzione e possibile una volta che sia nota la distanza Z, che a sua volta vienevalutata in base alla disparita; analogo ragionamento si puo applicare nel caso della coordinata Y

Sia R la matrice di rotazione della telecamera rispetto al sdr a terra (e1, e2, e3), e P = (Otel −Oterra) il vettore che va dall’origine del sdr terra all’origine del sdr telecamera (etel

1 , etel2 , etel

3 ). Intal caso la relazione tra i due sdr e etel

1

etel2

etel3

=

R

e1

e2

e3

(1.12)

e le formule per trovare le coordinate nel sdr terra di un generico vettore nel sdr telecamera sonodunque:

Xtel

Ytel

Ztel

1

=[

R P0 1

]Xterra

Yterra

Zterra

1

(1.13)

Xtel

Ytel

Ztel

=

R

Xterra

Yterra

Zterra

+

Px

Py

Pz

(1.14)

Invertendo la formula, la relazione opposta per il cambio di sdr vale ovviamenteXterra

Yterra

Zterra

1

=[

R P0 1

]−1

Xtel

Ytel

Ztel

1

(1.15)

Xterra

Yterra

Zterra

=

R

T Xtel

Ytel

Ztel

− Px

Py

Pz

(1.16)

dove abbiamo sfruttato la proprieta di uguaglianza di inversa e trasposta delle matrici in SO(3).

Page 13: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

13

6

-@@I

AA

AAK

����*

Q

Otel

Oterra

P

(Xterra, Yterra, Zterra)

(Xtel, Ytel, Ztel)

HHHHH

HHHHHY

��

��

��

��

��

��

���3

���������������

w

Figura 1.6: relazioni vettoriali tra i due sistemi di riferimento Oterra e Otel

1.7 Calibrazione e rettificazione

All’inizio di questo capitolo avevamo supposto che il nostro sistema stereo fosse disposto in manieraparticolarmente favorevole, con piani focali complanari, paralleli e allineati verticalmente. Sfor-tunatamente non sempre questa sistemazione e disponibile, in questi casi e necessario operareuna riproiezione delle immagini via software, con un’operazione detta rettificazione epipolare opiu semplicemente rettificazione.

Assumiamo preliminarmente che nelle immagini di partenza sia stata eliminata la distorsioneradiale, e che sia nota la matrice A dei parametri intrinseci, valida per entrambe le telecamere;un metodo efficace per correggere la distorsione radiale e ottenere i coefficienti della matrice A edescritto in [Zhang]. La matrice A e cosı definita:

A =

αu γ u0

0 αv v0

0 0 1

(1.17)

dove αu = −fku, αv = −fkv

(1.18)

in cui f e la lunghezza focale (in metri) e (ku, kv) sono il numero di pixel al metro lungo l’asseorizzontale e verticale del CCD; (u0, v0) e la posizione (in pixel) del punto principale o centroottico, e γ e un fattore che misura il grado di deformazione a parallelogramma dell’immagine.

Nel modello della pinhole camera, possiamo rappresentare una telecamera con la sua matricedi proiezione prospettica o matrice di omografia P , che mette in relazione i punti nelle coordinatemondo w = [x y z 1]T e m = [u v 1], espressi in coordinate omogenee. La trasformazione prospetticae

m ' P w (1.19)

dove ' indica uguaglianza a meno di un fattore di scala.

Page 14: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

14

La matrice P puo essere fattorizzata nel prodotto delle matrici dei parametri intrinseci edestrinseci: P = A[R|t]. I parametri estrinseci sono costituiti dalla matrice di rotazione R e dalvettore di traslazione t, che rappresentano la trasformazione rigida (rototraslazione) che lega i duesistemi di riferimento, coordinate mondo e coordinate rispetto alla telecamera.

Scomponiamo ora la matrice di omografia nella forma

P =

qT1 |q14

qT2 |q24

qT3 |q34

=[

Q |q]

(1.20)

Le coordinate c del centro ottico C sono date da c = −Q−1q, quindi posso esprimere la matriceP come P = [Q| −Qc].

Siano ora C1 e C2 i centri ottici delle telecamere sinistra e destra. Un punto W nello spaziomondo si proietta su entrambi i piani focali, nei punti M1 ed M2 e costituiscono una coppia coniu-gata. M1 puo essere la proiezione di un qualsiasi punto che sta nel suo raggio ottico; il raggio otticodi M1 visto dalla telecamera 2 e una retta, detta linea epipolare di M1. Tutte le linee epipolariche appaiono in un’immagine si intersecano nei punti comuni E1 ed E2, detti epipoli, che sono laproiezione del centro ottico dell’altra telecamera; la situazione e riassunta nello schema in figura 1.7.

Figura 1.7: disposizione dei centri ottici, delle linee epipolari e degli epipoli per una genericadisposizione della coppia di telecamere; le linee epipolari sono rappresentate dalle linee tratteggiate

Vogliamo dunque applicare una rotazione dei piani focali intorno ai rispettivi centri ottici, finoa renderli complanari, con la procedura di rettificazione che illustriamo nella figura 1.8.

La coppia di immagini rettificate e equivalente a quella ottenibile da un apparato stereo in cuile telecamere siano state ruotate fino ad avere piani focali complanari; le coordinate del sistemastereo equivalente verranno ora dedotte attraverso il calcolo matriciale.

Siano dunque Pn1 = A[R| − Rc1] e Pn2 = A[R| − Rc2] le matrici di omografia. I centri otticirimangono gli stessi dopo la rettificazione (saranno infatti i centri della rotazione); la matriceR = [rT

1 , rT2 , rT

3 ]T conterra i nuovi assi X,Y,Z che saranno cosı disposti:

asse X sara parallelo alla baseline: r1 = (c1 − c2)/‖c1 − c2‖

asse Y sara ortogonale a X e a k: r2 = k ∧ r1, con k versore parallelo al vecchio asse Z dellatelecamera sinistra

Page 15: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

15

Figura 1.8: la rettificazione applica una rotazione ai piani focali, tale da rendere le linee epipolariparallele e allineate; il problema della ricerca della disparita e ora molto semplificato

asse Z sara ortogonale ai nuovi assi X e Y : r3 = r1 ∧ r2

Affinche questo procedimento funzioni, dobbiamo evitare la configurazione singolare in cui l’asseottico di una delle due camere e parallelo alla baseline, ossia quando le due telecamere differisconosolo per uno spostamento in avanti.

Opereremo ora la procedura vera e propria di rettificazione; la eseguiremo sull’immagine sinistra,e analogamente sara necessario fare sulla destra. Per l’immagine sinistra vogliamo dunque trovarela trasformazione che dall’omografia originale P01 = [Q01|q01] ci porta all’omografia dell’immaginerettificata Pn1 = [Qn1|qn1].

Per un generico punto tridimensionale w si puo scrivere:{m01 ' P01w

mn1 ' Pn1w(1.21)

Poiche l’equazione del raggio ottico (la linea che collega M e C nello schema di figura 1.7) e datada w = c + λQ−1m, λ ∈ R, possiamo scrivere le uguaglianze{

w = c1 + λ0Q−101 m01, λ0 ∈ R

w = c1 + λnQ−1n1 mn1, λn ∈ R

(1.22)

Risolvendo il sistema, otteniamo che mn1 = λQn1Q−101 m01, λ ∈ R: riproiettando ogni pun-

to dell’immagine originale in base a questa formula, otteniamo finalmente la nostra immaginerettificata.

A commento della procedura descritta, vogliamo sottolineare come la procedura di estrazionedei parametri intrinseci e di rettificazione siano disponibili nell’ottima libreria OpenCV (vedere inproposito in bibliografia [OpenCV] il link al sito Internet).

1.8 Errore in allineamento e configurazioni singolari

Per quanto precisa, la procedura di rettificazione sara sempre affetta da un piccolo errore neiparametri, dovuto ad esempio alla quantizzazione in pixel della posizione dei punti di controllo, oal rumore termico nell’immagine o a imprecisione nella conoscenza dei parametri intrinseci.

Page 16: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

16

Cio normalmente non pregiudica la bonta dell’algoritmo di ricerca della disparita, ma vi sonodei casi in cui una zona d’immagine puo risentire nettamente di piccoli disallineamenti.

Consideriamo ad esempio lo schema di figura 1.9 dove una coppia stereo presenta ben visibile unedge quasi perfettamente orizzontale; esso forma con le scanline dell’immagine un angolo θ moltopiccolo.

1-left

2-left 2-right

1-right

f v f

f v f

-d

-d

?

���������

�����������

�����������

����������

Figura 1.9: configurazione singolare: un piccolo spostamento verso il basso dell’immagine 2-leftporta a una grande variazione di disparita

Ora, questa configurazione e molto sensibile agli errori di calibrazione e rettificazione: detto δy

l’errore compiuto sull’allineamento verticale, la corrispondente variazione nella disparita rilevatasara pari a δx = δy · cotan(θ). Ma per θ → 0 la cotangente tende a +∞, quindi angoli θ moltopiccoli porteranno ad errori molto vistosi nella disparita, o ancor peggio porteranno i punti al difuori dell’intervallo di disparita osservato dall’algoritmo.

Suggeriamo alcune strategie per attenuare gli effetti della configurazione singolare sopra descrit-ta:

• si potrebbe applicare l’algoritmo di ricerca della disparita alla derivata orizzontale dell’inten-sita immagine; questo procedimento presenta pero alcune controindicazioni, come una maggiorrumorosita

• si potrebbe sfumare leggermente la coppia stereo originale con un filtro gaussiano lungo l’asseverticale; questo procedimento sembra dare buoni risultati, ed e stato incluso nell’algoritmofinale

Page 17: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 2

Ricerca locale della disparita

2.1 Introduzione ai metodi di ricerca locale

L’algoritmo a ricerca locale e l’approccio piu semplice e naturale al problema del calcolo delladisparita.

Assumiamo preliminarmente che le due immagini siano rettificate, prive di deformazione radiale,e che le linee epipolari siano allineate alle scanline; in tal caso possiamo restringere l’analisi delladisparita alla coppia di scanline di ordinata r.

2.2 Linee guida per un algoritmo a ricerca locale

La correlazione tra due segnali discreti e finiti e definita come

Corr(X, Y ) :=∑N

i=1(Xi − Y ) (Yi − Y )

N√∑N

i=1(Xi −X)2√∑N

i=1(Yi − Y )2(2.1)

Vogliamo valutare la correlazione tra le due immagini rispetto a una finestra intorno al punto(x, y). In tal caso, dette I(p, q) e σ(p, q) la media e la deviazione standard relative alla finestracentrata in (p, q), riscriviamo la correlazione come

Corrwindow(x, y, d) :=

∑i∈[y−h,y+h]j∈[x−w,x+w]

(IL(j + d, i)− IL(x + d, y)) (IR(j, i)− IR(x, y))

N σL(x + d, y) σR(x, y)(2.2)

Definiamo inoltre una funzione di errore, detta SSD (“Sum of Squared Differences”) rispetto aun intorno rettangolare o “finestra” di ampiezza (2h + 1)(2w + 1) centrato sul punto (x, y):

SSDwindow(x, y, d) :=∑

i∈[y−h,y+h]j∈[x−w,x+w]

[IL(j, i)− IR(j + d, i)]2 (2.3)

Idealmente, vorremmo trovare il minimo della correlazione tra i due rettangoli d’immagine alvariare d ∈ [0, lev−1]; tuttavia la quantita di calcoli richiesta e onerosa, e preferiamo avvalerci dellaseguente equivalenza:

arg mind∈[0,lev−1]

Corr(x, y, d) = arg mind∈[0,lev−1]

SSDwindow(x, y, d) (2.4)

In definitiva, l’algoritmo a correlazione calcola arg mind SSDwindow(x, y, d) per ogni punto (x, y)dell’immagine.

17

Page 18: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 2. RICERCA LOCALE DELLA DISPARITA 18

2.3 Programmazione dinamica per la SSD

Ricordando che la SSD e definita come

SSDwindow(x, y, d) :=∑

i∈[y−h,y+h]j∈[x−w,x+w]

[IL(j, i)− IR(j + d, i)]2 (2.5)

vogliamo calcolare la funzione SSDwindow(j, i, d) per i ∈ [0, rows − 1], [j ∈ [0, columns − 1] ed ∈ [0, lev − 1].

Se applichiamo direttamente la formula proposta per la SSD, processare una coppia di immaginirichiede un tempo O(rows · columns · w · h · lev) , che e inaccettabilmente grande e dipendelinearmente dall’area della finestra: anche con processori molto potenti si potrebbero utilizzareal massimo finestre di area 3 × 3 oppure 5 × 5. Ci gioveremo quindi di una semplice tecnica diprogrammazione dinamica, riportata ad esempio in [Feaugeras et al.], per abbassare il tempo dicalcolo a O(rows · columns · lev) .

Per realizzare l’algoritmo in programmazione dinamica, partiamo dalla considerazione che quan-do compiamo un’operazione collettiva dotata di proprieta associativa (ad esempio sommatorie oproduttorie) su un insieme A di valori, e poi su un insieme B che abbia elementi in comune con A,siamo facilitati perche possiamo evitare il ricalcolo degli elementi comuni. Detta ◦ la generica oper-azione associativa, ◦−1 la corrispondente operazione inversa, e

⊙a∈A l’applicazione dell’operazione

associativa in catena su tutti gli elementi di A, in generale abbiamo che⊙b∈B

b =⊙a∈A

a ◦⊙

c∈B\A

c ◦−1⊙

d∈B∩A

d (2.6)

L’operazione associativa della SSD e la somma (la cui inversa e ovviamente la differenza). Sianodunque definite le seguenti quantita:

• P (x, y, d) e la differenza al quadrato tra due pixel e vale zero per y /∈ [0, rows− 1]

• Q(x, y, d) e la SSD su una singola colonna di 2h + 1 elementi centrata in (x, y) e vale zero perx /∈ [0, columns− 1]

• N(x, y, d) e la SSD sul rettangolo di (2h + 1)(2w + 1) elementi centrato in (x, y), che vienecalcolato ∀x ∈ [0, columns− d] e ∀y ∈ [0, rows− 1], e negli altri punti decidiamo convenzional-mente di assegnare un valore molto grande (CORR MAX VALUE nel nostro programma)

Possiamo notare che Q(x, y, d) e Q(x, y + 1, d) hanno tutti gli elementi in comune a meno delprimo e dell’ultimo; analogamente, N(x, y, d) e N(x + 1, y, d) hanno tutti gli elementi in comune ameno della prima e dell’ultima colonna. Nella figura 2.1 abbiamo illustrato graficamente il sensodelle operazioni sopra riportate. Formalizziamo dunque il calcolo di tutte le quantita:

P (x, y, d) = (IL(x + d, y)− IR(x, y))2 (2.7)

Q(x, 0, d) =h∑

i=0

P (x, i + h, d)

Q(x, i + 1, d) = Q(x, i, d) + P (x, i + h + 1)− P (x, i− h)

N(0, i, d) =w∑

j=0

Q(j, i, d)

N(j + 1, i, d) = N(j, i, d) + Q(j + w + 1, i, d)−Q(j − w, i, d)

Occorre prestare un po’ di attenzione all’ordine di esecuzione di questi calcoli, in particolare enecessario prima inizializzare Q(x, 0, d) e poi ricavare iterativamente i valori Q(x, i+1, d), e analoga-mente per N(0, i, d) e N(j + 1, i, d). L’elaborazione dovra quindi avvenire per righe consecutive,

Page 19: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 2. RICERCA LOCALE DELLA DISPARITA 19

Figura 2.1: Programmazione dinamica per la SSD

dall’alto in basso, e per colonne consecutive, da sinistra a destra. Per chiarificare completamente ilprocedimento, abbiamo riportato in figura 2.2 lo pseudocodice dell’algoritmo.

∀ j = (0, . . . , columns− d− 1) do Q[d][j] ← Q(j, 0, d)∀ i = (0, . . . , rows− 1) // per ogni riga i∀ d = (0, . . . , lev − 1) do // per ogni disparita d

N[d][0] ← N(0, i, d)∀ j = (0, . . . , columns− d− 1) do

N[d][j+1] ← N[d][j] + Q[d][j+w+1] - Q[d][j-w]

// Ora ho N[d][j]==SSD(j,i,d) e// ne posso cercare l’arg mind

Disp[i][j]=arg mind∈[0,lev−1] N[d][j]

∀ d = (0, . . . , lev − 1) // per ogni disparita d∀ j = (0, . . . , columns− d− 1) do

// Aggiorno le colonneQ[d][j] ← Q[d][j] + P (j, i + h + 1, d) − P (j, i− h, d)

Figura 2.2: Pseudocodice dell’algoritmo a ricerca locale

2.4 Raffinamento subpixel della disparita

Una volta calcolati il valori (multipli interi della larghezza di un pixel) di disparita tra le dueimmagini, e possibile migliorare il valore trovato con una semplice elaborazione, che illustriamo infigura 2.3.

Dato un punto (x, y) nell’immagine sinistra, approssimiamo con una parabola la funzione SSDx,y(d)

Page 20: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 2. RICERCA LOCALE DELLA DISPARITA 20

w

w w(dmin − 1, y1)

(dmin, y2)

(dmin + 1, y3)

6

dsubpix

Figura 2.3: raffinamento subpixel della disparita

nell’intorno di dmin, e scegliamo come nuovo valore di disparita subpixel l’ascissa del vertice dellaparabola.

In particolare, per dmin ∈ [1, lev − 2] conosciamo i valori y1 = SSDx,y(d− 1), y2 = SSDx,y(d),y3 = SSDx,y(d + 1). Scriviamo dunque il sistema di equazioni (nelle tre incognite a, b, c) cheidentifica una parabola passante per i tre punti (−1, y1), (0, y2), (+1, y3): a · (−1)2 + b · (−1) + c = y1

a · (0)2 + b · (0) + c = y2

a · (+1)2 + b · (+1) + c = y3

(2.8)

Risolvendo il sistema, otteniamo i coefficienti della parabola: a = y1−2y2+y32

b = y3−y12

c = y2

(2.9)

e infine otteniamo il valore migliorato della disparita, sommando alla disparita originale l’ascissadel vertice della parabola:

dsubpixel = d + (− b

2a) = d +

y1 − y3

2(y1 − 2y2 + y3)(2.10)

In figura 2.4 abbiamo riportato un tipico esempio dei miglioramenti ottenibili col raffinamentosubpixel: la disparita non elaborata dispone di soli 8 livelli di disparita (e quindi otto livelli digrigio), che comportano una forte scalettatura di quella che avrebbe dovuto essere in realta unasuperficie continua. La procedura di raffinamento subpixel permette di aumentare la risoluzionedi disparita con un metodo semplice e dal costo computazionale contenuto. Se stiamo utilizzandopochi livelli di disparita, come nel caso della foto, i risultati che si ottengono sono rimarchevoli,come nell’ultima foto della figura.

2.5 Considerazioni sull’algoritmo a ricerca locale

L’algoritmo a ricerca locale e, tra quelli sviluppati, sicuramente il piu veloce e il piu semplice darealizzare; inoltre la sua struttura molto regolare ben si adatta all’ottimizzazione in linguaggiomacchina, o addirittura alla realizzazione su FPGA1. Inoltre, la possibilita di regolare liberamente

1per un approfondimento di questo tema, rimandiamo a [Feaugeras et al.]

Page 21: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 2. RICERCA LOCALE DELLA DISPARITA 21

Figura 2.4: miglioramenti ottenuti usando la tecnica di raffinamento subpixel della disparita

l’ampiezza della finestra ci consente di scegliere un compromesso tra affidabilita e precisione deivalori di disparita ottenuti.

L’algoritmo tuttavia non e esente da difetti: innanzitutto finestre grandi portano sı all’elimi-nazione di gran parte del disturbo, ma tendono a “mangiarsi” molti dettagli dell’immagine e adallargare di molto il contorno degli oggetti staccati dallo sfondo. In figura 2.5 abbiamo riportatoun tipico esempio in cui applichiamo prima maschere 3× 3, e successivamente 15× 15.

Figura 2.5: in alto, la coppia stereo originale (coppia incrociata); in basso, effetti indesiderati checompaiono utilizzando maschere di estensione troppo ridotta (a sinistra) o troppo estesa (a destra)

Inoltre la ricerca del minimo e puramente locale, ossia non tiene conto dei risultati di disparitaottenuti nel resto dell’immagine: sono quindi frequenti casi in cui uno stesso pixel e associato a piupixel nell’altra immagine, oppure intere zone della mappa di disparita errate a causa dell’assenza didettagli distinguibili nelle immagini originali. Quest’ultima fonte di errore puo essere contrastatascartando selettivamente alcune zone dell’immagine originale, ad esempio avvalendosi di filtri perevidenziare le zone ricche di texture e dettagli: ad esempio l’operatore DET, o un filtro a LOG(“Laplacian Of Gaussian”). Nella figura figura 2.6 mostriamo i benefici della soppressione di puntigiudicati poco affidabili con l’operatore LOG; si vede come, all’aumentare della soglia minima diaffidabilita,Anche in questo caso sono di grande aiuto le funzioni disponibili nella libreria OpenCV.

Page 22: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 2. RICERCA LOCALE DELLA DISPARITA 22

Figura 2.6: i punti poco affidabili sono di solito concentrati nelle zone colorate uniformemente;possiamo quindi scartare con un opportuno operatore (ad esempio il LOG) tutte le parti d’immagineprive di texture

Page 23: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 3

Ricerca globale della disparita

3.1 Introduzione ai metodi di ricerca globale

Nel capitolo precedente abbiamo analizzato i passi necessari a realizzare una strategia locale per laricerca della mappa di disparita tra una coppia di immagini.

Abbiamo anche messo in evidenza il limite teorico di un tale metodo: la ricerca locale di minimonon tiene conto delle disparita nelle zone d’immagine adiacenti, quindi la mappa cosı ottenutacontiene vistosi errori di valutazione della disparita.

Questi errori sono inoltre sistematici, nel senso che non dipendono dal rumore presente nelleimmagini, ne da errori nella rettificazione: anche coppie stereo perfettamente allineate e immaginiprive di rumore produrrebbero risultati analoghi. La loro origine risiede nella particolare naturadell’immagine sotto osservazione: la presenza di zone di colore uniforme, di occlusioni (ossia dettagliche appaiono in una delle due immagini, ma non nell’altra) e di piccoli pattern ripetitivi.

Appare quindi evidente la necessita di predisporre un approccio piu lungimirante al problemadella ricerca della disparita: per ogni punto vogliamo infatti trovare non piu il minimo locale dellafunzione SSDwindow, bensı il massimo della probabilita associata a una determinata sequenza divalori di disparita, o sequenza di matching ; essa dovra rispettare alcuni vincoli, che inseriamo pereliminare configurazioni inverosimili.

Allo scopo di valutare la probabilita globale di matching, che a sua volta dipende dalla proba-bilita locale relativa a ciascun pixel, seguiamo l’approccio iniziale proposto da [Cox et al.], per cuidefiniremo una funzione di verosimiglianza locale e una procedura di matching in programmazionedinamica; tale procedura trasforma il problema di partenza in quello (equivalente) di ricerca di uncammino a costo minimo nello spazio delle possibili sequenze di matching.

3.2 Verosimiglianza locale

La probabilita che l’intensita (ILi , IRj ) del pixel i-esimo nella scanline sinistra e j-esimo nella scanlinedestra siano originate dallo stesso valore di disparita Dk e detta verosimiglianza locale, ed e definitacome

(3.1)

Λ(ILi , IRj |Dk) = (1− PD

φ)δi,j · [PD p(ILi |Dk) · PD p(IRj |Dk)]1−δi,j

={

1−PD

φ se c’e occlusionePD p(ILi |Dk) · PD p(IRj |Dk) altrimenti

23

Page 24: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 24

dove δi,j vale uno se il punto sotto osservazione e occluso, zero altrimenti; φ ∈ ]0, 1] e l’ampiezza delcampo visivo; PD e la probabilita di matching, e (1−PD) la probabilita di occlusione. Se assumiamoche i valori di intensita abbiano distribuzione gaussiana attorno al loro valore reale, allora possiamoporre:

p(ILi|Dk) =

1√2πσI

exp {− (ILi − I)2

2σ2I

} (3.2)

p(IRj|Dk) =

1√2πσI

exp {−(IRj − I)2

2σ2I

} (3.3)

dove I e il valore reale d’intensita nel punto considerato: esso genera poi ILie IRj

, che sono corrottida rumore gaussiano bianco, di media I e varianza che supponiamo pari a σI . Poiche non possiamoconoscere il valore esatto di I, lo sostituiamo con la sua massima verosimiglianza:

I ≈ I =ILi

+ IRj

2(3.4)

Riarrangiando opportunamente, la verosimiglianza locale risulta dunque

Λ(ILi, IRj|D) =

(1− PD

φ

)δi,j

·[

P 2D

2πσ2I

exp {−(ILi − IRj )

2

4σ2I

}]1−δi,j

(3.5)

Sia dunque Γ l’insieme di tutti i set di accoppiamenti possibili, e γ un singolo set di accoppia-menti. La massima verosimiglianza globale e la probabilita che le scanline (IL, IR) siano originateda un set di accoppiamenti γ, che a sua volta dipende da un profilo di disparita D. Il problema ditrovare il set piu probabile γ, date le misure d’intensita delle scanline (IL, IR), e detto problema diclassificazione, e si risolve massimizzando la verosimiglianza globale, che vale

L(γ) = p(IL, IR|γ) =1

Kcost·

∏(ILi

,IRj)∈γ

Λ(ILi , IRj |D) (3.6)

Per semplificare il calcolo, passiamo ora ai logaritmi: massimizzare L(γ) equivale a minimizzarela funzione energia J(γ) = − lnL(γ), e poiche il logaritmo trasforma produttorie in sommatorie,otteniamo:

arg maxγ∈Γ

p(IL, IR|γ) = arg minγ∈Γ

J(γ) = (3.7)

= arg minγ∈Γ

[− lnL(γ)] =

= arg minγ∈Γ

∑ILi

,IRj∈γ

δi,j ln(

φ

1− PD

)+

+ (1− δi,j)[ln

2πσ2I

P 2D

+(ILi− IRj

)2

4σ2I

]3.3 Vincoli di programmazione dinamica

Nel nostro algoritmo non accetteremo tutte le possibili soluzioni γ ∈ Γ: in generale, n set diaccoppiamenti validi dovra rispettare alcuni vincoli di coerenza logica; ancora prima di ottenerele misure d’intensita, sappiamo infatti che alcune configurazioni di accoppiamento sono prive disenso, o violano il senso fisico della disparita associata alla distanza; definiamo dunque i vincoli checonsideriamo imprescindibili per qualsiasi soluzione valida:

Page 25: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 25

Vincolo di unicita: ogni pixel della scanline deve essere associato al piu ad un solo matching.In altre parole, non e consentito che ad uno stesso pixel siano associati due o piu valori didisparita.

Vincolo di ordinamento: per ogni coppia di matching [IL(i1), IR(j1)] e [IL(i2), IR(j2)] vale che∀i1 6= i2 : i1 > i2 ⇔ j1 > j2.

Osserviamo che entrambi i vincoli non sono soddisfatti in generale; il vincolo di unicita e violatoin presenza di materiali che siano (anche solo parzialmente) riflettenti o trasparenti; e riportatoin letteratura1 un caso di violazione del vincolo di ordinamento, noto col nome di double nailillusion: se osserviamo due pedine allineate una dietro l’altra, la pedina piu distante appare asinistra guardandola con l’occhio sinistro, e appare a destra guardandola col destro. L’ordinamentoe dunque differente nelle due immagini, e non sara gestito correttamente da qualunque algoritmoche si avvalga di questo vincolo.

Un effetto analogo alla double nail illusion puo talvolta avvenire anche in una ambientazionenaturale, quale ad esempio una foresta: tronchi d’albero posti uno dietro l’altro possono mostrareordinamento differente, se visti da due diverse angolazioni.

Casi simili sono piuttosto improbabili, e anche se presenti sono limitati a piccole zone dell’im-magine; nella gran parte dei casi, il vincolo di ordinamento e rispettato, e pertanto lo manteniamonel nostro algoritmo.

3.4 Matching in programmazione dinamica

Il problema vincolato di matching a costo minimo puo essere risolta con tecniche di programmazionedinamica in O(columns · lev) per scanline, ossia O(rows · columns · lev) per coppia di fotogrammi.Nella figura 3.1 illustriamo le caratteristiche di una sequenza di matching che rispetti i vincoli diunicita e ordinamento; la sequenza e equivalente al cammino minimo attraverso un grafo quadrato,i cui nodi sono le coppie di pixel i ∈ IL e j ∈ IR.

Scanlinedestra

Scanline sinistra

-

6

` ` ` ` ` ` `` ` ` ` ` ` `

` ` ` ` ` ` `` ` `

����

��

��

Figura 3.1: una sequenza di matching ammissibile

I nodi sono collegati da archi, il cui costo e pari a − lnΛ(ILi , IRj |Dk). Un cammino ammissibiledall’origine basso-sinistra all’angolo alto-destra e costituito da spostamenti di un passo verso l’alto(caso 3), verso destra (caso 2), o verso alto–destra (caso 1).

1l’esempio e descritto in dettaglio in [Belhumeur e Mumford]

Page 26: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 26

In ogni nodo allochiamo una struttura che contenga due informazioni: il costo del camminominimo fino a quel nodo, e un puntatore al nodo predecessore. Nella figura 3.2 mostriamo come ot-timizzare l’uso della memoria, operando una deformazione “a parallelogramma” dell’array quadrato:∀ d ∈ [0, lev − 1], j ∈ [0, columns− d− 1]: L[d][j]= Nodo(j + d, j).

AA

AA

AA

AA

BB

BB

BB

B

CC

CC

CC

-

Scanline sinistra

Scanlinedestra

����

��

A A A A A A A AB B B B B B BC C C C C C

Scanline destra

Scanlinesinistra

Figura 3.2: ridisposizione a parallelogramma dell’array

Mostriamo anche (nella figura 3.3) come cambi in tal caso anche la disposizione degli immediatipredecessori del nodo L[d][j]: essi sono i nodi L[d][j-1] (caso 1), oppure L[d-1][j] (caso 2), oinfine L[d+1][j-1] (caso 3).

6

-

(a) (b) (c)

12

3 1 2

3 1

2

3

pp p

Figura 3.3: (a) immediati successori e (b) predecessori del punto p in un cammino ammissibile;(c) predecessori nell’array deformato a parallelogramma

Per trovare lo shortest path relativo al grafo cosı costruito, utilizzeremo il ben noto algoritmo diDijkstra, di cui illustriamo lo pseudocodice in figura 3.4.

Per ogni nodo n ∈ V memorizziamo i due dati: value, il costo del cammino dal nodo sorgentefino a quel nodo, e pred, un codice che identifica il predecessore di quel nodo nel cammino ottimo;S e l’insieme dei nodi gia elaborati, e δ+(S) e la frontiera di S, ossia l’insieme dei lati che colleganoS e V\S.

L’algoritmo di Dijkstra prevede di estendere l’insieme di nodi S, annettendo ogni volta il nodoappartenente alla frontiera di S che minimizza il costo cammino minimo fino a se. Alla fine L[n]conterra il costo del cammino dal nodo s al nodo n.

Adatteremo ora l’algoritmo di Dijkstra al calcolo della disparita; possiamo immediatamentenotare come il nostro grafo abbia una serie di proprieta importanti:

• e diretto e aciclico

Page 27: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 27

S ← {s}L[s].value ← 0L[s].pred ← swhile |S|< |V| do

(n1, n2)← arg min { L[i] + costo lato(i,j): (i,j) ∈ δ+(S) }L[n2].value ← L[n1].value + costo lato(n1, n2)L[n2].pred ← n1

S ← S ∪ {n2}

Figura 3.4: Pseudocodice dell’algoritmo di Dijkstra

• ha (columns·lev) nodi; chiamiamo L[d][j] il generico nodo che identifica la coppia (ILj+d, IRj

)

• ha grado limitato: ogni nodo (d, j) ∈ V ha |δ+(d, j)| ≤ 3, |δ−(d, j)| ≤ 3

• gli archi diretti impongono un ordine sui nodi: in particolare, L[d][j] precede L[d][j+k]∀ k > 0, e L[d][j] precede L[d+k][j] ∀ k > 0

Ci concentriamo ora sull’ultima proprieta elencata: se elaboriamo i nodi in ordine dalla colonnasinistra alla destra, possiamo determinare in ogni momento e senza calcoli aggiuntivi gli insiemi Se δ+(S) relativi alla colonna corrente x:

S = {L[i][j] : j < x} (3.8)

δ+(S) = {L[i][j] : j = x} (3.9)

Forti di questo risultato, elaboriamo in concorrenza tutti i nodi della colonna corrente x, ricer-cando per ogni suo nodo il predecessore che minimizza il nuovo costo totale di cammino. In figura 3.5riportiamo lo pseudocodice relativo a questo procedimento “colonna per colonna”.

Alla fine avremo elaborato tutti i nodi L[d][j], e ricostruiremo il profilo di disparita con una“procedura a ritroso” che illustriamo in figura 3.6; a partire dall’ultimo elemento della scanlinesaltiamo al suo predecessore, al predecessore del predecessore, e cosı via. Osserviamo che poichenormalmente non disponiamo dei valori IL(columns−1+d) per d > 0, possiamo definire il costo deicammini L[columns-1][d] solamente per d = 0; il nostro cammino soluzione dovra quindi sempreiniziare da L[columns-1][0], e cio comporta un errore di valutazione per difetto della disparita sulbordo destro dell’immagine finale, che puo propagarsi anche oltre i primi lev-1 pixel del bordo.

Alternativamente, se siamo disposti a rinunciare al calcolo dei valori di bordo, possiamo escluderegli ultimi lev-1 pixel della scanline, e facciamo iniziare il cammino da mind∈[0,lev−1]L[columns-lev][d].Ora l’errore sul bordo destro e scomparso, ma abbiamo dovuto rinunciare a determinare la disparitanella colonna destra dell’immagine.

Come ultima osservazione, vogliamo evidenziare l’impossibilita di determinare salti netti versodisparita inferiori: cio e dovuto al fatto che stiamo ricostruendo la disparita sinistra della coppiastereo, e che quindi le suddette zone di variazione non sono visibili alla telecamera destra.

L’effetto grafico risultante nella mappa di disparita e una sfumatura del contorno destro di tuttii soggetti presenti nella scena, tanto piu evidente quanto maggiore e lo “stacco” tra soggetto esfondo.

Un possibile rimedio euristico e allora quello di trovare il bordo destro (che identifichiamo conuna sequenza contigua di predecessori di caso 3), ed estendere per continuita il valore di sfondo albordo sfumato del soggetto, secondo lo schema illustrato in figura 3.7.

Page 28: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 28

X X X X X X X XX X X X X X XX X X X X X

-Scanline destra

Scanlinesinistra

d

j

/* Inizializzazione delle costanti */

λ = ln φ1−PD

; ρ = ln 2πσ2I

P 2D

; ξ = 14σ2

I

/* Inizializzazione della prima colonna */∀ d = (0, . . . , lev − 1) do

L[d][0] = min { ρ + ξ · (ILd− IR0)

2, λ }/* Elaborazione delle colonne successive */∀ j = (1, . . . , columns− 1) do

∀ d = (0, . . . ,min{lev − 1, columns− 1− j}) docaso1 = L[d][j-1] + ρ + ξ · (ILj+d

− IRj)2

caso2 = L[d-1][j] + λcaso3 = L[d+1][j-1] + λL[d][j].value = min{caso1, caso2, caso3}L[d][j].pred = argmin{caso1:(d,j-1),

caso2:(d-1,j),caso3:(d+1,j-1)}

Figura 3.5: Pseudocodice dell’algoritmo di Dijkstra adattato al problema di matching tra duescanline

Questo metodo di estensione per continuita trova giustificazione osservando che il cervello umanocompie lo stesso tipo di assunzioni, per “completare” la ricostruzione di una scena stereo; d’altraparte non crediamo che questo criterio abbia reali doti di affidabilita, pertanto ne abbiamo resoopzionale l’attivazione, che e controllata dalla pressione di un tasto. I benefici dell’applicazione diquesta tecnica si possono vedere chiaramente in figura 3.8, dove nell’ultima riga si vede il miglio-ramento col metodo euristico di ricostruzione. Notiamo invece, nelle figure centrali, che anchel’algoritmo locale, pur non avendo vincoli espliciti nella formulazione del problema, tende a formareampie sfumature al bordo destro, anche se utilizziamo maschere di una certa ampiezza. Cio e perfet-tamente comprensibile se andiamo a vedere, fissato un punto (x, y) dell’immagine, un grafico dellafunzione SSD(x, y, d): in corrispondenza del salto di disparita la SSD ha delle perturbazioni chela rendono ad esempio asimmetrica, o con molti minimi consecutivi; e questi difetti si manifestanogeneralmente proprio sul lato destro del salto, a causa dell’occlusione che rende invisibile a unatelecamera quella parte di scena. Rispetto a un utilizzo cosı rude delle informazioni di correlazione,la strategia globale ci appare molto piu attenta a risolvere questo problema, poiche si occupa anchedi classificare i punti come occlusi o meno.

La soluzione piu razionale per l’utilizzo dei dati nel sistema finale e dunque quella di scartare tuttiquei dati che sono frutto di occlusione, e considerare affidabili solo i matching veri e propri. Questodato e facilmente recuperabile dalla struttura dati del grafo, in quanto un’occlusione corrispondea tutte quelle posizioni che non hanno predecessore di caso 1 (matching corretto). In tal modoaumenta leggermente la sparsita dell’output, a vantaggio di una maggiore affidabilita delle misureottenute.

Page 29: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 29

if (tipoassegnazione) /* metodo semplificato */x ← columns-1, d ← 0

else /* metodo alternativo */x ← columns-levd ← argmind∈[0,lev−1] L[d][x]

/* Costruisco il percorso a ritroso */while (x>0) do

switch(L[x][d].pred) {case caso1=(d,x-1) :

x--, ILx+dcorrisponde a IRx

case caso2=(d-1,x) :d--/* occlusione, punto visibile *//* solo nell’immagine sx */

case caso3=(d+1,x-1) :d++, x--/* occlusione, punto visibile *//* solo nell’immagine dx */

}

Figura 3.6: Ricostruzione del cammino col percorso a ritroso

@@

@@

@@

����

��

��

��/

Scanline destra

Disparita

6

-

v v

v v v v v v v

v v v v vf f f originale

met.euristico

Figura 3.7: ricostruzione del bordo destro col metodo euristico discusso in questa sezione

Page 30: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 3. RICERCA GLOBALE DELLA DISPARITA 30

Figura 3.8: in alto, la coppia stereo originale (coppia incrociata); in centro, output dell’algoritmolocale con maschere normali (sinistra) e ingrandite (destra); in basso, output col metodo globalecol metodo di ricostruzione del bordo disattivato (sinistra) e attivato (destra); si vede bene ilmiglioramento nel profilo della parte destra dello schienale

Page 31: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 4

Ricerca globale avanzata

4.1 Introduzione

Nel capitolo precedente abbiamo affrontato la stesura di un algoritmo di ricerca globale dei valoridi disparita, concentrandoci per lo piu sull’aspetto logico del problema; vogliamo ora rendere piurobusto al rumore e agli errori di calibrazione il nostro sistema stereo.

Non tenteremo pero la risoluzione in 2D del problema di matching, come invece e stato fattoin [Ohta e Kanade] e [Belhumeur e Mumford] perche in questi approcci, ai brillanti risultati sullaqualita delle soluzioni, si contrappone un notevole rallentamento d’esecuzione (talvolta anche di unfattore 10).

Il nostro approccio sara invece quello di arricchire il nostro algoritmo globale con delle “strategieausiliarie” che si caratterizzano per la loro bassa complessita computazionale: non vogliamo infattiintaccare troppo la velocita di esecuzione, dato che uno degli obiettivi e la possibilita di utilizzo inreal-time.

4.2 La funzione MSD nell’algoritmo globale

Il primo e piu semplice miglioramento che vogliamo apportare riguarda la funzione di costo dimassima verosimiglianza locale (vedi l’equazione 3.5 a pag.24) che nella sua definizione originale siavvale della differenza al quadrato tra due singoli pixel. A questa quantita possiamo fruttuosamentesostituire il valore della MSD (“Mean of Squared Differences”), ovvero la SSD normalizzata rispettoall’area della finestra:

MSD(x, y, d) =SSDwindow(x, y, d)(2h + 1)(2w + 1)

= (4.1)

=

∑i∈[y−h,y+h]j∈[x−w,x+w]

[IL(j, i)− IR(j + d, i)]2

(2h + 1)(2w + 1)

In tal modo, la funzione di massima verosimiglianza (relativa alla riga row) si esprime ora come:

ΛMSD(ILi, IRj|Dk) =

(1− PD

φ

)δi,j

× (4.2)

×[P 2

D

2πexp {−MSD(j, row, i− j)

4σ2I

}]1−δi,j

Questa funzione ha i pro e i contro della SSD, che avevamo descritto nel capitolo dedicato allaricerca locale: minore sensibilita al rumore ma anche minore capacita di rilevare piccoli dettagli.

31

Page 32: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 32

La dimensione della finestra dovra quindi essere regolata su un valore di compromesso che soddisfile esigenze contrastanti di sensibilita e reiezione ai disturbi.

4.3 Vincolo di stabilizzazione per la MSD

Utilizzando la MSD nell’algoritmo globale, ci siamo scontrati con un problema che non si eramanifestato chiaramente nell’approccio a ricerca locale: in corrispondenza di variazioni nette delladisparita vi e un peggioramento delle prestazioni della MSD.

Se nell’algoritmo globale imponiamo un rapporto λ/ρ troppo basso (aumentando quindi il pesodella MSD nella funzione di costo) avviene che la disparita intorno alle regioni occluse subiscapiccole oscillazioni periodiche, che possono pero amplificarsi fino a formare zone estese con valorinon corretti.

Per inibire al formazione di queste oscillazioni indesiderate, abbiamo deciso di introdurre unvincolo di stabilizzazione aggiuntivo rispetto ai due gia noti di unicita e ordinamento.

Vincolo di stabilizzazione: a un pixel occluso da destra, non puo seguirne direttamente unooccluso da sinistra, e viceversa. Due pixel di questo genere devono essere inframmezzati daalmeno un matching.

Nella figura 4.1 abbiamo illustrato un caso-limite, dove a maschere molto grandi si contrapponeuna troppo bassa penalita di occlusione λ; le perturbazioni nella MSD si ripercuotono pesantementesu ampie zone dell’immagine, ma il nuovo vincolo contribuisce a eliminarle quasi completamente.In certi casi, ad esempio se il rapporto λ/ρ e sufficientemente alto, o se la maschera e ridottaa estensione 1 × 1 (pixel singoli), il vincolo risulta irrilevante, cioe non apporta miglioramenti alcammino soluzione. Pertanto abbiamo deciso di rendere opzionale l’uso del vincolo nel nostroprogramma: potremo inserirlo e disinserirlo con la pressione di un tasto.

4.4 Filtraggio di Kalman

Vogliamo ora limitare la rumorosita dei valori di disparita prodotti dal nostro algoritmo. Perfar cio, faremo uso di un procedimento di filtraggio nel tempo dei dati. Cio e possibile quandoacquisiamo coppie di fotogrammi in sequenza temporale, ad esempio da un filmato o da una coppiadi telecamere; non e invece applicabile nel caso di coppie fisse di immagini. In figura 4.2 illustriamocon uno schema a blocchi l’organizzazione dell’algoritmo con inserito il filtro di Kalman: e evidenteche, a parte le informazioni di stato mantenute dal filtro, il sistema lavora in feed-forward.

La nostra intenzione e di filtrare indipendentemente la disparita relativa a ciascun pixel, as-sumendo che il valore di disparita sia una costante nel tempo, a meno di un rumorre: Dk =Dk + v.

Il modello dinamico cosı espresso e ovviamente molto semplicistico, dato che nella realta sonopossibili sia movimenti della telecamera che degli oggetti inquadrati nella scena. Ma la scelta diun modello quanto piu semplice possibile e imposta dalla mole di dati da elaborare: ad esempio,76.800 misure per fotogramma con un’immagine di 320 × 240 pixel. Nel nostro modello ingloberemotutte le variazioni di disparita (per rumorosita dell’acquisizione e per variazione effettiva delledistanze camera-oggetto) all’interno del coefficiente v che rappresenta un “rumore di modello”,ipoteticamente gaussiano bianco.

In base al modello, possiamo derivare le equazioni relative a un singolo valore di disparita allacoordinata (p, q), che ci permetteranno di ottenere il filtro di Kalman relativo. Sia dunque Dt ilvalore reale della disparita al tempo t, e Dt|t il valore stimato al tempo t conoscendo ossia la misuradi disparita al tempo t, detta yt. Sia inoltre Yt l’insieme di tutte le misure fino al tempo t, e yt+1|t

Page 33: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 33

Figura 4.1: da sinistra a destra e dall’alto in basso: 1) rappresentazione grafica del vincolo distabilizzazione 2) scena originale 3) effetti delle oscillazioni con finestre molto larghe e basso valoredi λ: si notano delle ampie macchie nere sul corpo del maialino 4) il vincolo di stabilizzazioneattenua le deviazioni indesiderate nella disparita

Page 34: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 34

IL, IR(t + 1) - Alg.PD - F.Kalman -

Stato F.K.

6

?Dt+1|t+1

Figura 4.2: schema a blocchi dell’algoritmo col filtro di Kalman

la proiezione geometrica di yt+1 su Yt. Vale dunque:

Dt+1|t+1 = E[Dt+1 | Yt+1] = E[Dt+1 | yt+1,Yt] = (4.3)

= E[Dt+1 | yt+1 − yt+1|t,Yt]

= { posto y := yt+1 − yt+1|t }= E[Dt+1 | yt+1,Yt] =

= E[Dt+1 −Dt + Dt | yt+1,Yt]

= E[Dt+1 −Dt | yt+1,Yt] + E[Dt | yt+1,Yt] =

Il processo yt+1 e detto innovazione e per costruzione e ortogonale a Yt: e infatti pari a yt+1 −yt+1|t, e per un noto teorema dell’Algebra lineare e vero che se tolgo a un vettore la sua proiezionesu uno spazio vettoriale W , il vettore e ortogonale allo spazio W . poiche l’ortogonalita implical’indipendenza, possiamo ora eliminare dalle aspettazioni il condizionamento rispetto a Yt, e losviluppo prosegue quindi cosı:

= E[Dt+1 −Dt | yt+1,Yt] + E[Dt | yt+1,Yt] = (4.4)

= { per l′ortogonalita tra yt+1 e Yt }= E[Dt+1 −Dt | yt+1] + E[Dt | yt+1] =

= Dt|t + E[Dt+1 −Dt | yt+1]

Dunque, abbiamo formulato il legame intercorrente tra le stime di disparita al tempo t e altempo t + 1; scriviamo ora dunque le equazioni del modello dinamico:{

x(t + 1) = Ax(t) + v(t)y(t) = Cx(t) + w(t) (4.5)

Nel nostro modello abbiamo posto la matrice A di dimensione 1×1 e di valore unitario: A = [1].Cio equivale ad assumere una dinamica molto semplice in cui il processo da stimare e una costante.Anche la matrice C e di dimensione 1× 1 e di valore unitario: C = [1]. Il significato della matriceunidimensionale in questo caso e che i valori misurati sono valori scalari, cosı come il processo dastimare. Dunque il nostro modello di stato si semplifica in{

x(t + 1) = x(t) + v(t)y(t) = x(t) + w(t) (4.6)

Le matrici di covarianza dei rumori (supposti gaussiani bianchi) sono invece cosı definite:

E

{[v(t)w(t)

] [v(t) w(t)

]}=

[Q SST R

]δ(t− s) (4.7)

Page 35: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 35

Condizioni inizialix(t0|t0 − 1) = µ0, P (t0|t0 − 1) = P0 (4.11)

Stima a priori o aggiornamento temporale

x(t + 1|t) = F x(t|t) + SR−1y(t) (4.12)P (t + 1|t) = F P (t|t) FT + Q

Stima a posteriori o aggiornamento rispetto alle misure

x(t + 1|t + 1) = x(t + 1|t) + L(t + 1) · [y(t + 1)− Cx(t + 1|t)] (4.13)P (t + 1|t + 1) = P (t + 1|t)− P (t + 1|t)CT Λ(t + 1)−1CP (t + 1|t)

dove Λ(t + 1) e L(t + 1) sono matrici cosı definite:

Λ(t + 1) = C P (t + 1|t) CT + R (4.14)L(t + 1) = P (t + 1|t)CT Λ−1(t + 1)

Figura 4.3: Equazioni generali del filtro di Kalman

dove δ(t− s) e un termine che vale 1 per t = s, zero altrove, e rappresenta il fatto che i due rumoripossono essere correlati solo nello stesso istante di tempo t.

Anche in questo caso, data l’unidimensionalita delle grandezze in gioco, le matrici Q,S, R sonotutte unidimensionali; inoltre abbiamo imposto l’ipotesi semplificativa che w(t) e v(t) siano scor-relati : e un’ipotesi giustificata dalla considerazione che sono rumori di natura totalmente diversa,poiche uno ingloba tutte le variazioni di disparita dovute al moto degli oggetti o delle telecamere,l’altro rappresenta invece altre grandezze come l’errore provocato dal rumore termico alla misurad’intensita dei singoli pixel.

L’incorrelazione tra w(t) e v(t) ci permette di semplificare di molto il calcolo, perche possiamoporre S = ST = [0]; le due matrici Q ed R saranno invece caratterizzate da valori scalari: Q ={q}, R = {r}.

Ricaviamo ora Q, che e la varianza dell’errore di stima v(t):

v(t) := v(t) − E[v(t)|w(t)] (4.8)

Q := Q− SR−1ST (4.9)

= Q− 0 ·R · 0= Q = {q}

Ricaviamo infine la matrice F , che lega predizione e stato attuale nel filtro di Kalman:

F := A− SR−1C = A− [0] ·R−1 · [1] (4.10)

= A− [0] = A = [1]

Possiamo dunque scrivere le equazioni generali del filtro di Kalman, e ricavarne quello specificoper il nostro modello. Il filtro di Kalman e regolato dalle due fasi alterne di stima a priori e aposteriori, che abbiamo riportato in figura 4.3.

Nelle formule generali operiamo adesso le opportune sostituzioni di Λ(t + 1) e L(t + 1) in basealla dinamica del nostro sistema (in cui C = 1):

Λ(t + 1) = P (t + 1|t) + R = P (t + 1|t) + [r] (4.15)

Page 36: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 36

Condizioni inizialix(t0|t0 − 1) = µ0, P (t0|t0 − 1) = P0 (4.16)

Stima a priori o aggiornamento temporale

x(t + 1|t) = x(t|t) (4.17)P (t + 1|t) = P (t|t) + [q]

Stima a posteriori o aggiornamento rispetto alle misure

x(t + 1|t + 1) = x(t + 1|t) +P (t + 1|t)

P (t + 1|t) + [r]· [y(t + 1)− x(t + 1|t)]

P (t + 1|t + 1) = P (t + 1|t)− [P (t + 1|t)]2

P (t + 1|t) + [r](4.18)

Figura 4.4: Equazioni del filtro di Kalman adattato al nostro modello dinamico semplificato

Condizioni inizialix(t0|t0 − 1) = µ0, P (t0|t0 − 1) = P0 (4.19)

Aggiornamento del filtro semplificato (in un passo)

x(t + 1|t + 1) = x(t|t) +P (t|t) + [q]

P (t|t) + [q] + [r]· [y(t + 1)− x(t|t)]

P (t + 1|t + 1) = P (t|t) + [q]− [P (t|t) + [q]]2

P (t|t) + [q] + [r](4.20)

Figura 4.5: Equazioni semplificate per l’aggiornamento in un passo delle stima nel nostro filtro diKalman

L(t + 1) = P (t + 1|t) Λ−1(t + 1) =P (t + 1|t)

P (t + 1|t) + [r]

e il filtro di Kalman finale risulta dunque quello di figura 4.4.Ci preme osservare che, poiche siamo interessati solamente alle capacita di aggiornamento a

posteriori dei dati, e poiche la dinamica del filtro e veramente molto semplice, possiamo unificarele formule di stima a priori e a posteriori in un unico passo, ottenendo dunque il filtro semplificatodi figura 4.5.

Dalle equazioni deriviamo quindi lo pseudocodice di figura 4.6 che realizza il filtro relativo allastima della disparita di un singolo pixel.

Nella nostra realizzazione, abbiamo sfruttato la velocita di calcolo della libreria OpenCV pereseguire “in blocco” l’aggiornamento dello stato, avvalendoci delle operazioni punto-punto tramatrici.

Per formalizzare il procedimento, riscriviamo le formule relative alla funzione aggiorna per unamacchina a tre indirizzi (due per gli operandi e uno per memorizzare il risultato) in figura 4.7. Inquesto modo potremo avvalerci delle funzioni altamente ottimizzate di somma, sottrazione, prodottoe divisione punto a punto tra matrici disponibili nella libreria OpenCV, la cui interfaccia prevedesempre l’uso di due matrici-operando e una matrice-destinazione.

E sensato avvalersi delle funzioni di OpenCV ogni volta che si vogliano compiere operazionipunto a punto su blocchi di dati; il metodo di trascrizione per macchine a tre indirizzi e generale

Page 37: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 37

function inizializza(valore iniz, varianza iniz){xold ← valore iniz ; pold ← varianza iniz

}

function aggiorna(misura){/* --- aggiornamento in un passo del filtro --- */ppred ← pold + qxnew ← xold + [ppred/(ppred+r)]*(misura-xold)pnew ← ppred - pow(ppred,2)/(ppred+r)/* --- salvo il nuovo stato --- */xold ← xnew; pold ← pnewreturn xnew, pnew

}

Figura 4.6: Pseudocodice che realizza il nostro filtro di Kalman per la disparita

ppred = pold + qxnew = pold + rxnew = pold / xnew /* Ora xnew=pold/(pold+r) */pnew = xnew * poldpnew = pold - pnewmem1 = misura - xoldxnew = xnew * mem1xnew = xnew + xold

xold = xnewpold = pnew

Figura 4.7: Lo stesso pseudocodice della figura 4.6, adattato all’esecuzione su una macchina a treindirizzi (per l’uso con OpenCV)

Page 38: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 38

e avremmo potuto applicarlo anche per modelli dinamici di ordine superiore; ovviamente in casodi modelli piu complessi il numero di singole operazioni aumenta significativamente, e con esso iltempo di esecuzione.

4.5 Termine a priori

L’ultima strategia di miglioramento del nostro algoritmo consiste nel modificare il computo dellamassima verosimiglianza globale inserendo una probabilita a priori, ossia indipendente dagli specificivalori di intensita IL, IR provenienti dalle telecamere.

Ricordiamo che la verosimiglianza era definita come la probabilita che due valori d’intensitasiano associati a un determinato valore di disparita oppure a un’occlusione:

Λ(ILi, IRj|Dk) = p(ILi

, IRj|Dk) = (4.21)

=1

Zcost·(

1− PD

φ

)δi,j

·[

P 2D

2πσ2I

exp {−(ILi − IRj )

2

4σ2I

}]1−δi,j

Ora, anziche costruire un classificatore basato solo sulla massima verosimiglianza, vogliamorendere la probabilita globale piu affidabile condizionando anche rispetto a una probabilita a pri-ori; in altre parole, vogliamo costruire un classificatore Bayesiano di cui diamo un’esposizione piudettagliata in appendice A.2, a pag.50.

Vogliamo ora determinare la probabilita locale di avere una disparita Dk, conoscendo il valoredelle features ILi

, IRj. Per far cio possiamo applicare la nota regola di Bayes:

p(A|C) =p(C|A) p(A)

p(C)(4.22)

dove p(C|A) e la nostra verosimiglianza, e p(A) e la probabilita a priori, che pero costruiremobasandoci su un’assunzione di indipendenza tra le singole p(Dk): la p(D) sara quindi il prodottodelle probabilita relative a ogni valore di disparita, ovvero p(D) =

∏γ∈Γ p(Dk). Potremo allora

inglobare le due probabilita nella stessa produttoria; sostituendo opportunamente, otteniamo:

p(Dk|ILi, IRj

) =p(ILi , IRj |Dk) p(Dk)∫

θ∈Θp(ILi , IRj |θ) p(θ) dθ

=p(ILi , IRj |Dk) p(Dk)

Kcostante(4.23)

Il nostro classificatore Bayesiano dovra comunque massimizzare, rispetto a tutti i possibili set divalori di disparita, la produttoria delle singole probabilita condizionate, a meno del denominatoreche e costante:

γBayes = arg maxγ∈Γ

∏Dk∈γ

Λ(ILi , IRj |Dk) p(Dk)

Rispetto alla vecchia definizione, l’unica differenza e il termine a priori, e infatti se questo haprobabilita uniforme le due definizioni coincidono. Similmente, potremmo interpretare i vincoli diunicita e ordinamento come degli a priori “particolari” in cui la probabilita e uniforme per ogni D

che soddisfa il vincolo, e vale zero altrove.L’ultimo fondamentale passo che dobbiamo compiere e quello di scegliere il nostro a priori p(Dk).

In letteratura esistono diverse proposte, ad esempio quella di [Belhumeur e Mumford] deriva un apriori particolarmente sofisticato, basato sulle proprieta statistiche di oggetti distribuiti casualmentenello spazio tridimensionale inquadrato dalle telecamere.

La nostra scelta e invece quella di sfruttare il fatto che abbiamo a disposizione una sequenza difotogrammi in cui la scena cambia in maniera relativamente lenta; in particolare vogliamo che, per

Page 39: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 39

/* Inizializzazione delle costanti */

λ = ln φ1−PD

; ρ = ln 2πσ2I

P 2D

; ξ = 14σ2

I

;

τ1 = ln(√

2πσtime); τ2 = 12σ2

time

;/* Inizializzazione della prima colonna */∀ d = (0, . . . , lev − 1) do

L[d][0] = min { ρ + ξ · (ILd− IR0)

2, λ }L[d][0]+= τ1 + τ2 * (d-d precedente[0])^2

/* Elaborazione delle colonne successive */∀ j = (1, . . . , columns− 1) do

∀ d = (0, . . . ,min{lev − 1, columns− 1− j}) docaso1 = L[d][j-1] + ρ + ξ · (ILj+d

− IRj)2

caso2 = L[d-1][j] + λcaso3 = L[d+1][j-1] + λL[d][j].value =min{caso1,caso2,caso3} +

+ τ1 + τ2 * (d-d precedente[j])^2L[d][j].pred = argmin{caso1:(d,j-1),

caso2:(d-1,j),caso3:(d+1,j-1)}

Figura 4.8: pseudocodice dell’algoritmo di matching comprendente il costo di differenza rispettoalla soluzione precedente

un certo valore di disparita, la probabilita sia piu alta se il valore e simile a quello del fotogrammaprecedente.

Scegliamo dunque di utilizzare una distribuzione di probabilita di tipo gaussiano:

P (Dtk) :=

1√2πσtime

exp{−

(Dtk −Dt−1

k )2

2σ2time

}(4.24)

Dovremo ora inglobare questo termine all’interno della funzione energia minimizzata dall’algo-ritmo in programmazione dinamica; passando a meno il logaritmo della probabilita, si ha:

ET := ln(√

2πσtime) +(Dt

k −Dt−1k )2

2σ2time

= τ1 + τ2(Dtk −Dt−1

k )2 (4.25)

e quindi la funzione energia totale da minimizzare per il matching e:

J(γ) =∑

ILi,IRj

∈γ

δi,j ln(

φ

1− PD

)+

+(1− δi,j)[(ln

2πσ2I

P 2D

) +(ILi− IRj

)2

4σ2I

]+

+ ln(√

2πσtime) +(Dt

k −Dt−1k )2

2σ2time

dove Dk = i− j

In base alle formule possiamo ora realizzare le modifiche allo pseudocodice dell’algoritmo dimatching, in modo che la funzione energia da minimizzare includa il nuovo termine a priori;riportiamo il listato in pseudocodice in figura 4.8.

In figura 4.9 illustriamo lo schema a blocchi che rappresenta l’algoritmo cosı modificato: l’ele-mento di memoria salva i valori di disparita ricavati al passo precedente e li usa come ingresso alpasso successivo, realizzando quindi un funzionamento in feedback.

Page 40: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 40

IL, IR(t) - Alg.PD -

Dt−1

- Dt

Figura 4.9: schema dell’algoritmo con a priori basato sui valori di disparita dell’iterazione precedente

Idealmente, il concetto sottostante a questo schema e il seguente: ipotizzando di aver trovatouna “buona” disparita Dt−1

k all’istante precedente, il nuovo valore Dtk non dovra essere troppo

differente; il costo relativo alla differenza tra i due valori va ad accumularsi nel costo degli archi delgrafo di matching, e altera leggermente la soluzione, nel senso che essa risultera piu simile a quelladel fotogramma precedente.

Naturalmente, un peso eccessivo di questa componente si rivela deleterio. Nel caso limite diσtime → 0 l’unica soluzione consentita e uguale a quella precedente, e l’output si “congela” inun fermo-immagine. Nell’altro caso limite σtime → +∞, il peso e nullo per qualsiasi disparita ericadiamo nel caso dell’algoritmo originale. Negli altri casi, l’effetto e quello di ottenere immaginicon rumore e attenuato ma che lasciano un “mosso” se le variazioni nella scena sono troppo rapide,e la traccia sara tanto piu ampia quanto piu piccolo sara σtime.

Il parametro va regolato dunque a un valore di compromesso tra l’esigenza di attenuare il rumoree la necessita di rappresentare scene con rapide variazioni di disparita; nella nostra realizzazioneabbiamo incluso la possibilita di variare “al volo” questo parametro tramite un comodo slider.

4.6 Uso integrato delle strategie

Nella creazione delle nostre procedure di miglioramento della soluzione, abbiamo prestato grandeattenzione a fare in modo che queste siano utilizzabili indipendentemente, e inseribili come blocchiall’interno dello schema generale di funzionamento. In particolare, le quattro procedure illustratesi possono attivare “al volo” nel programma con la pressione di un tasto, o spostando gli slideropportuni. Cio e stato molto utile nella fase di sperimentazione per verificare la maggiore o minoreutilita di ciascuna procedura. In figura 4.10 abbiamo riportato lo schema di funzionamento quandotutte le procedure siano attivate: in particolare, notiamo l’anello esplicito di feedback dovuto all’usodell’a priori; un anello implicito e invece quello del filtro di Kalman, che fa internamente uso diinformazioni di stato.

Page 41: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 4. RICERCA GLOBALE AVANZATA 41

MSD - Alg.PD - KF -

Vinc.stab.

��

��

Dt−1

-

IL, IR(t)

?

Dt

Figura 4.10: lo schema completo di funzionamento dell’algoritmo, con tutte le strategie attivate

Page 42: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 5

Sperimentazione

Nello svolgimento di questa tesi ci sono state messe a disposizione le strutture di NavLab, il Labora-torio di Visione Computazionale e Navigazione Autonoma dell’Universita di Padova. Non ci e statopurtroppo possibile verificare il comportamento dell’applicazione in ambienti esterni, ma i risultatiottenuti sono abbastanza confortanti e prevediamo una facile adattabilita ad ambienti diversi.

5.1 Hardware a disposizione

La sperimentazione in laboratorio si e svolta facendo uso di un PC dotato di due processori IntelXeon con velocita di clock di 2.0 GHz, configurazione che al momento non sfruttiamo ancoraadeguatamente data la struttura monotasking del nostro algoritmo (prevediamo sviluppi futuriper questo aspetto).

Per l’acquisizione delle immagini stereo abbiamo utilizzato una coppia di telecamere Firewiredella Allied Technologies con obiettivi da 8mm di focale, capaci di acquisire fotogrammi fino a unarisoluzione di 1280 × 1024 pixel. Non possiamo pero utilizzare una risoluzione cosı alta nella nostraapplicazione real-time, che puo elaborare a velocita ragionevole risoluzioni fino a circa 320 × 240pixel.

Purtroppo l’hardware non e in grado di effettuare automaticamente l’operazione di downsample:se si richiede una risoluzione inferiore, questa ci viene fornita con un’operazione di cropping, ovveroviene ritagliato un rettangolo centrale dell’immagine.

In questo modo subiamo una riduzione inaccettabile del campo visivo, dato che il sistema edestinato all’uso su un sistema di navigazione autonoma. Siamo stati quindi costretti a effettuareun downsample alla risoluzione desiderata, che e di 320 × 240 pixel.

In base ai calcoli effettuati nel capitolo dedicato alla geometria binoculare, abbiamo ritenutoopportuno condurre gli esperimenti utilizzando 32 livelli di disparita. Per produrre le immaginidi laboratorio, abbiamo utilizzato una baseline di 44 millimetri, che corrisponde a un horopter tra0.42 metri e 13 metri. In alcune delle immagini volevamo evidenziare soggetti piu distanti, e quindiabbiamo portato la baseline a 88 millimetri, corrispondenti a un horopter tra 0.84 metri e 26 metri.

5.2 Realizzazione software

Il programma e stato scritto interamente in linguaggio C++ all’interno dell’ambiente di program-mazione Visual Studio .Net, avvalendosi delle librerie OpenCV e IPP, e dei driver disponibili perle telecamere Firewire; la sezione dedicata al calcolo della disparita e pressoche indipendente dallapiattaforma, e si potrebbe ricompilare praticamente per ogni sistema che supporti il compilatoreopensource GCC/G++ e le librerie OpenCV e IPP.

42

Page 43: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 5. SPERIMENTAZIONE 43

Abbiamo scelto di mantenere una classe quanto piu portabile possibile perche il programmafinale dovra essere adattato all’uso su un computer piuttosto specifico, dotato di due processoriXeon e del sistema operativo Linux. La scelta della portabilita ci penalizza pero in termini diperformance: il frame-rate e migliorabile.

Un grande aumento di velocita si potrebbe ottenere facendo uso delle nuove istruzioni SIMD(Single Instruction, Multiple Data) presenti nei processori piu recenti: il calcolo della SSD potrebbetrarne grandi vantaggi, perche fortemente parallelizzabile.

Anche la presenza di piu processori potrebbe venir sfruttata a dovere attraverso la modificadella sezione principale del programma, in cui due processi indipendenti potrebbero elaborare unola meta superiore e l’altro quella inferiore della coppia di immagini.

5.3 Risultati in laboratorio

Purtroppo e stato possibile sperimentare il sistema stereo solo all’interno del laboratorio, che e unambiente piuttosto ostile per algoritmi che utilizzano come feature l’intensita dei pixel: muri bianchi,superfici liscie e uniformi, vetrate trasparenti e luci riflesse dal pavimento possono apportare rilevantidisturbi al risultato finale; ci attendiamo invece che in ambientazione naturale, caratterizzata dasuperfici irregolari ma quasi sempre dotate di una certa texture e meno soggette a problemi dovutia riflessione e trasparenza, i risultati siano piu conformi alle aspettative; nelle fotografie che seguonoabbiamo voluto evidenziare alcune peculiarita dell’algoritmo.

In figura 5.1 abbiamo volutamente forzato un valore molto alto di lambda, per illustrare comequesto porti l’algoritmo a collegare in orizzontale le mani, a scapito dei dettagli del busto che sonoleggermente piu distanti.

Figura 5.1: quando il valore di lambda e troppo alto, avviene un fenomeno di “fusione” tra dueoggetti molto vicini

In figura 5.2 abbiamo voluto dare testimonianza della buona robustezza dell’algoritmo a ricercaglobale rispetto ai metodi locali: lo abbiamo fatto con un confronto diretto sulla stessa coppiastereo, che era caratterizzata da texture poco evidente nella zona centrale dell’immagine.

Page 44: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 5. SPERIMENTAZIONE 44

Figura 5.2: in alto, la superficie quasi uniforme e una prova troppo difficile da superare perl’algoritmo a ricerca locale; in basso, la performance con metodi globali e nettamente superiore

In figura 5.3 abbiamo evidenziato come un soggetto in avvicinamento sia rappresentato conintensita luminosa via via crescente; in questo caso un algoritmo di controllo del veicolo autonomodovrebbe impostare opportune manovre di deviazione per evitare collisioni con l’ostacolo.

In figura 5.4 abbiamo messo in luce gli effetti della variazione di ampiezza delle maschere: dasinistra a destra e dall’alto in basso, presentiamo come cambi l’output del programma usandomaschere di grandezza unitaria (singoli pixel) e maschere via via crescenti di area 3×3, 5×5 e 9×9pixel. Man mano i piccoli dettagli si fanno meno visibili, ma con essi viene eliminata anche granparte del rumore.

In figura 5.5 abbiamo voluto mostrare una tipica sessione di funzionamento del programma:sopra la mappa di disparita si vedono i numerosi slider che permettono di calibrare i parametri delprogramma, mentre i due riquadri piccoli a destra mostrano le immagini originali.

Nell’immagine in alto notiamo come le mani, piu vicine alla telecamera, vengano staccate net-tamente dal busto, piu lontano. In quella in basso, invece, viene messa in risalto la capacita dirisolvere anche superfici che non giacciono tutte nello stesso livello di profondita: in corrispondenzadel braccio si genera una gradazione abbastanza fine di toni di grigio, che sfumano verso il bianconelle parti piu vicine all’obiettivo, come la mano.

Possiamo notare come il monitor acceso in alto a sinistra nella scena provochi un disturbo,poiche l’acquisizione dei due fotogrammi non e stata perfettamente sincrona: il pennello elettronicodel monitor si e spostato e ha prodotto una variazione nella scena in quel punto.

Si puo anche vedere chiaramente come siano fonte di errore gli edge orizzontali o quasi orizzontali(a meno di qualche grado), poiche localmente a questi edge si forma una zona molto sensibileall’allineamento verticale: un piccolo errore viene fortemente amplificato in una grande variazionedi disparita.

Page 45: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 5. SPERIMENTAZIONE 45

Figura 5.3: un soggetto in avvicinamento verso la telecamera: e ben visibile la differente tonalitadi grigio usata per rappresentare profondita diverse

Page 46: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 5. SPERIMENTAZIONE 46

Figura 5.4: effetti della mascheratura sui dettagli d’immagine

Page 47: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

CAPITOLO 5. SPERIMENTAZIONE 47

Figura 5.5: una veduta del programma in esecuzione

Page 48: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Capitolo 6

Conclusione

Lo scopo principale del nostro lavoro era quello di analizzare, progettare e sviluppare un softwareper la visione stereo che fosse adatto all’installazione su sistemi di navigazione autonoma.

Era richiesta in particolare una buona generalita d’uso, ovvero la possibilita di farlo funzionarein una vasta gamma di possibili ambienti. Questo criterio e stato soddisfatto utilizzando l’intensitaluminosa dei pixel come feature, facendo il minor numero possibile di assunzioni sulla scena daanalizzare.

Le richieste di robustezza e affidabilita sono state soddisfatte proponendo una strategia glob-ale per superare i limiti dell’approccio a correlazione, e infine progettando alcune strategie dimiglioramento dell’analisi scanline per scanline.

Infine e stata anche posta particolare attenzione all’aspetto della velocita di esecuzione: inparticolare ci siamo concentrati sul mantenimento di una bassa complessita asintotica dell’algoritmo,mentre la velocita finale d’esecuzione, pur non essendo molto elevata (3∼5 fps), ha ancora ampimargini di miglioramento che otterremo nella fase di ottimizzazione con l’uso di istruzioni SIMD edella programmazione concorrente su sistemi multiprocessore.

Sottolineiamo che l’algoritmo non e in alcun modo vincolato a operare su veicoli autonomi, mapuo essere facilmente adattato su sistemi destinati ad altri usi. Pur essendo in linea di principioutilizzabile anche su coppie stereo di singoli fotogrammi statici, non ne consigliamo un tale uso,perche richiede la disattivazione di alcune funzionalita importanti come il filtro di Kalman e l’apriori temporale.

6.1 Sviluppi futuri

Oltre all’ottimizzazione del codice citata poco sopra, le prossime evoluzioni di questo lavoro preve-dono la sua applicazione ad un vero veicolo autonomo, in cui siano stati sviluppati anche i pacchettisoftware dedicati al controllo e alla pianificazione del percorso a costo minimo.

Dal punto di vista algoritmico, abbiamo cercato di privilegiare soluzioni a basso costo com-putazionale, ma negli sviluppi futuri sarebbe interessante approfondire la possibilita di risoluzionedel problema di minimo globale in due dimensioni in real-time, magari affidandosi a sistemi multi-processore o basati su FPGA.

Infine, un altro aspetto di cui ci preme suggerire l’utilita di ulteriori indagini e quello dell’utilizzodi immagini a colori: il contenuto informativo rispetto a un’immagine in bianco e nero e superiore,quindi ci aspetteremmo migliori risultati qualitativi nell’output; inoltre le modifiche da apportarealla funzione di costo sarebbero molto contenute.

48

Page 49: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Appendice A

Richiami teorici

A.1 Regola di Bayes

Dati gli eventi A e C, la probabilita dell’evento condizionato p(A|C) e definita come

p(A|C) .=p(AC)p(C)

(A.1)

La probabilita condizionata gode in generale di diverse proprieta, e per essa vale il teorema dellaprobabilita totale:

p(C) =∫

θ∈Θ

p(C|θ) p(θ) dθ (A.2)

dove il simbolo di “integrale” rappresenta l’integrale di Haar della probabilita; quindi, se la vari-abile aleatoria e discreta, l’integrale andra inteso come sommatoria. Dalla definizione discendel’uguaglianza rispetto all’evento condizionante:

p(AC) =p(A|C)p(C)

=p(C|A)p(A)

(A.3)

Riarrangiando opportunamente l’equazione, ricaviamo la Regola di Bayes:

p(A|C) =p(C|A) p(A)

p(C)=

p(C|A) p(A)∫θ∈Θ

p(C|θ) p(θ) dθ(A.4)

La regola di Bayes ci offre un modo alternativo per calcolare p(A|C): essa dipende dalla verosi-miglianza, p(C|A), da una probabilita a priori p(A) e dalla probabilita p(C), che possiamo scriverein forma estesa applicando il teorema della probabilita totale.

Di solito, nelle applicazioni che considereremo, siamo interessati a conoscere il valore θ ∈Θ che massimizza p(θ|C); per stimarlo possiamo utilizzare, ad esempio lo stimatore a massimaverosimiglianza:

θML = arg maxθ∈Θ

p(C|θ) (A.5)

Di contro, la stima bayesiana massimizza in θ la probabilita condizionata p(θ|C):

θBayes = arg maxθ∈Θ

p(θ|C) (A.6)

= arg maxθ∈Θ

p(C|θ) p(θ)∫θ∈Θ

p(C|θ) p(θ) dθ

= arg maxθ∈Θ

p(C|θ) p(θ)

Abbiamo eliminato il denominatore perche e un valore costante al variare di θ, e quindi nonaltera il calcolo dell’arg max.

49

Page 50: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

APPENDICE A. RICHIAMI TEORICI 50

A.2 Classificatore Bayesiano

Chiamiamo classe C l’evento “l’oggetto sotto osservazione appartiene alla classe C”. La probabilitache l’oggetto sia di classe C, conoscendo alcune misure o feature, F1, . . . , Fn, vale

p(C|F1, . . . , Fn) =p(C) p(F1, . . . , Fn|C)

p(F1, . . . , Fn)=

p(C,F1, . . . , Fn)p(F1, . . . , Fn)

(A.7)

Se otteniamo (con una misurazione) un set di features F1, . . . , Fn, il denominatore assume valoreK costante ∀ c ∈ C. Ci concentriamo quindi sul numeratore:

p(C,F1, . . . , Fn) = p(C) p(F1, . . . , Fn|C) = (A.8)

= p(C) p(F1|C) p(F2, . . . , Fn|C) =

= p(C) p(F1|C) p(F2|F1, C) p(F3, . . . , Fn|C) = . . .

Se avanziamo ora l’ipotesi di indipendenza tra le features p(Fi|C,Fj) = p(Fi|C), il numeratorepuo essere ampiamente semplificato:

p(C,F1, . . . , Fn) = p(C) p(F1|C) . . . p(Fn|C) = (A.9)

= p(C)n∏

i=1

p(Fi|C)

e quindi la probabilita che l’oggetto sia in classe C diventa

p(C|F1, . . . , Fn) =p(C)

∏ni=1 p(Fi|C)

p(F1, . . . , Fn)=

1K

p(C)n∏

i=1

p(Fi|C) (A.10)

Il classificatore Bayesiano naturale (“naive Bayesian classfier”) assegna l’oggetto consideratoalla classe di massima probabilita:

class(F1, . . . , Fn) = arg maxc ∈ C

p(C = c)∏n

i=1 p(Fi|C)K

(A.11)

= arg maxc ∈ C

p(C = c)n∏

i=1

p(Fi|C)

Per comodita mappiamo la probabilita condizionata attraverso la funzione − log p(. . .), che emonotona decrescente e invertibile per argomenti strettamente maggiori di zero; questa mappaturapermette di trasformare produttorie in sommatorie, e la ricerca di massimi in minimi.

Quindi il nostro classificatore compie ora l’operazione

class(F1, . . . , Fn) = arg minc ∈ C

−{ log p(C = c) + (A.12)

+ logn∏

i=1

p(Fi|C)− log K}

= arg minc ∈ C

−{log p(C = c) +n∑

i=1

log p(Fi|C = c)}

(A.13)

Page 51: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

APPENDICE A. RICHIAMI TEORICI 51

A.3 Filtro di Kalman

Risale al 1960 l’articolo in cui R.E.Kalman proponeva una soluzione ricorsiva al problema delfiltraggio lineare di dati discreti [Kalman]; grazie anche ai successivi progressi dell’informatica,il filtro di Kalman ha ricevuto sempre crescente attenzione da parte dei ricercatori, soprattuttonell’area della navigazione autonoma o assistita.

Il problema e quello di ottenere una stima delle variabili di stato di un sistema tempo-variante apartire da una sequenza di misure rumorose, prese ad istanti di tempo discreti. Il filtro proposto daKalman e un set di equazioni che danno con modesto sforzo computazionale una soluzione ricorsivadel metodo dei minimi quadrati; puo produrre stime degli stati passati, presenti e futuri, anche incaso di una modellazione imprecisa del sistema dinamico da filtrare.

A.3.1 Definizioni preliminari

Per realizzare un filtro di Kalman dovremo disporre di una serie di misure sul sistema da stimare,di un modello matematico che descriva il sistema dinamico, e di un modello statistico sui rumori dimisura.

Nelle sezioni successive, utilizzeremo la seguente notazione:

x(t) vettore di stato

y(t) vettore delle misure; lo stato del sistema si puo talvolta misurare direttamente, ma in altricasi deve essere ricavato da grandezze ad esso proporzionali o da combinazioni lineari dellevariabili di stato

w(t) disturbo agente sulle variabili di stato, equivalente a un vettore di ingressi non controllabili

v(t) rumore relativo alle misure, dovuto ai limiti di accuratezza dello strumento di misura e adisturbi esterni allo strumento (ad es. rumore termico)

Q(t) matrice di covarianza del disturbo sullo stato

R(t) matrice di covarianza del rumore sulle misure

P(t) matrice di covarianza dell’errore sullo stato

L(t) matrice di correzione della stima, detta anche “guadagno di Kalman”

A,C matrici di stato e delle uscite del sistema dinamico da descrivere; possono essere tempo-varianti o meno, per comodita di notazione le riporteremo nel seguito sempre prive di indicetemporale

Il sistema dinamico da modellare sara descritto dalle usuali equazioni dinamiche per sistemidiscreti, a cui aggiungiamo i termini di rumore:{

x(t + 1) = A x(t) + w(t)y(t) = C x(t) + v(t) (A.14)

Si notera che nel modello dinamico non compaiono veri e propri ingressi; stiamo infatti de-scrivendo la versione semplificata del filtro di Kalman senza ingressi, ma i calcoli per ottenerlo sonoanaloghi, basta aggiungere il termine B u(t) nell’equazione di aggiornamento dello stato.

Per quanto riguarda le fonti di rumore, richiediamo che siano valide alcune proprieta statisticheper w(t) e v(t):

• Q = E[w(t) w(t)T ], mentre ∀s 6= t vale che E[w(t) w(s)T ] = 0

Page 52: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

APPENDICE A. RICHIAMI TEORICI 52

• R = E[v(t) v(t)T ], mentre ∀s 6= t vale che E[v(t) v(s)T ] = 0

• ∀s, t vale che E[w(t) v(s)T ] = 0

Queste proprieta si possono riscrivere in forma compatta usando la notazione seguente:

E

{[v(t)w(t)

] [v(t) w(t)

]}=

[Q SST R

]δ(t− s) (A.15)

A.3.2 Le equazioni del filtro di Kalman

Vogliamo ottenere la stima dello stato a priori, x(t+1|t) ∈ Rn, ossia la stima al passo t+1 conoscendostato e misure del processo fino al passo t, e la stima dello stato a posteriori x(t + 1|t + 1) ∈ Rn,cioe quando divengano note la stima dello stato a priori e le misure fino al passo t + 1.

Ritorniamo al modello dinamico del sistema descritto nell’equazione A.14, e sostituiamo nellaprima equazione x(t) ricavandolo dalla seconda equazione; sostituiamo inoltre v(t) sapendo chev(t) = v(t)− SR−1w(t); riorganizzando opportunamente, otteniamo{

x(t + 1) = F x(t) + SR−1y(t) + v(t)y(t) = C x(t) + w(t) (A.16)

con F = A − SR−1C e v(t) che e un rumore bianco di varianza Q = Q − SR−1ST , scorrelato daw(t). Il filtro di Kalman si occupa dunque di eseguire le stime a priori e a posteriori su questosistema dinamico.

Definiamo ora il processo di innovazione e(t): esso e dato dalla differenza tra la misura fatta altempo t e la stima di tale misura, e la sua varianza viene indicata col simbolo Λ(t):

e(t) := y(t)− y(t|t− 1) = (A.17)

= y(t)− C x(t|t− 1)

Λ(t) = C P (t|t− 1) CT + R

Dobbiamo dunque esprimere le equazioni che regolano lo stimatore per il sistema dinamicodell’equazione A.16; riportiamo il set completo di equazioni in figura A.1.

La dimostrazione dettagliata di questo set di equazioni e presente in [Picci], dove viene discussoanche il caso del filtro di Kalman con ingressi. In questa sede non ci soffermiamo sulla dimostrazione,ma vogliamo invece illustrare e caratterizzare il senso delle grandezze in gioco.

In particolare, il guadagno di Kalman L(t) esprime l’importanza del vettore di innovazione nelcalcolo della nuova stima di stato: tanto piu sara alto, tanto piu il filtro si dimostrera “pronto” amodificare lo stato verso il valore delle nuove misure in arrivo.

L(t) e influenzato dalla matrice di covarianza dell’errore sulle misure, R. Man mano che questatende a zero, il guadagno di Kalman aumenta, fino a un valore limite:

limR→0

L(t) = limR→0

P (t|t− 1) CT Λ−1(t) = C−1 (A.22)

Se invece l’errore sulla stima a priori P (t|t − 1) diminuisce, cala anche il valore di L(t) fino alvalore limite di zero:

limP (t|t−1)→0

L(t) = limP (t|t−1)→0

P (t|t− 1) CT Λ−1(t) = 0 (A.23)

Se il filtro si porta verso questa condizione “singolare”, diventa progressivamente sempre piu sordoall’arrivo di nuove misure, e da peso maggiore alla stima della prossima misura, anziche alla misurastessa.

Page 53: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

APPENDICE A. RICHIAMI TEORICI 53

Condizioni inizialix(t0|t0 − 1) = µ0, P (t0|t0 − 1) = P0 (A.18)

Stima a priori o aggiornamento temporale

x(t + 1|t) = F x(t|t) + SR−1y(t) (A.19)P (t + 1|t) = F P (t|t) FT + Q

Stima a posteriori o aggiornamento rispetto alle misure

x(t + 1|t + 1) = x(t + 1|t) + L(t + 1) · [y(t + 1)− Cx(t + 1|t)] (A.20)P (t + 1|t + 1) = P (t + 1|t)− P (t + 1|t)CT Λ(t + 1)−1CP (t + 1|t)

dove Λ(t + 1) e L(t + 1) sono matrici cosı definite:

Λ(t + 1) = C P (t + 1|t) CT + R (A.21)L(t + 1) = P (t + 1|t)CT Λ−1(t + 1)

Figura A.1: Equazioni generali del filtro di Kalman (senza ingressi)

A.3.3 Algoritmo per il filtro di Kalman

Dal set di equazioni del filtro possiamo ricavare immediatamente l’algoritmo che andra a realizzarlo.In particolare, distinguiamo le due fasi di time update, che si occupano della previsione dello statoattuale, e di measurement update che sono responsabili dell’azione di feedback nel filtro: calcolanola stima a posteriori, ponderando opportunamente tra la stima a priori della misura (cioe il prossimovalore di misura che il filtro si aspetta) e il valore di misura vero e proprio.

Le due fasi di time e measurement update si alternano ciclicamente, secondo uno schema sim-ile agli algoritmi a previsore-correttore utilizzati nella risoluzione di alcuni problemi numerici.Illustriamo la sequenza ordinata degli eventi nello schema di funzionamento in figura A.2

A.3.4 Regolazione dei parametri

Nella realizzazione del filtro di Kalman per il nostro algoritmo di visione stereo le matrici Q edR (nel nostro caso sono coefficienti scalari) dovrebbero essere noti prima di attivare il filtro, mapossono anche essere regolati “al volo” grazie a degli slider nella finestra principale dell’applicazionesecondo le esigenze dell’utente. Vogliamo pero descrivere un approccio piu razionale della sempliceosservazione, da parte dell’operatore, della resa qualitativa dell’output.

Una possibile soluzione, applicabile anche al caso di matrici Q ed R variabili nel tempo, e quelladi realizzare, fuori linea, altri (distinti) filtri di Kalman, che si occupino di stimare i valori ottimaliper le matrici di covarianza.

Un’altra soluzione, piu adatta alla regolazione di covarianze costanti, prevede l’uso del cosiddettoperiodogramma cumulato di Bartlett, che si basa sul risultato del teorema fondamentale per cuii parametri del filtro sono regolati in maniera ottimale se e solo se l’errore di predizione ha lecaratteristiche spettrali di un rumore bianco. Oltre a una misura dell’ottimalita dei parametri, iltest di Bartlett da anche informazioni utili sulle variazioni da applicare alle matrici Q ed R permigliorare le performance del filtro.

Il periodogramma cumulato si calcola con una serie di operazioni sui dati del vettore d’inno-

Page 54: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

APPENDICE A. RICHIAMI TEORICI 54

Stima iniz.di x(t0|t0 − 1) e

P (t0|t0 − 1)

?

Meas.Update:L(t + 1) = . . .x(t + 1|t + 1) = . . .P (t + 1|t + 1) = . . .

Time Update:x(t + 1|t) = . . .P (t + 1|t) = . . .

6

?

t=t+1

Figura A.2: la sequenza di operazioni effettuate dall’algoritmo del filtro di Kalman

vazione: prima si sottrae alla serie dei dati la sua media, poi si calcola il modulo quadro dellatrasformata di Fourier della serie.

Ottenuto il periodogramma, si genera un grafico del suo integrale, che in generale sara unafunzione crescente e a simmetria centrale rispetto al punto a frequenza zero. Bisogna infine allineareverticalmente il grafico, in modo da farlo passare per l’origine.

Una variazione dei valori di Q ed R produrra dunque un’alterazione del grafico suddetto; dovremoiterativamente variare i valori per portare il grafico ad assomigliare a una retta passante per l’origine,il che, nel segnale originale, corrisponde all’integrale dello spettro di un rumore bianco.

Page 55: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

Bibliografia

[Baker e Binford] H.H.Baker e T.O.Binford, “Depth from edge and intensity based stereo”,Proceedings of 7th IJCAI, vol.2, pp.631–636, 1981

[Belhumeur e Mumford] P.N.Belhumeur, D.Mumford, “A Bayesian Treatment of the Stereo Corre-spondence Problem Using Half-Occluded Regions”, IEEE Conf. on Computer Vision and Pattern

Recognition, 1992

[Birchfield e Tomasi] S.Birchfield, C.Tomasi, “A Maximum Likelihood Stereo Algorithm”, Pro-

ceedings of the 1998 IEEE International Conference on Computer Vision, Bombay, India,1998

[Brown et al.] M.Z.Brown, D.Burschka, G.D.Hager “Advances in Computational Stereo”, IEEE

Transactions on Pattern Analysis and Machine Intelligence, vol.25, n.8, Agosto 2003

[Cox et al.] I.J.Cox et al., “A Maximum Likelihood Stereo Algorithm”, Computer Vision and Image

Understanding, 63:3, pp. 543–567, Maggio 1996

[Darabiha et al.] A.Darabiha, J.Rose, W.J.MacLean, “Video-Rate Stereo Depth Measurement onProgrammable Hardware”, University of Toronto, 2003

[Feaugeras et al.] O.Feaugeras et al., “Real time correlation-based stereo: algorithm, implementa-tions and applications”, rapporto di ricerca n.2013, Agosto 1993

[Fischetti] M.Fischetti, Lezioni di Ricerca Operativa, IIa ed., Libreria Progetto, Padova, 1999

[Heckerman] D.Heckerman, “A Tutorial on Learning With Bayesian Networks”, Technical Report

for Advanced Technology Division of Microsoft Corporation, Marzo 1995 (rev. Novembre 1996)

[Kalman] R.E.Kalman, “A New Approach to Linear Filtering and Prediction Problems”, inTransactions of the ASME - Journal of Basic Engineering, pp.33–45, 1960

[Mahowald e Delbruck] M.A.Mahowald e T.Delbruck, “Cooperative Stereo Matching Using Staticand Dynamic Image Features”, Analog VLSI Implementation of Neural Systems, pp.213–238,cap.9, Kluwer Academic Publishers, Boston, 1989

[Marr e Poggio] Marr, Poggio, “Coopertive computation of stereo disparity”, Science n.194,pp.283–287

[Micheli] M.Micheli, “Approccio probabilistico alla navigazione autonoma in tre dimensioni”, tesi

di laurea, 1998-1999

[Moravec] Moravec, “Visual mapping by a robot rover”, Proceedings of 6th IJCAI, pp.598–600,1979

55

Page 56: Tesi di Laurea SISTEMI DI VISIONE PER LA NAVIGAZIONE …andrear.altervista.org/contents/tesi/tesi.pdf · Struttura della tesi ... si descrive lo sviluppo di un complesso algoritmo

BIBLIOGRAFIA 56

[Ohta e Kanade] Y.Ohta e T.Kanade, “Stereo by intra- and inter-scanline search using dynamicprogramming”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.PAMI-7,numero 7, 1985

[Picci] G.Picci, Filtraggio Statistico (Wiener, Levinson, Kalman) e Applicazioni, Libreria Progetto,Padova

[Schreer, Brandenburg, Kauff] O. Schreer, N. Brandenburg, P. Kauff “A Comparative Study on Dis-parity Analysis Based on Convergent and Rectified Views”, British Machine Vision Conference,2000

[Szelinski e Scharstein] R.Szelinski, D.Scharstein, “A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms”, International Journal of Computer Vision, 47(2002), pp.7–42

[Tomasi e Manduchi I] C.Tomasi, R.Manduchi, “Stereo Without Search”, European Conference on

Computer Vision (ECCV), 1996

[Tomasi e Manduchi II] C.Tomasi, R.Manduchi, “Stereo Matching as a Nearest-Neighbor Prob-lem”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.20, numero 3, Marzo1998

[Trucco et al.] E.Trucco et al., “SSD Disparity Estimation for Dynamic Stereo”, British Machine

Vision Conference

[Welsh e Bishop] G.Welsh, G.Bishop, “An Introduction to the Kalman Filter”, ACM SIGGRAPH

2001 course 8, 2001

[Wang] A.Wang, “Java Stereopsis”, tesi di laurea, Ottobre 2002

[Wakabayashi] .Wakabayashi, M.Aoki, “Traffic Flow Measurement Using Stereo Slit Camera”,Intelligent Transportation Systems Conference, Washington D.C., USA, 3-6 Ottobre 2004

[Zhang] Z.Zhang “A Flexible New Technique for Camera Calibration”, tesi di laurea, 2 Dicembre1998, aggiornato 14 Dicembre 1998 e 25 Marzo 1999

[OpenCV] http://www.sourceforge.net/projects/opencvlibrary, sito della libreria OpenCV

[IPP] http://www.intel.com/software/products/ipp/ippvm20/index.htm, sito delle Intel IntegratedPerformance Primitives (IPP)

[Middlebury] http://cat.middlebury.edu/stereo/, un sito dedicato al confronto e al benchmarkingdi svariati algoritmi per la visione stereo, mantenuto da Scharstein e Szelinski.