Università degli Studi di Parma - ce.unipr.it · guidato lungo un percorso a prima vista ... 2.2.2...
Transcript of Università degli Studi di Parma - ce.unipr.it · guidato lungo un percorso a prima vista ... 2.2.2...
Università degli Studi di Parma Facoltà di Ingegneria
Corso di Laurea in Ingegneria Elettronica
Analisi del movimento tramite sensori ottici omnidirezionali
Relatore: Chiar.mo Prof. Ing. Giovanni Adorni Correlatori: Dott. Ing. Stefano Cagnoni
Dott. Ing. Monica Mordonini
Tesi di Laurea di: Gabriele Neva
Anno Accademico 2000-2001
Ringraziamenti
Desidero ringraziare il Prof. Giovanni Adorni per avermi dato la possibilità di
svolgere questo lavoro consentendomi di affrontare problematiche appartenenti ad
una materia innovativa ed affascinante: la visione artificiale.
Uno speciale ringraziamento va al Dott. Stefano Cagnoni per l’assoluta disponibilità
dimostratami durante tutto il periodo di svolgimento di questo lavoro e per avermi
guidato lungo un percorso a prima vista difficile.
Ringrazio inoltre la Dott.ssa Monica Mordonini per la presenza costante ed i
preziosi consigli.
Vorrei anche ringraziare gli studenti del Laboratorio di Visione e del Laboratorio di
Robotica i quali mi hanno aiutato a superare i primi ostacoli incontrati nel corso del
progetto.
Un ringraziamento è dovuto anche a chi, nel corso di tutti gli anni universitari, mi è
stato vicino: in primo luogo ai miei compagni Ivan, Mauro, Diego, Marco e Fabio,
ai numerosi amici e parenti i quali mi hanno incoraggiato ed aiutato ad andare
avanti anche nei momenti più difficili.
Indice Ringraziamenti
Introduzione
Capitolo 1 Strumenti per l’elaborazione delle immagini
1.1 La visione artificiale 1
1.2 Elementi hardware di acquisizione ed elaborazione 3
1.2.1 La telecamera ed il sensore CCD 4
1.2.2 Il framegrabber 5
1.3 Analisi del rumore 7
1.4 Gli operatori di filtraggio del rumore 8
1.4.1 Filtro gaussiano 10
1.4.2 Filtro Unsharp Masking 11
1.4.3 Filtro quantizzatore 13
1.5 Segmentazione dell’immagine 14
1.6 Estrazione dei contorni 16
1.6.1 Estrattore di Roberts 17
1.6.2 Estrattore di Sobel 19
1.6.3 Estrattore di Prewitt 20
1.6.4 Estrattore pseudo laplaciano assoluto 21
Capitolo 2 Il flusso ottico
2.1 Definizione di flusso ottico 23
2.1.1 Visione stereoscopica 24
2.1.2 Informazioni derivanti dal flusso ottico 26
2.2 Metodi di stima del flusso ottico 27
2.2.1 Algoritmi di tipo Gradient Based 28
2.2.2 Algoritmo di Horn & Shunk 32
2.2.3 Vantaggi e svantaggi del metodo basato sul gradiente 35
2.2.4 Algoritmi di Matching 36
2.2.5 Algoritmo di Barnard & Thompson 39
2.2.6 Vantaggi e svantaggi degli algoritmi di Matching 50
Capitolo 3 Il sensore omnidirezionale
3.1 “Vedere” a 360° con il sensore catadiottrico 51
3.2 Progettazione del sensore omnidirezionale HOPS 53
3.2.1 Specifiche adottate per la realizzazione del profilo dello specchio 56
3.2.2 Lo specchio 57
3.3 Cenni sulla calibrazione e sulla rimozione prospettica di HOPS 59
3.3.1 Calibrazione geometrica o esplicita 63
3.3.2 Calibrazione empirica o implicita 64
Capitolo 4 L’algoritmo SPY
4.1 Applicazione ad un caso: ambiente ‘RoboCup’ 65
4.2 I vincoli imposti 65
4.2.1 Le scelte strumentali 68
4.3 L’algoritmo 69
4.3.1 Filtraggio del rumore associato ai frame in ingresso 70
4.3.2 Estrazione dei contorni 72
4.3.3 Rimozione prospettica ‘IPM’ 72
4.3.4 Estrazione dei 15 codici significativi 75
4.3.5 Sottrazione del fondo tramite confronto tra istogrammi 78
4.3.6 Codifica Soft 3×3 82
4.3.7 Estrazione del flusso ottico 84
4.3.8 Filtraggio finale del rumore sui vettori di flusso ottico 88
4.4 Gli operatori di Matching 89
Capitolo 5 Programma, test e risultati
5.1 Il programma SPY 92
5.1.1 Interfaccia grafica di SPY 95
5.1.2 Le caratteristiche dinamiche del programma 96
5.2 Primi test visivi su immagini piane 97
5.3 Test su immagini acquisite dal sensore HOPS 100
5.3.1 Test n°1 102
5.3.2 Test n°2 104
5.3.3 Test n°3 106
5.3.4 Conclusioni riguardo alle prove effettuate sulle immagini del sensore 108
5.4 Stima della velocità e del tempo di esecuzione 113
Conclusioni
Bibliografia
Capitolo 1 Strumenti per l’elaborazione delle immagini 1
1.1 La visione artificiale
“La visione artificiale si pone l’obiettivo di automatizzare ed integrare una vasta
gamma di processi e rappresentazioni tipiche della percezione visiva” [Ballard e
Brown, 1982].
Il progetto di calcolatori in grado di interpretare le informazioni di una scena o di
una serie di immagini è stato campo di ricerca dell’intelligenza artificiale degli
ultimi trent’anni.
Come spesso accade in elettronica, la tecnologia è stato un fattore “limitante” per
l’evolversi della ricerca. Infatti, le valide intuizioni teoriche non poterono trovare
riscontro nella pratica [Ballard, 1982] ma con l’evolversi delle architetture e della
potenza di calcolo delle macchine, nell’ultimo decennio sono stati compiuti dei
notevoli passi avanti soprattutto nell’interpretazione di complesse scene 3D.
Per una vasta gamma di problemi ci si deve accontentare di macchine general-
purpose (anche se potenti) perché è in questo senso che le regole di mercato
direzionano la produzione. Per applicazioni specifiche infatti, occorrerebbero
architetture progettate ad hoc ma ovviamente i costi salirebbero notevolmente.
Al fine di progettare sistemi di visione completi che convertano i dati in input in
informazioni preziose che diano informazioni sulla scena circostante, un sistema
tipico usa i seguenti passi:
• Cattura dell’immagine e miglioramento della qualità.
• Segmentazione.
• Estrazione delle feature (contorni, discontinuità, angoli ecc.)
• Processo di confronto ed analisi tra le feature estratte e modelli noti a priori
(riconoscimento di oggetti, studio del flusso ottico, autolocalizzazione ecc.).
Capitolo 1 Strumenti per l’elaborazione delle immagini 2
In questo elenco, il livello di complessità del processo aumenta procedendo verso il
basso, quindi si può notare una natura gerarchica del problema che ha influenzato
gran parte del lavoro svolto nel settore.
Esso è un approccio computazionale alla visione, in cui la percezione visiva è
fondamentalmente un problema di elaborazione di informazione su più livelli
gerarchici [Marr 1980]:
− L’input del sistema è l’immagine (o più immagini) intesa come matrice di valori
di intensità luminosa (o insieme di matrici per le immagini a colori) e assunta
come dato di partenza la cui formazione è un processo indipendente dalle fasi
successive.
− Un primo stadio elaborativo, che produce il cosiddetto raw primal sketch, è
quello di estrazione di informazioni elementari dall’immagine: i contorni, le
discontinuità di intensità.
− Il raw primal sketch contiene un’informazione ancora parziale, frammentaria,
dipendente dal punto di vista della telecamera. Con varie tecniche legate al
gradiente di luminosità (shape from shading, shape from texture, shape from
contour, il metodo delle immagini intrinseche, che cerca di combinare le
precedenti, eccetera) si cerca di completare questa informazione e tramite la
visione stereo ottenerne di aggiuntive sulla profondità spaziale.
− Si giunge quindi alla cosiddetta rappresentazione 2½D, in cui il tipo di
rappresentazione è sempre l’immagine ma tramite la componente di profondità
si aggiunge informazione tridimensionale. Questa informazione è comunque
sempre legata al punto di vista della telecamera: su essa non si è ancora giunti a
introdurre concetti di regione, oggetto, parte.
− L’ultima fase di elaborazione, che porta alla rappresentazione 3D, cerca infine
di astrarsi dal punto di vista della telecamera e di interpretare la scena
individuando oggetti, caratterizzandone la forma in termini di orientazione delle
superfici elementari che li compongono e spostando il sistema di riferimento
negli oggetti individuati stessi, al preciso scopo di renderne la rappresentazione
indipendente dal punto di vista.
Capitolo 1 Strumenti per l’elaborazione delle immagini 3
Quasi tutti i primi studi ed esperimenti riguardanti la percezione robotica si sono
rifatti al paradigma della percezione generalizzata: il sistema visivo veniva
considerato come un modulo a sé stante, indipendente dal resto, anche a causa delle
difficoltà tecniche inizialmente incontrate ed il notevole peso elaborativo richiesto.
Inoltre, per assicurare in ogni situazione l’acquisizione di sufficiente informazione,
ci si poneva l’obiettivo di una ricostruzione tridimensionale completa della scena
osservata. Questi due aspetti finivano per diventare limiti del sistema stesso: si
determinava uno spreco di risorse elaborative e il sistema era troppo rigido per
operare efficientemente in tempo reale.
Dalla rilevazione di questi limiti ebbe origine il secondo paradigma: quello di
percezione modulare. In questo caso il sistema sensoriale non è più una componente
indipendente, ma interagisce e si mette al servizio degli altri moduli del robot. In
pratica, di volta in volta, ricerca e rileva solamente le informazioni necessarie, senza
andare oltre il bisogno di informazioni del robot.
Verranno ora decrittati alcuni dei livelli gerarchici citati in precedenza mantenendo
una successione che rispetti l’ordine di importanza e di complessità.
1.2 Elementi hardware di acquisizione ed elaborazione
Affrontiamo il livello più basso della scala gerarchica della visione artificiale;
quello che nel paragrafo 1.1 è stato chiamato “cattura dell’immagine” .
Diamo ora un accenno ai principali componenti elettronici di una catena di
acquisizione di immagini.
In figura 1.1 viene riportato un semplice schema di questa catena:
Capitolo 1 Strumenti per l’elaborazione delle immagini 4
Fig. 1.1
1.2.1 La telecamera ed il sensore CCD
In ingresso a questo dispositivo entra luce sotto forma di onda elettromagnetica ed
esce un segnale analogico (nella maggior parte dei casi) proporzionale alla
luminosità dell’immagine acquisita .
Essenzialmente, il processo di trasformazione della telecamera si divide in 3 parti:
1 - Attraversamento delle “ottiche”. Si intende tutto ciò che determina il
cammino ottico della luce quindi: sistema di lenti, meccanismo dello zoom, della
messa a fuoco, del diaframma e dell’otturatore.
2 - Il sensore CCD. E’ l’elemento che converte la luce in segnali elettrici; è il
cuore del sistema e l’apparato più critico per ciò che riguarda il rumore ed il suo
filtraggio. E’ costituito da fototransistor che convertono l’intensità luminosa in
elettroni liberi; disponendo di una griglia di questi elementi fotosensibili si ottiene
una matrice ordinata di punti. Il numero di questi elementi determina la risoluzione
dell’immagine.
Focalizzando un’immagine sulla griglia si crea una “copia elettrica” dell’immagine
stessa, nella quale ogni elemento fotosensibile contribuisce con una carica
proporzionale alla luminosità di quel punto. Il tutto viene integrato con un apparato
di trasferimento di carica dal fototransistor al dispositivo di lettura, il quale si
occupa di generare un segnale elettrico continuo che rappresenta l’inviluppo della
distribuzione di carica lungo le righe del CCD.
Capitolo 1 Strumenti per l’elaborazione delle immagini 5
In figura 1.2 viene riportato uno schema del dispositivo nella sua totalità:
Fig. 1.2
3 -I circuiti di controllo. Sono circuiti elettronici che manipolano l’immagine
generata dal sensore e governano il funzionamento della telecamera (messa a fuoco
automatica ecc.)
1.2.2 Il frame grabber
In commercio esistono telecamere la cui uscita è in formato digitale, il quale associa
un numero binario alla luminosità di ogni pixel secondo una certa convenzione, di
modo da rendere l’output direttamente elaborabile dal calcolatore.
Capitolo 1 Strumenti per l’elaborazione delle immagini 6
Più frequentemente (ed è il nostro caso) l’uscita è adattata agli standard televisivi
(PAL, NTSC ecc.); ciò impone l’inserimento, nella catena di figura 1.1, di un
modulo che realizzi una conversione analogico/digitale.
Quindi, in ingresso al frame grabber, vi sarà il segnale analogico di uscita Q(x,y)
della telecamera che verrà trasformato nel frame ovvero in un’immagine (in
codifica numerica) depositata nella memoria del computer.
Il frame grabber compie, quindi, due operazioni: un campionamento per
discretizzare (in pixel) il segnale televisivo continuo, ed una conversione analogico
digitale (per assegnare un valore numerico all’intensità luminosa dei pixel).
Le due operazioni svolte sul segnale introducono dei limiti sistematici alla qualità
dell’immagine. Il segnale elettrico rappresentante il contenuto di elettroni di ogni
pixel, infatti, viene trasformato in un segnale continuo dal dispositivo di lettura del
CCD ma in questo modo il frame grabber è costretto a riprodurre la discretizzazione
tramite un campionamento periodico. Di frequente avviene che il campionamento
non sia sincronizzato con il segnale televisivo e come conseguenza si avrà una
discrepanza geometrica ed in termini di intensità luminosa, tra i pixel prodotti in
output dal frame grabber e quelli reali del sensore CCD.
Questo aspetto è fortunatamente trascurabile quando , come in questa tesi, si lavora
a 8 bpp (bit per pixel) .
Dopo aver elencato gli elementi della più generale delle catene hardware (figura
1.1) per l’acquisizione di immagini, cerchiamo di analizzare uno dei fenomeni
intrinseci al progetto che causa i maggiori problemi: il rumore.
Come in ogni sistema elettronico infatti il risultato è affetto da questo fenomeno
aleatorio il quale si somma algebricamente a tutti i segnali elettrici presenti nella
catena di dispositivi utilizzati falsando i dati in uscita dal sistema.
Capitolo 1 Strumenti per l’elaborazione delle immagini 7
1.3 Analisi del rumore
Soffermiamoci quindi su quel livello gerarchico che nella scala dei processi di
elaborazione delle immagini (paragrafo 1.1) abbiamo chiamato “miglioramento
della qualità”.
Oltre alla distorsione introdotta dall’ottica di tutte le telecamere (se ne parlerà nel
Cap. 3) che in prima approssimazione può essere considerata trascurabile (modello
pin-hole), si aggiunge un fenomeno additivo comune a tutti i circuiti elettronici :
AWGN (letteralmente Additive White Gaussian Noise), il rumore gaussiano bianco.
Gli elementi critici a questo riguardo, in un modulo di acquisizione di immagini e di
successiva elaborazione, possono essere svariati; nel lavoro svolto si è preferito
concentrare l’attenzione sul componente più a rischio della catena di figura 1.1 : il
sensore CCD.
Possiamo infatti attribuire, in buona approssimazione, a questo elemento, la
maggior parte della quantità di rumore che si somma al “segnale immagine”, tra la
cattura da parte della telecamera e la memorizzazione dei dati in forma digitale
nella memoria del computer.
Le sorgenti di rumore del CCD possono essere raggruppate in quattro categorie
principali:
1. Rumore di ingresso : i fototransistor raccolgono luce che, per sua natura,
genera rumore granulare (dovuto alla quantizzazione dell’energia
elettromagnetica).
2. Rumore di trasferimento: La carica raccolta dagli elementi fotosensibili
viene trasferita ai dispositivi di lettura tramite registri CCD; in questa fase si
hanno cariche in movimento su percorsi conduttori non ideali e quindi con
una piccola componente resistiva. Tutto questo produce rumore termico di
tipo Gaussiano bianco e, tra le quattro componenti, questa è probabilmente
quella preponderante.
Capitolo 1 Strumenti per l’elaborazione delle immagini 8
3. Rumore in uscita: l’elemento rivelatore dei pacchetti di carica sito nel
dispositivo di lettura del CCD appare normalmente come un diodo polarizzato
inversamente o come un gate flottante, quindi essenzialmente come una
capacità fonte di rumore capacitivo.
4. Fixed Pattern Noise: quando un sensore viene illuminato uniformemente
dovrebbe fornire un segnale costante, in realtà vi sono fluttuazioni aleatorie,
dovute ai vari tipi di rumore precedentemente esaminati, che tuttavia tendono a
scomparire effettuando delle medie temporali su varie letture di ogni singolo
pixel. Se il numero di dati sul quale si effettua la media tende ad infinito, la
componente aleatoria del rumore scompare, rimane tuttavia una disuniformità
sul livello del singolo pixel che si presenta in modo sistematico e costituisce il
così detto Fixed Pattern Noise.
1.4 Gli operatori di filtraggio del rumore
Nonostante tutte le semplificazioni che si possono adottare, appare chiara l’esigenza
di un modello matematico che consenta, in termini analitici, di stimare ed in
qualche modo diminuire gli effetti del rumore sull’immagine, recuperando
l’originale qualità (image restoration). La letteratura in materia è ricca ma non
esiste un approccio, un algoritmo o un modello di validità generale; occorre infatti
stabilire lo scopo del lavoro da svolgere per poi risalire al tipo di operatore da
utilizzare.
Da un punto di vista della ricerca condotta in questa tesi, risulta di fondamentale
importanza la velocità di esecuzione ed è sulla base di questo vincolo unito al tipo
di architettura del calcolatore utilizzato che sono state operate le scelte progettuali
(si veda Cap. 4).
Gli operatori che verranno illustrati traggono la loro formulazione dalla comune
modellistica delle comunicazioni elettriche, con la sola differenza che, in questo
Capitolo 1 Strumenti per l’elaborazione delle immagini 9
caso, i segnali e tutti gli operatori saranno bidimensionali e non avranno un dominio
temporale ma spaziale.
In figura 1.3 si considera l’intero sistema di ripresa come se fosse un canale che
altera l’immagine aggiungendo rumore.
Il modulo di filtraggio, opera una convoluzione bidimensionale con un’opportuna
risposta impulsiva che descrive il comportamento del filtro.
Fig. 1.3
In riferimento all figura 1.3 il frame filtrato ),( yxf si ottiene attraverso la
convoluzione del frame di ingresso ),( yxi con la funzione di trasferimento ),( yxh
del filtro.
Tale operazione si indica con il seguente formalismo nel dominio spaziale 2ℜ :
∫ ∫∞
∞−
∞
∞−
⋅⋅−−⋅=∗= dYdXYyXxhYXiyxhyxiyxf ),(),(),(),(),( ; (1.1)
Nel campo dell’elaborazione delle immagini si ha necessariamente a che fare con
oggetti discreti e di conseguenza l’integrale di convoluzione diviene una
sommatoria:
∑ ∑−= −=
⋅−−=l
li
J
Jj
jihjmiminmf ),(),(),( . (1.2)
Capitolo 1 Strumenti per l’elaborazione delle immagini 10
Riportiamo un elenco dei principali tipi di filtri presenti in letteratura.
1.4.1 Filtro Gaussiano
Prende questo nome a causa della forma della sua maschera di convoluzione
(equivalente a ciò che nelle telecomunicazioni viene chiamata risposta impulsiva
nel dominio del tempo) di tipo gaussiano.
2
22
2
21),( σ
πσ
yx
eyxg+−
⋅= (1.3)
Riconducendoci ad un sistema discreto applichiamo la (1.2) al pixel di coordinate
(m,n) dell’immagine, applicando una maschera 3×3 (l=3 , J=3) o 5×5 (l=5 , J=5)
centrata sul pixel ed eseguendo la convoluzione discreta 1.2 con i seguenti valori di
),( nmh (Zamperoni 1998):
Il risultato della convoluzione verrà diviso per un fattore di normalizzazione della
gaussiana equivalente a 2.72 per la maschera 3×3 e 10.8 per quella 5×5.
L’uso di maschere di questo tipo, rispetto ad un semplice calcolo di media (che
avrebbe una maschera composta da valori tutti uguali), risiede nel fatto che la
somma pesata con i coefficienti della gaussiana discretizzata preserva molto meglio
i fronti di salita (in corrispondenza delle transizioni tra sfondo ed oggetto).
0.13 0.28 0.37 0.28 0.13
0.28 0.61 0.78 0.61 0.28
0.37 0.78 1.00 0.78 0.37
0.28 0.61 0.78 0.61 0.28
0.13 0.28 0.37 0.28 0.13
0.11 0.32 0.11
0.32 1.00 0.32
0.11 0.32 0.11
Capitolo 1 Strumenti per l’elaborazione delle immagini 11
Il risultato resta comunque quello di un filtro passa basso che filtra con efficienza
massima il rumore alle alte frequenze.
L’efficienza di questo filtro è notevole, il prezzo da pagare è l’uso di coefficienti a
virgola mobile (le variabili di tipo float richiedono risorse elevate al calcolatore) sia
nella convoluzione discreta che nell’operazione di moltiplicazione rallentano il
processo di elaborazione.
1.4.2. Filtro Unsharp Masking
L’effetto delle distorsioni introdotte dal sistema di ripresa sull’immagine è
tipicamente quello di innalzare il livello di grigio del fondo in modo disomogeneo e
di sovrapporre del rumore aleatorio; si hanno quindi le seguenti richieste: sottrarre il
livello di fondo , sottrarre il rumore alle alte frequenze spaziali pur evidenziando le
transizioni fra i diversi oggetti .
Si osserva che solitamente il livello di fondo è variabile ma in modo lento, al
contrario del rumore aleatorio.
Sulla base dell’ipotesi di rumore a media nulla si può pensare di isolare il livello di
fondo tramite un pesante filtraggio passabasso, ovvero tramite l’applicazione di un
filtro Gaussiano di notevoli dimensioni.
Si realizza, così, l’operatore “unsharp masking” (Zamperoni 1996) la cui
formulazione analitica è la seguente:
),(),(),(),( yxgyxiyxiyxf ∗−= ; (1.4)
dove ),( yxg è la risposta impulsiva spaziale di un filtro gaussiano opportunamente
discretizzato per lo scopo.
Per aumentare la velocità di calcolo si può alternativamente sostituire il filtraggio
gaussiano con una più semplice media pesata dei livelli di grigio attorno al pixel su
Capitolo 1 Strumenti per l’elaborazione delle immagini 12
cui viene centrata la solita maschera 3×3 o 5×5; così al nuova formulazione
analitica è la seguente:
{ }),(),(),( yxiEyxiyxf −= ; (1.5)
Riportaimo le maschere di convoluzione per entrambi i casi (1.4) ed (1.5):
Unsharp Masking con gaussiana:
Il risultato in uscita dalla prima maschera verrà diviso per il fattore di
normalizzazione 2.72 mentre quello in uscita dalla seconda, per 10.8.
Unsharp Masking con media:
Il risultato in uscita dalla prima maschera verrà diviso per il fattore di
normalizzazione 9 mentre quello in uscita dalla seconda per 25.
-0.13 -0.28 -0.37 -0.28 -0.13
-0.28 -0.61 -0.78 -0.61 -0.28
-0.37 -0.78 9.80 -0.78 -0.37
-0.28 -0.61 -0.78 -0.61 -0.28
-0.13 -0.28 -0.37 -0.28 -0.13
-0.11 -0.32 -0.11
-0.32 1.72 -0.32
-0.11 -0.32 -0.11
-1.00 -1.00 -1.00 -1.00 -1.00
-1.00 -1.00 -1.00 -1.00 -1.00
-1.00 -1.00 24.00 -1.00 -1.00
-1.00 -1.00 -1.00 -1.00 -1.00
-1.00 -1.00 -1.00 -1.00 -1.00
-1.00 -1.00 -1.00
-1.00 8.00 -1.00
-1.00 -1.00 -1.00
Capitolo 1 Strumenti per l’elaborazione delle immagini 13
Osservando le maschere si nota come il centro abbia un coefficiente decisamente
superiore agli altri punti e ciò rende questo filtro molto sensibile al rumore puntuale
alle alte frequenze rispetto al filtro gaussiano del paragrafo precedente.
Rispetto al precedente, questo filtro, nella versione con media, ha il vantaggio di
non dover operare moltiplicazioni su coefficienti a virgola mobile; la selettività nel
filtraggio risulta però notevolmente diminuita.
1.4.3 Filtro quantizzatore
Da osservazioni di tipo statistico si deduce che il rumore aleatorio provoca
oscillazioni, sul livello originario di grigio di ogni pixel, su una fascia di valori
compresi tra i 3 e gli 8 livelli sui 256 possibili (lavorando a 8 bbp).
Queste oscillazioni rendono “inutilizzabili” i 2 ( o 3) bit meno significativi di ogni
pixel; di conseguenza la loro soppressione non comporta alcuna perdita di
informazione nell’immagine, o meglio, viene distrutta tutta quell’informazione che
è irrimediabilmente corrotta dal rumore.
Tutto ciò si traduce nel dividere il livello di grigio di ogni pixel per 2, 4 o 8 a
seconda della selettività desiderata per il filtro.
Si intuisce immediatamente come la grossolanità di questo operatore lo renda
inadatto per applicazioni (come il riconoscimento di oggetti) in cui la precisione sul
singolo bit riveste un ruolo importante.
Il grande pregio è la semplicità delle operazioni coinvolte nella sottrazione del
rumore; a differenza dei filtri descritti in precedenza infatti, il rumore viene filtrato
operando una semplice traslazione a destra (di 1, 2 o 3 posizioni) dei bit meno
significativi che compongono il byte del livello di grigio e questo lo rende adatto
per applicazioni in real time .
Capitolo 1 Strumenti per l’elaborazione delle immagini 14
1.5 Segmentazione dell’immagine
E’ il secondo gradino nella scala gerarchica citata in precedenza ed anche se viene
posizionata ad un più basso livello, la segmentazione è strettamente correlata con
l’estrazione delle feature.
Con il termine segmentazione si indica quel processo atto a separare, in prima
analisi, gli oggetti dallo sfondo di una scena acquisita. [Marr & Hildredth 1980].
Questa separazione può avvenire in 2 differenti metodi:
• Metodo basato sull’estrazione dei contorni per localizzare le discontinuità.
• Metodo basato sulle similitudini cromatiche dei pixel di certe regioni
dell’immagine.
Il successo della segmentazione è misurato in base all’utilità degli oggetti presenti
nell’immagine che si è riusciti ad evidenziare rispetto allo sfondo [Prager 1987].
In analogia ad altri processi di elaborazione dell’immagine che abbiamo visto e che
saranno descritti nei successivi capitoli, anche le tecniche di segmentazione non
sono giudicabili in assoluto ma vanno introdotti vincoli (solitamente le specifiche
richieste dal problema) che ne influenzano la scelta.
Nell’approccio basato sull’estrazione dei contorni, si evidenziano le discontinuità
dei pixel adiacenti esaltando l’eterogeneità della scena.
La maggior parte degli estrattori dei contorni si basano sulle variazioni
dell’intensità luminosa di ogni singolo pixel mentre i più sofisticati si basano sulle
discrepanze delle texture presenti nella scena ed addirittura sul movimento degli
oggetti tra un immagine ed un’altra.
Questo tipo di approccio è adatto a scene con sfondo cromaticamente uniforme ed
oggetti ben distinguibili (esempio ideale : cubo nero in una stanza bianca) ma si
Capitolo 1 Strumenti per l’elaborazione delle immagini 15
riscontrano difficoltà quando il background dell’immagine diviene via via più
complesso.
Col metodo basato sulle similitudini dei pixel accumulabili in regioni, si tenta
invece di far corrispondere ad un unico oggetto tutti quei pixel che hanno
caratteristiche simili (colore, intensità di illuminazione, riflettanza ecc..). Si assume
quindi, come ipotesi, che un oggetto sia costituito da punti aventi caratteristiche
molto simili tra loro.
Tale ipotesi perde validità quando l’oggetto è caratterizzato da texture complesse.
In un caso ideale, i contorni definiscono una regione chiusa e quindi, teoricamente, i
due metodi dovrebbero portare agli stessi risultati: quando i contorni sono stati
estratti infatti, la regione corrispondente all’oggetto può ottenersi mediante un
algoritmo di riempimento; viceversa, una volta individuata una regione, si
estraggono i contorni semplicemente seguendone il perimetro.
Capitolo 1 Strumenti per l’elaborazione delle immagini 16
1.6 Estrazione dei contorni
Nonostante sia un processo “primordiale” per la visione artificiale e
l’interpretazione delle informazioni, l’estrazione dei contorni riveste (così come il
filtraggio del rumore) tuttora un ruolo chiave; ecco perché il campo di ricerca in
questo settore risulta più che mai attivo.
Nell’affrontare questo lavoro mi sono spesso imbattuto in difficoltà di
interpretazione dei dati dovute principalmente ad una non ideale segmentazione.
Alcuni profili monodimensionali delle
transizioni tra i vari livelli di grigio.
Fig. 1.4
L’estrazione dei contorni si basa sull’osservazione del gradiente :
consideriamo la funzione ),( yxE rappresentante l’intensità luminosa (i livelli di
grigio ipoteticamente continui) sul dominio bidimensionale dell’immagine.
Capitolo 1 Strumenti per l’elaborazione delle immagini 17
Definendo:
dxyxdEyxEx
),(),( = ; e dy
yxdEyxEy),(),( = (1.6)
possiamo rappresentare il gradiente di luminosità che ogni pixel possiede, come un
vettore di intensità pari a:
)),(),(( 22 yxEyxEG yx += ; (1.7)
e di direzione uguale a:
x
y
EE
arctan=θ . (1.8)
La differenza sostanziale, tra gli operatori di estrazione dei contorni presenti in
letteratura, risiede nel diverso modo di approssimare la 1.7 e la 1.8
1.6.1 Estrattore di Roberts
Questo operatore classifica i pixel di un’immagine come i punti di un contorno se il
valore del gradiente dei livelli di grigio calcolato in un’intorno 2×2 del pixel in
questione, supera un certo valore di soglia.
Il calcolo del gradiente non è simmetrico ossia non è centrato attorno al punto che si
sta esaminando.
La definizione dell’estrattore è descritta, assieme alla regola di decisione, nel
seguente modo:
Siano A, B, C e D quattro pixel adiacenti appartenenti all’immagine, allora:
Capitolo 1 Strumenti per l’elaborazione delle immagini 18
G = max { abs (A – D) , abs (B – C) };
Se G > Soglia ⇒ A è un punto di contorno.
Da notare la semplicità con cui viene approssimata la 1.7 grazie alla quale vengono
richieste operazioni semplicissime che rendono questo estrattore adatto per
applicazioni real-time.
Ovviamente il prezzo da pagare è una qualità modesta della forma dei contorni che
esce dall’applicazione dell’operatore.
Questo punto è stato fonte di molti dubbi nello svolgimento del lavoro di tesi, così
da arrivare alle conclusioni che verranno specificate nel Cap. 4.
Fig. 1.4
In figura 1.4, da un’immagine piana vengono estratti i contorni tramite estrattore di
Roberts con soglia pari a 2.
E’ interessante notare come questo operatore (il più veloce) fornisca risultati buoni
all’interno della regione confinata nel contorno (pochi pixel neri) mentre risulta
poco efficace nel delineare nettamente i bordi.
A B
C D
Capitolo 1 Strumenti per l’elaborazione delle immagini 19
1.6.2 Estrattore di Sobel
In questo caso si determina inizialmente il gradiente, utilizzando i pixel dell’intorno
adiacente per poi selezionare i punti di contorno, confrontando il gradiente relativo
con una soglia prefissata:
Siano A, B, C, D, E, F, G, H ed I , nove pixel adiacenti appartenenti all’immagine,
allora:
G = abs [(A+2B+C) – (G+2H+I)] + abs [( A+2D+G) – (C+2F+I)]
Se G > Soglia ⇒ A è un punto di contorno.
Vi è una maggior complessità nel calcolo del gradiente dovuta all’applicazione di
una maschera 3×3 ed alle moltiplicazioni per 2 (anche se quest’ultime si possono
tradurre in un semplice scorrimento a sinistra di una posizione dei bit rappresentanti
il livello di grigio).
Tutto ciò è a vantaggio di precisione e di discreta stima dei contorni.
Fig. 1.5
A B C
D E F
G H I
Capitolo 1 Strumenti per l’elaborazione delle immagini 20
In figura 1.5, da un’immagine piana, a livelli di grigio pressoché uniformi vengono
estratti i contorni tramite estrattore di Sobel con soglia pari a 6. A differenza del
precedente questo operatore marca in maniera netta i bordi degli oggetti; il suo
livello di complessità è superiore a quello che si trova nell’estrattore di Roberts.
1.6.3 Estrattore di Prewitt
E’ analogo al precedente, l’unica differenza risiede nel motodo di approssimazione
della 1.7 .
Siano A, B, C, D, E, F, G, H ed I , nove pixel adiacenti appartenenti all’immagine,
allora:
G = max { abs [(C+F+I) – (A+D+G)] + abs [(G+H+I) –
(A+B+C)] } ;
Se G > Soglia ⇒ A è un punto di contorno.
Fig. 1.6
A B C
D E F
G H I
Capitolo 1 Strumenti per l’elaborazione delle immagini 21
In figura 1.6 sono illustrate le prestazioni dell’estrattore di Prewitt con soglia pari
ad 8. ; il suo livello di complessità è inferiore all’operatore di Sobel. I risultati
ottenuti lo rendono particolarmente adatto per applicazioni su immagini acquisite
tramite sensore omnidirezionale (Cap. 3).
1.6.4 Estrattore pseudo-Laplaciano assoluto
E’ analogo al precedente, l’unica differenza risiede nel metodo di approssimazione
della 1.7 .
Siano A, B, C, D, E, F, G, H ed I , nove pixel adiacenti appartenenti all’immagine,
allora:
G = abs [(D-2E+F) – (B-2E+H)] = abs (B+D+H+F+4E);
Se G > Soglia ⇒ A è un punto di contorno.
Fig. 1.7
A B C
D E F
G H I
Capitolo 1 Strumenti per l’elaborazione delle immagini 22
La figura 1.6 mostra i contorni ottenuti mediante l’utilizzo di un estrattore pseudo-
laplaciano con soglia pari a 7.
Questo operatore è stato testato anche su immagini piane ma i risultati poco
soddisfacenti data la troppa selettività dell’estrazione mi hanno indotto ha scartarlo
in particolar modo nell’utilizzo su immagini (come in figura 1.7) non piane.
Concludendo: i restanti livelli gerarchici della visione artificiale verranno analizzati
ampiamente nei successivi capitoli in quanto facenti parte dell’algoritmo sviluppato
Capitolo 2 Il flusso ottico 23
2.1 Definizione di flusso ottico
Le prime definizioni di Flusso Ottico risalgono agli anni 50, quando presero il via
ricerche nel campo della visione artificiale.
Impropriamente si potrebbe definire il Flusso Ottico come la “rappresentazione
delle traiettorie seguite da ogni punto degli oggetti inquadrati durante il loro
movimento rispetto alla telecamera
(Gibson 1959)”; ma questa è solo una semplice definizione basata su ciò che
vediamo quando viene visualizzato il flusso ottico ottenuto dal raffronto di due
immagini.
In realtà “optical flow ” (flusso ottico) è l’insieme dei vettori rappresentanti le
velocità (proiettate sul piano immagine) di tutti i punti di un oggetto che si muove
rispetto ad un osservatore (Klaus&Horn 1981) ; i vettori del flusso ottico hanno,
infatti, intensità proporzionale allo spostamento dei punti nell’unità di tempo
(quest’ultima nel campo della visione artificiale è l’intervallo fra l’ acquisizione di
due frame consecutivi) e quindi rappresentano delle vere e proprie velocità.
Consideriamo quindi un oggetto rigido in moto relativo rispetto ad un sensore
posizionato in O, ad esempio una telecamera: indicando con 0P e '0P un punto
dell’oggetto ed il corrispondente punto sul piano immagine ad un certo istante, se
0P possiede una velocità 0V relativa alla telecamera, al suo spostamento 0V δt
Capitolo 2 Il flusso ottico 24
nell’intervallo di tempo δt corrisponderà un analogo spostamento del punto '0P nel
piano immagine di valore 0'V δt dove 0V e 0
'V rappresentano la derivata
temporale dei vettori che congiungono il centro ottico O del sistema con i punti 0P
e '0P , ossia gli spostamenti cui questi due punti sono soggetti nell’intervallo di
tempo δt.
Usando il legame proiettivo tra i due segmenti O 0P e O '0P risulta assegnato un
vettore spostamento ad ogni punto Pi dell’immagine.
L’insieme di questi vettori costituisce il campo di spostamenti che, considerati
nell’unità di tempo δt piccola a piacere (limitata inferiormente dal tempo di
acquisizione di 2 frame consecutivi), permettono di ricavare un campo di velocità.
Il flusso ottico è definito come il campo vettoriale di tali velocità.
2.1.1 Visione Stereoscopica
Come si vede dalla fig. 2.1, a causa degli effetti prospettici la componente del
movimento lungo l’asse focale viene persa.
Ecco quindi che si distinguono due grandezze fondamentali:
1) Campo di velocità: costituito dai vettori associati a tutti i punti
dell’inquadratura (in 3D)
2) Flusso Ottico: costituito dai vettori del campo di velocità ma proiettati in un
mondo 2D.
Appare per la prima volta l’importanza della visione stereo (o binoculare) applicata
al flusso ottico che nasce dall’esigenza di “recuperare” informazioni riguardo al
movimento dell’oggetto nelle 3 dimensioni, partendo da un immagine in 2
dimensioni.
Capitolo 2 Il flusso ottico 25
Occore precisare che per la sua stessa definizione, il flusso ottico è una grandezza
appartenente ad un mondo bi-dimensionale; una volta ricavato va comunque
integrato con altre informazioni pervenenti dalla visione stereo.
Senza trattare questo argomento, in modo approfondito, mi limiterò a riportare i 2
metodi più comunemente adottati per il recupero delle informazioni insite nella
terza dimensione:
Estrazione dei “tokens” (punti particolari o caratteristici) : si individuano
nell’immagine punti caratteristici di un oggetto (quali ad esempio gli angoli) per poi
riuscire, una volta identificati gli stessi punti nell’immagine successiva, a ricavare
ad esempio la giusta orientazione delle facce dell’oggetto tramite una semplice
proiezione ortogonale.
Fig. 2.2
Ad esempio, in figura 2.2 vengono individuati 4 punti non tutti complanari A,B,C
e D; dopo la rototraslazione del cubo, si intercettano tali punti e, conoscendo a
priori la relazione di collegamento tra i 4 , si riesce a stabilire l’orientazione delle
facce del cubo.
Capitolo 2 Il flusso ottico 26
Interpolazione delle traiettorie : anche questo metodo si basa sull’estrazione dei
tokens ma diviene più complesso nel momento in cui dopo aver preso un numero
finito (elevato a piacere) di tokens “campioni” se ne esegue l’interpolazione.
La letteratura, in materia, presente attualmente, indica come le informazioni
derivanti dall’uso di questo tipo di visione siano tutt’ora imprecise a meno
integrarle con tecniche di elaborazione dati assai recenti.
La visione stereo viene attualmente ed in maggior parte ottenuta cercando di
emulare come modello l’occhio umano. Infatti, così come l’occhio invia al cervello
due immagini leggermente differenti che in un ipotetico piano immagine si
sovrappongono creando il senso della profondità e della prospettiva, due sistemi di
visione inviano 2 immagini all’elaboratore il quale, utilizzando alcune semplici
regole di ottica geometrica, risale alle informazioni sulla dimensione mancante.
Questo avviene ovviamente a scapito della velocità di elaborazione dei dati e di un
notevole aumento di complessità nella gestione delle informazioni da parte del
sistema di calcolo.
2.1.2 Informazioni derivanti dal flusso ottico
Come intuibile, la distribuzione spaziale e temporale del flusso ottico dipende in
parte dalla forma dell’oggetto del quale si sta analizzando il movimento.
Assumendo quindi, per ipotesi e per semplicità, che un oggetto rigido
(indeformabile) si muova rispetto ad un sensore visivo fisso, dai valori di optical
flow ottenuti, si potrebbe “stimare” la forma dell’oggetto in questione. Ecco perché,
è un settore di ricerca attuale il riconoscimento di oggetti, auto o pedoni basato
sull’osservazione del flusso ottico della scena.
Capitolo 2 Il flusso ottico 27
Sempre nelle stesse ipotesi è dimostrabile che le parti di contorni come gli angoli o
le occlusioni di un oggetto, presentano un gradiente di velocità considerevole
rispetto ad esempio ai punti di una stessa superficie; ecco come dai valori di
intensità dei vettori di flusso ottico ricavo preziose informazioni su come sia variata
l’orientazione degli oggetti tra un’immagine e quella successiva.
Occorre precisare che l’ipotesi di camera fissa non è assolutamente limitante ne
ideale.
L’analisi e la stima del movimento tramite l’utilizzo di sensori mobili risulta essere
molto più complessa e si preferisce in genere di utilizzare sistemi di visione fissi
rispetto alla scena da osservare di modo da semplificare l’elaborazione delle
informazioni in input e da rendere sempre più affidabili quelle in output.
2.2 Metodi di stima del flusso ottico
Una grande mole di lavoro è stata portata avanti nel corso degli ultimi venti anni e
numerosi sono i metodi proposti, basati per lo più su calcoli pensati per architetture
sequenziali ed alcuni di questi possono essere altresì adattati ad architetture di tipo
parallelo.
Si è giunti ultimamente ad un’uniformità di pensiero riguardo alla stima di optical
flow individuando 2 principali metodi per affrontare il problema:
• Stima di Optical Flow basata sulla variazione della “luminosità” (Gradient
Based)
• Stima di Optical Flow basata sulle corrispondenze discrete (Matching).
Della prima classe fanno parte tutti gli algoritmi che rivelano il flusso ottico dalla
interpretazione delle variazioni di luminosità delle immagini al passare del tempo.
Capitolo 2 Il flusso ottico 28
Esempi di tale approccio sono in Horn e Schunck (1981), Nagel (1983), Haralick e
Lee (1983), Tretiack (1984), Verri et.al. (1990), Nesi (1991), Liu (1994), Andrejii
& Barechi(1998).
E’ importante osservare che il vero flusso ottico viene determinato unicamente da
questa classe di algoritmi; solo in questo caso infatti si ottiene un insieme di vettori
“denso”, nel senso che viene determinato per ogni pixel dell’immagine.
L’implementazione parallela di questi algoritmi è inoltre generalmente semplice
poiché sono richieste unicamente operazioni di tipo locale sostanzialmente
identiche per ogni punto dell’immagine.
Nella seconda classe rientrano tutti gli algoritmi che ricostruiscono il movimento
ricercando nella sequenza di immagini quelle caratteristiche degli oggetti che
possono considerarsi permanenti nel tempo come, per esempio, gli spigoli, i profili,
i pattern particolari, ecc.. Esempi di tale approccio si trovano in (Davies et. Al.
1983) e in (Ducan e Chou 1988), (Zang & Lu 1999), (Davis& Freeman 1995).
Questi algoritmi si prestano ad essere implementati su architetture di tipo
piramidale ( es.Blazer et. al. 1983) ove ad ogni livello della piramide si analizzano i
movimenti a diversi risoluzioni e le traiettorie trovate ad un certo livello guidano la
risoluzione del livello inferiore (risoluzione spaziale più alta). Esistono casi di
Hardware sviluppato ad hoc per la determinazione del F.O. mediante un algoritmo
di tale classe, per esempio (Klaus et. al. 1990).
Analizzeremo qui di seguito le 2 classi di algoritmi citate , riportando per ciascuna,
un esempio presente in letteratura.
2.2.1 Algoritmi di tipo Gradient Based
In questo tipo di algoritmo , l’informazione disponibile risulta essere solamente la
variazione temporale della distribuzione di luminosità presente nel piano
Capitolo 2 Il flusso ottico 29
immagine. Come immediata conseguenza, il flusso ottico può essere estratto dal
calcolo delle velocità, o degli spostamenti, nel piano immagine, delle variazioni di
intensità.
Fig. 2.3
Il punto P (di figura 2.3) appartenente al cubo si sposta rispetto alla sua posizione
iniziale (Old Frame) variando la propria intensità luminosa .
Sia f(x, y, t) la funzione rappresentante l’intensità luminosa nell’immagine nel punto
P di coordinate (x, y) all’istante di tempo t.
Se per ipotesi, assumiamo che tale intensità non dipenda dalle variazioni dovute
all’ambiente circostante (ossia, se nella scena nulla si è mosso, la distribuzione di
luminosità deve rimanere costante tra due frame consecutivi) ma solamente dal
moto 3D che si proietta sul piano immagine, e che quindi sia la medesima al tempo t
+ δt nel punto (x + δx, y + δy), si può scrivere :
f(x + δx, y + δy, t + δt) = f(x, y, t) (2.1)
dove δx = uδt e δy = vδt, essendo u e v le componenti della velocità, cioè del
vettore del flusso ottico applicato in questo punto, nelle direzioni x e y:
u = dx/dt e v = dy/dt (2.2)
Capitolo 2 Il flusso ottico 30
Considerando variazioni temporali e spaziali piccole a “piacere”, si può espandere
il primo membro della (2.1) in serie di Taylor ottenendo la seguente relazione:
f(x, y, t) + fxδx + fyδy +ftδt + ε = f(x, y, t) (2.3)
dove fx, fy e ft indicano le derivate parziali dell’intensità rispetto alle variabili
spaziali e temporale, ed ε contiene i termini di ordine superiore (trascurabili).
Dividendo per dt (tendente a zero) si ricava la cosiddetta “equazione di vincolo del
flusso ottico”:
fxu + fyv + ft = 0 (2.4)
la quale non permette ancora di calcolare le due incognite u e v.
Definendo v = (u,v), si può altresì scrivere dalla (2.4):
v . grad(f) = - ft (2.5)
cioè prodotto scalare tra il vettore gradiente della luminosità e il vettore velocità.
Quest’ultima relazione implica che sono soluzioni della (2.4) tutti i vettori v che la
soddisfano e quindi fornisce l’informazione relativa alla componente del flusso
ottico nella direzione del gradiente :
|v|= ft / (fx2 + fy
2)½)
ma non in quella perpendicolare, cioè lungo le linee a intensità luminosa costante.
Inoltre v non può essere calcolato nei punti in cui il gradiente è nullo.
Per ricavare il flusso ottico è quindi necessario introdurre delle ipotesi aggiuntive
derivate da conoscenze a priori, in questo modo ci si sposta verso un approccio al
problema di tipo “dipendente dal dominio”, oppure tramite l’imposizione di vincoli
aggiuntivi quali possono essere la continuità della funzione luminosità o,
analogamente, del colore all’interno dell’immagine, sempre in funzione del tempo.
Capitolo 2 Il flusso ottico 31
Una possibile soluzione è ottenuta minimizzando contemporaneamente lo
scostamento da zero del primo membro della (2.4) e le variazioni del flusso ottico
misurate dal suo gradiente arrivando alla soluzione minimizzando, rispetto a u e v la
seguente relazione:
∫∫{(fxu + fyv + ft)2 + λ [(ux2 + uy
2) + (vx2 + vy
2)]}dx dy (2.6)
La minimizzazione viene effettuata tramite un processo iterativo dopo aver posto in
forma discreta gli operatori richiesti. Vengono utilizzati degli stimatori discreti delle
derivate spaziali e di quella temporale, limitandoli, tipicamente, alle differenze
finite del primo ordine, e il doppio integrale viene sostituito da una doppia
sommatoria. Per questa possibile soluzione è stata assunta la regolarità del flusso
ottico e la continuità della luminosità dell’immagine. Se il flusso presenta delle
discontinuità, come accade in corrispondenza dei bordi degli oggetti, occorre
evitare che il metodo tenti di estendere con regolarità la soluzione da una regione
all’altra. Una soluzione possibile prevede l’introduzione della segmentazione
nell’algoritmo iterativo di stima, individuando le zone dove il flusso varia
bruscamente ed utilizzando la discontinuità per impedire, all’iterazione successiva,
di collegare con continuità la soluzione.
E’ importante notare che ogni metodo utilizzato propone un problema che necessita
l’introduzione di vincoli per l’ottenimento della soluzione, vincoli che si possono
raggruppare in due categorie : indipendenti dal dominio e dipendenti dal dominio.
Nella prima possiamo evidenziare i due principi di continuità della luminosità e del
colore (non subiscono variazioni brusche passando da un’immagine a quella
successiva), come pure possiamo introdurre gli operatori che ci permettono di
estrarre informazioni caratterizzanti le componenti dell’immagine. Fra questi
possiamo elencare ad esempio la segmentazione come pure la cosiddetta feature
extraction (estrazione delle caratteristiche) nelle loro molteplici versioni: estrazioni
dei contorni, delle regioni, delle textures, dei punti dominanti nelle curve, ecc.
Capitolo 2 Il flusso ottico 32
Nella seconda categoria possiamo raggruppare quei vincoli che dipendono dal
dominio da un punto di vista della “comprensione logica” di quanto può avvenire
nell’ambiente che si sta analizzando. Tra questi possiamo includere: la struttura
degli oggetti presenti, la velocità massima alla quale si possono muovere i punti
soggetti all’analisi, la direzione preferenziale del movimento (moto comune, moto
conosciuto o piccoli cambiamenti nella direzione della velocità), il cosiddetto
consistent match (due punti appartenenti ad una stessa immagine, normalmente, non
si associano con il medesimo punto di un’altra immagine), ecc.
2.2.2 Algoritmo di Horn & Schunk
Questo algoritmo risale al 1981 e rappresenta il punto di partenza per gran parte dei
successivi algoritmi di stima del flusso ottico basati sull’osservazione del gradiente
di luminosità.
Gli oggetti ai quali viene applicato l’algoritmo sono i punti di due immagini
acquisite consecutivamente che chiameremo Old-frame e New-frame.
Sia ),,( tyxΕ la funzione Intensità luminosa associata all’istante t al punto di
coordinate ( x , y ).
Si assume che le variazioni di questa funzione siano dovute solo al moto
dell’oggetto , per cui :
0=dtdE ;
Definiamo dtdxyxu =),( e
dtdyyxv =),( rispettivamente come la componente del
flusso ottico lungo x e lungo y.
Usando delle semplici regole di derivazione parziale si ottiene:
tyx EvuEE −=⋅ ),(),( ; (2.7)
Capitolo 2 Il flusso ottico 33
dove per semplicità si è indicato dxdEEx = ,
dydEEy = ed
dtdEEt = .
Come accennato nel precedente paragrafo, la 2.7 non è risolvibile su tutto il
dominio a meno di introdurre un ulteriore vincolo che Horn & Shunk chiamarono
vincolo di continuità (“Smoothness Constraint”).
Assumendo infatti che i singoli punti di un immagine appartengano ad oggetti di
dimensioni fisiche non infinitesime, si può con certezza affermare che le variazioni
di flusso ottico per punti vicini ( appartenenti ad uno stesso oggetto) siano minime e
ciò equivale a minimizzare il quadrato dell’intensità del gradiente del flusso ottico
ossia il Laplaciano:
2
2
2
22
yu
xuu
∂∂+
∂∂=∇ ; 2
2
2
22
yv
xvv
∂∂+
∂∂=∇ ;
Entrano in gioco, sia sulla funzione ),,( tyxΕ che su ),( vu , delle derivate parziali
di secondo ordine stimabili, senza perdite significative di informazione, nel
seguente modo:
{ }1,,11,1,11,,1,1,,,1,1,1,,,1,41
++++++++++++ −+−+−+−≈ kjikjikjikjikjikjikjikjix EEEEEEEEE ;
Fig. 2.4: ognuna delle 3 derivate parziali
dell’Intensità luminosa al centro del cubo
viene stimata attraverso la media della
differenza di ordine 1 lungo 4 contorni
paralleli del cubo. L’indice di colonna j
corrisponde alla direzione x dell’immagine,
l’indice riga i corrisponde alla direzione y e
k rappresenta la terza coordinata: il tempo.
Quindi l’indice k si riferisce a Old-frame
mentre k+1 a New-frame.
Capitolo 2 Il flusso ottico 34
Analogamente a quanto sopra si stimano yE ed tE .
Horn & Shunk forniscono anche una stima dei Laplaciani di u e v :
)( ,,,,2
kjikjiuuku −≈∇ ;
dove la media locale u è definita come segue:
{ } { }kjikjikjikjikjikjikjikjikji uuuuuuuuu ,1,1,1,1,1,1,1,1,1,,,1,,1,,,1,,121
61
−++++−−−−++− +++⋅++++⋅=
Sono analoghi i calcoli per v .
Ovviamente i 2 vincoli imposti al sistema portano a degli errori di valutazione
diversi da 0 ma fortunatamente quantificabili:
tyxb EvEuE ++=ε ;
rappresenta l’errore dovuto al vincolo sull’ immutabilità temporale della luminosità,
mentre:
2222
2
∂∂+
∂∂+
∂∂+
∂∂=
yv
xv
yu
xu
cε ;
è quello dovuto al vincolo di continuità.
bε è una quantità che dipende fortemente dal rumore presente nell’immagine e
perciò si ha necessità di introdurre un fattore di peso α nel processo di
minimizzazione dei due errori.
Si tratta, ora, di minimizzare il quadrato dell’errore medio totale espresso da:
Capitolo 2 Il flusso ottico 35
∫∫ ⋅+= dxdybcTOT )( 2222 εεαε ;
Rimandando i passaggi matematici alla lettura dell’articolo di Horn & Shunk,
diremo che attraverso un processo iterativo (Horn & Shunk suggeriscono quello di
Gauss-Seidel) si cercano quei valori di u e v che minimizzano 2TOTε .
2.2.3 Vantaggi e svantaggi del metodo basato sul gradiente
La disponibilità del campo vettoriale di velocità o di spostamento in due dimensioni
permette di stimare il movimento e la struttura spaziale degli oggetti in moto.
Quindi consente di dare una rappresentazione dell’ambiente osservato, mediante
un’opportuna formulazione delle relazioni tra i punti delle superfici componenti gli
oggetti nello spazio e quelli nel piano immagine, e tra le associate velocità. Tali
relazioni sono indotte dalla proiezione prospettica e richiedono alcune assunzioni,
tipicamente la variazione “dolce” del flusso ottico e la regolarità della superficie
3D, per poterne troncare ai primi termini lo sviluppo in serie di Taylor. Le
equazioni finali sono, nella forma generale, piuttosto complesse, tuttavia
permettono, dopo aver introdotto ulteriori vincoli, di ottenere un flusso ottico in
modo abbastanza preciso.
Questa precisione viene pagata in termini computazionali, infatti la maggior parte
se non la totalità degli algoritmi che si basano su queste tecniche sono di tipo
iterativo e richiedono la soluzione di equazioni simili alla (2.6) per ogni pixel
appartenente all’immagine o alla regione dell’immagine interessata. Quindi si
richiedono processi di massimizzazione o minimizzazione di funzioni errore che
possono impiegare numerosi cicli iterativi prima di fornire il risultato cercato. Se a
tutto questo aggiungiamo che le funzioni errore richiedono l’utilizzo di operatori
opportuni per il calcolo dei loro termini, che normalmente richiedono dati in virgola
mobile, si comprende come queste tecniche tendano a non essere utilizzate o
comunque poco sfruttate in applicazioni real-time.
Capitolo 2 Il flusso ottico 36
2.2.4 Algoritmi di MATCHING
Il movimento relativo tra gli oggetti della scena ed il sensore produce uno
spostamento di parti delle immagini formatesi nel piano focale del sensore stesso.
Tale spostamento che può essere caratterizzato con il moto di un insieme discreto di
attributi o elementi significativi (“features”). Questo moto può essere ricavato
dall’estrazione delle componenti osservabili in un’immagine della sequenza e dalla
successiva determinazione della corrispondenza nelle immagini successive.
Fig. 2.5
La situazione può essere schematizzata come in figura 2.5, dove le “qualità
specifiche” sono i punti iP individuati sul piano immagine (X, Y) ad un certo
istante come la proiezione dei punti pi dell’oggetto (in coordinate x, y, z): all’istante
successivo i punti si sono spostati rispettivamente in 'iP e '
ip .
Queste variazioni di posizione dei punti corrispondenti in (X, Y) sono i dati
disponibili per tentare di ricavare il movimento di punti pi in (x, y, z) tra i due
istanti, sempre che il problema ammetta soluzione.
Il problema, infatti, oltre ad essere mal condizionato, è anche intrinsecamente
ambiguo: la soluzione, quando esiste, può essere ottenuta solo a meno di una
costante, tipicamente un fattore di scala sulla traslazione.
Capitolo 2 Il flusso ottico 37
Ad esempio, se consideriamo due oggetti, uno di dimensioni doppie rispetto
all’altro, risultano indistinguibili i seguenti 2 moti: l’oggetto più piccolo rototrasla
alla distanza d dal sensore l’altro si muove con velocità di traslazione doppia e di
rotazione identica al precedente ma ad una distanza 2d dal sensore.
Nell’esempio citato in figura si fa riferimento ai punti che compongono l’oggetto,
nell’insieme dei metodi di calcolo affrontabili in questo paragrafo, è possibile
utilizzare come elementi significativi altre caratteristiche rappresentative, quali ad
esempio vertici, linee di separazione tra superfici, regioni ecc. Per questo motivo
risulta difficile descrivere in modo sistematico e sintetico i possibili metodi di
soluzione, che andrebbero classificati secondo una varietà di parametri tra i quali
possiamo citare:
il tipo di osservabili considerato (punti, linee, angoli, …)
eventuali vincoli spaziali tra gli osservabili (la complanarità per
esempio)
il tipo di proiezione impiegata
i parametri del moto ricercati
la linearità o meno del sistema di equazioni
la rigidità o meno del moto
la limitazione o meno a piccoli spostamenti, e analogamente l’uso di
un numero limitato di viste o di una lunga sequenza
L’ipotesi su cui si basano i metodi di stima del movimento da osservabili estratti in
un’immagine e poi “inseguiti” nella sequenza è che siano innanzitutto individuati
elementi caratteristici in una vista, e che sia stata stabilita la corrispondenza tra di
essi nelle successive immagini della sequenza.
Stabilire e mantenere le corrispondenze tra frame successivi può essere tutt’altro
che semplice, sia perché gli elementi da inseguire non permangono necessariamente
in tutte le immagini costituenti la sequenza (possibili occlusioni), sia perché è
Capitolo 2 Il flusso ottico 38
proprio il movimento una delle proprietà che permettono di individuare le
corrispondenze.
In ogni caso, le tecniche più comuni adottate per individuare gli osservabili sono
basate sull’analisi delle caratteristiche locali della distribuzione di luminosità, ad
esempio la tessitura (texture), gli angoli, tratti di contorno rettilineo, intersezioni di
linee. Per trovare la soluzione al problema delle corrispondenze vengono utilizzate
misure di somiglianza opportunamente formulate come ad esempio la correlazione
locale o le misure di somiglianza strutturale.
Anche nell’applicazione di queste metodologie è importante far notare come
vengano impiegati dei vincoli aggiuntivi simili a quelli affrontati nel paragrafo
precedente; si distingue anche in questo caso fra metodi indipendenti o dipendenti
dal dominio.
Occorre ora definire alcune importanti caratteristiche da abbinare alle immagini da
analizzare e da utilizzare solo nel caso di algoritmi basati sul Matching:
• DISPARITA’: E’ il vettore che associa la posizione di un’entità nella prima
immagine (in coordinate relative al frame) con la posizione assunta dalla
corrispondente entità nella seconda immagine. Evidentemente, se l’oggetto
non si muove, la disparità è un vettore di componenti nulle. La
determinazione delle disparità tra due immagini è un argomento importante
nella visione artificiale e viene normalmente indicata con il nome di
MATCH DETECTION oppure con RISOLUZIONE DEL PROBLEMA
DELLE CORRISPONDENZE.
• DISTINGUIBILITA’: Fornisce una valutazione numerica del grado di
separazione cromatica che ha un punto rispetto ai suoi vicini. Per esempio
un’area uniforme è evidentemente costituita da punti indistinguibili tra loro
(almeno sulla base di semplici informazioni cromatiche).
• SIMILITUDINE: E’ un indicatore del grado di somiglianza che hanno due
punti appartenenti ad immagini differenti. In genere si valuta la similitudine
non solo sulla base del loro specifico valore cromatico ma anche sulla
Capitolo 2 Il flusso ottico 39
distribuzione cromatica di un certo loro intorno, in questo modo la
correlazione sfrutta una maggior quantità di informazione e costituisce una
valutazione più attendibile.
• CONSISTENZA : Rappresenta la misura di quanto un particolare match è
in accordo con i match ad esso adiacenti. Nel nostro caso il match identifica
la disparità più corretta (cioè quella che associa le giuste entità) la quale
rappresenta il movimento relativo di un certo punto immagine.
2.2.5 Algoritmo di Barnard & Thompson
Questo algoritmo è, per gli algoritmi di Matching, ciò che quello di Horn & Shunk è
per gli algoritmi di tipo Gradient Based.
Il metodo di stima del flusso ottico viene suddiviso in due fasi principali:
• CORNER DETECTION
• MATCH DETECTION.
La prima fase consiste nel determinare nelle due immagini un insieme di entità con
caratteristiche appropriate al successivo abbinamento. La seconda fase realizza
concretamente l’abbinamento.
CORNER DETECTION :
Consiste nell’applicazione di un determinato operatore matematico alle due
immagini per individuarne le entità da abbinare tra loro. Nella versione originale
dell’algoritmo viene utilizzato l’operatore di Moravec che isola dal contesto quei
punti di una immagine che hanno la massima variabilità cromatica rispetto ai loro
vicini. Questi punti dovrebbero corrispondere agli spigoli degli oggetti mostrati
nell’immagine. Per tale motivo, da ora in avanti, non parleremo più di generiche
entità ma di CORNER.
Si rende necessario l’uso del condizionale in quanto a causa delle imperfezioni
dell’immagine (rumore, distorsioni, ecc.) viene solitamente identificato un grande
numero di falsi corner.
Capitolo 2 Il flusso ottico 40
MATCH DETECTION E’ la fase più complessa dell’algoritmo e conviene per questo suddividerla in un
certo numero di passi.
• IDENTIFICAZIONE DEI CANDIDATI Il primo passo può essere descritto riferendosi alla seguente figura:
Fig. 2.6
nella quale si identificano i punti selezionati dalla corner detection dell’immagine
Old (nella figura sono indicati con le lettere minuscole) e ad ognuno di essi viene
assegnata una lista di elementi.
Ogni elemento di questa lista contiene le coordinate di un corner individuato nella
seconda immagine, dunque il numero di elementi di ogni lista è pari al numero di
corner di New.
La lista associata ad ogni corner di Old rappresenta l’elenco dei candidati per
l’abbinamento di un corner di New con quel corner di Old.
In figura 2.6 vengono rappresentate le due immagini Old e New dopo l’applicazione
della corner detection. Tutta l’informazione pittorica è stata eliminata e sono rimasti
unicamente i punti riconosciuti come corner (che qui vengono indicati
simbolicamente usando le lettere). Le immagini evidentemente rappresentavano
degli oggetti in movimento, si osserva infatti che i punti (a,b,c,d) si sono spostati in
(A,B,C,D) con un movimento verso nord-ovest mentre i punti (e,f,g,h) si sono
Capitolo 2 Il flusso ottico 41
mossi in direzione nord-est finendo in (E,F,G,H). Partendo dai corner di Old si
generano le liste (riportate a lato solo per alcuni punti) dei corner di New che si
trovano entro la distanza massima consentita, dunque entro i riquadri centrati sui
corners di Old. In questo modo la ricerca del corrispondente di a (per esempio)
verrà limitata ai corner (A,B,D) e non all’intero gruppo di otto punti; questo
migliora le prestazioni in termini di velocità di calcolo anche in considerazione del
fatto che nelle immagini reali i corner solitamente soni centinaia. Purtroppo questa
soluzione comporta la necessità di limitare a priori il massimo movimento dei
corner. Nel caso infatti del corner h la sua velocità è stata tale da portare H al di
fuori del range di riconoscimento e così l’accoppiamento (h,H) non potrà aver
luogo. La lista di h evidenzia tra l’altro il caso particolare di assenza di candidati
(lista vuota): in questo come in altri casi bisogna tenere presente che i corner
possono anche uscire dall’immagine e scomparire improvvisamente. Queste
possibilità vengono gestite tramite l’elemento * che definisce la possibilità di
“disparità indefinita”. I casi di comparsa improvvisa (sono in New ma non in Old)
vengono automaticamente risolti non avendo (se non si compiono errori)
corrispondenti in Old.
Chiamiamo d’ora innanzi Li la lista di corrispondenza a per il corner i-esimo di Old;
evidentemente Li(j) rappresenterà il corner i-esimo di New contenuto nella lista del
corner i-esimo di Old (per esempio nella figura l’abbinamento corretto per la prima
lista sarà La(A)).
Generalmente le immagini contengono un elevato numero di corner (reali o fittizi) e
ciò provoca inevitabilmente un allungamento delle liste.
Questo è uno svantaggio in quanto, di tutti i punti inseriti in ogni lista al più un solo
punto sarà poi riconosciuto valido per l’abbinamento; tuttavia essendo inizialmente
incognito, dovrà essere ricercato tra tutti gli elementi della lista influendo
negativamente sia sul tempo di calcolo che sulla quantità di memoria richiesta.
Per ovviare a questo problema si inseriscono nella lista di ogni corner Old le
coordinate dei corner di New che si trovano entro una certa distanza massima (le
Capitolo 2 Il flusso ottico 42
cornici attorno alle lettere in figura). Chiamiamo r (in pixel) il modulo delle
componenti lungo gli assi di tale distanza ; esso rappresenta il limite massimo alla
disparità calcolabile dal nostro sistema (lungo X e lungo Y); in altre parole: è il
limite massimo alle corrispondenti componenti orizzontali e verticali della velocità
rilevabile.
Se un oggetto dovesse essere tanto veloce da coprire una distanza in pixel maggiore
del limite fissato (nel tempo intercorso tra le due immagini) non riusciremmo a
ricostruirne la traiettoria ed esso apparirebbe al sistema di visione come un oggetto
scomparso in Old e apparso dal nulla in New.
Un ulteriore conseguenza di questa scelta è che le liste, ora, non hanno più tutte la
stessa lunghezza e questo complica l’analisi della complessità spaziale e temporale
dell’algoritmo.
Ricapitolando: nelle lista associate ad ogni corner di Old vengono inseriti i soli
corners P(xj,yj) della seconda immagine tali che xi-r ≤ xj ≤ xi +r e yi-r ≤ yj ≤
yi + r.
Ad ogni elemento di Li viene associato anche un numero che rappresenta la
probabilità che quel particolare corner sia quello giusto.
Indichiamo con pi(j) la probabilità che il corner della prima immagine Pi=P(xi,yi)
corrisponda al corner Pj=P(xj,yj) della seconda immagine, ovvero:
pi(j) = p{ Pi∈ Old e Pj ∈ New :rappresentano lo stesso oggetto} .
Si deve tenere conto anche del fatto che gli oggetti entrano ed escono di scena
continuamente e che si possono occultare reciprocamente, questo significa che un
corner di Old potrebbe non avere un corrispondente in New e viceversa. A questo
riguardo viene definito un elemento speciale (una specie di jolly inserito in ogni
lista) che rappresenta una disparità indefinita e che viene indicato con l’asterisco.
Esso subirà in generale le medesime elaborazioni degli altri elementi della lista e, se
al termine del calcolo dovesse risultare il migliore candidato per un certo corner di
Old, trarremmo la conclusione che quel corner è stato “perso di vista”. Indicheremo
la probabilità assegnata all’elemento di disparità indefinita nel seguente modo:
Capitolo 2 Il flusso ottico 43
pi(j*) = p{ Pi ∈ Old : non ha corrispondenti in New} .
Il caso opposto (corner presente in New e assente in Old) non costituisce problema
fuorché per un inutile allungamento delle liste dei corner di Old che lo dovessero
prendere in considerazione.
Necessariamente le probabilità all’interno di ogni lista devono essere normalizzate.
Nel caso della fig. 2.6 per esempio si ha:
pa(A) + pa (B) + pa (D) + (*) =1
pc(C) + pc (E) + pc (*) =1
pe(E) + pe (H) + pe (*) =1
Nel corso della fase di ricerca degli abbinamenti le probabilità all’interno delle liste
subiranno delle modifiche (dovendo alla fine indicare il candidato più probabile)
ma la condizione di normalizzazione dovrà essere sempre rispettata, dunque si
tratterà più che altro di una specie di ridistribuzione dei voti tra i vari candidati di
ogni lista. Il processo sarà evidentemente iterativo e, naturalmente, dovrà
cominciare da una distribuzione iniziale di voti.
Il processo di ridistribuzione avverrà per passi successivi e dunque verrà utilizzato
un formalismo del tipo pi(j)k che indica il valore di probabilità del corner j-esimo
(di New) nella lista relativa al corner j-esimo (di Old) al passo iterativo di k. Di
conseguenza, con pi(j)0 verrà indicata il valore della probabilità iniziale.
• ASSEGNAZIONE DELLE PROBABILITA’ INIZIALI
Una volta generata la lista dei candidati è necessario assegnare dei valori iniziali
alle probabilità pi(j) .
La corretta valutazione di questi valori è importante perché permette di individuare
più rapidamente il candidato vincitore riducendo anche la possibilità di errori e la
formazione di situazioni ambigue.
Capitolo 2 Il flusso ottico 44
Il metodo proposto (dagli autori) utilizza la proprietà di “similitudine”; si definisce
una finestra di dimensioni (Ix , Iv) centrata sul corner j-esimo di New ed una uguale
finestra centrata sul corner j-esimo di Old.
Percorrendo le due finestre si calcola il quadrato della differenza dei pixel di Old e
di New aventi le medesime coordinate all’interno della finestra. Gli (Ix× Iv) valori
ottenuti sono sommati tra loro. Il risultato viene indicato con si(j) (con un
formalismo analogo al caso delle probabilità).
Evidentemente se il corner in Old e il corner in New appartengono al medesimo
oggetto, e se nel tempo trascorso tra le due immagini non si sono verificate
variazioni di illuminazione e modifiche nella forma e nell’orientazione degli
oggetti, ed infine se il rumore introdotto dal sistema di ripresa è stato perfettamente
filtrato, il valore di si(j) non può che essere zero.
In altre parole: nelle condizioni descritte ora, gli insiemi di punti che formano il
corner in Old ed in New sono identici (a parte la differente posizione
nell’immagine) e quindi la sottrazione punto a punto restituisce un risultato pari a
zero.
In questo caso è ovvio che pi(j) deve valere uno (certezza di identificazione).
In generale le ipotesi precedenti non saranno mai verificate perfettamente (e a volte
non lo saranno proprio portando ad errori di valutazione gravi) ma resta
sicuramente valida la relazione di proporzionalità inversa tra s e p.
L’elemento di disparità indefinita ( j* ) non può ovviamente essere gestito allo
stesso modo (rappresentando un oggetto immaginario) ma deve comunque rientrare
nella valutazione delle probabilità. La soluzione al problema viene affrontata
tramite la definizione di una funzione wi(j) che non rappresenta direttamente una
probabilità (non essendo normalizzata) ma che ne segue l’andamento:
wi(j) = 1 / ( 1+c × si(j) ) ∀ j ≠ j* (1)
La costante c viene selezionata sperimentalmente (gli autori indicano il valore 10) e
ovviamente wi(j) ∈ [0,1].
Capitolo 2 Il flusso ottico 45
Con questa funzione possiamo ora determinare la probabilità iniziale associata
all’elemento di disparità indefinita:
pi(j*) = 1 - max( wi(j) ) (2)
In pratica la funzione wi(j) dà una informazione di carattere generale sullo stato
della lista, evidentemente se non vi sono candidati con alta probabilità, è lecito
aspettarsi un’alta probabilità che il corner i-esimo non abbia un corrispondente in
New e, dunque, un valore di pi(j*)0 prossimo ad uno.
Tramite la relazione (2) abbiamo definito il valore di probabilità per un elemento
particolare della lista, resta da definire il valore associato agli altri candidati. A
questo scopo, viene utilizzati il teorema di Bayes relativo alle probabilità
condizionate ottenendo la seguente relazione:
pi(j)0 = pi(j | i) • (1- pi(j*)0 ) (3)
Ove evidentemente valgono le seguenti definizioni:
pi(j | i) = p { Pj ∈ New associato a Pi ∈ Old } vincolata al fatto che Pi abbia
realmente un corrispondente
(1- pi(j*)0 ) = p { Pi ∈ Old abbia un corrispondente in New }
Per calcolare l’espressione (3) è necessario determinare il valore della probabilità
condizionata. Esso viene solo stimato tramite la seguente espressione:
pi(j | i) = wi(j) / c wi(j’) (4)
Ove la sommatoria si intende eseguita ∀ j’ ≠ j* .
Capitolo 2 Il flusso ottico 46
• RAFFINAMENTO RICORSIVO DELLE PROBABILITA’
La distribuzione delle probabilità all’interno di ogni lista ha lo scopo di evidenziare
il corner di New per cui è più probabile l’associazione all’accoppiamento con il
corner di Old a cui la lista si riferisce.
A partire dai valore delle probabilità iniziali calcolate in precedenza, si vuole ora
definire una procedura che ridistribuisca le probabilità sino alla generazione di un
istogramma unimodale ( se possibile) che promuova un solo candidato. La
procedura di calcolo proposta è iterativa e utilizza la proprietà di consistenza.
Sia la pi(j)k il valore di probabilità del corner j-esimo (di New) nella lista relativa al
corner j-esimo (di Old) al passo iterativo k.
La procedura dovrà soddisfare la seguente proprietà, definita informalmente:
pi(j)k+1 > pi(j)k se esistono dei corner di Old attorno al corner j-esimo (sempre di
Old) aventi nelle loro liste dei corner j-esimi (di New) con disparità identica a
quella della coppia (i,j).
In parole povere si aumenta la probabilità della coppia (corner i, corner j) se attorno
al corner j-esimo (di Old) vi sono altri corner che possono confermare la disparità di
(i,j), ovvero il corner j-esimo sembra non essere l’unico a muoversi in questa
direzione. La proprietà di consistenza si esprime nella condizione di identica
disparità e vicinanza ma, a causa delle distorsioni introdotte dalle ottiche della
telecamera, dal digitalizzatore e dal rumore addizionato all’immagine, è molto
difficile rispettare esattamente la proprietà di consistenza. Per questo motivo si
introduce un valore di soglia θ e la proprietà di consistenza si considera soddisfatta
se la disparità dei corner adiacenti non si discosta di più di θ.
Gli autori propongono una condizione di consistenza di questo tipo:
|| d-d’|| = max ( | dx – d’x | , | dy – d’y | ) ≤ 1
Capitolo 2 Il flusso ottico 47
Ove d è la disparità della coppia di corner (i , j), mentre d’ è la disparità della
coppia di corner ( i’, j’) vicini al corner i e le grandezze a secondo membro sono
ovviamente le componenti delle disparità lungo gli assi X e Y.
Viene definita anche una condizione di vicinanza che è in pratica identica a quella
utilizzata nella fase di identificazione dei candidati (e che viene illustrata nella
fig.2.6).
La condizione viene così espressa formalmente:
h ∈ Old è vicino a i ∈ Old se, data una costante intera R, si ha
max ( |xh –xi|, | yh –yi | ) ≤ R
In sostanza la pi(j)k viene aggiornata sulla base di quello che succede nei dintorni
del corner j-esimo osservando le direzioni (cioè le disparità) che hanno la maggiore
probabilità di essere corrette.
A questo punto sorge una difficoltà: le probabilità associate alle disparità vengono
aggiornate sulla base del comportamento degli altri corner, ma anche per essi vale il
medesimo principio e, dunque, siamo di fronte ad una dipendenza circolare: per
stimare un valore occorre un dato che vanga calcolato sulla base del valore che sto
stimando.
Per superare questo ostacolo si ricorre ad una stima provvisoria delle probabilità
ph(j)k del corner h vicini ad i introducendo la seguente funzione:
qi(j)k = ∑α ∑β pα(β)k ∀ j’ ≠ j* (5)
Ove:
α assume i valori associati ai corner di Old che si trovano nell’intorno del corner j-
esimo ed α≠1.
In pratica definisce un area attorno a P(xi , yi ) ∈ Old e raccoglie i corners in esso
contenuti. β scandisce i candidati dalla lista di P (xα,yα) di Old che hanno una
disparità d simile a quella di
Capitolo 2 Il flusso ottico 48
P(xi , yi ) , ovvero:
β : || d - d’|| ≤ θ
Quindi, mentre α scorre le liste dei corner di Old vicini a Pi, da queste stesse liste
vengono estratte le probabilità dei candidati che hanno una disparità simile a quella
del corner (i , j).
Con la definizione data è ovviamente sempre vero che qi(j)k ≥ 0, ove l’uguaglianza
si verifica se e solo se non esistono dei corner attorno a Pi con disparità simile a d.
Al contrario, il valore sarà tanto maggiore quanto più i corner attorno confermano
l’ipotesi di disparità (in sostanza il gruppo da forza al singolo).
Il valore di qi(j)k viene utilizzato quale base di partenza per il calcolo della
probabilità pi(j)k+1, la quale deve essere normalizzata e deve tenere conto
dell’elemento j*.
Si procede in due fasi, nella prima si calcola una probabilità non normalizzata
diversa per gli elementi j-esimi e per j*:
ψi(j)k+1 = pi(j)k (A +B ψi(j)k+1 ) ∀ j’ ≠ j* (6)
ψi(j*)k+1 = pi(j*)k
Nella seconda fase si normalizza ottenendo il risultato voluto:
pi(j)k+1 = ψi(j)k+1 / ∑j’ ψi(j’)k+1 (7)
I parametri A e B nelle (6) sono costanti positive che modulano le caratteristiche di
risposta del modello matematico. Gli autori suggeriscono i valori A= 0.3 e B=3. Il
loro significato è abbastanza semplice: A ritarda la soppressione delle probabilità
Capitolo 2 Il flusso ottico 49
associate ai candidati poco probabili (assicurando che ψi(j)k+1 non si annulli anche
se pi(j)k vale zero).
Questo è importante nel caso particolare dei corner situati sulle regioni di confine
degli oggetti.
Per questi corner, infatti ,vi saranno un certo numero di corner ‘compagni’ che
confermano la disparità corretta ed altri (quelli appartenenti ad altri oggetti o allo
sfondo) che la valutano errata (dal loro punto di vista).
In questi casi conviene quindi che non vengano mai incontrate probabilità di valore
zero.
Il valore B è invece importante in quanto determina la velocità di convergenza della
distribuzione delle probabilità verso il suo stato finale. Nella (7) la sommatoria a
denominatore viene eseguita entro la lista Li appartenente al corner j-esimo di Old.
Osserviamo infine che la probabilità associata all’elemento di disparità indefinita
pi(j*) risulta influenzata unicamente dalla (7), ovvero dalla normalizzazione.
Avviene allora che la probabilità di j*cresce solo se vale la condizione:
∑j ψi(j)k+1 < ∑j pi(j)k ∀ j’ ≠ j*
Negli altri casi la pi(j*) decresce o rimane invariata.
Riassumendo, l’algoritmo funziona come segue: si estraggono i corner dalle
immagini, per ogni corner di Old si genera una lista di corner di New che sono
nelle vicinanze. Ad ogni candidato di queste liste viene assegnata una probabilità
iniziale di successo (cioè di corrispondenza con il padrone della lista) tramite le
formule (1), (2), (3),(4). Successivamente le probabilità vengono elaborate
iterativamente tramite le (5),(6),(7) sino a che entro ogni lista la distribuzione di
queste probabilità non raggiunge una condizione di stazionarietà,
Barnard e Thompson hanno osservato che, dopo poche iterazioni, la maggior parte
dei candidati ha una probabilità molto bassa. Per aumentare l’efficienza
dell’algoritmo è bene eliminarli riducendo così le dimensioni delle liste. Ad ogni
iterazione si esegue dunque una verifica e si eliminano tutti i candidati la cui
probabilità è scesa al di sotto di 0.01 (valore suggerito dagli autori).
Capitolo 2 Il flusso ottico 50
L’algoritmo risolve quindi un problema di convergenza numerica in cui il numero
di iterazioni non può essere previsto a priori. Gli autori indicano comunque la
possibilità di arrestarsi dopo solo dieci iterazioni a patto di applicare una soglia alle
probabilità. Il loro suggerimento è quello di limitare le iterazioni (a dieci appunto) e
poi di accettare come candidato quello la cui probabilità supera lo 0.7.
Evidentemente, se più corner in una lista superano la soglia, non è possibile
assegnare la disparità, così come se nessuno dei candidati raggiunge la soglia
(banalmente anche in caso in cui la lista si trovi con il solo j*).
In queste situazioni si assegna pi(j*) ed il corner P(xi , yi ) viene definito
“unmatchable” ovvero non accoppiabile.
2.2.6 Vantaggi e svantaggi degli algoritmi di Matching Vorrei sottolineare il fatto che questo tipo di soluzione presenta dei vantaggi, in
termini di costi di elaborazione, nei confronti della stima del movimento mediante il
flusso ottico. Infatti tramite l’applicazione di maschere opportunamente studiate,
alla sequenza di immagini in esame e precedentemente elaborata, è possibile
ottenere una valutazione del movimento ed in particolare del flusso ottico
qualitativamente accurata in tempi di calcolo sufficientemente brevi. Soprattutto se
si pensa che la maggior parte, se non la totalità, di queste operazioni utilizzano dei
dati di tipo intero. Sarà questa la strada che seguirò nel proseguimento di questo
lavoro. Un altro vantaggio non trascurabile, che si può rivelare anche svantaggioso
in taluni casi, è il fatto che utilizzando le tecniche descritte in questo paragrafo il
calcolo del movimento si può facilmente concentrare su alcuni oggetti della scena
trascurando il resto, situazione importante nei casi di inseguimento e/o di
catalogazione degli enti presenti o che ci si aspetta siano presenti nella scena.
L’obbiezione più importante che può essere sollevata nei riguardi delle procedure
evidenziate è la loro “inesattezza” formale, dovuta alle semplificazioni richieste per
poter essere in grado di ottenere una soluzione senza dover affrontare una quantità
di calcoli eccessiva
Capitolo 3 Il sensore omnidirezionale 51
3.1 “Vedere” a 360° con il sensore catadiottrico
Con l’aumentare delle prestazioni dei calcolatori ed il diminuire dei costi di
equipaggiamento video, risulta efficace impiegare sistemi di visione di alta qualità
nei processi di navigazione di robot autonomi.
Così come la navigazione dei robot si muove verso ambienti via via più semplici,
aumenta di pari passo il bisogno di sensori che descrivano in modo completo tali
ambienti.
La tendenza attuale della di ricerca è quella di “sollevare” il calcolatore da
elaborazioni di dati in input provenienti da diverse sorgenti visive (e per questo di
complessa manipolazione), compensando con un unico sensore (o 2 per la visione
stereo) che diano informazioni sufficientemente dettagliate sull’ambiente
circostante.
Questo richiede l’utilizzo di sensori visivi che diano una informazione più “globale”
(anche se meno precisa e particolareggiata) sulla scena in cui il robot è immerso, e
permettano quindi di ottenere una veloce descrizione, magari sommaria ma più
direttamente traducibile in azione.
Purtroppo, le telecamere convenzionali hanno, nella maggior parte dei casi, un
campo visivo piuttosto limitato, e questo risulta essere spesso restrittivo per
l’applicazione immediata.
Si può accrescere il campo visivo utilizzando specchi in congiunzione alle
tradizionali telecamere.
Per sensore catadiottrico si intende la combinazione di lenti e specchi posizionati in
configurazioni appropriatamente studiate per ottenere un campo visivo molto
superiore rispetto a quello del sensore effettivamente utilizzato. E’ per questo che i
catadiottri vengono utilizzati in ambienti dinamici come ad esempio quello della
competizione Robocup ([Asada et al., 1998], [Marquez e Lima, 2000], [Bonarini et
al., 2000]).
Capitolo 3 Il sensore omnidirezionale 52
Il termine catadiottrico deriva da “diottrica”, la disciplina degli elementi rifrangenti
(le lenti) e da “catottrica”, la disciplina delle superfici riflettenti (gli specchi).
Esistono molteplici esempi a questo riguardo: la sorveglianza, l’acquisizione di
modelli per la realtà virtuale, la stima del proprio movimento, la pianificazione e
l’auto-localizzazione dei robot.
Per quanto riguarda quest’ultima infatti, anziché utilizzare la tecnica della
triangolazione dopo aver selezionato i marker di riferimento, si può semplicemente
misurare l’angolo di azimuth rispetto a tali marker e, grazie all’utilizzo di sensori
omnidirezionali, tale misura diviene più immediata.
Se si vuole espandere il campo visivo in maniera isotropa, la migliore delle
soluzioni è probabilmente quella di adottare specchi convessi con un asse di
simmetria centrale (quindi a sezione tipicamente conica, sferica, ellittica o
parabolica) e, in effetti quasi tutti i sistemi impiegati sono di questo tipo ([Svoboda
e Pajdla, 2000], [Hicks e Bajcsy, 1999]).
Posizionando l’asse ottico della telecamera in verticale e facendolo coincidere con
l’asse di simmetria dello specchio si ottiene un campo visivo estesoin tutte le
direzioni.
Fig. 3.1
Capitolo 3 Il sensore omnidirezionale 53
L’impiego di catadiottri, quindi, ha il vantaggio di raccogliere, in una sola
immagine, un’informazione riguardante una vasta area, evitando i complessi
meccanismi di controllo generalmente impiegati nella visione attiva; tuttavia vanno
anche evidenziati due nuovi problemi connessi con questa scelta:
1. la riflessione della telecamera e del robot sullo specchio fa sì che la parte
centrale dell’immagine, ossia quella caratterizzata da maggiore risoluzione e
minori distorsioni, sia generalmente occupata dall’immagine riflessa del
robot e non sia quindi utilizzabile per descrivere la scena circostante.
2. l’utilizzo congiunto di una telecamera e di uno specchio concavo determina
il sommarsi di effetti distorcenti di cui risulta spesso difficile trovare la
legge e quindi compensare l’effetto.
Tutti questi aspetti fanno sì che tramite il catadiottro si possano ottenere
informazioni adeguate per un’analisi di massima di un’ampia scena (facilitando ad
esempio l’auto-localizzazione, l’individuazione di oggetti ed elementi di possibile
interesse per l’applicazione, eccetera), ma non sufficientemente dettagliate per
un’analisi approfondita dei particolari (ad esempio per l’individuazione di ostacoli).
3.2 Progettazione del sensore omnidirezionale HOPS
Il principale problema della progettazione del sensore omnidirezionale è il disegno
della superficie riflettente [Ishiguro , 2001].
Si riporta qui di seguito il metodo di progettazione usato presso i laboratori
dell’Università di Parma [Adorni et al 2002].
L’approccio è stato di tipo “trial and error” (fig. 3.2) supportato da programmi di
simulazione di ambienti 3D.
Per testare i differenti profili possibili dello specchio si è utilizzato un programma
di rendering per la creazione di ambienti foto-realistici .
Capitolo 3 Il sensore omnidirezionale 54
Si è simulato uno specchio, dalla forma assomigliante ad un paraboloide
“schiacciato” e dalla superficie totalmente riflettente, posizionato su di un piano
mappato con alcune rette orizzontali e verticali , sul quale giacevano solidi
rappresentanti robot e palle.
Grazie a questa simulazione si è potuta avere una visione generale degli effetti
distorcenti dello specchio (e quantificarli),così da poter variare alcuni parametri:
profilo dello specchio e posizione della telecamera.
Fig. 3.2
A questo punto non restava altro che scegliere un campo di applicazione
abbandonando la generalità delle specifiche e concentrandosi sull’ottimizzazione
per l’ambiente RoboCup.
Infatti, prima di progettare il profilo dello specchio, è consigliabile definire per
quale scopo è progettato.
Per esempio : un sistema di visione per la localizzazione di ostacoli non necessiterà
di riconoscere oggetti a grande distanza, viceversa, un sistema di localizzazione
avrà bisogno di un’estensione visiva considerevole.
Capitolo 3 Il sensore omnidirezionale 55
E’ stato quindi realizzato un prototipo sperimentale di sensore costituito da due
sensori visivi: un sensore catadiottrico per la visione omnidirezionale, e una
normale telecamera posta frontalmente per la visione stereo. A questo sistema è
stato dato il nome HOPS: Hybrid Omnidirectional/Pin-hole Sensor. Dove , con il
termine Pin-Hole si intende quel modello che trascura in prima approssimazione
l’effetto distorcente che ogni telecamera provoca sull’immagine. Come si può
osservare nelle figure 3.3, la struttura è costituita fondamentalmente da un cilindro
in plexiglass, un ripiano circolare interno ad esso, uno specchio fissato sulla
sommità del cilindro, due telecamere a CCD. Questo sistema è simile a quello
descritto in [Clérentin et al., 2000], anche se in questo caso il catadiottro è
combinato con un sensore visivo che, utilizzato come tale e non come range-sensor,
fornisce informazioni più ricche utilizzabili in diverse applicazioni.
Nel caso specifico dell’applicazione sviluppata si utilizza la combinazione delle
immagini acquisite dai due sensori visivi per la ricerca di ostacoli nell’area frontale
al robot.
Fig. 3.3
Capitolo 3 Il sensore omnidirezionale 56
Nel prototipo realizzato, per la parte che costituisce il catadiottro, una delle due
telecamere è fissata al centro del ripiano circolare ed è orientata verticalmente verso
lo specchio in maniera tale da far coincidere il suo asso ottico con l’asse dello
specchio. Inoltre il ripiano circolare interno possiede un grado di libertà che gli
permette di essere posizionato a diverse altezze. La seconda telecamera è invece
posizionata sul ripiano di plexiglass che poggia sopra lo specchio, orientata in modo
tale da inquadrare l’area di fronte al sistema. Sia la base del sistema che il ripiano
della telecamera superiore sono entrambi dotati di un sistema per l’orientamento
della struttura costituito da quattro coppie vite-molla utilizzate come regolatori di
posizione tra due ripiani di plexiglass. Tramite la regolazione di queste è possibile
orientare il piano della base dello specchio e il ripiano della telecamera superiore in
modo che essi risultino paralleli al piano del pavimento, ottenendo quindi anche la
verticalità dell’asso ottico del catadiottro.
3.2.1 Specifiche adottate per la realizzazione del profilo dello specchio
Per applicazione in ambiente RoboCup sono state definite le seguenti specifiche:
• Minimizzare l’ingombro dello specchio minimizzandone il raggio. In questo
modo si rende più leggera l’intera struttura del sensore e meccanicamente
più stabile il robot.
• Disegnare un profilo dello schermo atto a ridurre l’area di immagine
contenente informazioni inutili (riflessione del robot sullo specchio).
• Estensione radiale del campo visivo là dove si pensa siano le informazioni
rilevanti.
• Cercare di mantenere una risoluzione alta in un’area di interesse “strategico”
nelle vicinanze del robot.
Capitolo 3 Il sensore omnidirezionale 57
3.2.2 Lo specchio
La soluzione è stata quella di adottare uno specchio con la regione centrale sferica,
che riduce l’effetto di occlusione da parte del corpo del robot, e una parte esterna
conica che permette di ottenere un migliore compromesso fra campo visivo e
risoluzione.
Occorre ora fare una precisazione : nel 199, presso il Politecnico di Milano, è stato
realizzato un primo progetto dello specchio la cui forma (in fig. 3.4 ne si è riportata
la sezione) era data dall’intersezione (con tangenza) di un cono ed una sfera .
Raggio sfera = 6,6 cm
Angolo di apertura del cono = 117°
Raggio della base del cono = 8,9 cm
Altezza totale dello specchio = 4,3 cm
Purtroppo, le tecnologie di lavorazione dell’alluminio utilizzate per la realizzazione
di specchi per catadiottri, introducono spesso delle imprecisioni sia per quanto
riguarda il profilo dello specchio che per la sua regolarità superficiale: nel nostro
caso solo una regione centrale e una esterna dello specchio possono essere
considerate corrispondenti al progetto, mentre tutta la regione intermedia è una
regione di passaggio dal profilo della sfera a quello del cono. Si sono inoltre
osservate imprecisioni anche dal punto di vista della simmetria assiale (ossia la
sezione perpendicolare all’asse non è perfettamente circolare ma piuttosto
leggermente ellittica) e delle irregolarità locali a livello della superficie riflettente.
Capitolo 3 Il sensore omnidirezionale 58
Nel 2001, in collaborazione con l’Università di Parma, è stato realizzato presso
l’Università di Ulm in Germania lo specchio utilizzato in questa tesi per l’analisi del
flusso ottico.
Le migliorie apportate rispetto alla precedente versione sono state notevoli.
La superficie esterna è composta da ottone ricoperto galvanicamente da Nichel.
Per la realizzazione, è stata utilizzata una macchina a controllo numerico con
risoluzione 20µ di modo da rendere ancora più continuo il profilo dello specchio del
quale sono state considerevolmente ridotte le dimensioni:
Fig. 3.5
Il principale miglioramento risiede nella regione che, in figura 3.5, è stata indicata
con il termine “Zona di collasso”.
In tale regione, infatti, anzichè mantenere il profilo sferico come nella precedente
versione, un intorno della zona a derivata prima nulla della calotta sferica collassa
in un cono al fine di annullare quasi del tutto l’occlusione dovuta al Robot sulla
parte centrale dell’immagine.
Capitolo 3 Il sensore omnidirezionale 59
3.3 Cenni sulla calibrazione e sulla rimozione prospettica di un sensore ominidirezionale
Un’eccellente lavoro riguardante questo argomento è stato svolto dall’Ing.
Bolognini durante la sua tesi di laurea basata principalmente sulla calibrazione del
sensore HOPS descritto in precedenza; per questo motivo si rimanda il lettore
interessato ad un approfondimento, alla lettura di tale tesi.
In questa sede mi limiterò a descrivere le principali tecniche di calibrazione,
argomento correlato con la mia tesi.
Il processo di formazione dell’immagine di una scena su una superficie implica che,
tra tutti i raggi luminosi riflessi o emessi dagli oggetti presenti nella scena, sia
possibile eseguire una selezione, in maniera che, idealmente, la luce proiettata su
diversi punti della superficie di formazione dell’immagine provenga da diversi
punti dello spazio della scena e, viceversa, diversi punti dello spazio proiettino luce
su diversi punti della superficie. Lo scopo del processo è quindi produrre sulla
superficie un’ immagine che sia una rappresentazione sufficientemente buona della
scena.
L’ottica di tutte le telecamere produce una distorsione delle immagini, generalmente
distinta in una componente radiale e una tangenziale, di solito trascurabile. In quasi
tutte le telecamere con angoli di apertura non superiori agli 80°, questo effetto di
distorsione è comunque molto limitato e un primo modello grossolano dell’ottica
può anche trascurarlo.
Analizziamo ora il fenomeno che va sotto il nome di effetto prospettico.
Trascurando la distorsione delle lenti (adottando quindi il cosiddetto modello pin-
hole per l’ottica della telecamera), l’effetto prospettico è il processo di proiezione
degli oggetti tridimensionali della scena reale nelle corrispondenti forme sulla
superficie di formazione dell’immagine.
In particolare questa proiezione si chiama proiezione geometrica planare, ed è
Capitolo 3 Il sensore omnidirezionale 60
caratterizzata dal fatto che la proiezione avviene su un piano e che le linee di
proiezione sono delle rette. La retta di proiezione di ogni punto della scena dello
spazio oggetto o passa per uno specifico punto detto centro di proiezione e da qui
interseca il piano di proiezione, se si tratta di una proiezione prospettica, o è
parallela ad un asse di proiezione unico per tutti i punti, se si tratta di una proiezione
ortografica.
La proiezione prospettica è un processo che determina la perdita di molte
informazioni: da un mondo tridimensionale si passa a una descrizione
bidimensionale, quindi le informazioni su dimensione, profondità e posizione
relativa degli oggetti si perdono.
Capitolo 3 Il sensore omnidirezionale 61
Si tratta di un processo non lineare e non reversibile che va a sommarsi a quello
delle distorsioni introdotte dall’ottica.
Un passo fondamentale verso il recupero di almeno una parte delle informazioni
perse durante il processo di formazione dell’immagine è la cosiddetta calibrazione
del sensore visivo. Nel caso più generale e classico questa consiste nel ricavare le
caratteristiche ottico-geometriche interne della telecamera, inerenti al modello
adottato della telecamera stessa (dette parametri intrinseci), e quelle esterne, cioè
l’orientazione ed il posizionamento della telecamera nello spazio (dette parametri
estrinseci). A partire da una precisa conoscenza di questi parametri e dall’utilizzo di
informazioni sull’ambiente di lavoro, o derivanti da sistemi di visione
stereoscopica, o derivanti ad esempio da sequenze di immagini, risulta possibile
recuperare informazioni sulla profondità, la distanza relativa e la forma degli
oggetti. Insomma si può cercare di aggiungere tridimensionalità alla conoscenza che
si ha della scena osservata. Tra le innumerevoli tecniche proposte in letteratura per
la calibrazione di telecamere, la principale è probabilmente quella di Tzai [Tzai,
1997].
Un modo di impiegare le informazioni sul sistema ottico ricavate dalla sua
calibrazione è quello che va sotto il nome di prospettiva inversa (IPM, Inverse
Perspective Mapping). Come descritto nello studio del processo di formazione
dell’immagine, le immagini fornite da una qualsiasi telecamera danno una
rappresentazione molto distorta della realtà: si ha una componente di distorsione
legata all’ottica della telecamera, ma soprattutto una distorsione geometrica legata
al processo di proiezione prospettica. La prospettiva inversa è un tecnica che vuol
rimappare le informazioni presenti nell’immagine I su una nuova immagine
rettificata R che dia una rappresentazione non distorta di ciò che appare su un
qualunque piano P preso come riferimento.
Capitolo 3 Il sensore omnidirezionale 62
Questa mappatura può essere così descritta:
Dati (k,m) come coordinate del pixel dell’immagine I che rappresenta il
punto (x,y) del piano P (ed è questa la relazione (k(x,y),m(x,y)) che la
calibrazione deve individuare) e I(k,m) la sua intensità, (i,j) le coordinate
del pixel dell’immagine rettificata R che rappresenta lo stesso punto (x,y)
del piano P e R(i,j) la sua intensità, a parte traslazioni nei sistemi di
riferimento,
i = round(x / Sens),
j = round(y / Sens),
R(i(x) , j(y)) = I(k(x,y) , m(x,y))
Dove Sens è la lunghezza del lato della regione quadrata di superficie del
piano P rappresentata da un pixel dell’immagine R.
Nel caso della navigazione, in cui questo piano di riferimento è tipicamente il piano
del pavimento, il risultato di questa operazione è la generazione di una mappa
dell’ambiente a livello pavimento: questa immagine sembrerà una fotografia
scattata dall’alto verso il basso ad una altezza considerevole da un obbiettivo privo
di distorsioni.
Fig. 3.6a Fig. 3.6b
Capitolo 3 Il sensore omnidirezionale 63
La figura 3.6b corrisponde alla 3.6a dopo l’applicazione della rimozione prospettica
tramite calibrazione empirica (descritta nel successivo paragrafo). Come detto in
precedenza , la nuova immagine sembra essere stata acquisita da un altezza
maggiore e si può notare come, in vicinanza del robot, si mantenga una buona
risoluzione mentre nell’area distante dal centro dell’immagine, la risoluzione vada
via via diminuendo.
Diamo, ora, una breve descrizione (non è infatti scopo di questa tesi) delle 2
principali tecniche di calibrazione presenti in letteratura.
3.3.1 Calibrazione geometrica o esplicita
Questa tecnica di calibrazione utilizza un modello molto simile a quello classico
impiegato da Tzai [Tzai, 1996].
Tramite la costruzione di un modello geometrico del sensore visivo, fondato sulla
conoscenza della posizione e dell’orientazione reciproca della telecamera e dello
specchio, dei parametri intrinseci della telecamera, della forma dello specchio, della
posizione e orientazione del piano di riferimento per l’inversione prospettica, il
modello permette di calcolare la relazione tra pixel dell’immagine e punti del piano
di riferimento. Per la telecamera si utilizza un modello pin-hole, ipotizzando che la
distorsione introdotta dall’ottica sia sferica e trascurando un’eventuale componente
tangenziale. In particolare, tra i parametri intrinseci della telecamera, solo gli angoli
di apertura e il coefficiente di distorsione radiale dell’ottica risultano essere rilevanti
ai fini del modello.
Ciò che si deve conoscere per applicare un algoritmo di calibrazione di questo tipo
è:
l’equazione radiale della forma dello specchio, che include anche l’altezza
di questo dal piano di riferimento;
Capitolo 3 Il sensore omnidirezionale 64
il coefficiente di distorsione dell’ottica;
la dimensione in pixel delle immagini acquisite;
l’angolo di apertura dell’ottica;
l’altezza del centro ottico dal piano di riferimento.
Questo algoritmo ha il vantaggio di suddividere tutti i componenti del catadiottro e
di analizzarli separatamente, in modo tale che la modifica di uno di essi o la
riorganizzazione nello spazio del sistema comporti solamente la necessità di
misurare i nuovi valori assunti dai parametri del modello (ad esempio l’altezza dello
specchio dal suolo, il coefficiente di distorsione di questa, l’equazione della forma
dello specchio) per ottenere una nuova calibrazione del sistema. D’altro canto non
sempre è possibile conoscere con precisione questi parametri e inoltre il sistema è
molto sensibile anche a piccoli errori in alcuni di questi.
3.3.2 Calibrazione empirica o implicita
Invece di creare un modello articolato che descrive separatamente tutte le parti del
sistema fisico (la telecamera con i suoi parametri intrinseci, lo specchio e la sua
forma, il posizionamento reciproco di questi, il piano di riferimento, eccetera), per
cercare di ovviare ai problemi visti nella tecnica geometrica, si è sviluppato un
algoritmo che anziché basarsi su un modello analitico, si fonda su basi strettamente
empiriche.
Si raccolgono un numero predefinito di punti campione di cui è nota la distanza dal
centro del sistema (che solitamente coincide con il robot).
I punti campione dovranno essere rappresentativi di tutte le regioni di interesse del
campo visivo, ed essere concentrati più densamente nelle regioni di maggior
importanza: la precisione locale dell’inversione prospettica sarà infatti
proporzionale a questa densità.
Capitolo 3 Il sensore omnidirezionale 65
Operando, poi, una semplice interpolazione lineare fondata sulle posizioni dei punti
campione, si riesce a rimappare tutta l’area di interesse dell’immagine sulla
superficie .
L’Ing. Bolognini, nel lavoro di tesi, ha scelto di utilizzare campioni presi da otto
direttrici equidistanti angolarmente.
Per quanto riguarda la rilevazione delle coppie di campioni, questa è un’operazione
che viene fatta con l’ausilio di un pattern di regioni bianche e nere che si alternano
regolarmente lungo una direzione (si veda l’immagine in figura 3.6a).
Dall’osservazione dell’immagine di figura 3.6b, si può notare come in molte regioni
siano presenti ancora notevoli distorsioni locali (si noti ad esempio la base della
porta sulla destra dell’immagine). Queste distorsioni sono da attribuire in gran parte
alla linearità dell’interpolazione utilizzata: usare un’interpolazione lineare equivale
ad approssimare la forma dello specchio tramite un insieme di quadrilateri, superfici
piane che accostate generano una superficie a gradiente discontinuo.
Esiste una terza tecnica di calibrazione (si veda tesi dell’Ing. Bolognini) che
permette di ridurre questi effetti distorcenti tramite una correzione basata su
polinomi approssimanti ma della quale non ci occuperemo in quanto è
un’estensione di quella empirica.
Capitolo 4 L’algoritmo SPY 66
4.1 Applicazione ad un caso: ambiente RoboCup
RoboCup è un progetto internazionale per promuovere l’intelligenza artificiale
applicata ai robot puntando sul gioco del calcio come campo di ricerca.
Varie tecnologie vengono applicate a questo progetto: acquisizione di immagini,
elaborazione ed interpretazione dati in real-time e strategie di decisione .
Scindendo l’aspetto puramente meccanico di RoboCup, da quello elettronico ed
informatico possiamo affermare che quest’ultimo si basa principalmente sulla
visione artificiale in ambienti fortemente dinamici .
Si è pensato, quindi, di applicare lo studio del movimento tramite sensori
omnidirezionali al caso specifico delle competizioni tra Robot intelligenti e di
calibrare il sensore, rimuovendo la prospettiva, rispetto al piano rappresentato dal
campo da calcio delle competizioni RoboCup. (si veda Cap. 3)
Questo tipo di applicazione ha imposto dei vincoli che hanno influenzato le scelte
fatte durante la creazione del programma SPY. Tutto ciò verrà ampiamente
descritto nel corso di questo capitolo.
4.2 I vincoli imposti
In questo paragrafo saranno illustrate tutte le specifiche richieste per la soluzione al
problema .
• L’Algoritmo deve poter lavorare in real-time (ad esempio per applicazioni
in ambiente RoboCup).
• E’ necessario poter scegliere se analizzare i dati on-line (real-time) o off-
line per un analisi approfondita.
• I risultati devono essere affidabili in un intorno considerevole del sensore
visivo.
Capitolo 4 L’algoritmo SPY 67
• L’analisi del movimento deve poter rilevare spostamenti in qualsiasi
direzione .
• Devono essere presenti parametri che consentano di variare la sensibilità
dell’algoritmo al movimento.
• E’ necessario un potente filtraggio del rumore associato all’acquisizione ed
agli errori nel calcolo dei vettori di flusso ottico.
Come descritto nell’introduzione, lo studio del flusso ottico tramite sensore
omnidirezionale, richiedeva scelte assai differenti da quelle adottate ad esempio
dall’Ing. Maris , dall’Ing. Ampollini nelle loro tesi o da Barnard & Thompson.
Essi, infatti, hanno sviluppato algoritmi operanti su immagini piane, indipendenti,
quindi, da tutto ciò che è l’ IPM (Cap. 3).
Analizziamo ora, alcune delle specifiche sopraelencate.
Lavorare in real-time (o on-line) è indispensabile per il caso delle competizioni
RoboCup nelle quali il contesto è un ambiente dinamico dove sono presenti oggetti
fermi (campo da calcio cromaticamente uniforme e righe del campo) o in
movimento (palla ed altri robot). Questo aspetto del problema ha richiesto di
valutare la velocità di acquisizione-elaborazione di SPY.
Al fine di testare la qualità dell’algoritmo, si rende necessario poter lavorare anche
off-line: acquisendo 2 immagini significative e visualizzandone il flusso ottico al
variare di alcuni parametri, si può trovare la combinazione ideale dei valori che
questi parametri devono assumere per poi utilizzarli on-line.
Questo strumento di calibrazione dell’algoritmo ha permesso di migliorare la
qualità e l’affidabilità dei dati forniti in output da SPY.
L’aspetto dell’affidabilità è critico in questo contesto, in quanto le decisioni prese
dal robot si basano sulle posizioni di altri oggetti (fermi o in movimento) ricavabili
dai vettori di flusso ottico.
Uno dei problemi incontrati è relativo alla risoluzione delle immagini acquisite dal
robot : questa, una volta rimossa la prospettiva dall’immagine, diminuisce
allontanandosi dal robot stesso. Ecco perché una volta definito l’algoritmo si è reso
necessario testarne la validità al variare della posizione degli oggetti considerati .
Capitolo 4 L’algoritmo SPY 68
Se le risorse a mia disposizione si fossero concentrate sull’individuazione del
movimento in una direzione preferenziale, come accade nelle applicazioni per il
riconoscimento di targhe (vedi tesi di Ampollini), si sarebbe ottenuta una maggior
densità di vettori di flusso ottico ma si sarebbe altresì snaturato lo scopo per il quale
è stato costruito il sensore HOPS; è stato quindi necessario sviluppare operatori di
rivelazione del movimento che operassero in tutte le direzioni a scapito della
velocità di elaborazione e della densità dei dati da analizzare.
4.2.1 Le scelte strumentali Elenchiamo i componenti meccanici, hardware e software utilizzati in questa tesi:
• Sensore omnidirezionale HOPS nella versione utilizzante lo specchio
costruito presso l’Università di Ulm
• 2 Framegrabber BT 878 montati sul robot “ Galavron ”
• Video for Linux come interfaccia tra il framegrabber e la memoria del
computer.
• Ambiente di sviluppo/programmazione : Linux / C, C++ con compilatore
GNU g++.
• Librerie grafiche QT2 Trolltech integrate con quelle standard di Linux.
• Computers : un PC AMD K6 350MHz ed un PC Pentium III 600 .
Fig. 4.1
Capitolo 4 L’algoritmo SPY 69
In figura 4.1 vengono rappresentati schematicamente gli elementi usati per lo
svolgimento del lavoro.
In realtà la maggior parte delle prove effettuate off-line sono state svolte con una
configurazione che prevedeva il framegrabber installato sul PC. La lentezza del
trasferimento dati tra il computer+framegrabber montato sul robot ed un display per
la visualizzazione dei risultati ha reso impossibile le prove on-line direttamente da
Galvron. Per questa ragione all’esecuzione di SPY viene caricata in memoria una
sequenza di 10 immagini significative (visualizzabile sull’interfaccia grafico del
programma) che simula un processo on-line.
4.3 L’algoritmo
Per la descrizione, si supponga di avere acquisito 2 immagini che chiameremo Old
e New, di averle trasformate (ove necessario) in immagini a 256 livelli di grigio (8
bit per pixel) e di averle depositate nella memoria del computer sottoforma di
matrice bidimensionale.
Le parti costituenti il “cuore” dell’algoritmo sono le seguenti:
1. Filtraggio in ingresso del rumore associato ai frame Old e New.
2. Estrazione dei contorni.
3. Rimozione prospettica.
4. Ottimizzazione della fase 6 tramit rilevamento dei 15 codici più
rappresentativi da associare a tutti i pixel di uno dei 2 frame .
5. Sottrazione del fondo tramite un confronto tra istogrammi.
6. Codifica soft 3×3.
7. Estrazione del flusso ottico tramite matching .
8. Filtraggio finale del rumore fatto sui vettori di flusso ottico.
Capitolo 4 L’algoritmo SPY 70
4.3.1 Filtraggio del rumore associato ai frame in ingresso
La teoria sugli operatori di filtraggio è stata descritta nel Cap. 1. In questa sede
saranno illustrate le scelte fatte ed i motivi che mi hanno condotto ad esse.
Per testare le prestazioni dei tre filtri vengono caricate, nella memoria del
calcolatore, 2 acquisizioni consecutive della medesima scena pertanto Old coincide
con New.
E’ stato verificato l’effetto del filtraggio controllando l’immagine dei contorni e a
posteriori, i valori di flusso ottico.
Fig. 4.2
In figura 4.2 è mostrato come il rumore unitamente alle variazioni di luminosità
“sporchi” le zone interne ai bordi.
Un buon filtraggio agisce sull’estrazione dei contorni nel seguente modo:
Produce contorni sottili
Per oggetti cromaticamente uniformi, tutta la regione di pixel all’interno dei
contorni dovrebbe risultare bianca, quindi ad un livello di grigio pari a 255.
Il numero di pixel neri entro tale regione (indice appunto di rumore)
dovrebbe essere limitato.
Capitolo 4 L’algoritmo SPY 71
Da questa prima analisi, il filtro più accurato è risultato (come prevedibile) il filtro
Unsharp Masking con gaussiana.
Soddisfacenti sono state le prestazioni con il filtro Gaussiano e sufficienti quelle
con il filtro quantizzatore a due bit di soppressione.
Successivamente si sono analizzate le immagini di flusso ottico .
Avendo, infatti, caricato in memoria 2 acquisizioni della medesima scena, se il
sistema fosse esente da rumore aleatorio, ci si aspetterebbe un flusso ottico uguale a
zero ovunque (nulla si è mosso). Successivamente, scrivendo su file di testo tutti i
vettori di flusso ottico, ho potuto valutare al variare dell’operatore di filtraggio,
quanti pixel presentavano valori di flusso diversi da 0 , quindi in che quantità il
rumore aveva agito sull’immagine.
I risultati sono riportati nella seguente tabella:
Tipo di filtro n° pixel totali n° pixel con f.o. ≠ 0
Unsharp Masking + gauss. 512×384 = 196608 19
Gaussiano 512×384 = 196608 25
Quantizzatore a 2 bit 512×384 = 196608 35
Quantizzatore a 3 bit 512×384 = 196608 27
Una prima stesura dell’algoritmo prevedeva l’utilizzo del filtro Unsharp Masking.
Tuttavia, procedendo con il lavoro, si è realizzato che il rallentamento dovuto
all’utilizzo di questo operatore (causato dai calcoli in virgola mobile) era accettabile
per un’analisi off-line ma, se sommato ai tempi di calcolo delle altre parti
dell’algoritmo, insostenibile per il real-time.
Si è scelto, perciò, di utilizzare il filtro quantizzatore a 3 bit di soppressione, il
quale richiede una semplice operazione di shift a destra di 3 posizioni della
“parola” rappresentante il livello di grigio.
Ciò che si perde in termini di qualità a causa dell’utilizzo di questo operatore verrà
compensato (o quasi) tramite l’ultimo passo dell’algoritmo: il filtraggio finale del
rumore fatto sui vettori di flusso ottico.
Capitolo 4 L’algoritmo SPY 72
4.3.2 Estrazione dei contorni
Nell’algoritmo sviluppato, il processo di segmentazione viene fuso con quello di
estrazione dei contorni.
L’operazione di estrazione degli edge è alla base di molte applicazioni nel campo
della visione artificiale; da essa dipende la consistenza dei dati elaborati ed
un’immagine dei contorni “pulita” porta a risultati migliori.
Si rende per questo necessaria un’accurata scelta sul tipo di estrattore da utilizzare
tra quelli descritti in letteratura (vedi Cap. 1); scelta che, in questo caso, è stata
dettata semplicemente da osservazioni su vari tipi di immagini riportate nelle figure
1.4, 1.5, 1.6 e 1.7 del Cap. 1.
L’importanza di questo passo e le conseguenze che esso provoca sul resto delle
operazioni dell’algoritmo è fondamentale.
Non esiste, infatti, un’estrattore migliore in assoluto ma la scelta dipendende dal
tipo di immagine e dalla dinamica dei livelli di grigio; per questo motivo ho scelto
di rendere disponibili tutti e 4 gli operatori di estrazione dei contorni potendo
altresì agire in tempo reale sul valore di soglia e utilizzare, a seconda del contesto,
quello ottimale per lo scopo.
4.3.3 Rimozione Prospettica IPM
L’algoritmo SPY lavora correttamente su immagini piane e su quelle acquisite
dal sensore omnidirezionale HOPS montato sul robot “Galavron” .
Dopo aver operato sull’immagine tramite filtraggio del rumore ed estrazione dei
contorni, nel caso specifico di immagini omnidirezionali è previsto l’utilizzo
dell’IPM (descritta nel Cap. 3) riferita ad esempio al piano coincidente con il campo
da calcio delle competizioni RoboCup.
Ricordo che una delle principali informazioni che il flusso ottico contiene è di tipo
spaziale ossia: SPY deve poter affermare con un margine di errore minimo che, ad
Capitolo 4 L’algoritmo SPY 73
esempio, il pixel di coordinate (235,178) si è spostato in (237, 180). Quindi,
conoscendo a priori la risoluzione dell’immagine ( a quanti cm o mm corrisponde un
pixel) ottengo lo spostamento fisico cui viene sottoposto il pixel e, ripetendo il
calcolo per tutti i punti che hanno variato la loro posizione appartenenti ad un
determinato oggetto della scena, riesco a stimare di quanto si sia spostato un
oggetto tra un frame (Old) ed il successivo (New).
Per applicare questo principio alle immagini fortemente distorte acquisite con
HOPS, occorre “ricostruire” l’ambiente che circonda il sensore. Di questo si occupa
l’IPM la quale elimina, in gran parte, la distorsione introdotta dallo specchio del
sensore omnidirezionale, fornendo in uscita un’immagine piana e “raddrizzata” in
cui le coordinate reali di ogni punto della scena vengono ricavate tramite la distanza
in pixel dal centro del robot.
Fig. 4.3a Fig. 4.3b
In figura 4.3a è mostrata l’immagine (con prospettiva) acquisita dal sensore ibrido
omnidirezionale (nell’algoritmo la rimozione prospettica viene eseguita
sull’immagine dei contorni ma il principio non cambia).
Si può notare una forte distorsione, ad esempio, sulle linee bianche del campo da
calcio ed alla base delle pareti laterali.
In figura 4.3b è stata rimossa la prospettiva, l’immagine è raddrizzata e si intuisce
un aspetto critico dopo questa applicazione: nell’allontanarsi dal centro
Capitolo 4 L’algoritmo SPY 74
dell’immagine (il robot) la risoluzione tende a calare. Questo fenomeno determinerà
un’incongruenza tra i dati misurati sperimentalmente e quelli forniti da SPY su
oggetti posizionati là dove la risoluzione è bassa. Uno scopo di questa tesi era
quantificare tale errore, tentare di correggerlo e stimare a quale distanza dal robot i
dati diventano inaffidabili.
Come viene eseguita l’IPM :
La rimozione della prospettiva si basa su una mappatura dell’ambiente circostante
al robot ottenuta mediante calibrazione semi-empirica del sensore HOPS (si veda
Cap. 3).
L’output di questa calibrazione è la Look-up-Table ; una tabella sotto forma di file
di testo la quale, per ogni pixel dell’immagine con prospettiva, fornisce la posizione
del corrispondente pixel appartenente all’immagine con prospettiva rimossa.
Le specifiche per una corretta applicazione dell’IPM tramite la tabella Look-up-
Table sono:
• Grabbaggio di immagini tramite BT878 ad una risoluzione di 512×384.
• Risoluzione dell’immagine con prospettiva rimossa : 307×307
• Coordinate in pixel del centro del robot 153×153
Non essendo argomento principale di questa tesi mi limiterò a descrivere il metodo
formato della Look-up-Table, utile per l’algoritmo sviluppato:
La prima riga, ad esempio, sta a significare che il pixel di
coordinate (193,10), dell’immagine con prospettiva rimossa,
corrisponde al pixel (305,25) dell’immagine originaria.
Il numero 1 a fianco indica che il pixel appartiene alla zona
dell’immagine interna al cerchio visibile in figura 4.3a e
4.3b. Se vi fosse il numero 0 vorrebbe dire che il punto in
questione dell’immagine originaria è esterno a tale circonferenza così come sarà
esterno nell’immagine con prospettiva rimossa.
Capitolo 4 L’algoritmo SPY 75
SPY è stato quindi dotato di uno switch per consentire la scelta di eseguire o meno
la rimozione prospettica a seconda che, rispettivamente, si lavori con il robot o con
immagini piane.
4.3.4 Estrazione dei 15 codici significativi
A questo punto, il rumore è filtrato, i contorni estratti e, ove necessario si è
applicata la rimozione prospettica.
Avendo optato per un algoritmo basato sul MATCHING di elementi significativi
dell’immagine, si imponeva una scelta su quali fossero questi elementi.
Tra tutte le possibili assegnazioni, si è scelto di confrontare, tra Old e New, le forme
di un intorno 3×3 centrato su ogni pixel dell’immagine codificando queste forme
tramite un numero binario a 9 bit.
Si è così mantenuta una stretta analogia con l’algoritmo proposto da Maris .
Si può notare dalla figura 4.4 come, focalizzando l’attenzione su un singolo punto,
si possa isolare un intorno 3×3 di ogni pixel dell’immagine dei contorni.
Fig. 4.4
Capitolo 4 L’algoritmo SPY 76
Definendo rows il numero di righe e cols il numero di colonne della matrice
bidimensionale nella quale ogni elemento è un pixel dell’immagine, si scorre il
singolo frame dall’alto a sinistra (rows = 1, cols =1 ) fino ad arrivare in basso a
destra (rows = Image_Height-1, cols = Image_Width-1) centrando una maschera
3×3 su ogni pixel al quale verrà associato un codice (un numero intero) secondo la
seguente regola:
Si scorre la maschera partendo dal punto 0 dove è presente il pixel al quale si sta
assegnando il codice fino al punto 8; si assegna valore logico “0” al pixel a livello
di grigio pari a 255 (bianco) o valore logico “1” se si trova un pixel nero.
Il codice sarà rappresentato dal numero decimale corrispondente.
Esempio:
Essendo rappresentato da un numero binario a 9 bit, il codice si potrà presentare in
512 combinazioni diverse, assumendo valori ∈ [0 , 511].
E’ importante a questo punto, osservare come l’algoritmo di Maris sia stato
sviluppato e successivamente testato su immagini piane e cromaticamente semplici;
l’idea di base rimane la stessa, ossia il confronto viene fatto sugli stessi elementi ma
Maris ed Ampollini, non dovendo agire su immagini fortemente distorte, hanno
Capitolo 4 L’algoritmo SPY 77
imposto un vincolo alle possibili combinazioni di 1 e 0 che il codice poteva
assumere.
“Da studi statistici, effettuati su immagini piane, si dimostra come tra le 512 forme
del codice,ne risultino significative solo 15 le quali sono quasi sempre le stesse per
ogni immagine.” [Maris].
I 15 valori ricavati da Maris vengono riportati di seguito:
480 312 270 387 483 504 318 399 497 380 287 455 290 392 511.
In realtà dovrei riportare anche il codice 0 (intorno di pixel bianchi) ma ai fini di
calcolo del flusso ottico non è rilevante.
Una prima stesura dell’algoritmo prevedeva l’utilizzo di questa teoria grazie alla
quale si alleggeriva il carico computazionale.
Testando SPY su immagini piane, ho potuto riscontrare eccellenti risultati che
tuttavia peggioravano notevolmente al momento di utilizzo delle immagini distorte
acquisite tramite HOPS.
Ho quindi dedotto che l’ipotesi di Maris, nel caso di tali immagini, non fosse
rigorosamente valida.
E’ stata quindi studiata la statistica, su un insieme considerevole di acquisizioni,
sulla frequenza di ripetizione ed i valori con cui le combinazioni dei codici si
presentavano nelle immagini distorte.
I risultati vengono riportati di seguito:
Tipo di immagine Codici
Omnidirez. senza IPM 28 193 318 483 7 112 399 504 415 18 69 432 447 507 380
Omnidirez. con IPM 28 483 318 7 193 112 504 399 116 16 392 69 432 495 381
Si può notare una differenza superiore al 50% in entrambi i casi rispetto ai codici di
Maris.
In teoria ci si dovrebbe aspettare che i codici dell’immagine alla quale viene
applicata l’IPM coincidano approssimativamente con i 15 fissi elencati in
precedenza in quanto, in entrambi i casi, si tratta di osservazioni su immagini piane.
Capitolo 4 L’algoritmo SPY 78
Probabilmente questa discrepanza nasce dalle forti distorsioni introdotte dallo
specchio presenti in minima parte nell’immagine raddrizzata e da una risoluzione
non uniforme su tutta l’immagine con IPM.
Tengo a precisare che i codici riportati in tabella, variano anche al variare del tipo
di estrattore dei contorni selezionato.
Tutto ciò ha comportato la seguente scelta:
Si estraggono i 15 codici ( da Old o da New) che si presentano con maggior
frequenza, memorizzandoli in un array lineare in ordine decrescente insieme al
numero di volte col quale si presentano nell’immagine.
L’utilizzo di quest’ultimo dato verrà chiarito più avanti.
Abbandonando del tutto l’idea di 15 codici fissi ho reso l’algoritmo più pesante ma
certamente ho migliorato la validità dei dati per lo scopo al quale questa tesi mira.
Ci si potrebbe, a questo punto, porre le seguenti domande: è necessario (lavorando
on-line ad esempio) ricavare i codici per ogni coppia di Old e New ? Non sarebbe
sufficiente trovare questi codici per le prime 2 o 3 coppie di immagini ?
Precisiamo che, a meno di drastici cambiamenti di oggetti o di sfondo, i 15 codici
rimarranno circa gli stessi.
La scelta di ricavare continuamente i codici o meno sarà motivata nel seguente
paragrafo.
4.3.5 Sottrazione del fondo tramite confronto tra istogrammi
Lavorando on-line ci si imbatte in un fastidioso fenomeno indipendente dal rumore
aleatorio o dall’algoritmo utilizzato: quando di una scena si visualizza lo sfondo,
in teoria si dovrebbe osservare una situazione dinamicamente stabile (nulla si
muove) ⇒ flusso ottico uguale a zero ovunque.
Capitolo 4 L’algoritmo SPY 79
In realtà non è così; infatti, a causa di impercettibili movimenti di tutte le parti del
sensore, accade che, nonostante nulla si sia mosso, Old e New non siano
esattamente la stessa immagine.
Visualizzando il flusso ottico si noterà visivamente del rumore (che per
convenzione viene chiamato rumore di oscillazione del sensore) inteso come pixel
in movimento (anche significativo) in direzioni casuali aventi vettori di flusso ottico
diversi da zero i quali si sommeranno “visivamente” a quelli utili nel momento in
cui un generico oggetto si muoverà nella scena.
E’ stata applicata allora un tecnica di sottrazione del fondo sfruttando i 15 codici
trovati in precedenza che vado ora ad illustrare.
Si estraggono, dall’immagine dello sfondo, i 15 codici significativi
memorizzandoli in un array lineare in ordine decrescente (in analogia a quanto
fatto per le immagini Old o New).
E’ inoltre indispensabile, ricavare un istogramma della frequenza con cui ognuno
dei 15 codici si presenta nell’immagine.
Questi codici sono rappresentativi di ciò che tra Old e New è rimasto immobile e
forniranno agli istogrammi delle immagini in movimento un contributo pressoché
costante.
Una volta estratti i 15 codici di Old o New procedo alla sottrazione degli
istogrammi.
I codici che sopravviveranno a questa differenza, tramite opportune regole di
selezione, saranno quelli che userò nella successiva fase dell’algoritmo.
Queste regole devono essere dettate dal buon senso; ricordando che il contributo
portato ad esempio da una palla (posta nel campo da calcio dei robot) in termini di
numero di presenze di un determinato codice sarà certamente modesto rispetto a
quello portato dall’immagine di fondo a quello stesso codice.
Capitolo 4 L’algoritmo SPY 80
Vediamo un esempio:
Fig. 4.5
Fig. 4.6
Dal raffronto tra le due figure si nota un aumento del n° di presenze del codice 318
del 193 del 69 e l’apparizione del 433 a discapito del 432.
Questo significa che nella scena sono entrati (uno o più) oggetti i quali hanno una
forma dei contorni “codificabile” con i codici 318 193 69 e 433 i quali
rappresenteranno i valori usati per la codifica soft dell’immagine.
Tutti i restanti codici di Old, aventi un n° di presenze uguale (con una tolleranza
minima) a quello che si ha nell’istogramma dello sfondo, vengono posti a 0; ossia ai
fini del flusso ottico non risultano rilevanti.
Capitolo 4 L’algoritmo SPY 81
Vantaggi:
• Il match viene eseguito su un numero di codici (che da questo punto in
avanti chiamerò “sopravvissuti”) certamente inferiore a 15. Dato che i
passaggi sul calcolo delle corrispondenze, vengono ripetuti iterativamente su
ogni pixel dell’immagine, si ottiene un buon guadagno di velocità di
elaborazione.
• L’analisi visiva dei vettori di flusso ottico dovuti al rumore di oscillazione
del sensore, ha confermato una riduzione di questi pari a circa il 40 %.
Svantaggi:
• Quello che si guadagna sulla velocità di esecuzione grazie al risparmio di
codici utilizzati, si perde abbondantemente a causa della continua estrazione
dei 15 codici di Old o di New.
• La fase di sottrazione degli istogrammi richiede inoltre del tempo
computazionale tutt’altro che trascurabile.
La soluzione migliore, riguardo alla scelta se ricavare o meno in modo continuo i 15
codici significativi per poi applicare la sottrazione del fondo tramite istogrammi, è
sembrata quella di dotare SPY di uno switch per permettere all’operatore di attivare
questo processo nel momento ad esempio, di un considerevole cambiamento della
scena.
Capitolo 4 L’algoritmo SPY 82
4.3.6 Codifica Soft 3×3
E’ il passo finale prima di eseguire il matching.
Si costruisce, in memoria, una matrice bidimensionale “COD” che dovrà contenere
i codici di ogni pixel, si attraversano entrambe le immagini Old e New (dall’angolo
in alto a sinistra fino a quello in basso a destra), si applica una maschera 3×3
centrata iterativamente su ogni pixel e si confronta il codice con quelli restanti dalla
sottrazione degli istogrammi secondo le seguenti regole:
1. Si parte operando un confronto a “distanza 0” il che vuol dire che solo se il
valore decimale del codice del pixel (i , j) di Old o di New coincide con uno
dei codici sopravvissuti, assegnerò all’elemento COD[i,j] il valore di tale
codice, uscendo dall’iterazione , saltando il passo n°2 e centrando la
maschera 3×3 sul successivo pixel.
2. Se il confronto a distanza 0 non dovesse rivelare la presenza di alcun codice
valido, ripeto il procedimento ma questa volta a “distanza 1”. Ciò significa
fare la somma degli XOR bit a bit tra il numero binario rappresentante il
codice di Old o New e quello rappresentante in ordine decrescente uno dei
codici sopravvissuti .La prima di queste somme equivalente ad 1 rappresenta
una corrispondenza valida a distanza 1 ⇒ si esce dal ciclo di iterazione e si
memorizza il risultato in COD [i,j].
3. Nel caso di “mancata corrispondenza” (anche il confronto a distanza 1
fallisce) si assegna il valore 0 a COD [i,j]
4. Quando il processo è completato per ogni pixel si pongono a valore 0 tutti
gli elementi del contorno della matrice COD ossia la prima ed ultima riga e
la prima ed ultima colonna.
Ciò è dovuto al fatto di aver applicato una maschera 3×3 ai pixel; ragion per
cui non si poteva centrare tale maschera sugli elementi con rows = 0 cols = 0
e con rows = Image_Height e cols = Image_Width.
Capitolo 4 L’algoritmo SPY 83
Vediamo un esempio di tentativo riuscito a distanza 0:
Vediamo un esempio di tentativo riuscito a distanza 1:
Il nome Soft abbinato a questa codifica deriva dal fatto di accettare come valide
anche corrispondenze a distanza diversa da 0 (in caso contrario infatti si sarebbe
chiamata Codifica Hard).
La scelta è dettata dal fatto di voler evitare di perdere informazioni utili sul singolo
pixel; utilizzando infatti una codifica di tipo Hard, si sarebbero posti a zero troppi
Capitolo 4 L’algoritmo SPY 84
elementi della matrice COD ottenendo un numero di vettori di flusso ottico diversi
da zero troppo basso per un’analisi del movimento della scena.
Si applica quindi un fattore di tolleranza su questa selezione; bisogna accettare il
fatto che nel movimento compiuto da Old a New, il singolo pixel può avere
cambiato la forma del suo intorno.
4.3.7 Estrazione del flusso ottico
Paradossalmente, è il processo più semplice dell’intero algoritmo.
Si hanno a disposizione 2 matrici bidimensionali contenenti i codici : COD_Old e
COD_New.
E’ necessario crearne altre due di dimensioni rows × cols chiamando OFX quella
che conterrà le componenti orizzontali del flusso ottico e OFY quella che conterrà
le componenti verticali.
Per ricavare il flusso, è necessario eseguire il MATCHING tra COD_Old e
COD_New attraversando COD_Old dal pixel di cordinate rows = a e cols = b
fino a quello di cordinate rows = Image_Height - a e cols = Image_Width – b
dove a e b dipendono dal tipo di operatore usato per eseguire il matching .
Durante questo processo iterativo, vengono assegnati (per ogni elemento della
matrice COD_Old) i valori di OFX e OFY secondo la seguente regola:
1. Una maschera, chiamata operatore, viene centrata sull’elemento (i , j) di
COD_New.
2. Si attraversa l’operatore con spostamenti predefiniti. Questa operazione
termina nel momento in cui si individua il primo match valido:
COD_New [i ± yoffset , j ± xoffset ] ≡ COD_Old [i , j] .
If ( yoffset > Ky ) and ( xoffset > Kx )
Capitolo 4 L’algoritmo SPY 85
⇒ OFX [i , j] = xoffset ; OFY [i , j] = yoffset
dove Ky e Kx dipendono dal tipo di operatore utilizzato.
Nel caso si trovasse un match valido entro un rettangolo di dimensioni Kx e
Ky (i quali assumono valori piccoli rispetto alle dimensioni dell’operatore):
OFX [i , j] = 0 ; OFY [i , j] = 0
Ossia si considera non rilevante lo spostamento del pixel (i , j) .
Ipotizzo questo scostamento come dovuto in primo luogo al rumore di
oscillazione del sensore o a qualsiasi altra fonte di rumore.
3. Nel caso non si trovino match validi entro il campo di azione
dell’operatore:
OFX [i , j] = 0 ; OFY [i , j] = 0 .
Si riporta a questo punto un’esempio di match valido con le seguenti caratteristiche
: COD_Old [i , j] = 28, Kx = 2 , Ky = 3 , operatore di tipo 5×6R .
La convenzione adottata sui nomi degli operatori segue le seguenti regole: il primo
numero indica l’altezza in pixel , il secondo numero indica la larghezza e la lettera o
la parola posta alla fine del nome si riferisce al metodo di scorrimento
dell’operatore (in questo caso ad esempio , R indica una scansione dell’operatore da
sinistra a destra) .
Capitolo 4 L’algoritmo SPY 86
⇒ OFX [i , j] = 2 ; OFY [i , j] = -1.
Il pixel (i , j) di Old al quale era stato assegnato un codice = 28 , viene individuato
in (j + 2 , i – 1).
Nelle stesse ipotesi precedenti vediamo ora un esempio di match non valido a causa
del limitato scostamento dalla posizione di Old .
Capitolo 4 L’algoritmo SPY 87
Il pixel con codice = 28 è individuato entro il rettangolo di dimensioni Kx e Ky per
cui : OFX [i , j] = 0 ed OFY [i , j] = 0 .
Riportiamo infine, un ultimo esempio di match non valido:
In questo caso il pixel è uscito dal campo di azione dell’operatore prescelto; ci
troviamo, quindi, in una situazione di “perdita del pixel”.
Questo tipo di situazione può essere facilmente evitata allungando (in riferimento
all’esempio precedente) la forma della maschera dell’operatore.
La soluzione proposta va però a discapito della velocità di esecuzione del matching
il quale verrà eseguito su un numero di pixel crescente con l’aumentare delle
dimensioni (sia verticali che orizzontali) .
Occorre, quindi, ponderare la scelta del tipo di operatore a seconda della scena e
della direzione del movimento da analizzare.
Verranno illustrati dettagliatamente, in seguito, gli operatori sviluppati sulla base di
osservazioni su numerose coppie di immagini Old e New.
Capitolo 4 L’algoritmo SPY 88
4.3.8 Filtraggio finale del rumore sui vettori di flusso ottico
Ricordiamo brevemente le operazioni di filtraggio del rumore fino a qui svolte:
Applicazione del filtro quantizzatore (a 3 bit di soppressione) ad Old e New
per un filtraggio del rumore aleatorio.
Sottrazione del fondo tramite un confronto tra istogrammi per eliminare il
rumore di oscillazione del sensore.
Eliminazione di scostamenti piccoli dei pixel rispetto alla loro posizione in
Old.
Nel visualizzare il flusso ottico, purtroppo, si è verificato come una discreta
componente di rumore si sommasse ai dati in uscita da SPY.
Venivano infatti riconosciuti degli spostamenti (anche rilevanti) di pixel isolati in
zone dove, in teoria, nulla nella scena si era mosso.
E’ ragionevole pensare che un oggetto di dimensioni non infinitesime del quale si
rileva lo spostamento fornisca, in un intorno della sua posizione in Old, una densità
di vettori di flusso ottico molto maggiore rispetto a quella dovuta a pixel isolati
descritta in precedenza come fonte di rumore.
Si è quindi optato per un filtraggio ulteriore da applicare ai valori di flusso ottico
presenti nelle due matrici OFX ed OFY secondo il seguente schema:
puntando all’elemento (i , j) di OFX e di OFY viene contato il numero di elementi
in un intorno 3×3 di (i , j) che hanno OFX o OFY diversi da zero. Se tale numero
risulta essre < di una determinata soglia (è stato empiricamente determinato che 3
può essere considerato un valore ragionevole) si annulla il flusso ottico per
l’elemento (i , j) .
Grazie a quest’ultima operazione, la componente di rumore descritta in precedenza
risulta notevolmente diminuita rendendo l’immagine del flusso ottico più “pulita”
ed i dati maggiormente affidabili.
Capitolo 4 L’algoritmo SPY 89
Il valore di soglia citata in precedenza (che da ora in avanti sarà chiamata intensità
del filtraggio finale), entro il quale si annulla il flusso ottico, è stato reso variabile
da un minimo di 0 (nessun filtraggio) ad un massimo di 5.
4.4 Gli operatori di MATCHING
Un paragrafo a parte meritano la scelta e la descrizione degli operatori di matching
sviluppati; da essi infatti dipende una precisa individuazione del movimento.
L’operatore ideale è quello che stima il movimento in una direzione nota a priori;
conoscendo infatti la direzione con la quale un oggetto della scena si muove ricavo
la forma adatta dell’operatore da applicare.
Queste ipotesi divengono inapplicabili nel caso di analisi in tempo reale di
movimento omnidirezionale.
Nel caso specifico di questa tesi (sensore omnidirezionale) occorre riconoscere
spostamenti di oggetti in tutte le direzioni; si perderebbe altrimenti il vantaggio
dovuto all’utilizzo del sensore ibrido HOPS.
Per questo motivo, per una prima analisi dell’algoritmo vengono utilizzati gli
operatori precedentemente progettati da Maris ma per il corretto funzionamento di
SPY sono state progettate in seguito maschere assai differenti con metodi di
scansione adatti allo scopo.
Occorre sempre tenere presente il compromesso tra precisione dell’operatore e
velocità di esecuzione dell’algoritmo; una maschera di elevate dimensioni ha il
vantaggio di rilevare spostamenti in pixel considerevoli ossia “vede” oggetti veloci
ma, dovendo eseguire il matching su molti pixel, (date appunto le dimensioni)
diminuisce l’efficienza dell’algoritmo.
Gli operatori che verranno illustrati sono stati dimensionati ed utilizzati all’interno
dell’algoritmo, dopo numerose prove effettuate su coppie di immagini Old e New.
Capitolo 4 L’algoritmo SPY 90
• Operatore 7×15R :
E’ preciso nel rilevare il movimento verso destra ; sui primi elementi ha una
scansione a chiocciola per poi divenire lineare (dall’alto al basso) su tutto il resto
della maschera.
La sua portata è di 14 pixel in lunghezza e di 3 in altezza ed il numero di
pixel su cui esegue il matching è pari a 104.
Ottimo per un’analisi off-line al fine di settare alcuni dei parametri citati nei
paragrafi precedenti ma inadatto per lavorare on-line con le immagini
acquisite da HOPS.
Si omette di riportare l’operatore 7×15L in quanto risulta essere speculare
rispetto al 7×15R.
• Operatore 11×11 a chiocciola:
Capitolo 4 L’algoritmo SPY 91
Su tutta l’area ha una scansione di tipo chiocciola; è in grado di rilevare il
movimento in qualsiasi direzione. Esegue il matching su 120 elementi ed ha una
portata max. di 5 pixel in tutte le direzioni.
Non è stato ritenuto utile estendere le dimensioni di questo operatore di modo
da aumentarne la portata. Infatti per fare ciò, si rendeva necessario passare ad un
operatore di tipo 13×13 il che comportava un matching su 168 elementi.
Quindi per aumentare la portata di un solo pixel in tutte le direzioni sarebbe
stato necessario eseguire il confronto su 48 elementi in più rispetto all’ 11×11 ;
considerando questo incremento per ogni pixel dell’immagine si sarebbe
introdotto un ritardo non trascurabile nella catena dell’algoritmo.
• Operatore 21×21 Explosion:
Questo operatore raddoppia la propria portata rispetto al precedente (10
pixel in tutte le direzioni) mantenendo a 160 il numero di elementi su cui
fare il match .
Tutto ciò a discapito della precisione e della densità dei vettori di flusso
ottico. Come si nota dalla figura, infatti, il match viene eseguito solo sui
quadrati anneriti partendo dal nucleo centrale (il pixel (i , j) ) e spostandosi
verso l’esterno. Si perde una discreta parte di informazione sullo
Capitolo 4 L’algoritmo SPY 92
spostamento di un oggetto di piccole dimensioni ma mediamente su oggetti
come palle o altri robot, il flusso dati è sufficiente per stimare il movimento.
Capitolo 5 Programma, test e risultati 92
5.1 Il programma SPY
Durante la definizione dell’algoritmo, si è evidenziata l’importanza di disporre di
uno strumento dal quale ottenere informazioni sulla qualità e sulla correttezza di ciò
che si stava progettando.
Per tale motivo, il programma è nato come “banco di prova” per le intuizioni e le
supposizioni riguardo all’argomento del progetto sviluppato; vale a dire che SPY
viene progettato in una prima stesura , per lavorare off-line .
Con questo tipo di utilizzo è risultato possibile valutare l’importanza di alcuni dei
parametri usati nell’algoritmo e la necessità di poterli settare (in relazione alla
scena) .
Una volta analizzate le numerose problematiche incontrate e corretti gli errori di
una prima stesura, si è progettata la sezione di programma da utilizzare in processi
on-line.
Si procederà qui di seguito con una breve descrizione del sorgente di SPY al fine di
motivare alcune delle scelte adottate.
Fig. 5.1
Capitolo 5 Programma, test e risultati 93
In figura 5.1 vengono rappresentate schematicamente le principali componenti del
programma:
Image rappresenta la classe base per la gestione delle immagini, è fornita di
metodi per : lettura delle dimensioni, conversione da e verso i formati ppm e pgm,
filtraggio del rumore, estrazione dei contorni, estrazione dei 15 codici
rappresentativi , l’estrazione dei “codici sopravvissuti” e rimozione prospettica.
OptcialFlow una volta costruiti i due oggetti immagine Old e New vengono
inviati come parametri ad un oggetto Flow appartenente alla classe OpticalFlow la
quale è fornita di metodi per : matching tra Old e New, memorizzazione dei vettori
di flusso ottico nelle due matrici OFX ed OFY, filtraggio dei vettori di flusso e
memorizzazione dei dati su file di testo.
Framegrabber questa classe si occupa dell’acquisizione delle immagini e del
loro salvataggio nella memoria del calcolatore. Viene utilizzata in modo continuo
solo nei processi on-line.
Graphic integrata con le librerie grafiche QT2, questa classe si occupa della
gestione dell’interfaccia grafica di SPY, di collegare ogni switch o slider inserita
con il corrispondente evento e, all’esecuzione del programma, di caricare in
memoria alcune strutture di default tra cui la Look-up-Table.
Main dentro al sorgente principale vi sono le due Thread per la gestione del
programma. Al momento dell’esecuzione, questi due processi osservano
automaticamente ciò che accade sull’interfaccia grafica dato che il parametro
passato alle Thread è un oggetto appartenente alla classe Graphic.
SPY viene dotato di un selezionatore che permette di scegliere se analizzare il
flusso ottico in real-time ed utilizzare le chiamate all’interno della Thread “on-
line” oppure a telecamere spente utilizzando quelle della Thread “off-line”.
Riportiamo in figura 5.2 uno schematico diagramma di flusso del programma:
Capitolo 5 Programma, test e risultati 95
Fig. 5.2
5.1.1 L’interfaccia grafica di SPY
Fig 5.1.1
L’utilizzo di un’interfaccia grafica era fondamentale per questo tipo di
applicazione; in primo luogo per rendere il programma user friendly, in secondo
Capitolo 5 Programma, test e risultati 96
perché troppi erano i parametri da settare “in console” ed infine perché non vi era
altra soluzione per una modalità di tipo on-line.
L’interfaccia viene creata grazie all’uso di librerie complesse ma efficaci: le QT2.
Esse vengono applicate ad un ambiente di programmazione Linux/C++.
Come si nota da figura 5.1.1 vengono distinte 3 zone: “GENERAL OPTIONS”,
“BT878 PARAMETERS” e “VIDEO AREA”.
General Options Comprende i pulsanti utilizzabili off-line, per il
caricamento delle immagini e degli operatori, per l’abilitazione dell’IPM e
dell’estrazione dei 15 codici significativi e per la scrittura dei dati su file di
testo. Compare un settore chiamato “Optimal Edge Extractor” nel quale è
possibile selezionare il tipo di estrattore e la soglia da utilizzare.
BT878 parameters Consente di settare luminosità, contrasto ed intensità
cromatica con i quali il framegrabber acquisisce le immagini.
Video Area sono presenti tre finestre, una per la visualizzazione del
flusso ottico, una per visualizzare l’immagine dei contorni ed una, attivata
quando si lavora on-line, per visualizzare in real-time la scena vista dal
sensore.
Sono inoltre presenti: una slider per variare l’intensità del filtraggio finale ed uno
switch per selezionare la modalità di esecuzione (on-line o off-line).
5.1.2 Le caratteristiche dinamiche del programma Considerando attentamente le specifiche viste nel Cap. 4 ( par. 4.2), si è preferito
optare per una gestione dinamica dell’allocazione della memoria sull’intero
programma.
I primi test venivano effettuati su immagini acquisite da telecamere piane (di
difficile reperimento) aventi dimensioni differenti; ragion per cui non si poteva
prescindere dalle dimensioni delle immagini analizzate.
Capitolo 5 Programma, test e risultati 97
Al fine di svincolare il programma da continui aggiornamenti sul cambiamento di
larghezza o altezza delle immagini, si è preferito dotare la classe Image di un
metodo per la lettura delle dimensioni, allocando successivamente un’area di
memoria dinamica .
Pertanto SPY è in grado di lavorare con immagini di qualsiasi dimensione, a
colori o a livelli di grigio, piane, fortemente distorte o con prospettiva rimossa.
Questa scelta è stata pagata in termini di aumento notevole della complessità nel
gestire la memoria a causa (ma non solo) delle frequenti chiamate alle funzioni new
e delete del C++.
5.2 Primi test visivi su immagini piane
Per valutare visivamente la validità dell’algoritmo si sono analizzate inizialmente
delle immagini piane in formato pgm con livelli di grigio pressoché uniformi su
vaste aree dell’immagine.
Grazie a questi primi test è stato possibile studiare il modo di agire degli estrattori
dei contorni e quali fossero i valori di soglia ottimali per ognuno di essi.
Occorre fare una precisazione: quando si parla di immagini piane ci si riferisce
implicitamente ad immagini acquisite da telecamere piane e non, ad esempio da
sensori omnidirezionali.
Nella realtà anche in questo tipo di immagini una piccola parte di distorsione è
presente ma, utilizzando un modello di studio approssimato, si può qualitativamente
stimare il flusso ottico.
Riportiamo in successione 2 prove su due scene a complessità differente:
Capitolo 5 Programma, test e risultati 98
Old New
Fig. 5.3 Da una prima
analisi risulta soddisfacente il
lavoro svolto dall’algoritmo;
SPY ha riconosciuto il
movimento verso destra/alto
del soggetto di figura fornendo
un flusso ottico denso di
vettori.
Per la prova di figura 5.3 viene utilizzato ad esempio l’estrattore di Roberts con
soglia = 2.
Aumentando tale valore diminuisce notevolmente la densità dei vettori di flusso
ottico. Nonostante la semplicità, questo estrattore ha permesso di ottenere buoni
risultati sulle immagini piane, fornendo in uscita un’immagine del flusso ottico ben
definita. Purtroppo, come si vedrà più avanti, le aspettative non sono state
mantenute analizzando le immagini distorte del sensore omnidirezionale.
L’operatore di rivelazione del movimento è il 7×15R.
Capitolo 5 Programma, test e risultati 99
Rimanendo nell’ambito delle immagini piane ho testato SPY su scene
maggiormente complesse, nelle quali apparivano numerosi oggetti in movimento:
Old New
Fig. 5.4: Il programma rivela un
movimento di traslazione rigida della
scena da sinistra a destra; dovuto ad
uno spostamento della telecamera
nella direzione opposta.
Anche in questo caso ottengo una buona stima del movimento ed un’alta densità di
vettori di flusso.
Per l’esecuzione di questa prova si è utilizzato l’estrattore di Prewitt con soglia 9.
Questo operatore è risultato essere il miglior compromesso qualità/velocità di
elaborazione sia su immagini piane che su immagini acquisite dal robot.
L’operatore di rivelazione del movimento è l’ 11×11 chiocciola.
Capitolo 5 Programma, test e risultati 100
5.3 Test su immagini acquisite dal sensore HOPS
In input vi sono immagini in formato ppm (a colori), verrà stimato il movimento e
si confronteranno i risultati ottenuti mantenendo l’effetto prospettico con quelli
ottenuti mediante rimozione prospettica.
A differenza delle prove eseguite sulle precedenti immagini, in questo caso si
applica la tecnica di estrazione dei 15 codici rappresentativi, la sottrazione dello
sfondo tramite differenza di istogrammi ed il filtraggio finale del rumore sui vettori
di flusso ottico.
Aspetto critico: l’immagine con prospettiva rimossa, mantiene su tutta la sua area,
una risoluzione di 2 cm per pixel; questo significa che per le zone vicine al centro
dell’immagine vi sarà un numero rilevante di pixel a mappare una certa area,
mentre allontanandosi dal robot, per mappare la stessa area mantenendo la
medesima risoluzione, aumenterà la larghezza del singolo pixel.
Questo fattore impedisce a qualsiasi estrattore dei contorni di lavorare
correttamente a distanze dal robot superiori ad un certo valore il quale è stato
determinato sperimentalmente dalle prove svolte in laboratorio.
Prima di passare alla descrizione dei test effettuati occorre descrivere le modalità di
svolgimento di tali prove ed i parametri di giudizio utilizzati.
Si acquisiscono due immagini Old e New su cui verrà eseguito il match; per i casi
significativi vengono riportate l’immagine dei contorni e (nel caso si applichi
l’IPM) l’immagine Old con prospettiva rimossa.
Il risultato è l’immagine di flusso ottico.
Alla fine di ogni prova verrà compilata una tabella contenente i seguenti parametri:
L’oggetto che ha compiuto lo spostamento.
Distanza dal robot : intesa come distanza dal baricentro dell’oggetto al
centro del robot.
Capitolo 5 Programma, test e risultati 101
Spostamento effettivo: viene misurato ed indica di quanto si sia spostato
l’oggetto rispetto alla sua posizione iniziale.
Spostamento misurato con rimozione prospettica a priori: dopo aver
rimosso la prospettiva e ricavato le matrici OFX ed OFY, SPY scriverà su
file di testo gli spostamenti di ogni pixel ricavati grazie all’algoritmo di
matching. Trattandosi dell’analisi di corpi rigidi, si può stimare un
movimento medio in pixel dell’intero oggetto, ricavando lo scostamento
effettivo in cm (1 pixel = 2 cm).
Spostamento misurato con rimozione prospettica a posteriori: l’IPM
viene eseguita dopo aver calcolato il flusso ottico.
Il programma è dotato di una funzione di conversione grazie alla quale è in
grado di applicare una rimozione prospettica ( basata sulla stessa look-up
table) agli elementi delle matrici OFX ed OFY per poi scrivere i risultati su
file di testo. Ad esempio:
applicando l’IPM a priori: il pixel [100,100] (che corrisponde al pixel
[89,102] dell’immagine acquisita) si è mosso di 5 pixel in verticale e di 5 in
orizzontale cambiando coordinate in (105,105) (che corrisponde al pixel [96,
109] dell’immagine acquisita).
Applicando l’IPM a posteriori : il pixel [89 , 102] si è mosso di 7 pixel in
verticale e di 7 in orizzontale cambiando coordinate in [96 ,109]; leggendo
la Look_up_Table ricaverò le coordinate in Old ed in New del pixel mosso
ossia [100,100] e [105,105].
Errore: è la differenza tra lo spostamento ricavato da SPY e quello
effettivamente misurato.
Si precisa che il segno ‘–‘ davanti al valore dello spostamento sta ad indicare un
avvicinamento al robot mentre spostamenti positivi implicano allontanamento.
Capitolo 5 Programma, test e risultati 102
5.3.1 Test n°1
Old New
IPM su Old Edge Old
Fig. 5.5a Fig.5.5b
Capitolo 5 Programma, test e risultati 103
Settaggi delle grandezze utilizzati per il test riportato in figura 5.5 :
• Estrattore di Prewitt con soglia 9.
• Intensità del filtraggio sui vettori di flusso ottico = 2.
• Operatore di rivelazione del movimento di tipo 11×11 chiocciola.
• Soggetti in movimento nella scena: palla e cestino.
La prima compie un movimento destra/alto mentre il secondo trasla rigidamente
verso destra.
Nonostante l’utilizzo di un estrattore avente soglia di valore elevato (aumentando
perciò la selettività) , si può notare come una parte del contorno della palla e della
base del cestino vengano “persi”. Questo è dovuto principalmente all’aspetto critico
citato in precedenza sulla risoluzione uniforme, unitamente al non netto distacco del
livello di grigio della palla o della base del cestino da quello del campo.
Il risultato riportato in figura 5.5a viene ottenuto mantenendo la prospettiva; si può
notare una discreta presenza di rumore di oscillazione, imputabile al contorno
circolare della base su cui appoggia la telecamera.
Nell’immagine di flusso ottico riportata in figura 5.5b il fenomeno viene eliminato
dalla rimozione prospettica grazie alla quale la stessa circonferenza risulta
delineata perfettamente (vedi metodo di lettura della Look-up-Table Cap.4 par.
4.3.3).
Oggetto Distanza
dal robot
Spostamento
effettivo
Spost. IPM
a priori
Spost. IPM
a posteriori
Errore
palla 150 cm + 20 cm + 18 cm + 17 cm 2 - 3
cestino 120 cm + 20 cm + 22 cm + 21 cm 2 - 1
Capitolo 5 Programma, test e risultati 105
Settaggi delle grandezze utilizzati per il test riportato in figura 5.6 :
• Estrattore di Prewitt con soglia 7.
• Intensità del filtraggio sui vettori di flusso ottico = 3.
• Operatore di rivelazione del movimento di tipo 11×11 chiocciola.
• Soggetti in movimento nella scena : palla ed oggetto nero posto in basso
La prima compie un movimento di tipo destra/alto mentre l’oggetto nero (quello ad
una distanza maggiore dalla palla) trasla vero sinistra/basso.
In questa prova viene riportata solo l’immagine di flusso ottico ottenuta applicando
l’IPM.
E’ interessante notare come un aumento dell’intesità del filtraggio finale rispetto
alla precedente prova “pulisca” l’immagine del flusso ottico dal rumore di
oscillazione.
Anche in questo caso, gli oggetti in evidenza (quelli con un livello di grigio
nettamente staccato dal fondo) hanno, nell’immagine dei contorni, dei bordi
nettamente distinti (vedi oggetto nero della scena).
L’errore sullo spostamento inizia ad aumentare.
Nel successivo ed ultimo test gli oggetti verranno posti ad una distanza maggiore
dal centro del robot.
Oggetto Distanza
dal robot
Spostamento
effettivo
Spost. IPM
a priori
Spost. IPM
a posteriori
Errore
palla 180 cm + 20 cm + 17 cm + 16 cm 3 - 4
oggetto nero 160 cm - 20 cm - 21 cm - 23 cm 1 - 3
Capitolo 5 Programma, test e risultati 107
Settaggi delle grandezze utilizzati per il test riportato in figura 5.7 :
• Estrattore di Prewitt con soglia 8.
• Intensità del filtraggio sui vettori di flusso ottico = 3.
• Operatore di rivelazione del movimento di tipo Explosion.
• Soggetti in movimento nella scena : palla ed entrambi gli oggetti neri .
La prima compie un movimento di tipo alto/destra , l’oggetto nero vicino ad essa si
muove a destra mentre quello ad una distanza maggiore trasla vero il basso.
Rispetto alla prova precedente è cambiato il tipo di operatore di matching;
l’operatore Explosion ha mostrato i propri pregi e difetti, è riuscito infatti ad
individuare un movimento di tipo omnidirezionale ma ha perso una discreta
quantità di informazione sul movimento di uno degli oggetti neri (quello a distanza
maggiore dalla palla).
Questo conferma quanto detto nel Cap. 4 a proposito di questo operatore: l’utilizzo
è consigliato per oggetti di dimensioni non piccole.
Oggetto Distanza
dal robot
Spostamento
effettivo
Spost. IPM
a priori
Spost. IPM
a posteriori
Errore
palla 220 cm + 20 cm + 15 cm +14 cm 5 - 6
oggetto nero
vicino alla
palla
240 cm
+ 20 cm
+ 10 cm
+ 12 cm
10 – 8
Oggetto nero
distante dalla
palla
160 cm
+20 cm
+21 cm
+20 cm
1 - 0
Capitolo 5 Programma, test e risultati 108
5.3.4 Conclusioni riguardo alle prove effettuate sulle immagini del sensore.
Nella realtà sono state effettuate altre prove di cui le tre riportate sono risultate le
più significative.
Tramite i test di laboratorio si è cercato di quantificare due parametri interessanti
per la valutazione del progetto: la presenza del rumore associato all’immagine di
flusso ottico (in funzione dell’intensità di filtraggio finale) e l’errore commesso sui
valori dei vettori del flusso in funzione della distanza dal robot (quest’ultimo viene
riportato nelle tabelle ).
Per il primo dei due valori, ho semplicemente ricavato (tramite scrittura del flusso
ottico su file di testo) il numero di pixel con flusso ottico diverso da zero non
appartenenti ad un oggetto realmente in movimento.
I risultati ottenuti vengono riportati nei seguenti grafici:
Fig. 5.8 : utilizzando ad
esempio un filtraggio con
intensità pari a 2, il numero
medio di pixel rumore è
compreso tra 20 e 25.
Il grafico è ottenuto mediante applicazione dell’estrattore di Prewitt con soglia pari
a 7.
Capitolo 5 Programma, test e risultati 109
Fig. 5.9
E’ evidente un miglioramento su ogni valore dell’intensità di filtraggio finale.
Aumentando la soglia, aumenta la selettività dell’estrattore riducendo in tal modo il
numero di pixel rumore ma di pari passo anche l’accuratezza con cui vengono
descritti i bordi degli oggetti in movimento.
Un aumento smisurato del valore di soglia, porterebbe alla dannosa perdita di pixel
sul contorno di tali oggetti.
Aggiungendo in seguito, un filtraggio pesante, si potrebbe addirittura non rilevare
movimento o quantomeno confondere i pixel degli oggetti in moto (ridotti a poche
unità) con il rumore di oscillazione che li circonda.
Ponderata deve essere anche la scelta dell’operatore di matching.
L’operatore Exlosion, ad esempio, ha una perdita di informazione intrinseca sul
movimento dell’oggetto di 441
160441 − ≅ 64% nel peggiore dei casi.
Ancora una volta occorre cercare il giusto compromesso tra soglia – tipo di
operatore di matching – intensità di filtraggio.
Al fine di ricavare un buon settaggio di tutte le variabili in gioco è stato considerato
come parametro di valutazione il rapporto tra n° pixel utili e n° totale dei pixel che
hanno variato la loro posizione (il quale comprende anche quelli
Capitolo 5 Programma, test e risultati 110
rumore) al variare della soglia, dell’intensità di filtraggio e del tipo di operatore di
matching.
Il solo parametro che si è preferito mantenere costante, durante le prove effettuate,
è il tipo di estrattore dei contorni.
Come è evidente nei test, si è optato per l’utilizzo di quello che, sulla base di
numerose prove ripetute, ha fornito visivamente (ed in termini di prestazioni) i
migliori risultati: l’estrattore di Prewitt.
In ogni casella viene riportato il valore del rapporto citato in precedenza:
Tab. 1
Tab. 2
Tab. 3
Capitolo 5 Programma, test e risultati 111
Osservando i risultati delle tre tabelle è chiaro come la miglior combinazione di
parametri al fine di ottimizzare il rapporto ‘pixel utili/pixel totali’ sia:
Estrattore di Prewitt con soglia = 9, intensità di filtraggio finale = 2 ed operatore di
matching = 7×15R.
Occorre precisare che quest’ultimo tipo di operatore essendo ‘monodirezionale’
(rileva infatti, solo movimenti da sinistra a destra) è inutilizzabile in ambiente
Roboup nel quale non si hanno a priori informazioni sulla direzione del movimento.
Utilizzando l’operatore di tipo 11×11 chiocciola (tabella 2), si ottengono discreti
risultati tuttavia inferiori rispetto al caso di tabella 1.
Essendo un’operatore di rilevamento di spostamenti omnidirezionali infatti, l’
11×11 chiocciola include anche il movimento in tutte le direzioni dei pixel rumore a
differenza del precedente il quale operava intrinsecamente una sorta di filtraggio sui
pixel rumore che si spostavano verso sinistra.
Infine, in tabella 3 si riportano i risultati ottenuti con l’operatore Explosion.
Si nota una diminuzione complessiva del rapporto ‘pixel utili/pixel totali’ rispetto a
quelli delle due tabelle precedenti. Con buona probabilità ciò è dovuto alla modesta
quantità di pixel su cui questo operatore esegue il matching causando un brusco
calo dei pixel rumore ma soprattutto del numero di pixel utili dei quali Explosion ha
rilevato il movimento.
Si conclude questa fase di valutazione dei test effettuati e conseguentemente della
qualità dell’algoritmo sviluppato, con la valutazione dell’errore medio misurato
come differenza tra spostamento effettivo e spostamento ricavato dal programma su
movimenti di 20 cm, in funzione della distanza dal robot.
Questa grandezza è di fondamentale importanza in quanto fornisce una stima delle
zone (corone circolari di figura 5.10) in cui i dati si possono considerare affidabili.
Non è stato ritenuto utile effettuare le misure al variare dell’operatore di matching
in quanto si può affermare con buona approssimazione che l’errore medio non
dipende dal modo di rivelazione del movimento.
Capitolo 5 Programma, test e risultati 112
In figura 5.10 viene riportato l’andamento dell’errore.
Fig. 5.10
Si distinguono tre zone fondamentali di incertezza:
1. [0 – 150] Zona ad incertezza trascurabile entro la quale, l’errore su uno
spostamento di 20 cm si mantiene sotto l’unità.
2. [150 – 200] Zona di incertezza minima.
3. [200 – 250] Zona di incertezza considerevole nella quale si commette un
errore medio fino al 65% nel peggiore dei casi.
In conclusione, per applicazioni in ambiente RoboCup, il programma appare fornire
dati attendibili fino a circa 220 cm dal centro del robot.
Nelle immagini con prospettiva rimossa, si ottiene un’estensione visiva di 330 cm
dal centro del robot quindi SPY riesce a coprire in modo affidabile i 2/3 dell’intero
campo visivo.
Capitolo 5 Programma, test e risultati 113
5.4 Stima della velocità e del tempo di esecuzione
L’ultimo parametro su cui il progetto è stato valutato corrisponde alla velocità con
cui SPY ricava i valori di flusso ottico lavorando on-line.
Ricordo che l’algoritmo entra in funzione nell’istante in cui l’immagine Old viene
memorizzata in una matrice bidimensionale allocata dinamicamente in memoria.
Si è quindi valutato quale fosse il ritardo ideale con cui effettuare la seconda
acquisizione al fine di ottenere New.
Il tempo di acquisizione del frame grabber (tempo che intercorre dal comando di
acquisizione alla memorizzazione dell’immagine) è ≅ 251 sec; tempo nel quale (in
ambiente RoboCup) risulterebbe immobile la totalità della scena.
Non avrebbe quindi alcun senso, grabbare consecutivamente Old e New
(risulterebbero quasi come la stessa immagine) . E’ necessario introdurre un ritardo
tra la prima e la seconda acquisizione al fine di rendere significativo lo scostamento
tra le due immagini.
Tra tutte le possibili soluzioni, in figura 5.11 viene riportata quella che ha fornito i
risultati migliori :
Fig. 5.11
Capitolo 5 Programma, test e risultati 114
in cui il blocco Trasf. Memoria si occupa di trasferire il contenuto del buffer lineare
in una matrice bidimensionale.
Lo schema a blocchi di figura simula una situazione di lavoro a “pieno carico” ossia
nella quale sia l’IPM che l’estrazione dei codici sono attivate.
Si definisce tempo di esecuzione totale il tempo che intercorre tra la visualizzazione
di un messaggio di fine ciclo ( opportunamente inserito alla fine della funzione che
scrive i vettori di flusso ottico dentro OFX ed OFY) ed il successivo.
Per effettuare il test di velocità e stimare il tempo di esecuzione totale , il computer
Canone ( AMD K6 350 MHz) è stato collegato al sensore visivo esterno alla Pal. 1
presso la Facoltà di Ingegneria dell’Università di Parma lanciando successivamente
SPY in modalità on-line.
Grazie all’uso di un contatore (inserito nello stesso punto del programma dove si
trova il messaggio di fine ciclo) e di un cronometro manuale , si misura quante volte
appare il messaggio di fine ciclo in ‘ x ‘ minuti.
Il risultato è il seguente:
in 10 minuti (600 sec.), Spy ha compiuto 928 estrazioni di flusso ottico a pieno
carico sfruttando le risorse di un processore a 350MHz.
Su tale piattaforma hardware, il programma è in grado di compiere un’estrazione di
flusso ottico in circa 0.64 sec.
E’ necessario comprendere se questo dato sia indice di una possibile reale
applicazione on-line in ambiente RoboCup; a tal proposito analizziamo un caso
specifico.
Si supponga di usare un’operatore di matching di tipo Explosion il quale ha un
campo d’azione di 20 pixel in tutte le direzioni il che equivale a 40 cm di
spostamento massimo riconoscibile da tale operatore.
Il sistema “fallisce” (non vede movimento) se un oggetto compie 40 cm in un tempo
inferiore a 0.64 sec ossia se l’oggetto in questione possiede una velocità superiore a
62 cm / s .
Capitolo 5 Programma, test e risultati 115
Supponendo che un moderno processore ad 1.5GHz incrementi la velocità di
elaborazione di un fattore maggiore di 4 (il calcolo è molto approssimativo) rispetto
al processore utilizzato per i test si riesce ad ottenere una velocità massima alla
quale è ancora possibile riconoscere il movimento di circa 2,5 m/s.
CONCLUSIONI
Gran parte degli obbiettivi preposti sono stati raggiunti; è stato realizzato un
programma elastico, facilmente interfacciabile con qualsiasi altro tipo di progetto
riguardante questo argomento o quantomeno correlato con la stima del movimento.
Le prestazioni sono soddisfacenti ed i dati risultano affidabili su un’area circolare
centrata sul robot di dimensioni piuttosto estese.
L’ ”anello debole” della catena dell’algoritmo rimane la parte di estrazione dei
codici e di sottrazione del fondo la quale appesantisce il carico computazionale
dell’elaboratore ed introduce ritardo sull’intero processo di elaborazione.
Possibili sviluppi futuri: gli aspetti tuttora migliorabili degli algoritmi di stima del
flusso ottico basati su matching sono limitati apparentemente all’estrazione dei
contorni e al filtraggio del rumore.
I margini di miglioramento in questa direzione di studio del movimento con
tecniche convenzionali, appaiono comunque limitati, occorre quindi dotare
algoritmi come quello di Marris, quello sviluppato in questa tesi, quello di
Ampollini o di Barnard & Thompson, di componenti “intelligenti” fornite ad
esempio di moduli basati su reti neurali o algoritmi genetici, in analogia a quanto
fatto recentemente da: Zhang & Lu (2000), Williams & Hanson (1998).
Queste componenti potranno ad esempio determinare delle euristiche, in grado di
scegliere (on-line) il miglior operatore di matching da utilizzare per quel preciso
contesto, imparando ed ottimizzando le proprie prestazioni sulla base di prove
ripetute.
Bibliografia Adorni G., Cagnoni S., Mordonini M. An efficient perspective effect removal
technique for scene interpretation. Proc. Asian Conference on Computer Vision,
pagg. 601-605. 2000a.
Adorni G., Cagnoni S., Mordonini M. Cellular automata based inverse perspective
transform as a tool for indoor robot navigation. LNCS. AI*IA99:Advances in
Artificial Intelligence, n.1792, pagg. 345-355. Springer. 2000b.
Ampollini P., Flusso ottico e stima del movimento, Facoltà di Ingegneria, Università
di Parma, Tesi di Laurea, 2001
Ballard D.H., Brown C.M. Computer Vision. Prentice-Hall, Englewood Cliffs,1982.
Barnard S.T. e Thomson W.B. Analisis of Images, IEEE P.A.M.I., vol.6
Black M.J. e Anandan P. A Framework for the Robust Estimation of Optical Flow.
In International Conference on Computer Vision, 1993.
Bolognini L. Progetto e Realizzazione di un Sensore Ibrido Omnidirezionale/pin-
hole e suo Impiego per Compiti di Navigazione di Robot Autonomi, Facoltà di
Ingegneria, Università di Parma, Tesi di Laurea, 2001
Bonarini A.,Aliverti P.,Lucioni M. An omnidirectional vision system for fast
tracking for mobile robots. IEEE Transactions on Instrumentation and
Measurement, 49(3), 509-512. 2000.
Brady M. Artificial Intelligence and Robotics. Artificial Intelligence and Robotics,
vol. 26, pagg. 79-121. 1985.
Camus T. Calculating Time-to-Contact Using Real-Time Quantized Optical Flow.
Technical report n° 14 presso il Max-Planck-Institut für biologische kybernetik.
Faugeras O. Three Dimensional Computer Vision: A Geometric Viewpoint. The
MIT Press, Cambridge, MA. 1993.
Golland P. Use of Color for Optical Flow Estimation. Master of Science in
Computer Science. Israel Institute of Technology, 1995.
Gonzalez R.C., Woods R.E. Digital Image processing. Addison Westley. 1992.
Horn B.K.P. e Schunk B.G. Determining Optical Flow. Artificial Intelligence,
August, 1981.
Kasturi R. Ramesh C.F. Computer Vision Principles IEEE , Washington,
Brussels, Tokyo 1991.
Klaus B., Horn P. Robot Vision. The MIT Press. Cambridge, Massachusetts. 1986.
Maris G. Analisi di Sequenze di Immagini mediante Stima dei Vettori di Flusso:
Studio di un Caso su Architettura Cellulare, Facoltà di Ingegneria, Università di
Parma,Tesi di Laurea 1996
Marr D. Vision: A computational Investigation into the Human Representation and
Processing of Visual Information. W. H. Freeman, New York. 1982.
Otha N. Optical flow detection by color images. In Proceeding of IEEE
International Conference on Image Processing, Pan Pacific, Singapore, 1989.
Schunk B.G. e Horn B.K.P. Constraints on Optical Flow Computation. In Pattern
Recognition and Image Processing, August 1991
Tistarelli M. Multiple Constraints to Compute Optical Flow. Reprint from
“IEEE Transactions on Pattern Analysis and Machine Intelligence”. Vol. 18, No.
12, December 1996.
Tzai R.Y. A Versatile Camera Calibration Technique for High-Accuracy 3D
Machine Vision Metrology Using Off-the-Shelf TV Cameras and Lenses. IEEE
Journal of Robotics and Automation, vol. RA-3, No.4, pagg. 323-344. Agosto 1997.