Segmentazione di Immagini in Tempo Reale per

Transcript

Segmentazione di Immagini in Tempo Reale per
Università degli Studi di Roma “La Sapienza”
Facoltà di Ingegneria
Corso di Laurea in Ingegneria Informatica
Segmentazione di Immagini in Tempo Reale
per Robot Tetrapodi
Di:
Walter Nisticò
Relatore:
Prof.Daniele Nardi
Contro-relatore:
Prof.Giuseppe Santucci
Co-relatore:
Ing.Luca Iocchi
Anno Accademico 2001-2002
SOMMARIO
Capitolo 1..............................................................................................................................1
Introduzione.........................................................................................................................1
1.1 Ambiente operativo...............................................................................................2
1.2 Obiettivi...................................................................................................................4
1.3 Problemi affrontati e tecniche utilizzate............................................................5
1.4 Risultati ....................................................................................................................7
1.5 Traccia dell’esposizione ........................................................................................7
Capitolo 2............................................................................................................................10
Segmentazione ...................................................................................................................10
2.1 Thresholding.........................................................................................................12
2.1.1 Thresholding statico .................................................................................12
2.1.2 Thresholding dinamico ............................................................................21
2.2 Region Growing...................................................................................................27
Capitolo 3............................................................................................................................32
Estrazione di contorni ......................................................................................................32
3.1 Filtri ........................................................................................................................33
3.1.1 Filtri di riduzione del rumore ..................................................................36
3.1.1.1 Filtri lineari....................................................................................37
3.1.1.2 Filtri non lineari ...........................................................................45
3.1.2 Filtri di Edge Detection ...........................................................................48
3.1.3 S.U.S.A.N....................................................................................................59
3.1.3.1 S.U.S.A.N. Smoothing................................................................61
3.1.3.2 S.U.S.A.N. Edge Detector.........................................................63
3.2 Riconoscimento di forme...................................................................................67
3.2.1 Trasformata di Hough..............................................................................69
3.2.1.1 Trasformata di Hough per le linee...........................................70
Capitolo 4............................................................................................................................73
Progetto del sistema..........................................................................................................73
4.1 Vincoli legati all’ambiente ..................................................................................73
4.1.1 L’AIBO ERS-210 – Sistema di elaborazione.......................................75
4.1.2 L’AIBO ERS-210 – Telecamera.............................................................77
4.2 Segmentazione......................................................................................................83
4.2.1 Region Growing ........................................................................................84
4.2.2 Segmentazione dinamica..........................................................................87
4.2.3 Filtraggio .....................................................................................................97
4.2.4 Classificazione..........................................................................................101
4.3 Edge detection ...................................................................................................106
4.4 Estrazione di oggetti nell’immagine ...............................................................109
4.4.1 Formazione dei blob...............................................................................110
4.5 Ricostruzione della scena .................................................................................112
4.5.1 Modello di telecamera.............................................................................112
4.5.2 Riconoscimento di oggetti nella scena ................................................116
4.5.3 Riconoscimento di linee.........................................................................127
Capitolo 5..........................................................................................................................129
Implementazione.............................................................................................................129
5.1 Thresholding dinamico.....................................................................................131
5.2 SUSAN ................................................................................................................136
5.2.1 Analisi delle caratteristiche del processore .........................................136
5.2.2 Ottimizzazione degli accessi in memoria............................................139
5.2.3 Ottimizzazione delle istruzioni .............................................................146
5.3 Estrazione oggetti ..............................................................................................152
Capitolo 6..........................................................................................................................153
Risultati..............................................................................................................................153
6.1 Ambiente di prova.............................................................................................153
6.2 Esperimenti.........................................................................................................155
6.3 Ricostruzione della scena .................................................................................170
6.4 Applicazione: localizzazione basata su landmark ........................................171
Conclusioni e sviluppi futuri .........................................................................................179
ii
RINGRAZIAMENTI
Desidero ringraziare il prof. Nardi per la guida e la supervisione del
lavoro, nonchè per l’opporunità concessami di conoscere l’affascinante
mondo della robotica in generale e della RoboCup in particolare.
Ringrazio l’ing. Luca Iocchi per il supporto, i consigli, gli insegnamenti
e le correzioni che mi hanno permesso di portare a termine con successo il
lavoro.
Alla mia famiglia.
iii
Capitolo 1
Introduzione
Un agente robotico autonomo che deve eseguire una serie di compiti
in un ambiente dinamico e potenzialmente ostile, ha bisogno di rilevazioni
sensoriali affidabili, ad una frequenza sufficiente ad ottenere una reattività
adeguata a rispondere alle varie situazioni che possono crearsi nell’ambiente
circostante, e con una capacità di acquisizione di informazioni tale da
consentire il raggiungimento dei propri obbiettivi.
In particolare, la visione è una fonte di conoscenza sul mondo esterno
che fornisce una grande quantità di informazioni, oltre a permettere al robot
di orientarsi con modalità simili a quelle dei sistemi biologici.
Cardine di ogni sistema di visione è la segmentazione, processo volto
a partizionare ed estrarre informazione dall’immagine in base a criteri di
omogeneità e rilevanza di particolari caratteristiche in essa presenti che
trovano corrispondenza in modelli noti a priori:
•
Essendo il primo gradino su cui poggia l’intero processo di
acquisizione, è fondamentale che essa sia accurata e affidabile in
tutte le condizioni operative tipiche del dominio di interesse, in
quanto l’informazione persa a tale livello è difficilmente recuperabile
negli stadi di elaborazione successivi;
•
Poiché l’elaborazione viene effettuata direttamente a livello di pixel,
quindi su insiemi di dati molto ampi, il carico di lavoro tipico di
questa operazione è considerevole, e rappresenta di solito un fattore
critico nel determinare le prestazioni computazionali complessive del
sistema di visione.
1
Quando il sistema robotico interagisce con un ambiente dinamico in
tempo reale, avendo a disposizione risorse d’esecuzione limitate, queste due
caratteristiche entrano in conflitto, e tipicamente l’aspetto prestazionale
prende il sopravvento, infatti non è di alcuna utilità l’accuratezza delle
rilevazioni se il robot non è in grado di reagire tempestivamente ai
cambiamenti dell’ambiente.
Scopo di questa tesi è quindi la realizzazione di un sistema di
segmentazione di uso generale, per sistemi operanti in tempo reale, robusto,
affidabile e qualitativamente accurato, in grado di elaborare immagini a
frequenze sufficientemente elevate da permettere una reattività del robot
sufficiente ad interagire con successo in un ambiente dinamico e
competitivo.
1.1 Ambiente operativo
Il lavoro descritto in questa tesi è stato sviluppato nel contesto delle
competizioni per agenti autonomi RoboCup Sony AIBO Legged League, che
forniscono un ambiente dinamico e concorrenziale in cui due squadre di
robot tetrapodi si affrontano su un campo da calcio con l’obiettivo di
vincere la partita.
Caratteristiche rilevanti di tale dominio sono:
•
Hardware standardizzato: è ammesso l’uso di un solo tipo di
robot, comune a tutte le squadre (che partono quindi in condizioni
di sostanziale parità), il Sony AIBO ERS-210(A); a determinare il
risultato delle competizioni sono dunque solo le prestazioni del
software;
•
Ambiente semplificato: le caratteristiche del dominio di interesse,
quali la dimensione, la forma, il colore di tutti gli oggetti, sono
interamente note a priori; l’illuminazione è esclusivamente artificiale
e ragionevolmente standardizzata; gli oggetti hanno forme semplici
2
(sfera, cilindro, parallelepipedo) e sono caratterizzati da colori
uniformi e brillanti;
•
Dominio dinamico e competitivo: gli agenti si muovono sul
campo di gioco e concorrono per il controllo della palla, che può
raggiungere velocità di movimento dell’ordine di alcuni metri al
secondo;
•
Risorse di elaborazione limitate: la quantità di memoria a
disposizione è di 32Mbyte, il microprocessore è una variante a basso
consumo della famiglia MIPS R4000 ed è disponibile in due
versioni, a 200MHz e, recentemente, a 400MHz;
•
Telecamera a bassa risoluzione: la telecamera è basata su un
sensore CMOS a basso costo, capace di acquisire 25 fotogrammi al
secondo ad una risoluzione massima di 176x144 pixel.
In conseguenza delle caratteristiche appena evidenziate, l’approccio
sin qui utilizzato dalle varie squadre è stato fondato su varie forme di
classificazione statica dei pixel in base al loro colore (si vedano [HIPS00],
[CSVYHPS01], [GT02], [VLVRSC02]).
La situazione preesistente a questo lavoro, concernente il progetto
SPQR Legged della Facoltà di Ingegneria Informatica dell’Università di Roma
“La Sapienza”, era la seguente:
•
La segmentazione era affidata ad un processore dedicato integrato
nel robot, capace di classificare i pixel dell’immagine in base al
colore mediante tabelle calibrate fuori linea attraverso un insieme di
esempi; tale soluzione, in forza del fatto di essere cablata in
hardware, imponeva dei vincoli sulla risoluzione, limitata ad 88x77
pixel, e sul dominio di rappresentazione delle tabelle di
classificazione;
l’immagine
così
segmentata
risultava
molto
rumorosa, estremamente sensibile a variazioni di illuminazione, oltre
3
a non sfruttare la massima risoluzione messa a disposizione della
telecamera;
•
Il riconoscimento degli oggetti, basato sul colore, utilizzava come
unico criterio, nella selezione delle regioni di immagine significative,
la dimensione rispetto ad opportune soglie, senza tenere conto della
posizione di tali regioni nell’immagine e né di vincoli sulle
proporzioni fra le dimensioni;
•
Nonostante l’hardware fosse in grado di segmentare immagini a
costo nullo alla massima frequenza permessa dal dispositivo di
acquisizione video, 25 fotogrammi al secondo, in conseguenza della
frammentarietà dell’output così ottenuto, veniva generato un
altissimo numero di regioni colorate da far processare alle routine di
più alto livello preposte all’estrazione oggetti, per cui la frequenza di
elaborazione del sistema di visione complessivo variava da 5 a 25
fotogrammi al secondo in funzione delle caratteristiche della scena,
ponendo problemi al tracciamento degli oggetti veloci.
1.2 Obiettivi
In conseguenza delle suddette limitazioni, posto il robot in un
ambiente soggetto ad una componente di illuminazione naturale, era
necessario ricalibrare la visione diverse volte nel corso della giornata; oltre a
ciò, sia per la risoluzione ridotta, sia per il basso rapporto segnale/rumore,
era praticamente impossibile distinguere affidabilmente oggetti di
dimensioni contenute, quali palla e landmark, ad una distanza superiore ai
2.5m: tale limitazione, precedentemente trascurabile, è diventata un grave
handicap a partire dall’edizione 2002 della RoboCup, perché le dimensioni
del campo di gioco sono raddoppiate raggiungendo i 4.40x2.90m.
Gli obiettivi per il nuovo sistema di visione che si sono quindi
naturalmente posti sono:
4
•
Robustezza rispetto a variazioni delle condizioni di illuminazione, in
modo da poter utilizzare senza problemi il sistema in ambienti in cui
è presente una componente di luce naturale o non uniforme, come
ad esempio all’interno di uffici;
•
Elaborazione di immagini alla massima risoluzione permessa
dall’hardware, 176x144 pixel, senza che la frequenza di elaborazione
complessiva scenda al di sotto dei 10 fotogrammi al secondo, in
modo da poter effettuare efficacemente il tracciamento della
posizione di oggetti veloci;
•
Capacità di riconoscere correttamente gli oggetti a distanze prossime
ai massimi teorici consentiti dalla risoluzione della telecamera, dalle
dimensioni loro e del campo di gioco.
1.3 Problemi affrontati e tecniche utilizzate
Al fine del raggiungimento degli obiettivi prefissi, è stato percorso il
seguente cammino:
•
E’ stata effettuata una partizione fra le tecniche di segmentazione
disponibili in letteratura in base alle potenzialità di impiego in tempo
reale, scartando gli algoritmi non adatti a tale scopo: ne è risultato
che solo i sistemi più semplici, basati su qualche forma di
thresholding, forniscono le caratteristiche di efficienza necessarie a
processare immagini in tempi dell’ordine dei millisecondi;
•
Sono state analizzate le tecniche utilizzate dalle altre squadre,
mettendone in evidenza i limiti nel cogliere gli obiettivi
precedentemente individuati: alcune varianti del thresholding statico
ottengono buoni risultati qualitativi, vincolando però eccessivamente
il riconoscimento alla condizioni di luce; ne è emersa la necessità di
aumentare la capacità di discriminazione dei colori in base alle sole
5
componenti di crominanza, attraverso stadi di elaborazione
preliminari;
•
La costruzione degli istogrammi delle componenti di crominanza e
la conseguente analisi mediante tecniche di thresholding dinamico si
sono mostrate promettenti nel filtrare colori non necessari al fine
della classificazione, frutto della componente di riflessione speculare
dei materiali degli oggetti e della non uniformità dell’illuminazione
della scena;
•
Allo scopo di migliorare l’efficacia e la stabilità del thresholding
dinamico, si è rivelato molto utile un filtraggio preliminare del
rumore delle immagini attraverso convoluzione discreta con filtri di
smoothing; sono state analizzate le caratteristiche di filtri lineari e
non lineari, ed è stato individuato come operatore ottimo il SUSAN
Smoothing, per la sua caratteristica di attenuare tutti i tipi di rumore
preservando le strutture dell’immagine;
•
Si è mostrato come il riconoscimento dei contorni degli oggetti,
come luogo dei punti ove è massimo il gradiente della luminosità, sia
teoricamente e praticamente molto più robusto delle corrispondenti
tecniche di segmentazione cromatica, confrontando poi le
prestazioni dei vari operatori, individuando il migliore nel SUSAN
Edge Detector; per il modellamento matematico dei bordi così rivelati
è stata proposta la trasformata di Hough come tecnica robusta ed
efficiente;
•
E’ stato progettato un sistema di visione di alto livello adatto a
complementare efficacemente la segmentazione, filtrando errori di
classificazione non eliminabili a basso livello perché frutto di difetti
intrinseci del sensore CMOS di aquisizione video, basato sul
partizionamento degli oggetti del dominio ammissibile in classi sulla
base della loro altezza relativa alla telecamera, attraverso proiezione
6
della linea dell’orizzonte sul piano immagine e confronto della
posizione degli oggetti rispetto ad essa;
•
Analizzando le caratteristiche architetturali del microprocessore in
uso sull’AIBO, sono state progettate e implementate delle varianti
adatte ad un uso in tempo reale degli algoritmi di segmentazione,
filtraggio ed edge detection che costituiscono il percorso più critico
del sistema complessivo.
1.4 Risultati
Tutti gli obiettivi prefissati sono stati raggiunti:
•
Il sistema funziona correttamente in condizioni di luminosità non
uniforme, e variabile significativamente nell’arco della giornata in
conseguenza di luce solare che filtra nell’ambiente di prova
attraverso delle tende;
•
La frequenza di processamento del sistema completo non è mai
inferiore ai 20 fotogrammi al secondo su processore a 400MHz, né
scende di sotto dei 10 fotogrammi al secondo, senza edge detection,
su processore a 200MHz;
•
La palla, anche in condizioni di scarsa luminosità, viene riconosciuta
correttamente fino ad una distanza di 4 metri, i landmark e le porte
fino ad oltre 5.
1.5 Traccia dell’esposizione
Verrà ora offerta una panoramica dei contenuti e delle tematiche
affrontate nelle varie sezioni di questo documento:
•
Capitolo 2: viene definito formalmente il problema della
segmentazione, illustrando le tecniche più diffuse ed approfondendo
7
la trattazione degli algoritmi più importanti adatti ad un uso in
tempo reale; vengono anche analizzate le soluzione più efficaci ed
interessanti adottate da altri guppi di ricerca.
•
Capitolo 3: dopo aver definito matematicamente il concetto di
filtro, le proprietà della convoluzione e l’analisi in frequenza
mediante trasformata di Fourier, vengono trattati dettagliatamente i
più diffusi operatori di riduzione del rumore lineari, confrontandoli
dal punto di vista delle prestazioni e della risposta in frequenza, e
non-lineari, evidenziandone i miglioramenti ottenibili rispetto agli
operatori lineari in termini di preservazione delle strutture
dell’immagine;
dopo
aver
poi
definito
il
problema
del
riconoscimento dei bordi, sono stati confrontati i più diffusi
operatori differenziali di edge detection ed il noto algoritmo di
Canny; la terza sezione del capitolo tratta separatamente gli operatori
basati sul principio dell’USAN, sottolineandone la superiorità
qualitativa sia nella riduzione del rumore che nel riconoscimento di
bordi.
•
Capitolo 4: partendo dall’approfondimento delle specifiche legate
all’ambiente, è stato progettato incrementalmente il sistema di
segmentazione mostrando gli effetti ottenuti dai vari stadi del
sistema; è stato poi presentato un sistema di visione di alto livello
per l’estrazione degli oggetti presenti nell’immagine segmentata,
fornendo un modello geometrico di telecamera, basato sulla
proiezione della linea dell’orizzonte sul piano immagine allo scopo di
partizionare gli oggetti in classi.
•
Capitolo 5: dopo aver progettato un algoritmo di thresholding
dinamico computazionalmente più efficiente della tecnica descritta
in letteratura, si è proceduto all’analisi delle caratteristiche
architetturali del microprocessore di cui è dotato il robot e
conseguentemente a costruire un operatore di riduzione del rumore
8
ed uno di edge detection in grado di ottenere tempi di elaborazione
prossimi a quelli di filtri lineari operanti sullo stesso intorno di pixel.
•
Capitolo 6: Dopo aver definito l’ambiente di prova, sono stati
esposti i risultati conseguiti attaverso il confronto, in una serie di
esperimenti, con una tecnica di segmentazione tradizionale; è stata
poi delineata come applicazione una tecnica di localizzazione con
integrazione dei dati attraverso il filtro di Kalman.
9
Capitolo 2
Segmentazione
La segmentazione, nell’accezione più ampia del termine, è un processo
volto a partizionare un’immagine in regioni caratterizzate da proprietà di
omogeneità rispetto ad una o più caratteristiche rilevanti o “features”,
finalizzato al riconoscimento degli oggetti in essa contenuti.
Se indichiamo con I l’intera immagine, R , R2, …, Rn, n sottoregioni
dell’immagine segmentata, H un predicato di omogeneità rispetto ad una
determinata caratteristica, possiamo definire la segmentazione in base alle
seguenti proprietà:
n
a)
ΥR
i
=I
i =1
b) Ri Ι R j = ∅ ∀i, j i ≠ j
c) H (Ri ) = True ∀i
d) H (Ri Υ R j ) = False ∀i ≠ j
(2.1)
Esaminando le proprietà su espresse, appare chiara la necessità di
individuare innanzitutto un predicato di omogeneità adatto a strutturare il
dominio di interesse secondo le caratteristiche proprie dell’applicazione:
tipicamente le caratteristiche che permettono di distinguere gli oggetti di
interesse dallo sfondo o ambiente sono la luminosità, il colore,
l’ombreggiatura, la tessitura o “texture”.
Una volta stabilite le caratteristiche di interesse e formalizzato un
criterio di omogeneità adatto a discriminarle, bisogna determinare un
algoritmo in grado di realizzare in concreto il processo di segmentazione,
10
soddisfacendo le (2.1) e possibilmente anche la seguente desiderabile
proprietà:
e) Ri
connessa, ∀i
(2.1.1)
Infatti, tale proprietà facilita notevolmente il compito dei livelli
superiori del processo di elaborazione visiva nello stabilire corrispondenze
fra le regioni così ottenute e i modelli semantici che costituiscono la base di
conoscenza (primitive, forme, oggetti); tale risultato però è strettamente
dipendente sia dalla natura dell’algoritmo di segmentazione utilizzato, sia
dalle proprietà dell’immagine usate per il processo di partizionamento
(predicato di omogeneità), infatti caratteristiche come ad esempio la tessitura
hanno una forte caratterizzazione locale, mentre lo stesso non può dirsi per
l’intensità luminosa.
A questo punto è opportuno introdurre un’importante distinzione fra
tecniche di segmentazione:
1.
Segmentazione completa: un insieme di regioni disgiunte in
corrispondenza diretta con oggetti distinti nell’immagine sorgente;
2.
Segmentazione parziale: le regioni non corrispondono
direttamente con oggetti dell’immagine, ma hanno caratteristiche
omogenee rispetto ad una o più proprietà intrinseche
dell’immagine (es. brillantezza, colore).
Tipicamente, una corrispondenza diretta a livello di segmentazione fra
regioni dell’immagine ed elementi della scena nel mondo reale, così da
realizzare una segmentazione completa, si può ottenere solo mediante
conoscenza a priori sull’ambiente ed in corrispondenza a domini
particolarmente semplici, come ad esempio l’individuazione di oggetti scuri
su uno sfondo chiaro quali caratteri stampati su un foglio; altrimenti, a
partire da una segmentazione parziale è comunque possibile ricondursi ad
identificare gli oggetti di interesse così come in una segmentazione completa
11
mediante integrazione con informazioni di alto livello, ed in effetti è questo
il caso più comune nelle applicazioni pratiche.
2.1 Thresholding
La
segmentazione
mediante
confronto
con
una
soglia
o
“thresholding” è un principio comune a molte tecniche semplici ma
computazionalmente molto efficienti, di solito impiegate in ambito realtime, dove metodi più raffinati ma costosi in termini di risorse di
elaborazione non sono applicabili [SHB98],[Ard00].
Nella sua versione più elementare, la segmentazione mediante
thresholding consiste nel costruire un istogramma con i valori di luminosità
dei pixel dell’immagine, fissare un valore di soglia compreso nell’intervallo
dei valori ammissibili e partizionare l’istogramma e conseguentemente
l’immagine in due classi distinte, caratterizzate da valori della luminosità al di
sopra o al di sotto del valore di soglia così scelto.
2.1.1 Thresholding statico
Se la soglia viene determinata al di fuori del ciclo di esecuzione
dell’algoritmo (“off-line”), tipicamente in fase di progetto dell’applicazione,
si parla allora di thresholding statico.
Sia quindi T una soglia fissata all’interno dell’intervallo dei valori
ammissibili di una funzione I(x,y) che rappresenta lo spettro dell’immagine
da segmentare nel punto di coordinate x, y, definiamo l’immagine
segmentata a valori binari S(x,y) come:
1 se I ( x, y ) ≥ T
∀x, y : S ( x, y ) = 
0 se I ( x, y ) < T
(2.2)
Si distingue poi il caso di soglia globale, ovvero valida sull’intera
immagine, dalla soglia locale o adattativa, dipendente dalla regione
12
dell’immagine considerata: in questo caso si divide l’immagine in
sottoregioni Ic, si determina un valore di threshold diverso per ogni
sottoregione, quindi:
T = T (I , I c )
(2.2.1)
Ad ogni modo quest’ultima variante ha scarso interesse applicativo.
Il thresholding statico così per come è stato definito dalla (2.2) trova
applicazione solo in campi molto limitati in presenza di illuminazione forte e
uniforme, come nei processi di ispezione automatizzata industriale:
Figura 2.1
Figura 2.2
Figura 2.3
Volendo segmentare la figura 2.1, osservando il suo istogramma
riportato in figura 2.2, scegliendo un valore di soglia fra 100 e 200 si riesce a
separare l’oggetto di interesse dallo sfondo, in questo caso caratterizzato dai
13
valori di luminosità al di sotto della soglia prescelta; il risultato è riportato in
figura 2.3.
Una prima riflessione che si può fare a questo punto è che il
thresholding statico è generalmente una tecnica di segmentazione globale,
almeno per immagini strutturalmente non troppo complesse, infatti
sfruttando una conoscenza a priori del dominio in esame (in questo caso
che si tratti di un oggetto molto scuro su uno sfondo bianco) si riesce ad
ottenere una corrispondenza diretta fra la regione così estratta e l’oggetto
reale; per lo stesso motivo, si può dire che esse soddisfino anche la proprietà
(2.1.1) cioè siano connesse.
Ciò detto, bisogna altresì rilevare che questa tecnica di segmentazione
per come è stata sin qui illustrata trova un numero molto limitato di
applicazioni pratiche, infatti di solito si ha a che fare con immagini
multispettrali (quali ad esempio fotografie a colori) ed una singola soglia
globale generalmente non è sufficiente a selezionare gli oggetti di interesse;
appare così naturale individuare per ogni oggetto di interesse un insieme di
intervalli ammissibili su ciascuno spettro e marcare come appartenenti ad
esso tutti i punti dell’immagine che soddisfano la condizione di vero
sull’AND logico rispetto alle varie componenti spettrali; ad esempio,
supponiamo di voler riconoscere un oggetto arancione, in un’immagine
rappresentata rispetto allo spazio cromatico YUV1:
1
Lo spazio cromatico YUV rappresenta ogni colore in base a 3 componenti: Y o Luminanza è la
rappresentazione in “bianco e nero” dell’immagine; U e V sono dette componenti di Crominanza e
sono fra loro ortogonali, dalla loro intersezione si ottengono tutte le tinte.
14
Arancio :
∀i ∈ immagine
Pixel (i ) = (compY (i ), compU (i), compV (i ));
if
yLowOrange ≤ compY (i ) ≤ yHiOrange
&
uLowOrange ≤ compU (i ) ≤ uHiOrange
&
vLowOrange ≤ compV (i ) ≤ vHiOrange
then
PixelSegmentato(i ) = # arancio
(2.3)
Un’implementazione diretta dello pseudo-codice (2.3) funzionerebbe
ma sarebbe molto inefficiente, infatti dovremmo effettuare 6 test per ogni
colore2 riconosciuto per pixel, quindi con n colori avremmo:
•
6n operazioni di test logico (es. compU (i ) ≤ uHiOrange )
•
5n operazioni di AND logico fra i risultati di tali test
•
n operazioni di branch o salto condizionale
In particolare, le operazioni di salto condizionale possono essere
particolarmente costose da eseguire sui microprocessori moderni,
caratterizzati da esecuzione speculativa e fuori sequenza, infatti la natura di
questi test rende il risultato di tali branch non predittibile, quindi in media
nel 50% dei casi si arriverebbe allo svuotamento della pipeline, con
conseguente spreco di decine di cicli di clock per ciascuna di tali operazioni.
In [Bru00] è descritta un’elegante soluzione a tale problema, che
costituisce la base di una libreria di funzioni di larga diffusione nell’ambito
della robotica a livello accademico, CMVision.
2
Qui è usato il termine “colore” in un’accezione molto ampia, in effetti ciò che consideriamo è una
porzione dello spazio cromatico che può corrispondere a più colori distinti, in questo caso accomunati
dal caratterizzare un unico oggetto; in effetti ciò è vero anche per l’accezione comune di “colore”,
infatti con “giallo” o “turchese” si intende un intervallo di frequenze di radiazione elettromagnetica
distinte.
15
Per ogni componente spettrale dell’immagine, si costruisce un vettore
(array) di interi mettendo ciascun elemento in corrispondenza biunivoca con
un valore di intensità dello spettro in questione; in questo modo quando si
procede alla segmentazione dell’immagine, per ogni pixel si considerano i
valori di intensità delle sue componenti e queste vengono utilizzate come
indici nell’accesso in lettura agli array corrispondenti; gli elementi di tali
array sono usati come maschere di bit (bitmap), dove ogni bit corrisponde ad
un colore diverso, e se viene impostato ad ‘1’ indica che il livello di intensità
di tale spettro in corrispondenza con l’indice selezionato appartiene appunto
a quel colore.
Ad esempio, supponiamo di trovarci in un dominio (come quello
Robocup) in cui si sa a priori che gli oggetti possono essere solo di 8 colori,
arancio, rosa, giallo, verde, blu, rosso, bianco, celeste, che questi
caratterizzano gli oggetti presenti nell’ambiente, ad esempio la palla è
arancio, il campo è verde, ecc., e che le immagini acquisite dalla telecamera
sono rappresentate nello spazio cromatico YUV, a 256 livelli per ogni
componente: possiamo allora realizzare 3 array, uno per ciascuna delle
componenti Y, U, V, composti da 256 interi di 8 bit, 1 bit per ogni colore:
Figura 2.4
16
Nella figura 2.4 vediamo che in corrispondenza al valore di intensità Y
selezionato, è possibile classificare il colore come arancio, verde, celeste o
rosa; per determinare un colore unico per ogni pixel, è così necessario fare
l’AND logico bitwise (ovvero bit a bit) fra le bitmap di tutti e tre gli spettri Y,
U, V:
Figura 2.5
Quindi: siano Y(i), U(i) e V(i) le componenti Y,U,V del pixel di indice
i; siano Classe[j], ClasseU[j], ClasseV[j] gli array di bitmap come sopra definiti,
allora:
y := Y (i )
u := U (i )
(2.4)
v := V (i )
Colore(i ) = ClasseY [ y ] & ClasseU [u ] & ClasseV [v]
Il vantaggio di questo approccio, in termini di efficienza, è notevole,
infatti per ogni pixel bisogna effettuare:
•
3 operazioni di look-up, ossia letture dagli array contenenti le bitmap
per le componenti cromatiche; poiché si tratta comunque di
strutture piuttosto compatte in termini di occupazione di memoria
17
( 3 ⋅ 256 elementi, dove ogni elemento tipicamente occupa da 1 a 8
byte a seconda del numero di colori riconosciuti), è alta la
probabilità di trovarle presenti nelle cache del processore e quindi di
eseguirle a costo di 2-3 cicli di clock;
•
2 operazioni di AND bitwise fra i 3 interi così ottenuti, eseguite
dalla quasi totalità dei processori in un solo ciclo di clock;
Nel confronto diretto con l’approccio delineato in (2.3), si nota subito
come il costo computazionale di quest’ultimo sia indipendente dal numero
di colori riconosciuti, quindi O(m) , dove m è il numero di pixel presenti
nell’immagine, mentre nel caso precedente si aveva un costo O(n ⋅ m) , dove
n è il numero di colori riconosciuti, a fronte di una maggiore occupazione di
memoria, comunque irrilevante nella maggior parte dei sistemi; oltre a ciò
anche il costo e il numero delle singole istruzioni è molto più alto nel caso
precedente: complessivamente, la differenza in termini di cicli di clock è può
raggiungere e superare un ordine di grandezza.
Con l’algoritmo (2.4) in realtà il concetto di thresholding a soglia viene
ad essere esteso a vero e proprio “mapping” fra regioni dello spazio
cromatico e colori (o categorie di oggetti) nell’immagine segmentata; dal
punto di vista della capacità di rappresentazione di dette distribuzioni
nell’intero dominio, urge rilevare che è così possibile delimitare solo regioni
di forma parallelepipedale, questo per avere proiettato lo spazio avente per
dimensioni le componenti spettrali dell’immagine su singoli vettori fra loro
18
indipendenti:
Figura 2.6
Come rilevato in [BBV00], volendo riconoscere oggetti che siano ben
distinguibili in base al colore, inteso come tinta e tonalità, in modo robusto
rispetto
a
variazioni
di
intensità
luminosa,
la
caratteristica
di
rappresentazione dell’algoritmo (2.4) non costituisce un grave limite purché
si lavori su spazi cromatici che abbiano la
componente di luminanza
ortogonale ad un piano di crominanza, quali ad esempio YUV e HSL3,
infatti in tal caso la regione del piano di crominanza che identifica il colore
può essere racchiusa in una regione rettangolare ad essa circoscritta
(“bounding box”) mentre la componente di luminanza può essere ignorata o
delimitata in un ampio intervallo; lo stesso non può invece essere fatto in
spazi cromatici in cui luminanza e crominanza siano ottenibili solo come
combinazione lineare di componenti, quali ad esempio RGB4 o CMYK5,
infatti tale dipendenza porta ad assumere forme più complesse, ad esempio
coniche nel caso di regioni indipendenti dalla luminosità nello spazio RGB
3
HSL o Hue Saturation Luminance, è uno spazio caratterizzato da un modello di origine percettiva,
ossia descrive un colore sulla base di 3 caratteristiche intuitivamente comprensibili cioè Luminosità,
Tinta (o tonalità) e Saturazione del colore.
4
RGB o Red Green Blue, è uno spazio caratterizzato da un modello di sintesi a somma di colori,
largamente utilizzato da perifiche che realizzano ogni colore mediante emissione di luce dei 3 colori
primari, ad esempio attraverso fosfori (monitor).
5
CMYK o Cyan Magenta Yellow Black, è uno spazio caratterizzato da un modello di sintesi a
sottrazione di colori, largamente utilizzato da periferiche che realizzano ogni colore mediante
riflessione di una radiazione incidente di colore bianco, ad esempio attraverso pigmenti (stampanti)
19
(rapporto fra le componenti costante), per cui l’assunzione di poter fare
l’analisi mediante vettori indipendenti viene a cadere, rendendo necessaria
una preliminare conversione di spazio cromatico ( RGB ↔ YUV può essere
fatta mediante trasformazione lineare); oltre a ciò, anche lavorando in HSL
o YUV non sempre è possibile delimitare correttamente uno o più colori
mediante regioni parallelepipedali, specialmente in presenza di illuminazione
non uniforme e rumore nell’immagine.
Per superare tali difficoltà, sembrerebbe allora naturale sostituire ai 3
vettori di classificazione una matrice tridimensionale, capace quindi di
rappresentare qualsiasi tipo di regione; sfortunatamente, nel caso comune di
quantizzazione a 256 livelli delle singole componenti cromatiche, tale
matrice avrebbe 2563 elementi, quindi anche riconoscendo solo 8 colori
potendo quindi utilizzare byte come elementi, la dimensione di tale
rappresentazione richiederebbe 16Mbyte, ben al di là delle dimensioni della
cache di qualsiasi processore di uso comune, che quindi in seguito anche alla
modesta località degli accessi a questa struttura provocherebbe il thrashing6
della cache stessa con degrado inaccettabile delle prestazioni del sistema
complessivo.
Bisogna
allora
individuare
delle
soluzioni
intermedie,
che
rappresentino un valido compromesso fra efficienza e rappresentatività, a
seconda delle caratteristiche proprie dell’applicazione; due soluzioni valide
utilizzate in ambito Robocup sono:
•
quantizzazione dell’intero spazio cromatico, privilegiando in termini
di risoluzione le componenti di crominanza rispetto a quella di
luminanza, ad esempio 64 livelli (6 bit) per ciascuna componente di
crominanza, 16 livelli (4 bit) per la componente di luminanza; in
totale la matrice consta di 216 elementi, pari a 64Kbyte per
6
Thrashing di una cache: continuo riempimento e svuotamento di dati senza che questi siano stati letti o
scritti, a seguito di continue richieste di cache-refill, per la non-località spaziale e temporale degli
accessi a un insieme di dati
20
riconoscere 8 colori; tale approccio è descritto in [VLVRSC02] e
[GT02] nonché di prossima inclusione in CMVision 2.0;
•
quantizzazione della sola componente di luminanza, rappresentando
lo spazio complessivo come un insieme di piani paralleli di
crominanza non quantizzati, quindi 256 livelli per ciascuna
componente di crominanza (8 bit), per cui ogni piano consta di 216
livelli ovvero 64Kbyte; in [HIPS00] è descritto un tale approccio
basato su 14 piani, con quantizzazione della componente Y non
uniforme, volta ad assegnare una maggiore risoluzione ai valori di
luminosità più bassi, dove la capacità di discriminazione su base
puramente cromatica è più ridotta; tale schema richiede
complessivamente 896Kbyte di memoria.
2.1.2 Thresholding dinamico
Quando non è possibile o non è conveniente fissare la soglia a priori,
in maniera statica, si può ricorrere a tecniche che permettano di determinarla
attraverso l’analisi delle componente spettrali dell’immagine.[SHB98]
Un metodo semplice, applicato alla segmentazione di immagini
contenenti solo testo, è il cosiddetto P-Tile thresholding: sia noto a priori
p tale che
1
sia la percentuale di pixel dell’immagine appartenenti al testo
p
(tipicamente, in uno stampato i caratteri ricoprono circa il 10% dell’area
totale), si determina allora la soglia T come il valore di luminosità tale che il
numero di punti dell’immagine aventi luminosità minore di esso sono in
percentuale pari a
1
:
p
21

I =n

text : {i I (i ) ≤ T }

n
 text =
p

(2.5)
Là dove tale caratteristica non sia nota a priori o non sia comunque
adatta al dominio in esame, si ricorre a metodi basati sulla costruzione
dell’istogramma delle componenti spettrali nell’immagine, sfruttando le
caratteristiche ivi esibite per determinare una o più soglie.
L’istogramma rappresenta una densità di probabilità a posteriori7 di
trovare nell’immagine un certo intervallo di valori di intensità di un suo
spettro, viene rappresentato come un vettore avente tanti elementi quanti
sono i valori ammissibili, tipicamente 256, e ciascun elemento funge da
contatore che contiene il numero di pixel presenti nell’immagine aventi
valore di luminosità corrispondente; prima di procedere alla segmentazione,
si fa una scansione completa dell’immagine costruendo l’istogramma.
Figura 2.7
7
a posteriori, in quanto viene costruito sulla base dell’analisi dell’immagine stessa, quindi non ha natura
predittiva.
22
Nel caso (semplice) in cui l’istogramma risulti bimodale, come per
oggetti aventi approssimativamente lo stesso livello di grigio su uno sfondo
di luminosità molto diversa (es. figura 2.7), appare abbastanza intuitivo
scegliere come valore di threshold il punto di minimo fra i due massimi
(locali) che costituiscono i modi; in realtà non è sempre semplice stabilire se
un istogramma è bimodale, in quanto la presenza di rumore può generare
massimi e minimi locali in prossimità del massimo assoluto; ciò può essere
evitato stabilendo a priori una distanza minima (in termini di livelli spettrali)
fra i due modi, oppure applicando tecniche di filtraggio o smoothing
sull’istogramma; comunque, la bimodalità di un istogramma, non è una
proprietà sufficiente a garantire una corretta segmentazione.
Naturalmente, è possibile che l’istogramma sia multimodale, nel qual
caso si tratterà di determinare più massimi e in corrispondenza ai minimi
locali fra due massimi si stabiliranno le soglie, multiple.
L’algoritmo di determinazione di soglie dinamiche (“thresholding
dinamico convenzionale”) è il seguente:
Figura 2.8
•
si scelgono i due massimi assoluti dell’istogramma, tali che la
distanza fra essi (in termini di livelli) all’interno dell’istogramma sia
maggiore di una certa soglia predeterminata; si seleziona il punto di
minimo fra essi e lo si sceglie come soglia, dividendo l’istogramma in
due sottoregioni (fig. 2.8);
23
Figura 2.9
•
tale procedura viene applicata ricorsivamente alle due sottoregioni
così ottenute (fig. 2.9);
•
il processo termina quando non è più possibile applicare
ulteriormente la fase di divisione.
Supponendo di avere sufficiente conoscenza del dominio per stabilire
a priori la modalità dell’istogramma di un’immagine, si possono ottenere
risultati qualitativamente molto migliori rispetto agli algoritmi precedenti
approssimando l’istogramma mediante una somma pesata di un numero
(pari alla modalità) di funzioni di densità di probabilità a distribuzione
normale (gaussiana):
N (m X , σ X2 ) =
1
2πσ
−
2
X
e
( x −m X )2
2σ X2
(2.7.1)
Il modello dell’istogramma così ottenuto è:
hm = ∑ a i ⋅ N (mi , σ i2 )
(2.7.2)
i
Bisogna quindi determinare a i , mi , σ i2 ∀i tali da minimizzare la
funzione, mediante tecniche di ottimizzazione:
F (ai , mi , σ i2 ) = hm − hr
(2.7.3)
hr istogramma reale
24
A questo punto si scelgono come soglie i valori aventi probabilità
minima fra due modi, minimizzando l’errore di segmentazione; questa
tecnica prende il nome di thresholding ottimo, e permette di stabilire
correttamente un valore di soglia in situazioni in cui i metodi precedenti
fallirebbero:
Figura 2.10
Come si può vedere in figura, nei casi (a) e (b) il thresholding ottimo
permette una migliore localizzazione della soglia rispetto al metodo
convenzionale, nel caso (c) addirittura riesce a separare due regioni che
sarebbero risultate indistinte all’algoritmo convenzionale.
Nonostante i suoi meriti, anche il thresholding ottimo presenta dei
problemi:
•
il costo computazionale è più elevato, specialmente nella fase di
minimizzazione della funzione F per determinare i parametri
caratteristici delle funzioni di densità di probabilità;
•
se la modalità dell’istogramma non è nota a priori, l’algoritmo non è
praticamente applicabile perché in tale situazione si possono
individuare numerosi modelli capaci di minimizzare la funzione F, e
non si è in grado di trovare un criterio di scelta;
25
•
la stessa ipotesi di normalità delle densità di probabilità può non
essere verificata nel dominio in esame.
Nel caso di immagini multispettrali, quali ad esempio immagini a
colori, si possono fare considerazioni analoghe a quelle fatte sin qui,
determinando in modo indipendente le soglie relative ai vari spettri;
l’immagine finale è ottenuta come sovrapposizione di piani monospettrali,
ciascuno partizionato in base alle proprie soglie in opportune sottoregioni; le
regioni dell’immagine complessiva sono ottenute come intersezione delle
regioni individuate all’interno dei piani monospettrali:
Figura 2.11: (a) e (b) rappresentano dei piani
monospettrali, ad esempio le componenti di
crominanza U e V; (c) rappresenta l’immagine
complessiva (segmentata).
Alternativamente, si potrebbe pensare di costruire un istogramma ndimensionale (dove n è il numero degli spettri) e cercare di individuare al suo
interno dei cluster monomodali; il problema di individuare delle soglie (che in
questo caso sono in realtà degli iperpiani) è notevolmente complicato dalla
nuova topologia, e il costo computazionale può diventare proibitivo già per
immagini a 3 spettri, come la maggioranza delle immagini a colori (O(x3)
solo per effettuarne la scansione, dove x è il numero dei livelli in cui è
quantizzato lo spettro, di solito 256); il vantaggio di questa soluzione è che
può cogliere dipendenze statistiche fra gli spettri, ma le considerazioni
precedenti ne sconsigliano comunque l’uso, tranne che in applicazioni molto
particolari.
26
Nella maggior parte dei casi pratici, la segmentazione mediante soglia
dinamica può essere classificata come segmentazione parziale, specialmente
in presenza di soglie multiple ed immagini multispettrali, in quanto non si ha
nessuna garanzia che le regioni di immagine individuate con queste tecniche
siano in corrispondenza con oggetti del mondo reale, né che al loro interno
risultino connesse (proprietà (2.1.1)), in quanto la partizione viene effettuata
in base a proprietà dello spettro dell’immagine, che per loro natura hanno
valenza globale.
2.2 Region Growing
A differenza dei metodi visti sinora, in questa categoria ricadono
tecniche che si basano sull’applicazione di una funzione di omogeneità che
sfrutti la correlazione spaziale fra un pixel e i suoi vicini, quindi le regioni
così formate soddisfano sempre la proprietà di connessione (2.1.1) [SHB98].
Per ogni pixel viene valutato il suo intorno applicandovi la funzione di
omogeneità, tutti coloro che soddisfano tale criterio vengono aggiunti alla
stessa regione; questo metodo è molto dipendente dal tipo di funzione di
omogeneità che viene impiegato e dalla messa appunto dei parametri di
questa in base al tipo di immagine.
Un metodo più robusto, basato sullo stesso principio, è il cosiddetto
seeded region growing, dove le caratteristiche delle regioni non sono
controllate mediante messa a punto dei parametri della funzione di
omogeneità, ma grazie alla scelta di un certo numero di punti di partenza
che prendono il nome di semi.
La scelta dei semi è spesso manuale, cioè effettuata direttamente
dall’utente, ma può anche essere ottenuta automaticamente mediante analisi
preliminare dell’immagine alla ricerca di punti che esibiscano in modo netto
una certa proprietà che si intende sfruttare per la segmentazione, ad esempio
27
il fatto di avere la maggiore o minore brillantezza, o essere più vicini ad una
determinata tonalità, ecc.
Ogni seme costituirà la base per una classe di pixel che ne
costituiranno la regione associata, siano A1, A2, …, An tali classi, ciascuna
inizializzata con il solo seme corrispondente; sia N(x) l’intorno di x; inteso
come 8-connettività:
Figura 2.12
sia T l’insieme dei pixel non ancora allocati aventi nel proprio intorno
almeno una delle regioni, quindi T contiene i pixel appartenenti alla frontiera
di almeno una regione:
n

T =  x ∉ Υ Ai
i


|  N ( x) Ι

n




Υ A  ≠ ∅
i
i
(2.8.1)
sia δ ( x, i ) la “distanza” del pixel in esame dall’ i-esima regione, così
definita:
m y [] : Valore Medio
(2.8.2)
g ( x) : Intensità di x
δ ( x, i ) = g ( x) − m y∈Ai ( x ) [g ( y )]
sia SSL una lista, che sarà usata per tenere traccia dell’insieme corrente
dei punti di frontiera T, ordinati sequenzialmente in base alla loro distanza
28
(2.9) da qualche regione; può allora così essere delineato l’algoritmo
(“seeded region growing SRG”) [AB94]:
•
Inizializzazione: si inizializzano le Ai ( ∀i : Ai ≡ {xi } , xi semi), si
inseriscono i punti appartenenti agli intorni dei semi ( ∀xi : N ( xi ) )
nella SSL, ordinati in base alla distanza δ ( x, i ) ;
•
While SSL ≠ ∅ do
o Si rimuove il primo pixel y dalla lista SSL
o If ∃i | {∀x ∈ ( N ( y ) Ι ¬SSL ) ⇒ x ∈ Ai } (cioè tutti i
punti dell’intorno di i già etichettati appartengono ad
una stessa regione Ai)
o Then
§
si aggiunge y ad Ai , etichettandolo
§
si aggiorna m y∈Ai
§


∀x ∈ N ( y ) | x ∉  Υ Ai Υ SSL  , si aggiunge x
 i

a SSL in una posizione determinata in base a
δ ( x) = min δ ( x, i ) in modo da rispettarne
i
l’ordinamento
o Else
§
si aggiunge y ad Ai | δ ( y, i ) = min δ ( y, j )
§
si aggiornano m y∈Ai e SSL come nell’altro caso
j
Una variante di tale algoritmo prevede, nel caso in cui la condizione di
test sia falsa, quindi in N(y) ci siano punti appartenenti a regioni diverse, si
può marcare y come punto di bordo, non appartenente ad alcuna regione.
29
E’ importante notare che nell’esecuzione dell’algoritmo, gli elementi
già inseriti nella SSL non vengono mai aggiornati ricalcolandone la distanza
dalla regione a cui è stato appena aggiunto un punto, il cui valor medio è
quindi cambiato; questo fatto produce effetti trascurabili nella maggior parte
dei casi pratici, ed aumenta notevolmente la velocità dell’algoritmo, ma
rende il processo dipendente dall’ordine di esecuzione delle operazioni, il
che significa che se la scansione dell’immagine viene fatta dal basso verso
l’alto o viceversa, in generale si ottengono due immagini segmentate
differenti.
In [MJ97] tali dipendenze vengono classificate in:
•
Dipendenze intrinseche dall’ordine dei pixel: quando diversi pixel x
appartenenti a T hanno lo stesso δ (x) , allora viene valuato per
primo quello che precede gli altri nell’ordine di scansione, ciò
cambierà poi il valor medio corrente della regione in cui viene
aggiunto, influenzando conseguentemente la classificazione dei pixel
successivi; oppure quando il pixel estratto da T ha la stessa distanza
minima da diverse regioni con cui confina, anche in questo caso la
scelta avrà un influenza anche sugli sviluppi successivi;
•
Dipendenze introdotte dall’algoritmo SRG: durante la fase di
inizializzazione, quando si costituiscono le classi A , A2, …, An in
base ai semi e si aggiungono i corrispondenti intorni N(x) a T, se
qualche punto è equidistante da 2 o più regioni verrà inserito nella
lista in base alla sua distanza da solo una di esse, dipendentemente
dall’ordine di processamento, e non verrà più aggiornato; inoltre, in
ogni fase dell’algoritmo, quando punti di intorno vengono aggiunti
alla SSL, l’ordine di questi dipende dall’ordine di scansione, che
viene così ad avere un effetto sul valore del δ ad essi assegnato.
Il primo tipo di dipendenze può essere eliminato se tutti i pixel di T
che hanno lo stesso δ vengono processati in parallelo, il che significa che
nessuno di tali pixel viene etichettato finchè non sono stati esaminati tutti gli
30
altri, e i valori medi delle regioni sono aggiornati dopo che sono stati
etichettati i pixel; se un pixel non può essere etichettato perché ha lo stesso
δ da due o più regioni confinanti, viene marcato come “in sospeso” e
riconsiderato in una fase di postprocessamento; ogni volta che viene
aggiornato il valore medio di una regione, l’intera SSL viene aggiornata e
riordinata in base alle nuove distanze ottenute, rimovendo anche le
dipendenze del secondo tipo.
Tutto ciò è descritto e implementato in [MJ97], e prende il nome di
Order Independent Seeded Region Growing; ad ogni modo, il prezzo da
pagare per ottenere l’indipendenza dall’ordine è molto alto in termini di
costo computazionale.
31
Capitolo 3
Estrazione di contorni
Le tecniche esposte nel capitolo precedente permettono di individuare
gli oggetti presenti in un’immagine essenzialmente in base al colore e/o
all’intensità della luce che riflettono, che entro certi limiti possono essere
considerate proprietà dell’oggetto in sé, quindi indipendenti dal resto della
scena; in base a questo, è possibile non solo segmentare l’immagine in
regioni omogenee rispetto a certe proprietà, ma anche mettere queste
direttamente in relazione con i modelli che si stanno cercando; in questo
capitolo verranno invece descritti metodi per partizionare l’immagine in
base a proprietà locali che scaturiscono dal contrasto fra le diverse
caratteristiche emissive di oggetti confinanti, e riconoscere i modelli sulla
base della loro forma.
Il concetto cardine attorno a cui ruota tutto il processo di estrazione
dei contorni è quello di bordo, che in sé è sufficientemente astratto da poter
essere caratterizzato in molti modi diversi, ma che ai fini dell’analisi di
immagini al computer, e in accordo con quanto è stato sin qui chiarito
riguardo al sistema di visione umano, può essere definito come segue:
Insieme di pixel dell’immagine appartenenti alla frontiera tra
due regioni omogenee in cui la funzione di intensità subisce una
rapida variazione
(3.1)
Dalla definizione (3.1) emerge immediatamente l’associazione fra il
concetto di bordo e quello di gradiente locale dell’intensità dei pixel
appartenenti ad una regione di frontiera, infatti il gradiente è un indice della
velocità di variazione della grandezza a cui si applica, appare quindi naturale
andare a ricercare i punti di frontiera fra quelli caratterizzati da valori elevati
32
del
gradiente;
bisogna
però
prestare
particolare
attenzione
nel
procedimento, perché le immagini catturate dal mondo reale, a differenza di
quelle generate matematicamente al computer, contengono sempre del
rumore impulsivo, che per sua stessa natura presenta rapide variazioni di
intensità.
In conclusione, possiamo rilevare che sia per determinare il gradiente,
sia per ridurre il rumore, è necessario processare l’immagine mediante
filtraggio.
3.1 Filtri
Considerato un segnale x(t) supposto, per semplicità di esposizione,
unidimensionale e funzione del tempo, nel suo attraversamento di un
sistema S, possiamo definire matematicamente l’uscita y(t) [Cus96]:
y (t ) = F {x(ξ ); ξ ∈ (−∞,+∞); t }
(3.2.1)
cioè l’uscita è determinata da un funzionale F il quale la calcola a
partire dal segnale x(ξ ) per tutti gli istanti ξ secondo una legge che in
generale dipende dall’istante t stesso; se valgono le proprietà di:
•
F
Linearità: a1 ⋅ x1 (t ) + a 2 ⋅ x 2 (t ) →
a1 ⋅ y1 (t ) + a 2 ⋅ y 2 (t )
•
Tempo-invarianza: x(t ) ↔ y (t ) ⇒ x(t − τ ) ↔ y (t − τ )
F
F
(3.2.2)
(3.2.3)
allora il sistema viene detto filtro.
L’uscita di un sistema viene caratterizzata mediante la sua risposta ad
un impulso di Dirac unitario centrato in t = τ , ossia δ (t − τ ) , che pertanto
prende il nome di risposta impulsiva:
y (t ) = h(t ;τ )
(3.2.4)
che è una funzione la cui forma dipende dall’istante τ in cui l’impulso
è centrato; se il sistema è un filtro, sfruttando le proprietà di linearità e
33
tempo-invarianza è possibile calcolarne l’uscita ad un ingresso qualsiasi x(t)
come:
+∞
y (t ) = x(t ) ∗ h(t ) = ∫ x(τ ) ⋅ h(t − τ )dτ
(3.2.5)
−∞
l’operazione x(t ) ∗ h(t ) prende il nome di convoluzione e gode di
molte proprietà notevoli:
•
commutativa: x(t ) ∗ h(t ) = h(t ) ∗ x(t )
(3.2.6)
•
distributiva: x(t ) ∗ ( y (t ) + z (t ) ) = x(t ) ∗ y (t ) + x(t ) ∗ z (t )
(3.2.7)
•
derivazione:
d ( x(t ) ∗ y (t ) )
d ( y (t ) )
= x(t ) ∗
dt
dt
(3.2.8)
applicando poi sia la (3.2.6) che (3.2.8), si ottiene:
y (t ) ∗
d ( x(t ) )
d ( y (t ) )
= x(t ) ∗
dt
dt
(3.2.8’)
le (3.2.8), (3.2.8’) in particolare, sono molto utili nel processamento di
segnali, sia perché permettono di effettuare i calcoli in modo più semplice
qualora la derivata della convoluzione sia più semplice da calcolare della
convoluzione stessa, sia perché permette di eseguire filtraggio e derivazione
di un segnale in un’unica operazione.
L’analisi e la progettazione dei filtri di solito non vengono effettuate
nel dominio temporale, perché non è semplice esprimere certe
caratteristiche come la capacità di riduzione del rumore in tale contesto; si
ricorre allora al dominio della frequenza mediante trasformate:
def
+∞
Trasformata di Fourier: X ( f ) = F {x(t )} = ∫ x(t ) ⋅ e − j 2π ⋅ f ⋅t dt
−∞
(3.2.9)
In generale anche per x(t) reale, la X(f) è una grandezza complessa,
quindi è spesso più conveniente esprimerla come:
X ( f ) = M ( f ) ⋅ e jϕ ( f )
(3.2.10)
34
dove M ( f ) è detta risposta in modulo, mentre ϕ ( f ) è la risposta in
fase.
Anche la trasformata di Fourier gode di molte proprietà notevoli:
linearità: z (t ) = ∑ ai ⋅ z i (t ) ⇒ F {z (t )} =∑ ai ⋅ F {z i (t )}
(3.5.3)
•
traslazione nel tempo: F {x(t − τ )} = e − j 2π ⋅ f ⋅τ ⋅ X ( f )
(3.5.4)
•
traslazione in frequenza: F x(t ) ⋅ e j 2π ⋅ f 0 ⋅t = X ( f − f 0 )
(3.5.5)
•
 dx(t ) 
derivazione nel tempo: F 
 = ( j 2πf ) ⋅ X ( f )
 dt 
(3.5.6)
•
t

1
integrazione nel tempo: F  ∫ x(τ )dτ  =
⋅ X(f )
π
j
2
f
− ∞

(3.5.7)
•
i
i
{
}
in particolare, le (3.5.6) e (3.5.7) permettono di risolvere sistemi di
equazioni differenziali come equazioni lineari nel dominio traformato; altre
due proprietà legano la trasformata di Fourier all’operazione di
convoluzione:
•
prodotto nel tempo: F {x(t ) ⋅ y (t )} = X ( f ) ∗ Y ( f )
(3.6)
•
teorema della convoluzione: F {x(t ) ∗ y (t )} = X ( f ) ⋅ Y ( f )
(3.7)
Il teorema della convoluzione è un risultato fondamentale nell’analisi
ed elaborazione dei segnali, infatti grazie ad esso si può caratterizzare un
filtro anziché mediante risposta impulsiva attraverso:
risposta in frequenza: H ( f ) =
Y( f )
X(f )
(3.7)
così, un sistema lineare e permanente può essere facilmente progettato
per agire in modo selettivo sulle varie componenti X(f) del segnale in
ingresso per determinarne l’uscita; da qui è nato appunto il termine di filtro.
35
3.1.1 Filtri di riduzione del rumore
Nel campo dell’elaborazione delle immagini, i segnali con cui si ha a
che fare non sono definiti su un dominio temporale unidimensionale, bensì
spaziale bidimensionale; altro fatto rilevante è che il dominio è discreto,
perché le immagini vengono catturate mediante eccitazione di una griglia
composta da un numero finito di recettori; bisogna allora estendere i
concetti appena esposti di convoluzione e trasformata di Fourier, per
un’immagine rappresentata da una matrice N ⋅ M :
•
convoluzione discreta bidimensionale:
N −1 M −1
f ( x, y ) ∗ g ( x, y ) = ∑ ∑ f ( k , j ) ⋅ g ( x − k , y − h )
(3.8)
k =0 h = 0
•
trasformata discreta di fourier(DFT):
F {g ( x, y )} = G (u , v) =
•
N −1 M −1
− j 2π ( + )
1
N M
⋅ ∑ ∑ g ( x, y ) ⋅ e
N ⋅ M x = 0 y =0
xu yv
(3.9)
trasformata inversa:
N −1 M −1
F −1 {G ( x, y )} = g ( x, y ) = ∑ ∑ G (u, v) ⋅ e
j 2π (
xu yv
+ )
N M
(3.9’)
u =0 v =0
tutte le considerazioni fatte nel caso unidimensionale tempo-continuo
possono essere estese direttamente, con una notevole eccezione: nel caso
tempo discreto la frequenza non può assumere valori nell’intervallo
f 
 f
(−∞;+∞) ma è limitata a  − c ;+ c  dove fc è la frequenza di
2
 2
campionamento (teorema di Shannon8), pertanto lo spettro della risposta in
frequenza appare periodico di periodo Tc =
1
.
fc
Da quanto detto, appare chiaro come sia possibile ridurre il rumore
presente nelle immagini catturate da una telecamera mediante convoluzione
8 fc/2
viene appunto detta frequenza di Shannon
36
discreta con filtri aventi una risposta che attenui o tagli completamente le
bande affette da rumore e lasci passare il più possibile inalterate le restanti
componenti portatrici di informazione; in particolare il rumore è di solito
concentrato nelle alte frequenze, in particolare il rumore di quantizzazione
ha sempre frequenza pari alla frequenza di Shannon essendo localizzato
negli istanti di campionamento in conseguenza della non idealità dei
campionatori ideali, così anche il rumore termico che genera fluttuazioni
nelle grandezze elettriche che vengono misurate è ad alta frequenza e lo
stesso vale per il rumore che si verifica nelle aree scure in conseguenza della
sensibilità insufficiente del sensore; pertanto il profilo di filtro più
comunemente utilizzato è quello di passa-basso.
Contrariamente alla definizione matematica di filtro, nel campo
dell’elaborazione delle immagini accanto ai filtri lineari è stata definita una
classe di filtri cosiddetti “non-lineari” in cui la convoluzione viene
comunque eseguita, ma l’uscita dipende in modo non lineare dal risultato
della convoluzione in conseguenza dell’applicazione di un algoritmo
specifico:
y (u, v) = Φ{x(u, v) ∗ h(u, v)}
(3.10)
3.1.1.1 Filtri lineari
I filtri lineari di riduzione del rumore sono noti come filtri di
“smoothing” o sfocatura, in quanto esibiscono una caratteristica risposta in
frequenza di tipo passa-basso che taglia efficacemente il rumore ma priva
l’immagine dell’informazione contenuta in alta frequenza, per cui i bordi e i
contorni degli oggetti appaiono attenuati e sfumati, come nel caso di
immagini non messe bene a fuoco.
Il filtro viene rappresentato con una matrice quadrata N ⋅ N dove di
solito N è un numero dispari, dimodochè per ogni pixel dell’immagine
originale venga considerato un intorno simmetrico rispetto a x e y ottenendo
37
una risposta isotropa; gli elementi del filtro possono essere interi o numeri
in virgola mobile, ma bisogna rispettare il vincolo che l’integrale della
risposta impulsiva del filtro abbia area unitaria per evitare di amplificare la
luminosità dell’immagine, pertanto se la matrice è composta da interi
l’operazione di convoluzione va completata con una divisione di
normalizzazione.
Sebbene l’operazione di convoluzione discreta in sé sia abbastanza
efficiente dal punto di vista computazionale, in quanto sono richieste solo
somme e moltiplicazioni e al più una divisione per ogni pixel dell’immagine
originaria, il costo algoritmico del filtraggio complessivo è di O( N 2 ⋅ M ) ,
dove M è il numero di punti che compongono l’immagine; da qui la
necessità in ambito real-time di utilizzare sono filtri aventi dimensione 3x3 o
al più 5x5.
In questa classe il filtro più semplice che si possa realizzare è il
cosiddetto box-filter o filtro media-mobile, che consiste nella trasposizione
bidimensionale della funzione:
1
1

rectT (t ) = T
T
 0
T
2
altrimenti
se t <
(3.11)
Nel caso di una matrice 3x3 a coefficienti interi, può essere così
rappresentato:
38
Figura 3.1 Box-filter
Grazie alla sua semplicità, questo filtro risulta particolarmente
efficiente, infatti nell’esecuzione della convoluzione non è necessario
effettuare alcuna moltiplicazione visto che ha tutti coefficienti unitari, perciò
per filtrare ogni pixel dell’immagine basta sommargli i valori delle intensità
dei suoi 8 vicini e dividere per 9; una variante ancora più efficiente è:
Figura 3.2 Box-filter, forma alternativa.
39
che ha due peculiarità, innanzitutto che il fattore di normalizzazione è
una potenza di 2 (23=8), perciò l’operazione di divisione può essere fatta a
basso costo come shift aritmetico a sinistra di 3 posizioni; secondariamente,
lo 0 al centro della maschera fa sì che il rumore impulsivo venga attenuato
più efficacemente.
Il principale difetto di questo tipo di filtri è il brusco profilo di taglio
nel dominio spaziale in corrispondenza dei bordi della maschera, che nel
dominio trasformato si traduce in un andamento oscillante che lascia passare
del rumore in alta frequenza:
1

F  rect T (t ) = Sinc (πfT ) 9
T

(3.12)
Figura 3.3 Risposta in frequenza dei box-filter:
la linea rossa rappresenta il primo, la verde il
secondo.
9
la sinc o funzione di campionamento è definita come sin(x)/x
40
Come si vede, nel caso della seconda maschera l’andamento è più
favorevole in bassa frequenza, dove esibisce un profilo più ripido, ed in alta,
dove l’attenuazione è maggiore, ma nella banda intermedia presenta un
andamento
“passa-banda”
inaccettabile
nella
maggior
parte
delle
applicazioni.
In tal senso un netto miglioramento è rappresentato dal filtro
gaussiano,
approssimazione
discreta
della
funzione
gaussiana
bidimensionale a valor medio e coefficiente di correlazione nulli:
−
1
Gσ ( x, y ) =
e
2πσ 2
x2 + y2
2σ 2
(3.13)
mediante matrici 3x3 di solito si presenta sotto due forme:
Figura 3.4 Smoothing gaussiano ( σ 2 = 0.64 ).
a varianza σ 2 = 0.64 e:
41
Figura 3.5 Smoothing gaussiano ( σ 2 = 0.36 ).
a varianza σ 2 = 0.36 .
Il dolce profilo di taglio spaziale della gaussiana si ripresenta inalterato
nel dominio trasformato, infatti questa funzione gode della rara proprietà di
essere la trasformata di sé stessa, quindi non presenta oscillazioni e le alte
frequenze vengono attenuate in modo progressivo, pertanto molti autori
considerano questo filtro come “ottimo” fra quelli lineari.
L’ultimo filtro considerato in questa classe è il cosiddetto passabasso ideale, che a differenza dei precedenti viene definito direttamente nel
dominio della frequenza ottenendo poi la matrice di rappresentazione della
risposta impulsiva mediante antitraformata:
−1
F
H LP ( f ) = rect2ν ( f ) 
→ hLP (t ) = 2ν ⋅ Sinc(2πνt )
(3.14)
Per ottenere un taglio ripido in frequenza, la risposta impulsiva deve
essere molto ampia nel dominio spaziale, pertanto questo filtro non è
realizzabile
con
maschere
di
piccole
dimensioni,
per
ottenere
un’approssimazione sufficiente è necessaria una matrice almeno 10x10,
perciò non è adatto ad un uso real-time.
Una possibile rappresentazione mediante matrice 30x30:
42
Figura 3.6 Risposta impulsiva del passa-basso
ideale, vista laterale.
Figura 3.7 Risposta impulsiva del passa-basso
ideale, vista isometrica.
Veniamo quindi ad un confronto diretto fra i filtri illustrati sulla base
della loro riposta in frequenza:
43
Figura 3.8: Risposta in frequenza dei filtri
lineari: la linea nera rappresenta il passa-basso
ideale, la blu il box-filter (1a maschera), la rossa
il gaussiano con varianza 0.64, la verde il
gaussiano con varianza 0.36
Come si vede, il profilo di gran lunga migliore è quello del passa-basso
ideale, che comunque è stato inserito solo come riferimento, in quanto non
è ovviamente comparabile un filtro di dimensioni 30x30 con operatori
aventi dimensioni (e tempo di calcolo) inferiori di due ordini di grandezza; è
invece interessante il confronto fra il box-filter e il gaussiano di varianza
0.64, infatti a dispetto dell’andamento oscillante che ne penalizza il
comportamento in alta frequenza, il box-filter presenta un’attenuazione
maggiore in quasi tutto lo spettro, perciò in molti contesti può risultare
addirittura preferibile al gaussiano, là dove le risorse di calcolo non siano
sufficienti ad un uso di maschere di dimensione maggiore a 3x3.
44
3.1.1.2 Filtri non lineari
I filtri non lineari estendono il concetto di filtro permettendo di
realizzare su ogni pixel dell’immagine operazioni più complesse della
semplice combinazione lineare con i punti del proprio intorno; non essendo
quindi più valida la definizione matematica di filtro come sistema lineare e
permanente, vengono a cadere le proprietà per esso delineate nel paragrafo
precedente, quindi non è più possibile caratterizzarne direttamente il
comportamento in frequenza mediante trasformata di Fourier.
Il problema principale con i filtri lineari è che l’attenuazione del
rumore comporta sempre una perdita di risoluzione, per via del taglio delle
componenti in alta frequenza; i filtri non lineari permettono invece di
operare selettivamente in modo da attenuare il rumore preservando le
strutture principali dell’immagine, quali i bordi, gli spigoli, la tessitura.
Nell’ambito dell’analisi dei filtri non lineari, è opportuno distinguere il
rumore in 3 tipologie:
1.
rumore impulsivo, caratterizzato da bruschi picchi di intensità
localizzati su aree di piccole dimensioni, di solito di 1 o 2 pixel;
2.
rumore gaussiano, a valor medio nullo, coinvolge l’intera
immagine ma nella maggior parte dei punti lo scostamento
rispetto al segnale è piccolo;
3.
rumore uniforme, a valor medio nullo, simile al gaussiano, ma
la distribuzione di probabilità è uniforme in un certo intervallo
ammissibile.
Un buon miglioramento rispetto ai filtri lineari è ottenibile con il
cosiddetto filtro KNN (K - Nearest Neighbours) [DR78]:
•
sia NxN la dimensione della maschera di convoluzione.
•
si scelgono i K pixel più simili fra loro all’interno della maschera e se
ne fa la media.
45
•
valori tipicamente utilizzati sono N=3 e K=6 (che è stato
dimostrato essere l’ottimo per tale matrice)
(3.14)
Scartando dalla media i punti che si discostano di più dagli altri,
questo filtro è più efficace nel rigettare il rumore impulsivo, oltre ad esibire
comunque un buon comportamento in presenza degli altri tipi di rumore,
tuttavia soffre comunque di una sensibile attenuazione di bordi e feature
bidimensionali.
Se invece di calcolare il valore medio dell’intorno (box-filter) si calcola
il mediano, si ottiene un nuovo filtro non-lineare che da tale operatore
statistico prende il nome:
•
si ordina l’intera maschera
•
si prende il valore nel mezzo (mediano)
•
se il numero di punti della maschera è pari, ci saranno due valori nel
mezzo, di cui si fa la media algebrica
(3.15)
Questo operatore ha un’ottima risposta nei confronti del rumore
impulsivo, perché essendo questo localizzato su punti isolati ed avendo
deviazione significativa rispetto al suo intorno, facendo il sort si trova
sempre in uno dei due estremi della maschera, quindi non viene mai
selezionato come valore di uscita; anche il comportamento in presenza di
rumore gaussiano e uniforme è buono.
Un importante risultato ottenibile con questo filtro è la ridotta
attenuazione delle caratteristiche unidimensionali dell’immagine, quali i
bordi, grazie al fatto di non generare in uscita valori medi su un certo
intorno, perciò nelle zone di alto contrasto fra regioni vengono scelti
sempre punti appartenenti o ad una parte o all’altra; quanto detto è però
valido solo per edge dritti, mentre i profili curvi e le caratteristiche
bidimensionali come gli angoli vengono notevolmente degradati.
Diverse varianti di questo algoritmo sono state proposte per
migliorarne il comportamento nei confronti delle feature bidimensionali, in
46
particolare [Bro84] descrive il filtro mediano pesato, che attribuisce diversi
pesi ai punti appartenenti alla maschera inserendo più volte nella lista da
ordinare i valori più vicini al centro rispetto a quelli più lontani, traendone
poi il mediano; il risultato è che la migliore preservazione degli angoli viene
pagata in termini di minore riduzione del rumore.
In questo senso un filtro piuttosto estremo è il cosiddetto
conservative smoothing, il quale trova il minimo e il massimo nell’intorno
di ciascun punto, e se il valore di quest’ultimo esce dall’intervallo così
individuato, viene sostituito con il corrispondente estremo:
se : x(u, v) ∈ [min H (u, v), max H (u, v)]
 x(u, v)

y (u, v) =  min H (u, v)
se : x(u, v) < min H (u , v)
max H (u, v)
se : x(u, v) > max H (u, v)

(3.16)
Questo algoritmo praticamente non introduce nessuna sfocatura della
struttura dell’immagine, ma l’unico rumore che riesce a filtrare è l’impulsivo
localizzato su non più di 1 pixel: se tale ipotesi non è verificata, nell’intorno
del picco di rumore è presente almeno un altro punto ad esso simile, che
costituisce un massimo o un minimo della maschera, che determina così il
passaggio dell’impulso di rumore in uscita.
Se si fa la media algebrico fra i due estremi dell’intervallo così
individuato e si prende il risultato come valore di uscita, si ottiene il filtro
midrange [AF88]:
y (u , v) =
max H (u , v) + min H (u , v)
2
(3.17)
Questo filtro non esibisce un buon comportamento dei riguardi della
sfocatura di contorni e non filtra correttamente il rumore impulsivo, che
tende a spandersi sui punti circostanti, mentre dà buoni risultati in presenza
di rumore gaussiano e uniforme.
47
Quasi tutti i limiti dei filtri sopraelencati possono essere superati
determinando dinamicamente
vicini,
come
sottoinsieme
per ogni pixel un opportuno intorno di
della
matrice
di
convoluzione,
aventi
caratteristiche ad esso omogenee, ed effettuando lo smoothing su tale
intorno; un operatore ben rappresentativo di tale principio è il GIW
(Gradient Inverse Weighted) [WVL81], che attribuisce ad ogni punto d’intorno
un peso inversamente proporzionale ad una stima del gradiente fra esso e il
punto centrale della maschera:
∑∑
x(u + i, v + j )
1

max  , x(u + i, v + j ) − x(u, v) 
2

y (u, v) =
1
∑∑
1

i
j
max  , x(u + i, v + j ) − x(u, v) 
2

i
j
(3.18)
Questo operatore deve essere applicato iterativamente, in genere 5
volte, ed ha il pregio rispetto ad altri metodi di questa famiglia di non
richiedere alcun tipo di valore di soglia predeterminato per la messa a punto
in relazione al rumore dell’immagine; il suo comportamento nei confronti di
rumore gaussiano e uniforme è ottimo, pur preservando le strutture uni- e
bi-dimensionali dell’immagine; il suo principale difetto è nella scarsa
efficacia nei confronti del rumore impulsivo, limite che potrebbe essere
mitigato escludendo dalle due sommatorie il valore centrale della maschera,
ma ciò non fa parte dell’algoritmo originale.
Tutti i migliori aspetti dei filtri non-lineari suesposti possono essere
ritrovati nel S.U.S.A.N. Smoothing [SB95], di cui si parlerà in dettaglio
nella sezione seguente.
3.1.2 Filtri di Edge Detection
Riprendendo il concetto espresso dalla definizione (3.1), il modo più
naturale per rilevare i bordi presenti in un’immagine è di individuare i
48
massimi del gradiente, che sono in corrispondenza con il punto di flesso
della funzione di intensità luminosa, in cui è localizzato l’edge; grazie alla
proprietà di derivazione (3.2.8) dell’operazione di convoluzione, e grazie al
fatto che il risultato della convoluzione di un segnale s(t) con un impulso
unitario δ 0 (t ) è il segnale stesso, si può calcolare il gradiente dell’immagine
come:
s( x, y ) ∗ δ 0 ( x, y ) = s ( x, y ) ∂ (s ( x, y ) ∗ δ ( x, y ) )

0

∂s( x, y )  ⇒
∂(δ 0 ( x, y ) )

∇ x s ( x, y ) =
∂
x
 ⇒ ∇ x s ( x, y ) = s ( x , y ) ∗
∂x 
∂x

d ( f ( x) ∗ g ( x) )
dg ( x)
(3.2.8)
= f ( x) ∗
dx
dx

(3.19)
e analogamente ∇ y s (u , v) ; grazie a questo risultato, possiamo
precalcolare le due componenti del gradiente dell’impulso matematico
discreto sotto forma di matrici, e farne la convoluzione con l’immagine.
Prima di illustrare i più noti operatori utilizzati allo scopo, è
opportuno definire dei criteri di valutazione della qualità di un edge-detector
che permettano di confrontarli [Can86]:
1.
Buon riconoscimento: il numero di falsi positivi e falsi
negativi deve essere il più basso possibile;
2.
Buona localizzazione: la posizione dell’edge rilevato deve
essere la più vicina possibile all’edge reale;
3.
Risposta singola a bordo singolo: deve essere individuato
un solo edge per ogni bordo;
4.
Efficienza
computazionale:
possibilmente veloce.
Discretizzando
l’algoritmo
deve
essere
(3.20)
direttamente
il gradiente, considerato che nelle
immagini la minima distanza è di un pixel, cioè dx = ∆x = 1; dy = ∆y = 1 :
49
s ( x + dx, y ) − s ( x, y )
= s ( x + 1, y ) − s ( x, y )
dx
s ( x, y + dy ) − s ( x, y )
∇ y s ( x, y ) =
= s ( x, y + 1) − s ( x, y )
dy
∇ x s ( x, y ) =
(3.21)
possiamo così esprimere il gradiente mediante le due matrici:
Figura 3.9 Maschere per il calcolo del
gradiente (discreto)
Ruotando le due maschere in modo che siano dirette una a 45°, l’altra
a 135°, otteniamo l’operatore di Roberts [Rob65]:
Figura 3.10 Maschere di Roberts
Facendo uso di maschere di dimensione pari, gli edge rilevati da
questo operatore dovrebbero essere collocati fra un pixel e l’altro, ma non
essendo ciò ovviamente possibile, la localizzazione del bordo potrà avvenire
su uno qualsiasi dei due fronti o addirittura su entrambi: infatti la
convoluzione con operatori che esprimono il gradiente in sé non rileva gli
edge, ma li esalta, dando comunque una risposta, pur piccola, anche nelle
50
zone in cui non è presente un bordo, pertanto sono detti filtri di edge
enhancement; è necessario applicare un’operazione di thresholding per
riconoscere come punti di bordo solo quelli aventi modulo del gradiente
superiore ad una certa soglia, poiché tale soglia è in genere globale, è
perfettamente possibile, anzi frequente, avere risposte localizzate su più
pixel in relazione con un edge singolo, da cui la formulazione del terzo
criterio di qualità delle (3.20).
Applicata la convoluzione con le due maschere ortogonali, il modulo e
la direzione del gradiente possono essere calcolati come:
2
∇ = ∇ 245° + ∇135
° ≅ ∇ 45° + ∇ 135°
(3.22)
∇  3
∠∇ = arctan 45°  − π
 ∇135°  4
L’operatore di Roberts ha come maggior pregio il ridotto costo
computazionale, per via della dimensione compatta delle maschere; questa
caratteristica ne costituisce però anche il punto debole, perché lo rende
molto sensibile al rumore, pertanto è adatto ad essere usato solo su
immagini generate al computer o filtrate preliminarmente con un operatore
di riduzione del rumore.
Fortunatamente, grazie alla proprietà (3.2.8), è possibile ottenere la
riduzione del rumore e l’edge enhancement in una sola operazione di
convoluzione, basta infatti calcolare un operatore che realizzi la
convoluzione fra una funzione di smoothing lineare (gaussiana o box) e la
funzione di derivazione; è così che è stato ottenuto l’operatore di Sobel
[Sob90]:
51
Figura 3.11 Dalla convoluzione di un
operatore differenziale ∇ con un filtro di
smoothing gaussiano, si ottengono le due
maschere di Sobel
Questo metodo, grazie alla maggior dimensione della maschera e alla
convoluzione con un filtro di smoothing gaussiano, risulta molto meno
sensibile al rumore rispetto all’operatore di Roberts; grazie alla matrice di
dimensione dispari, è possibile localizzare bordi che giacciano esattamente
su un pixel, anche se spesso questo non accade a causa dell’effetto dello
smoothing, che tagliando le componenti in alta frequenza allarga il profilo
dei contorni, che possono così raggiungere uno spessore di diversi pixel; per
converso, il costo computazionale risulta ovviamente più alto.
Anche in questo caso, modulo e direzione del gradiente si possono
calcolare come:
∇ = S x2 + S y2 ≅ S x + S y
 Sy
∠∇ = arctan
 Sx
(3.23)



Una variante basata sul box-filter al posto del gaussiano prende il
nome di operatore di Prewitt [Pre70]:
52
Figura 3.12 Operatore di Prewitt, ottenuto
mediante convoluzione del gradiente con un
box-filter.
Dallo studio sulla risposta in frequenza dei filtri gaussiano e box, si
può comprendere facilmente come questo filtro sia teoricamente più
rumoroso rispetto a Sobel, anche se in pratica il comportamento è molto
simile, con l’unico svantaggio di non essere isotropo, in quanto la risposta
agli edge diagonali di questa maschera risulta accentuata rispetto ai verticali e
diagonali.
Un’alternativa al calcolo dell’arcotangente per determinare la direzione
dell’edge è l’uso di 8 maschere diverse, ciascuna con un risposta massima in
una certa direzione, orientate in modo da dividere l’angolo giro in ottanti,
quindi a 45° l’una dall’altra; i filtri che fanno uso di questo metodo
prendono il nome di operatori a bussola, per la similitudine con tale
strumento nell’indicare la direzione (N, NE, E, SE, S, SW, W, NW); un
esempio basato sull’operatore di Sobel (a bussola):
53
Figura 3.13 Per ogni punto dell’immagine si
applicano le 8 maschere, prendendo come
risultato quella che dà la risposta maggiore.
Il vantaggio, in termini di prestazioni, degli operatori a bussola
rispetto al calcolo diretto dell’arcotangente è molto dipendente dall’ambiente
di esecuzione, infatti sebbene le funzioni trigonometriche siano piuttosto
lente, con il metodo a bussola è necessario effettuare 8 operazioni di
convoluzione anziché due (nel caso del Sobel a bussola, bastano 4
operazioni perché si può sfruttare la simmetria delle maschere, ciò non è, ad
esempio, vero nel caso dell’operatore di Kirsch10); dal punto di vista della
qualità di risposta i risultati sono piuttosto simili sia in modulo che
direzione, nonostante che, con l’arcotangente, la direzione non sia
quantizzata in solo 8 angoli possibili.
10
Maschera di Kirsch a 0°:
-3
-3
5
-3
0
5
-3
-3
5
54
Un modo alternativo per rilevare gli edge può essere individuato se si
tiene conto che in corrispondenza con i massimi e i minimi del gradiente gli
la derivata seconda (laplaciano) attraversa lo zero:
Figura 3.14 Profilo di un bordo: funzione di
intensità luminosa I(x) e sua derivata prima e
seconda.
Questo metodo è stato proposto in [MH80] nell’ambito dello studio
del sistema visivo umano; in realtà i punti di attraversamento del laplaciano
non sono in corrispondenza solo con gli edge, ma si verificano anche in
zone uniformi dove l’intensità luminosa ha piccole fluttuazioni intorno al
valor medio in conseguenza di rumore; il problema è che l’operazione di
derivazione in sé amplifica il rumore, è ciò è ancora più accentuato nella
derivata seconda; per converso, questo metodo ha due pregi importanti:
•
tende a formare contorni chiusi, cosa che avviene con difficoltà con
i metodi basati sul gradiente, perché in tal caso non vengono
considerati i massimi locali, ma assoluti;
•
lo spessore dei bordi così rilevati tipicamente è di un solo pixel.
Discretizzando l’operatore laplaciano:
55
∇ 2 f ( x, y ) =
∂ 2 f ( x, y ) ∂ 2 f ( x , y )
+
∂x 2
∂y 2
(3.24)
tenendo sempre conto che dx = ∆x = 1; dy = ∆y = 1 :
∂ 2 f ∂∇ x ∂[ f ( x + dx, y ) − f ( x, y )]
=
=
⇒
∂x
∂x
∂x
∂[ f ( x + dx, y )] ∂[ f ( x, y )]
⇒
−
⇒
∂x
∂x
⇒ f ( x + 1, y ) − f ( x, y ) − ( f ( x, y ) − f ( x − 1, y ) ) ⇒
⇒ f ( x + 1, y ) − 2 f ( x, y ) + f ( x − 1, y )
(3.25)
∂2 f
⇒ f ( x + 1, y ) − 2 f ( x, y ) + f ( x − 1, y )
∂x
∂2 f
⇒ f ( x, y + 1) − 2 f ( x, y ) + f ( x, y − 1)
∂y
questo operatore non è direzionale e quindi si rappresenta con
un’unica matrice isotropa:
Figura 3.15 Laplaciano.
Il principale problema del laplaciano è l’estrema sensibilità al rumore,
di molto superiore anche a quella dell’operatore di Roberts, che lo rende
praticamente inutilizzabile con immagini che non siano state prefiltrate o
generate al computer; infatti Marr e Hildreth [MH80] hanno proposto un
56
operatore ottenuto dalla convoluzione di un filtro gaussiano di smoothing
con il laplaciano, operatore che prende il nome di LoG (Laplacian of
Gaussian):
 x 2 + y 2 − 2σ 2  −
e
LoG ( x, y ) = 
2πσ 6


x2 + x2
2σ 2
avente andamento:
Figura 3.16 LoG, vista isometrica.
Una possibile rappresentazione con matrice 9x9, σ = 1.4 è:
Figura 3.17 Log, matrice.
57
(3.26)
Il principale problema di questo filtro è che al crescere della varianza
del gaussiano si riduce il numero di falsi edge dovuti al rumore, ma gli edge
diventano via via arrotondati e spessi e si perdono le strutture più fini
dell’immagine; un altro limite è il costo dell’algoritmo, legato alla necessità di
usare maschere di dimensione almeno 5x5 per ottenere un qualche effetto di
riduzione del rumore, infatti per valori di σ ≤ 0.5 , come in una maschera
3x3, la gaussiana discretizzata tende all’impulso, perciò si ottiene un filtro
identico al laplaciano puro.
Due varianti approssimate sono il DoG (Difference of Gaussians)
ottenuto facendo la differenza fra due gaussiane di varianza diversa, e il
DoB (Difference of Boxes) dove la differenza viene fatta fra due box-filter di
ampiezza diversa.
In [Can83] Canny ha sintetizzato i risultati precedenti formulando
una funzione di errore complessivo in base ai primi 3 criteri della (3.20) da
minimizzare mediante tecniche di ottimizzazione per ottenere un operatore
lineare da convolvere con l’immagine, il risultato è stato (come prevedibile)
una approssimazione del gradiente di una gaussiana; l’algoritmo
complessivo, che prende il nome dal suo autore, consta di 3 fasi:
•
edge enhancement: convoluzione con operatore che realizzi il
gradiente di una gaussiana (Sobel, o gaussian-smoothing + gradiente
come filtri separati) per rilevare modulo e direzione e direzione della
normale (quantizzata in angoli di 45°, come negli edge-detector a
bussola) dei punti di bordo candidati;
•
non-maxima suppression: sulla matrice dei moduli del gradiente,
per ogni pixel avente valore non nullo se ne legge la direzione nella
matrice apposita, si considerano il pixel che precede e quello che
segue (nella stessa direzione), se almeno uno dei due ha modulo
maggiore del pixel in esame, che quindi non è il massimo lungo il
bordo, questo viene soppresso, settandone il modulo a zero;
58
•
hysteresis thresh: si stabiliscono due valori di threshold, th e tl , per
ogni punto avente modulo superiore a th , si percorre il bordo così
individuato secondo la direzione tangente ad esso in entrambi sensi,
aggiungendo punti all’immagine finale finché essi hanno modulo
maggiore di tl .
Il vantaggio del thresholding con isteresi è che usando una soglia
singola si rischia di settarla troppo alta, ottenendo una buona reiezione del
rumore ma bordi frammentati e discontinui, e il viceversa è vero se la soglia
è troppo bassa; grazie all’isteresi, la soglia superiore serve a localizzare solo
le strutture significative dell’immagine, mentre quella inferiore serve a
connetterle; il problema principale dell’algoritmo di Canny è il tempo di
calcolo elevato dovuto soprattutto a quest’ultima fase; inoltre la connettività
nelle giunzioni fra più di due regioni (ad ‘Y’, ‘X’ o ‘T’) non è di solito
rispettata.
Un metodo completamente differente per risolvere il problema della
edge-detection verrà esposto nella sezione seguente.
3.1.3 S.U.S.A.N.
Il S.U.S.A.N. è un nuovo approccio non lineare al processamento
digitale delle immagini a basso livello che è stato applicato, con risultati di
assoluta eccellenza sia in termini qualitativi che di costo computazionale, alla
riduzione del rumore e all’estrazione di caratteristiche uni- e bi-dimensionali
quali edge e corner [SB95].
Il principio su cui si basano questi algoritmi è nella costruzione,
all’interno di una maschera circolare di dimensione fissata il cui centro viene
detto nucleo, di una sottoregione di punti aventi funzione di intensità molto
simile a quella del nucleo al punto da poter essere ad esso assimilati
(U.S.A.N. è un acronimo che sta per Univalue Segment Assimilating Nucleus) :
59
Figura 3.18 SUSAN: applicazione delle
maschere su un’immagine caratterizzata da un
oggetto scuro su uno sfondo chiaro.
Figura 3.19 SUSAN: l’area evidenziata in
rosso rappresenta l’USAN associato a ciascun
nucleo.
Per ogni punto, si applica un’apposita funzione di correlazione alla
differenza di intensità fra il nucleo e i punti appartenenti alla maschera
60
circolare: l’USAN è composto da tutti i punti appartenenti alla maschera
aventi correlazione non nulla con il nucleo.
3.1.3.1 S.U.S.A.N. Smoothing
Nella sezione sui filtri di smoothing lineari, si è visto come il
principale limite di questi sia l’attenuazione delle caratteristiche geometriche
delle immagini, che risultano sfumate e sfocate al punto da non poter più
essere riconosciute come edge o corner; si è altresì accennato come filtri
non lineari quali il GIW, mediante opportuna selezione dei punti di intorno
su cui fare lo smoothing, permettano di superare tale limite: il motivo è che,
applicando una maschera di convoluzione isotropa (filtri lineari) su un punto
di bordo (figg. 3.18-3.19 punto c) o corner (punto b) viene effettuata una
media pesata fra tutti i punti dell’intorno, che dà come risultato un valore di
grigio intermedio fra essi, riducendo l’ampiezza del gradiente; se invece si
riesce ad individuare una porzione di maschera avente caratteristiche simili
al punto in esame su cui effettuare la media, il valore generato sarà anch’esso
omologo a tale regione, preservando l’ampio gradiente rispetto all’altro
fronte del bordo.
A differenza del GIW, che usa l’inverso del gradiente come peso da
assegnare ai punti della maschera per individuare la zona su cui fare lo
smoothing, il S.U.S.A.N. (Smooth over U.S.A.N.) usa una funzione di
correlazione (nel dominio dell’intensità luminosa) gaussiana:
c ( p, p 0 ) = e
dove
 ( I ( p ) − I ( p0 ) 
−

T


2
(3.27)
p è un pixel qualsiasi della maschera, p0 è il nucleo, I(p)
rappresenta l’intensità luminosa, T è un parametro del filtro (threshold della
luminosità) che controlla la scala dello smoothing: valori ridotti di T
comportano una maggiore selettività nella scelta dei punti da includere
nell’USAN, cioè soltanto valori molto vicini (nel dominio della luminosità)
al nucleo vengono considerati; al crescere di T, l’USAN tende verso l’intera
61
maschera e il comportamento del filtro verso il corrispondente operatore
lineare; ad ogni modo, per filtrare correttamente la maggior parte delle
immagini la scelta di T non è critica.
Anche nel dominio spaziale i pesi assegnati seguono il profilo
gaussiano, per il favorevole andamento in frequenza evidenziato in
precedenza, la cui varianza σ 2 controlla quindi lo smoothing spaziale;
l’espressione del filtro complessivo è quindi:
S ( x, y ) =
∑ I ( x + i, y + j ) ⋅ e
−
x2 + y2
2σ
2
−
( I ( x + i , y + j ) − I ( x , y ) )2
T2
( i , j ) ≠ ( 0, 0 )
∑e
−
x2 + y2
2σ 2
−
( I ( x + i , y + j ) − I ( x , y ) )2
(3.28)
T2
(i , j )≠ ( 0,0 )
Dalla (3.28) si nota subito come, a differenza del filtro GIW, il nucleo
della maschera sia escluso dalla sommatoria: nel caso in cui il denominatore
della funzione sia 0, caso che si verifica appunto quando l’intensità luminosa
del nucleo è considerevolmente superiore a quella di tutto il suo intorno
(rumore impulsivo), si calcola il mediano degli 8 vicini del nucleo (come una
maschera 3x3).
Il filtro così ottenuto integra i migliori aspetti di tutti gli operatori visti
sinora, coniugando l’ottimo comportamento del GIW nei confronti del
rumore gaussiano e uniforme, ma senza necessità di iterazione, con la
risposta del mediano al rumore impulsivo; i bordi e le feature bidimensionali
vengono non solo preservati, ma il contrasto ne esce addirittura aumentato:
supponiamo ad esempio di essere in presenza di un punto grigio nella zona
di transizione fra un’area bianca ed una nera, se questo punto risulta
sufficientemente vicino ad una delle due, verrà filtrato solo con punti
appartenenti ad essa, risultandone così uniformato; se ciò non avviene, si
tratta di un punto isolato a cui viene applicato l’operatore mediano, quindi
verrà sostituito con un punto appartenente o ad un fronte o all’altro.
62
3.1.3.2 S.U.S.A.N. Edge Detector
Il principio dell’USAN può essere anche utilizzato per individuare gli
edge presenti in un’immagine senza far ricorso ad alcun tipo di operatore
differenziale: riprendendo in esame le figure 3.18 e 3.19, si nota come nei
punti all’interno di aree omogenee come (a) e (d) l’area dell’USAN sia
massima, pari o prossima a quella dell’intera maschera, mentre nei punti di
bordo (c) sia circa la metà e nei corner (b) sia addirittura solo un quarto; è
possibile quindi individuare una nuova definizione di bordo e un nuovo
criterio di riconoscimento che non richiede l’esecuzione di alcuna
operazione differenziale (che intrinsecamente amplifica il rumore).
Figura 3.20 Risposta in area dell’USAN in
corrispondenza di una giunzione a Y fra 3
aree omogenee.
63
La funzione di correlazione per determinare l’area dell’USAN varia
rispetto al caso del filtro di smoothing, perché qui è utilizzata per valutare
quali pixel sono dentro o fuori l’USAN in modo binario:
1 se : I ( p) − I ( p0 ) ≤ T
c ( p, p 0 ) = 
altrimenti
0
(3.29.1)
Nonostante tale funzione dia risultati molto buoni, è stata dimostrata
l’ottimalità teorica di una variante dal profilo un po’ più morbido, per la
maggiore stabilità nei confronti di punti aventi intensità in prossimità del
threshold T:
c ( p, p 0 ) = e
 I ( p ) − I ( p0 ) 
−

T


6
(3.29.2)
Figura 3.21 SUSAN edge detector, funzioni di
correlazione: (a) funzione (3.29.1), (b) funzione
(3.29.2).
In entrambi casi, il parametro T (threshold di intensità luminosa)
determina il contrasto minimo delle feature che verranno riconosciute e il
massimo del rumore che verrà ignorato.
Per determinare la risposta complessiva del filtro, si calcola quindi
l’area dell’USAN:
64
n( p 0 ) = ∑ c( p, p 0 )
(3.30)
p
Come si vede, non è stato attribuito alcun peso “spaziale” ai pixel
della maschera, ad esempio gaussiano, anche se questa eventualità è stata
considerata, perché in questo filtro non produce nessun tipo di
miglioramento, in quanto a differenza degli operatori visti in precedenza, qui
non è necessario alcun tipo di smoothing per ridurre il rumore, perché non
viene effettuata nessuna derivazione, anzi il criterio effettua un’operazione
di integrazione, che in sé ha un effetto “passa-basso”.
A questo punto è possibile calcolare la risposta del filtro come:
 g − n( p 0 ) se : n( p 0 ) < g
R( p0 ) = 
0
altrimenti

dove g prende il nome di threshold geometrico ed è pari a
(3.31)
3
n max : in
4
assenza di rumore, non ci sarebbe alcun bisogno di un threshold
geometrico, basterebbe quindi porlo uguale a nmax per ottenere la risposta,
tuttavia esso è stato determinato come ottimo dall’analisi del valore atteso
della risposta in presenza di puro rumore; d’altronde non c’è alcun rischio
che esso sopprima edge reali, infatti, è stato illustrato come in tali casi l’area
dell’USAN sia minore o uguale a
nmax
su almeno uno dei fronti.
2
Nel caso si voglia applicare un algoritmo di non-maxima suppression, o
qualora gli stadi di elaborazione successivi richiedano la direzione della
normale all’edge, questa può essere calcolata come segue:
65
Figura 3.22 SUSAN edge detector:
determinazione della direzione dell’edge.
•
Se il numero di pixel che compongono l’USAN è maggiore del
diametro della maschera, l’edge si localizza fra un pixel e l’altro (casi
(a) e (b) in figura); basta allora calcolarne il baricentro come:
G ( p0 ) =
∑p
0
p ⋅ c ( p, p 0 )
p
c ( p, p 0 )
e ricavare la direzione della normale
all’edge come vettore congiungente il baricentro con il nucleo;
•
Altrimenti il baricentro cade all’interno del nucleo (caso (c) in figura)
e per determinare la direzione del bordo bisogna individuare il più
66
lungo
asse
di
simmetria
dell’USAN:
( x − x 0 ) 2 = ∑ ( x − x 0 ) 2 ⋅ c ( p, p 0 )
p
( y − y 0 ) 2 = ∑ ( y − y 0 ) 2 ⋅ c ( p, p 0 )
p
( x − x 0 ) ⋅ ( y − y 0 ) = ∑ ( x − x 0 ) ⋅ ( y − y 0 ) ⋅ c ( p, p 0 )
p
dall’arcotangente del rapporto fra il secondo e il primo di tali
momenti si ottiene la direzione del bordo, dal terzo si ottiene il
segno in caso di edge diagonale.
Dal confronto fra il SUSAN edge detector e gli operatori differenziali,
è emersa una migliore localizzazione dei bordi, anche in presenza di
contorni sfumati (es. caso (c) fig. 3.22) , in cui la maschera risulta ancora più
sottile, quindi la risposta è addirittura maggiore che nei contorni netti (in
[SM95] è stata dimostrata la coincidenza teorica fra la posizione spaziale
degli edge rilevati da questo algoritmo e il punto di flesso dei bordi, dove il
gradiente è massimo e il laplaciano attraversa lo zero), un rapporto segnale
rumore molto più favorevole, una migliore connettività alle giunzioni.
3.2 Riconoscimento di forme
Il risultato della edge detection è un’immagine binaria contenente i
punti che appartengono ai contorni degli oggetti; perché tale informazione
possa essere utilizzata per estrarre conoscenza sulla scena ivi rappresentata è
necessario individuare modelli matematici che possano essere messi in
corrispondenza con i punti così ottenuti.
Il problema del riconoscimento degli oggetti può essere così
formulato [RN98]:
•
sia data una scena consistente in un insieme di oggetti presi da una
collezione i cui modelli O1, O2, …, On siano noti a priori;
67
•
sia nota un’immagine della scena presa da un punto di vista non
noto;
si tratta di determinare dall’immagine quali oggetti sono presenti e la
loro posizione e orientazione rispetto all’osservatore.
A partire da un insieme di punti di bordo ottenuti mediante edge
detection, si può determinare la funzione a cui appartengono mediante:
[PPR01]
•
interpolazione polinomiale di grado prefissato, scelto un valore
massimo dell’errore di interpolazione come distanza del singolo
punto dalla primitiva che congiunge gli altri, qualora un punto superi
tale soglia si suddivide la curva in due tratti in esso terminanti e si
prosegue il procedimento;
•
fitting di coniche, in cui occorre minimizzare la somma dei
quadrati delle distanze di ogni punto dalla conica rappresentata dal
vettore dei suoi parametri;
•
rappresentazione con curve parametriche (B-Spline, NURBS),
dove i punti di edge vengono usati come nodi di controllo della
curva;
•
template matching tramite riconoscimento di invarianti
proiettivi,
che sono grandezze che si mantengono costanti
attraverso cambi di base (rototraslazioni) e proiezioni prospettiche,
quali la cross-ratio fra 4 punti (A, B, C, D) appartenenti ad una linea:
AC ⋅ BC
; che pertanto possono essere usate per indicizzare una
AD ⋅ BD
ricerca in un insieme di modelli caratterizzati da diversi valori di tali
invarianti;
•
allineamento con modelli tridimensionali (cilindri generalizzati,
superquadriche, Geons), basato sulla scomposizione dell’oggetto in una
combinazione di primitive geometriche elementari sottoposte ad una
68
serie di trasformazioni (rotazioni, traslazioni, scalature) con cui si
cerca di massimizzare una funzione di sovrapponibilità fra il modello
così ottenuto e le caratteristiche estratte dall’immagine.
3.2.1 Trasformata di Hough
La trasformata di Hough è uno strumento che consente, a partire da
una funzione implicita che rappresenta un modello di cui si vuole ritrovare
la corrispondenza in un insieme di punti rilevati sensorialmente, di
determinare il vettore dei parametri secondo cui tale funzione si allinea con
il massimo numero di punti dell’insieme di ingresso.
Sia dunque f una generica funzione definita mediante l’equazione
implicita [Gris01]:
f ( xˆ, pˆ ) = 0
(3.32)
dove xˆ ∈ R n è il vettore delle variabili, pˆ ∈ R m è il vettore dei
parametri dell’equazione; dato un insieme di punti S = {xi , i ∈ 1Κ k }
appartenenti ad un’immagine, ottenuti ad esempio mediante edge detection,
risolvendo il sistema:
f ( x1 , p) = 0
f ( x2 , p) = 0
(3.33)
Μ
f ( xm , p) = 0
con xi distinti, si ottiene una soluzione ~
p che rappresenta la funzione
del fascio che passa per tutti i punti suddetti.
Sia allora:
1
h xi ( p ) = 
0
f ( xi , p ) = 0
altrimenti
(3.34)
69
che indica se la funzione contraddistinta dal vettore di parametri p
passa per il punto xi; possiamo così definire la trasformata di Hough
dell’insieme S di punti considerato come:
k
HT S ( p ) = ∑ h xi ( p )
(3.35)
i =1
Come si vede dalla formula, la trasformata di Hough è un’equazione
di voto, cioè esprime il numero di elementi dell’insieme di ingresso che
“sono in accordo” (cioè sono allineati) con la funzione rappresentata dal
vettore di parametri p; dato quindi un insieme di punti rilevati
sensorialmente e supponendo nota la funzione che si vuole ricercare, basta
determinare il massimo della funzione di Hough sull’intero spazio dei
parametri per individuare il modello che vi si adatta meglio; questa
caratteristica è molto importante perché, posto che l’assunzione sulla
funzione impiegata sia esatta, il modello così ottenuto è molto robusto
rispetto al rumore in quanto è il più probabile, è ottenuto su base globale,
non locale, e tutti i punti che non si allineano non danno in effetti alcun
contributo al risultato; per gli stessi motivi, è anche robusto rispetto alle
occlusioni, purché ovviamente siano parziali.
A livello pratico, lo spazio dei parametri deve essere discretizzato,
altrimenti la ricerca al suo interno sarebbe ovviamente infinita, con un
numero di valori dipendente dalla accuratezza desiderata; anche così
comunque, emerge chiaramente il principale limite di questa tecnica, ovvero
il
rapido incremento del tempo di ricerca al crescere del numero di
parametri: se p ∈ R n e ciascuna dimensione viene discretizzata a k elementi,
il costo di visita si può esprimere come O(k n ) .
3.2.1.1 Trasformata di Hough per le linee
L’equazione della retta in forma implicita ha 3 parametri:
ax + by + c = 0
(3.36.1)
70
tuttavia, ponendola in forma esplicita se ne hanno solo 2:
y = mx + q
(3.36.2)
Il problema di tale formula è che non si possono esprimere rette
parallele all’asse delle y (x=q); comunque in entrambi i casi, almeno un
parametro può assumere valori arbitrariamente elevati, e questo crea
problemi nella rappresentazione discretizzata; è però possibile superare tali
limiti con rappresentazione alternativa:
ρ = x cos θ + y sin θ
(3.36.3)
dove θ rappresenta l’angolo formato dal segmento passante per
l’origine perpendicolare alla retta, e ρ ne rappresenta la lunghezza:
Figura 3.23 Rappresentazione della retta in
coordinate polari.
ad ogni punto (x,y) nell’immagine corrisponde quindi una sinusoide
nel dominio trasformato ( ρ ,θ ) :
71
Figura 3.24 Hough: rappresentazione nello
spazio dei parametri
di un punto in
coordinate immagine.
Il pregio di questa trasformazione è la possibilità di stabilire facilmente
un limite superiore per entrambi i parametri, infatti θ ∈ [0,2π ] per la
periodicità della sinusoide, ρ ∈ [0, M 2 + N 2 ] se MxN sono le dimensioni
dell’immagine originaria; a questo punto basta determinare un passo di
quantizzazione opportuno per ciascun parametro, ottenendo gli intervalli di
campionamento:
δρ =
M2 + N2
R
δθ =
2π
T
(3.37)
L’algoritmo complessivo prevede quindi la creazione di una matrice
dei parametri di dimensione P(R,T), dove ogni cella è un contatore del
numero di punti le cui trasformate ivi si intersecano, inizializzata a zero; sia
I(x,y) l’immagine binaria contenente i punti di edge:
•
Per ogni punto appartenente a un edge nell’immagine originale:
∀(i, j ) | I (i, j ) = 1; ∀h = 1Κ T ⇒ ρ = i cos(hδ θ ) + j sin(hδ θ ) ,
calcola l’indice k =
si
ρ
e si incrementa di 1 il valore della matrice
δρ
nella posizione corrispondente P (h, k ) = P (h, k ) + 1 ;
•
Si individuano i massimi locali al di sopra di una soglia
opportunamente scelta.
72
Capitolo 4
Progetto del sistema
A fronte della grande varietà di tecniche e algoritmi di visione
disponibili in letteratura, il progetto di un sistema completo non può
prescindere da un’attenta analisi dei vincoli legati all’ambiente, infatti una
soluzione ottima “universale”, paragonabile ai sistemi biologici, è ancora
molto al di là da venire.
Un grosso spartiacque in tal senso è rappresentato dalla necessità o
meno di ottenere informazioni in tempo reale (real-time), come è ad esempio
il caso per agenti autonomi in un ambiente sconosciuto e potenzialmente
ostile; viceversa, l’estrazione di informazioni da immagini al fine della
costituzione di basi di conoscenza ha comunque dei limiti temporali ma non
altrettanto stringenti; il risultato è che per sistemi in tempo reale sono
accettabili soltanto algoritmi aventi tempo di calcolo lineare, ma ciò è
condizione solo necessaria, non sufficiente, in quanto la potenza di calcolo
non è comunque scalabile a piacere, e anche l’occupazione di memoria può
essere vincolante.
4.1 Vincoli legati all’ambiente
L’oggetto di questa ricerca verte sulla realizzazione di un sistema in
tempo reale per l’acquisizione di informazioni visive da parte di un agente
autonomo operante in un ambiente dinamico competitivo, cioè
caratterizzato da variazioni dello stato nel tempo e dalla presenza di agenti
concorrenti; in particolare, lo studio è stato focalizzato sull’ambiente
RoboCup Legged, dove due squadre di robot autonomi tetrapodi si affrontano
in una partita di calcio.
73
Le caratteristiche dell’ambiente RoboCup sono:
•
Il dominio è dinamico, le posizioni dei robot e della palla variano nel
tempo, in particolare la palla può raggiungere velocità di
spostamento dell’ordine di alcuni metri al secondo;
•
L’ambiente è competitivo, due squadre concorrono per vincere la
partita;
•
Ciascun oggetto è univocamente contraddistinto da un colore
uniforme, generalmente brillante; la palla è arancione, il campo verde
con linee bianche, le porte sono di colore diverso, per facilitare
l’orientamento dei robot, le due squadre indossano divise di due
colori prestabiliti, possono essere presenti dei segnalatori (landmark)
di forma cilindrica e colore univoco, per agevolare l’autolocalizzazione dell’agente;
•
Si gioca in interni, con illuminazione artificiale standardizzata;
•
Si fa uso di hardware comune, di facile reperibilità;
•
I robot devono essere autonomi anche dal punto di vista energetico.
In aggiunta, la Sony Legged League presenta le seguenti peculiarità:
•
Tutte le elaborazioni devono essere svolte a bordo del robot;
•
L’hardware, uguale per tutte le squadre, è imposto dal regolamento
della lega, si tratta del robot Sony AIBO ERS-210;
•
Il robot è tetrapode, deambula su 4 zampe; la telecamera è montata
sulla testa, con 3 gradi di libertà di rotazione.
In forza di tali caratteristiche, è necessario progettare dei sistemi real-
time che riescano a processare via software un numero di immagini al
secondo sufficiente al tracciamento di oggetti veloci (la palla), quindi il
tempo medio di elaborazione deve essere dell’ordine dei millisecondi,
facendo uso di hardware non specializzato e che rispetti i vincoli energetici
74
imposti dal fatto di essere autoalimentati; d’altro canto, l’ambiente è
strutturato in modo da permettere di identificare univocamente un oggetto
in base al solo colore, e l’illuminazione è ragionevolmente standardizzata;
per tutte queste ragioni, la tecnica di estrazione di caratteristiche
universalmente utilizzata è la segmentazione mediante thresholding statico
nelle sue varie forme.
4.1.1 L’AIBO ERS-210 – Sistema di elaborazione
Il sistema elaborativo dell’AIBO ERS-210 è costituito da un
microprocessore embedded11 a 64 bit appartenente alla famiglia MIPS R4000
prodotto da Quantum Effect Devices [AIBOnet], un coprocessore dedicato in
grado di effettuare la segmentazione mediante thresholding statico di
immagini alla risoluzione di 88x77 pixel, 32Mbyte di memoria centrale,
un’interfaccia verso memorie non volatili in formato Sony Memory Stick da
16Mbyte
come
dispositivo
di
memorizzazione
permanente;
sono
attualmente disponibili due versioni, l’ERS-210 dotato di CPU a 200MHz, e
l’ERS-210A a frequenza di clock doppia (400MHz).
Le caratteristiche principali della famiglia di processori MIPS R4000
sono [Hei94]:
•
set di istruzioni RISC12 a 32 - 64 bit: tutte le istruzioni sono
lunghe 32 bit, svolgono compiti semplici ma in modo molto
efficiente, possono operare su operandi a 32 o 64 bit a seconda della
modalità di funzionamento del processore;
•
32 registri di uso generale a 64 bit: grazie all’abbondanza di
registri, è possibile srotolare i cicli (“loop unrolling”) e conservare
sottoespressioni per velocizzare l’esecuzione di formule complesse;
11
Con il termine “embedded” si indicano dispositivi a basso consumo energetico e ridotta emissione di
calore per l’uso in apparecchiature portatili altamente integrate.
12
Per i concetti relativi all’analisi di architetture di microprocessori, si vedano [HP95] e [HP96].
75
•
architettura scalare, superpipelined ad 8 stadi: va in issue13 una
sola istruzione per volta, tuttavia nella maggior parte dei casi le
istruzioni sono sovrapponibili nell’esecuzione, approssimando il
throughput di un’istruzione per clock di pipeline; la pipeline interna
funziona ad una frequenza doppia (“double pumped”) rispetto al master
clock14, per un picco di 400 milioni di istruzioni al secondo a
200MHz;
•
coprocessore floating-point integrato: la CPU contiene un’unità
di elaborazione per calcoli in virgola mobile conforme allo standard
ANSI/IEEE 754-1985, dotata di 32 registri propri a 64 bit,
pipelined, e capace di lavorare in parallelo rispetto all’unità centrale;
•
16 Kbyte di cache di primo livello integrata: suddivisa in 8Kbyte
cache istruzioni, 8Kbyte cache dati, ciascuna dotata di un proprio
bus a 64 bit ed accessibile due volte per ciclo di master clock;
controllore per eventuale cache di secondo livello integrato;
•
unità di gestione della memoria (MMU) integrata: supportati in
modo nativo modalità di indirizzamento virtuale e reale; in modalità
virtuale a 32 bit sono indirizzabili 2Gbyte per processo utente e
altrettanti per il server, che in modalità 64 bit arrivano ad 1 Terabyte.
Rispetto alle specifiche comuni al resto della famiglia, il processore
utilizzato sull’AIBO si segnala per l’assenza di cache di secondo livello e la
ridotta ampiezza del bus della memoria, limitato a 32 bit e operante a
100MHz, per un throughput di picco di 400Mbyte al secondo; ciò ha avuto
un decisivo impatto sulle scelte progettuali del software di visione, in quanto
principale fattore limitante in un’architettura di per sé altrimenti efficiente.
L’ambiente di esecuzione è corredato da OPEN-R, un sistema
operativo in tempo reale orientato agli oggetti proprietario della Sony: per
13
Stadio di elaborazione in cui un’istruzione entra nella pipeline.
14
Il master clock è il segnale generale su cui sono sincronizzate tutte le operazioni della CPU; ciò non
impedisce che specifici percorsi operino ad una frequenza sua multipla o sottomultipla.
76
tali caratteristiche, l’allocazione del tempo di CPU e la sincronizzazione fra i
processi sono interamente sotto il controllo del sistema operativo, lasciando
all’utente la sola possibilità di selezione delle priorità di esecuzione dei
propri oggetti.
4.1.2 L’AIBO ERS-210 – Telecamera
Il cuore del sistema di visione è ovviamente la telecamera, che
nell’AIBO è montata sulla testa del robot, capace di muoversi con 3 gradi di
libertà: sia XYZ una terna di riferimento cartesiana destra posta alla base del
collo del robot, con l’asse X diretto secondo la lunghezza del corpo, l’asse Y
secondo la larghezza e l’asse Z secondo l’altezza; la testa può ruotare attorno
all’asse Z (pan), all’asse Y (tilt) e all’asse X (roll).
Figura 4.1 Gradi di libertà di rotazione della
testa del robot.
I parametri fisici della telecamera sono:
77
•
dimensione del sensore: 1/6 di pollice
•
angolo di vista orizzontale: 57.6°
•
angolo di vista verticale: 47.8°
•
distanza focale: 2.18mm
•
velocità dell’otturatore selezionabile: bassa
alta
1
1
sec; media
sec,
50
100
1
sec.
200
Il dispositivo di conversione analogico-digitale è costituito da un
sensore CMOS da 100Kpixel a basso consumo; le immagini vengono
catturate ad una risoluzione massima di 176x144 pixel, convertite in
hardware nello spazio cromatico YUV, ad una frequenza costante di 25
fotogrammi al secondo.
Il principale problema di cui tenere conto in un sistema di visione
basato su questo dispositivo è che, oltre alla ridotta risoluzione e ad una
pronunciata rumorosità uniforme, questo manifesta una serie di difetti:
•
nelle regioni di forte contrasto di luminosità, il colore “spande”
(color bleeding)
•
solo il centro dell’immagine è messo a fuoco, i contorni appaiono
sfumati;
•
la sensibilità alla luce non è uniforme, le aree periferiche appaiono
scure;
78
Figura 4.2 Sensore CMOS: nelle due aree
evidenziate al centro e a destra dell’immagine,
appaiono colori puri inesistenti in realtà (il
rosa sul bordo della palla arancio, il blu sul
contorno del robot rosso); nell’angolo in basso
a sinistra si nota la non uniformità di messa a
fuoco e sensibilità alla luce fra centro e bordi
dell’immagine.
•
l’immagine acquisita è molto sensibile a variazioni anche modeste
dell’illuminazione della scena, per una ridotta sensibilità luminosa del
sensore, un gamma15 troppo elevato e l’assenza di un diaframma, per
cui le immagini tendono ad apparire sovraesposte o sottoesposte; gli
oggetti chiari saturano verso il bianco, quelli scuri verso il nero;
15
Il sistema visivo umano ha una percezione dell’intensità luminosa logaritmica, non lineare, pertanto le
videocamere, per emularlo, usano una scala di luminosità del tipo: g = f γ dove g rappresenta il
livello di grigio nell’immagine acquisita, f l’intensità luminosa reale, γ è un valore minore di 1, di solito
pari a 0.4 [Ard00].
79
Figura 4.3 Sensore CMOS: l’immagine appare
sottoesposta, al punto da non poter
distinguere il colore della livrea del robot nel
riquadro.
•
la sensibilità cromatica è molto limitata, infatti anche le regioni che
contraddistinguono i colori più saturi si trovano vicine fra loro e alla
zona del bianco, concentrate in un’area non maggiore di
dell’intero piano UV;
80
1
4
Figura 4.4 Sensore CMOS: rappresentazione
del piano cromatico UV, la stella bianca indica
la zona di colore neutro (grigio), i punti
colorati la presenza di pixel nell’immagine
aventi il colore corrispondente; come si può
notare, lo spettro delle immagini catturate da
questo sensore è tutto concentrato in una
porzione piccola del piano cromatico, indice di
scarsa sensibilità.
81
Figura 4.5 Sensore CMOS: nonostante
l’immagine sia sottoesposta, un oggetto lucido
può comunque saturare verso il bianco.
•
quando la testa o il corpo del robot non sono fermi, le immagini
appaiono affette da sfocatura di movimento (motion blur), in
particolare quando si usa una velocità dell’otturatore media o bassa;
Figura 4.6 Sensore CMOS, sfocatura di
movimento: nel riquadro sono presenti due
palle e un marcatore rosa-azzurro, i cui
contorni sono difficilmente rilevabili.
82
•
utilizzando
l’otturatore
alla
massima
velocità,
compaiono
nell’immagine bande orizzontali di luminosità e colore diverso,
dovute ad una frequenza di risposta del sensore più bassa della
frequenza di otturazione;
•
è presente una pronunciata distorsione radiale, per cui le linee
tendono ad incurvarsi in prossimità dei margini dell’immagine.
Figura 4.7 Sensore CMOS, a sinistra:
otturatore alla massima velocità, nella zona
evidenziata si notano bande orizzontali gialle e
azzurre sovrapposte all’immagine in una
regione altrimenti uniforme; a desta:
distorsione radiale, le linee diritte della
scacchiera tendono a curvarsi ai margini
dell’immagine.
4.2 Segmentazione
Avendo analizzato le caratteristiche dell’ambiente di esecuzione e della
telecamera, appare chiaro come sia necessario conciliare le esigenze
contrastanti di correzione dei difetti della telecamera e di efficienza
dell’algoritmo, bisogna infatti processare immagini ad una frequenza
superiore a 10 fotogrammi al secondo, avendo a disposizione una potenza di
calcolo limitata e da condividere con altri processi aventi tempi di risposta
critici (ad esempio il sistema di controllo della locomozione del robot).
83
Sinora l’aspetto prestazionale ha avuto il sopravvento, inducendo tutte
le squadre a usare una qualche variante di thresholding statico, sotto forma
di algoritmo software o facendo uso dell’hardware dedicato di cui è dotato il
robot, mentre la ricerca si è concentrata su metodi sofisticati di costruzione
delle mappe di classificazione che permettessero di minimizzare il numero di
errori di segmentazione (si vedano in proposito [VLVRSC02], [GT02], e
[CSVYHPS01]).
Lo svantaggio di tale approccio è che il processo di filtraggio
dell’informazione significativa rispetto al rumore viene fatto interamente
“off-line”, sotto forma di tabelle statiche precalcolate su un insieme di
esempi, perciò bastano spesso modeste variazioni delle condizioni di
illuminazione per far aumentare sensibilmente il numero di pixel classificati
in modo scorretto; là dove sia possibile utilizzare telecamere di buona
qualità e grazie anche al controllo sull’illuminazione nell’ambiente RoboCup,
ciò non costituisce un grosso problema, ma lo stesso non può dirsi nel caso
dell’AIBO ERS-210.
In questa sezione verrà innanzitutto descritta una tecnica di Region
Growing che, sebbene mostrasse promettenti risultati qualitativi, non ha
permesso di ottenere prestazioni sufficienti per un uso in tempo reale; verrà
poi prodotto il sistema definitivo di segmentazione attraverso un processo
graduale a partire da un modello di immagine idealizzata; in seguito, verrà
approfondito il problema del filtraggio e la tecnica di classificazione.
4.2.1 Region Growing
Volendo tentare di risolvere il problema alla radice, si può osservare
che tutti gli oggetti presenti nel dominio RoboCup godono di una proprietà
notevole, ovvero di essere colori saturi (ad eccezione ovviamente del
bianco), cioè di trovarsi, dal punto di vista cromatico, in prossimità dei
vertici della piramide che rappresenta lo spazio HSV, dove si trovano i
colori primari, che sono rosso, blu, verde, giallo, ciano e magenta.
84
Effettuando una conversione dallo spazio cromatico nativo YUV
all’HSV, si selezionano tutti i punti aventi valore della componente di
saturazione al di sopra di una soglia, opportunamente scelta in modo da non
rilevare oggetti estranei al dominio; in generale questi rappresentano solo
piccole porzioni degli oggetti presenti nella scena, ma possono essere
utilizzati come semi da cui far partire un processo di region growing.
Nella pratica, ci sono diversi problemi da risolvere, infatti il concetto
quantitativo di saturazione del colore in un’immagine non è così assoluto
come lo è il corrispondente concetto qualitativo dato dal senso comune,
infatti al variare della tonalità della luce (“temperatura di colore”) da uno spettro
caldo ad uno freddo, oggetti che prima apparivano saturi vengono desaturati
e viceversa, questo perché i materiali possono solo riflettere componenti
spettrali che devono essere presenti nella luce incidente; oltre a ciò,
all’aumentare dell’intensità luminosa tutti i colori tendono verso il bianco
(effetto di “solarizzazione”) perché si saturano le capacità del dispositivo di
cattura, che ha una gamma dinamica finita; viceversa, al decrescere
dell’intensità della luce, la stabilità della componente di saturazione decresce,
perché se ne riduce la gamma dinamica, per cui diviene difficile discriminare
i colori in modo affidabile.
85
Figura 4.8 Spazio HSV: al decrescere della
luminosità, la sezione della piramide diventa
più stretta, per cui la gamma dinamica della
componente di saturazione si riduce; per valori
di luminosità molto bassi, diventa impossibile
distinguere i colori in modo affidabile.
Diviene quindi necessaria una fase preliminare di equalizzazione
cromatica volta a neutralizzare la tonalità della luce, ciò può essere fatto
agevolmente solo nello spazio cromatico RGB, in quanto in esso il bianco è
ottenuto come somma delle tre componenti, per cui per ottenere la
neutralizzazione della componente luminosa, è sufficiente far sì che tutti e 3
gli istogrammi si estendano sull’intera gamma cromatica (aumento del
contrasto), e ciò può essere fatto automaticamente16.
A questo punto, a partire dai semi così individuati, si procede ad una
fase di region growing che, per ragioni di efficienza, è stato implementato in
maniera semplificata: definita una funzione di correlazione sull’intero spazio
RGB (quindi due colori vengono considerati “simili” solo se soddisfano tale
16
Si veda in proposito [Ard00]
86
condizione su tutte le componenti), si fa una doppia scansione
dell’immagine controllando per ogni punto il suo intorno 8-connesso, se ivi
è presente almeno un punto già classificato avente correlazione al di sopra di
una certa soglia, anche il nuovo punto viene incluso in tale regione; la
scansione viene fatta dall’alto in basso da sinistra a destra e viceversa; tale
crescita è ovviamente dipendente dall’ordine di scansione, tuttavia, per la
natura del dominio RoboCup, al confine fra un oggetto e l’altro c’è sempre
una variazione significativa di almeno una delle 3 componenti spettrali, per
cui non c’è il rischio che una regione travalichi nello spazio di un’altra a
causa dell’ordine di scansione.
Nonostante i promettenti risultati qualitativi e il costo asintotico
lineare, questo metodo, per via delle numerose fasi di scansione,
conversione di spazio cromatico e region growing, non ha permesso di
ottenere una frequenza di processamento accettabile sul processore
integrato sull’AIBO (circa 1 fotogramma al secondo a 200MHz); per tale
ragione, non è stato qui ritenuto opportuno offrirne un trattazione
approfondita che ne contemplasse i particolari implementativi.
4.2.2 Segmentazione dinamica
Alla luce della esperienza precedente, appare evidente che l’utilizzo di
trasformazioni di spazio cromatico per mettere in risalto certe proprietà ha
un costo troppo alto rispetto alle risorse di esecuzione disponibili in questo
dominio, così come la necessità di minimizzare il numero di scansioni
dell’intera immagine; d’altro canto, un approccio basato su classificazione
puramente statica richiede una sola scansione dell’immagine, ma è poco
robusto a variazioni parametriche; bisogna allora cercare di trovare un
compromesso fra i due estremi citati, sfruttando al meglio le caratteristiche
dello spazio nativo YUV.
Una caratteristica apprezzabile di questo spazio è sicuramente
l’ortogonalità fra la componente di luminanza (Y) e il piano di crominanza
87
(UV),
caratteristica
questa
che
teoricamente
dovrebbe
garantire
l’indipendenza del colore rispetto all’intensità della luce, e questo è indubbio
per immagini generate matematicamente al computer, ma nel caso esse siano
frutto di campionamento di una scena reale, ciò è vero solo in un intervallo
limitato di valori di luminosità; posto σ ( y ) funzione di
sensibilità
cromatica, dove y è l’intensità luminosa della scena reale, avente andamento
qualitativo:
Figura 4.9 Curva di sensibilità cromatica.
Ai due estremi, la curva tende a zero, per insufficiente energia della
luce nell’eccitazione del sensore (verso il nero), o per saturazione delle
capacità del dispositivo (verso il bianco); pertanto, il valore delle
componenti u, v rilevate nell’immagine è funzione delle componenti U, V
reali secondo:
u = σ ( y) ⋅ U
(4.1)
v = σ ( y) ⋅ V
Tale relazione fra colore e intensità luminosa è ad esempio ben
rappresentata nello spazio cromatico HSL, una variante dell’HSV a doppia
piramide:
88
Figura 4.10 Spazio HSL: al tendere della
luminosità ai due estremi, la saturazione dei
colori tende a 0.
In conseguenza di ciò, una segmentazione basata unicamente sulle due
componenti cromatiche non è sufficiente a discriminare correttamente gli
oggetti di interesse al variare delle condizioni di illuminazione, perché le
regioni associate a colori differenti tendono a sovrapporsi; da qui
l’opportunità di sfruttare un grado di libertà in più, la componente di
luminanza, per rappresentare le diverse condizioni su piani cromatici fra
loro paralleli.
Si osservi però una rappresentazione idealizzata di una scena ripresa
dall’ambiente in esame:
89
Figura 4.11 Immagine idealizzata di una scena
tipica dell’ambiente RoboCup: è presente la
palla (arancione), una porta (gialla), il campo
(verde), le linee del campo (bianco).
Come si vede, l’immagine è priva di rumore, i contorni sono netti e
l’illuminazione è perfettamente uniforme, gli oggetti riflettono la luce solo in
maniera diffusa (non c’è ombreggiatura) né sono presenti ombre, ogni
oggetto è rappresentato esattamente da un colore e questi sono
perfettamente distinguibili fra loro; se fosse possibile avere come input
un’immagine così, la segmentazione si ridurrebbe ad una semplice
corrispondenza fra i colori della scena e i modelli di oggetto e potrebbe
essere effettuata univocamente rispetto alle sole componenti U e V;
esaminandone gli istogrammi:
Figura 4.12 Istogrammi delle due componenti
cromatiche dell’immagine precedente.
90
Come si nota, entrambi gli istogrammi sono 4-modali, in
corrispondenza diretta con i 4 oggetti presenti (palla, campo, porta, linee),
con i modi ben separati l’uno dall’altro, e con la particolarità che ogni
regione dell’istogramma è costituita dal solo modo.
Una situazione un po’ più realistica è ottenibile ammettendo che i
materiali che compongono gli oggetti abbiano anche la proprietà di
riflessione speculare della luce:
Figura 4.13 Immagine idealizzata
riflessione diffusa e speculare della luce.
con
Il corrispondente istogramma è:
Figura 4.14 Istogrammi U e V dell’immagine
precedente.
91
Anche qui, l’istogramma è 4-modale, tuttavia non vale più la proprietà
che le regioni dell’istogramma siano costituite dal solo modo (ad eccezione
del modo al centro di entrambi gli istogrammi; esso è relativo alle linee
bianche, su cui non è stata aggiunta la componente speculare17), anche se
restano comunque ben separate.
Applicando un algoritmo di thresholding statico, verrebbero
classificati come appartenenti ai rispettivi colori gli intervalli dei due
istogrammi che delimitano le 4 regioni:
Figura 4.15 Vettore di classificazione della
componente U: all’interno di esso sono
presenti i codici (bitmap) relativi ai vari colori
classificati; per chiarezza e compattezza di
notazione, tali codici sono qui rappresentati
con il colore corrispondente.
Si noti che il vettore di classificazione in figura non è stato costruito
sulla base dell’istogramma, infatti nei metodi di classificazione statica
l’istogramma non viene nemmeno calcolato: la mappa viene costruita
17
D’altronde ciò non avrebbe modificato l’istogramma, i toni di grigio risultanti avrebbero avuto la
stessa componente di crominanza, nulla.
92
manualmente in fase di apprendimento selezionando nell’immagine tutti i
punti che devono appartenere ad una certa classe; poiché l’oggetto
classificato emette tutti i livelli contenuti nella corrispondente regione
dell’istogramma, ne consegue tale equivalenza.
A questo punto, si può fare un ulteriore passo in direzione del
realismo, aggiungendo 8% di rumore gaussiano e applicando un filtro di
sfocatura (gaussiana18) con σ = 0.3 :
Figura 4.16 Immagine idealizzata con rumore
gaussiano e sfocatura.
Il cui istogramma è:
Figura 4.17 Istogrammi U e V dell’immagine
con rumore gaussiano.
18
Il filtro di sfocatura gaussiana altro non è che il filtro di riduzione del rumore esposto nel Capitolo 3: il
motivo per cui è comunemente noto come filtro di sfocatura è perché attenua i contorni degli oggetti.
93
A questo punto, in conseguenza del rumore, e in minor misura anche
della sfocatura, la varianza delle regioni monomodali dell’istogramma è
aumentata, con il risultato che i confini fra le stesse si fanno meno netti, e si
manifesta una tendenza alla fusione, che rende più difficile la classificazione
corretta dei punti di confine.
Lo stadio finale del processo evolutivo sin qui tracciato è ovviamente
l’immagine reale che, rispetto alla precedente, aggiunge la presenza di
ombre, illuminazione non uniforme (eventualmente da sorgenti multiple
aventi caratteristiche emissive differenti19), ambiente circostante alla scena
che può avere colori simili ad uno o più degli oggetti che caratterizzano il
dominio, e tutte le non linearità e distorsioni introdotte dalla telecamera:
Figura 4.18 Immagine reale.
Il corrispondente istogramma è:
19
Un esempio realistico è quello di una stanza illuminata artificialmente con lampade al neon in cui filtra
da una finestra una percentuale di luce solare; le due sorgenti hanno differente temperatura di colore
(4300K il neon, 6500K la luce solare), differente orientazione e differente diffusione.
94
Figura 4.19 Istogramma relativo all’immagine
reale.
Anche in questo caso, l’istogramma V è sempre 4-modale, anche se
qui alcune distribuzioni sono molto ravvicinate, ma nell’istogramma U è
sparita la distribuzione relativa al bianco, assorbita all’interno di quella
adiacente, che pertanto è 3-modale.
Invertendo il cammino sin qui percorso, cioè partendo dall’immagine
reale e arrivando all’immagine “idealizzata”, è stato qui realizzato il sistema
di segmentazione dinamica.
Sistema di Segmentazione Dinamica:
1. Si processano le componenti U e V dell’immagine acquisita dalla
telecamera con un filtro di riduzione del rumore, riducendo la
varianza delle distribuzioni e rivelando modi che erano stati
cancellati dalla fusione di regioni limitrofe; il risultato è
paragonabile all’immagine 4.11;
2. Si costruiscono gli istogrammi delle componenti cromatiche U e
V, si applica l’algoritmo di thresholding dinamico convenzionale,
associando a ciascuna distribuzione il solo valore modale; il
risultato è un’immagine simile alla 4.9;
3. Si effettua una classificazione statica delle regioni individuate al
passo precedente, ottenendo l’immagine segmentata.
La necessità del passo 1 dell’algoritmo è data sia dalla forte presenza di
rumore nelle immagini acquisite dalla telecamera dell’AIBO (modellabile
95
come rumore gaussiano all’8-9%), sia allo scopo di stabilizzare il passo
successivo dell’algoritmo.
Infatti come tecnica di thresholding dinamico si è scelto di usare
l’approccio convenzionale, sia per il minor costo computazionale,
argomento come visto tutt’altro che trascurabile, sia perché la modalità degli
istogrammi dell’immagine non è nota a priori: si potrebbe pensare che
questa sia pari a 9, cioè 8 modi rappresentanti i colori caratteristici del
dominio, più uno per l’ambiente circostante, ma in realtà questo valore varia
da fotogramma a fotogramma, infatti è molto difficile che tutte e 8 le
tipologie di oggetti siano presenti contemporaneamente nel campo visivo
del robot, viceversa è facile che lo spettro relativo ad un singolo oggetto sia
composto da più modi, in funzione dell’illuminazione.
Tuttavia come visto nel capitolo 3, ci sono situazioni in cui l’algoritmo
convenzionale non discrimina correttamente fra due distribuzioni così vicine
da essere parzialmente fuse:
Figura 4.20 Situazione
nell’istogramma.
di
ambiguità
Nella situazione illustrata in figura, l’algoritmo di thresholding
dinamico convenzionale può oscillare fra le due possibilità, a seconda della
configurazione del rumore, fra un fotogramma e l’altro: in tal senso risulta
96
molto utile lo stadio preliminare di filtraggio, che permette di aumentare la
separazione fra le regioni stabilizzando il comportamento dell’algoritmo.
Il risultato ottenuto dallo stadio di thresholding dinamico è di poter
effettuare la successiva fase di classificazione soltanto sui valori modali
dell’istogramma, anziché su tutto lo spettro dell’immagine, in questo modo
si riesce a sopprimere informazione non significativa ai fini della
segmentazione, che non sarebbe eliminabile con filtri locali: in particolare,
risulta molto efficace nel ridurre la dispersione cromatica risultante dalla
riflessione speculare (shading).
L’algoritmo complessivo permette così di aumentare la capacità di
discriminazione in base al colore attraverso l’eliminazione di informazione
non significativa, dovuta alle condizioni di illuminazione, incrementando la
distanza spaziale fra le regioni di classificazione nel piano cromatico UV,
con il risultato di evitare sovrapposizioni.
4.2.3 Filtraggio
A questo punto, resta da determinare un filtro di riduzione del rumore
adatto a stabilizzare l’algoritmo precedente: a tal fine, sono stati valutati tutti
i filtri descritti nel capitolo 3, tenendo conto sia della capacità di riduzione
del rumore, sia del costo computazionale:
•
I filtri lineari hanno il pregio di avere il costo di esecuzione più
basso, tuttavia non sono adatti per elaborare immagini già a bassa
risoluzione, come nel caso dell’AIBO, perché l’effetto di sfocatura
che essi introducono riduce effettivamente la massima distanza a cui
sono rilevabili gli oggetti20; al di là di ciò, urge sottolineare come
questi non siano molto efficaci nel ridurre la varianza delle
distribuzioni presenti nell’istogramma, perché se da un lato
20
Ad esempio un oggetto di diametro reale pari a 8 cm come la palla, ad una distanza di 4m, con i
parametri caratteristici di questa telecamera (si veda in proposito la sezione seguente sull’estrazione di
oggetti) ha nell’immagine un diametro di appena 3.2 pixel.
97
attenuano le componenti dovute al rumore, dall’altro la sfocatura
genera colori intermedi fra una regione e l’altra;
•
Fra gli operatori non lineari, come è già stato rilevato, il miglior
comportamento
qualitativo
spetta
al
filtro
S.U.S.A.N.:
se
correttamente implementato, questo filtro è anche molto più
efficiente computazionalmente rispetto ai concorrenti della stessa
classe, perché la funzione di correlazione può essere precalcolata, e
le restanti operazioni non sono dissimili da quelle dei filtri lineari;
l’argomento verrà approfondito nel prossimo capitolo.
La scelta del filtro SUSAN appare perciò naturale, anche perché non
solo non cancella gli oggetti lontani, ma grazie alla riduzione del rumore e
all’aumento del contrasto fra regioni d’immagine differenti, risulta molto
efficace nell’aumentare la separazione fra le regioni monomodali degli
istogrammi:
Figura 4.21 Immagine reale filtrata con il
SUSAN: come si nota, nonostante la forte
attenuazione del rumore, la sottile linea bianca
che attraversa il campo non è stata cancellata,
anzi risulta molto nitida.
98
Figura 4.22 Istogramma dell’immagine filtrata
con il SUSAN.
Come si vede in figura 4.21, grazie al filtro SUSAN l’istogramma U è
adesso 5-modale, sono così emersi due modi che nell’immagine originale
erano stati cancellati dal rumore e che l’algoritmo di thresholding dinamico
non avrebbe potuto riconoscere; anche i modi dell’istogramma V hanno un
profilo più netto.
A questo punto bisogna individuare un’implementazione del filtro che
permetta di mantenere una frequenza di processamento delle immagini che
soddisfi le specifiche dettate dai vincoli di risorse e ambientali, questo
perché lo stadio di filtraggio è decisamente la fase più costosa dell’algoritmo
di segmentazione dinamica appena definito, infatti le operazioni sugli
istogrammi devono processare 2 ⋅ l elementi, dove l è il numero di livelli di
intensità in cui sono quantizzati gli spettri dell’immagine, in questo caso 256,
mentre il filtro di riduzione del rumore deve operare su n ⋅ h ⋅ w punti per
ogni componente spettrale, dove n è il numero di punti che appartengono
alla matrice di convoluzione, h è la risoluzione verticale dell’immagine e w è
la risoluzione orizzontale, quindi nel caso dell’AIBO si tratta di
n ⋅ 176 ⋅ 144 = 25344 ⋅ n ; a ciò si aggiunga che operatori come il SUSAN,
pur efficienti, non sono stati progettati per un uso real-time senza l’ausilio di
hardware specializzato.
99
Il primo filtro realizzato in tal senso è un’implementazione abbastanza
diretta dell’algoritmo SUSAN smoothing, con le seguenti particolarità21:
•
calcoli svolti in precisione intera anziché virgola mobile;
•
maschera circolare a pesi uniformi, come nel box-filter: la rinuncia al
profilo spaziale gaussiano comporta in generale una minore
riduzione del rumore in alta frequenza, come visto nel Capitolo 3,
tuttavia nel caso di maschera 3x3 l’attenuazione complessiva è
maggiore;
•
funzione di correlazione gaussiana precalcolata;
•
sono state considerate maschere di dimensione 3x3 e 5x5.
Figura 4.23 Maschere per SUSAN, 3x3 e 5x5:
il nucleo di entrambe non ha un peso, perché
nel SUSAN esso non partecipa direttamente
alla media.
La versione con maschera 5x5 è stata realizzata principalmente come
riferimento qualitativo, infatti eseguendo una convoluzione con essa, ogni
punto dell’immagine viene processato 20 volte, per cui non è decisamente
adatta a soddisfare i vincoli imposti, almeno per il processore a 200MHz.
21
Per i dettagli sull’implementazione di questo filtro e dei seguenti, le tecniche utilizzate e le prestazioni
ottenute, si rimanda al Capitolo 5.
100
Apportando le seguenti modifiche all’algoritmo precedente, si
possono realizzare delle ottimizzazioni (che saranno esposte nel Capitolo 5)
che hanno permesso di progettare un filtro molto più veloce, che pertanto
può essere battezzato “SUSAN Real-Time”:
•
funzione di correlazione rettangolare, anziché gaussiana;
•
maschera 3x3 di cui non si considerano i punti nelle posizioni
diagonali rispetto al nucleo.
Figura 4.24 Maschera per SUSAN Real Time.
Nonostante l’efficienza di questo filtro, paragonabile a quella di un
operatore lineare con la stessa maschera, e il fatto che comunque goda della
proprietà
di
preservare
le
strutture
dell’immagine,
l’efficacia
nell’attenuazione del rumore è ridotta rispetto ai precedenti, sia per la
rinuncia al profilo gaussiano della funzione di correlazione, sia per la ridotta
ampiezza spaziale della maschera; ad ogni modo utilizzandolo per filtrare i
piani U e V è possibile ottenere una frequenza media di elaborazione
dell’intero sistema di visione di 13 fotogrammi al secondo sul processore a
200MHz, pertanto la scelta ricade su di esso.
4.2.4 Classificazione
L’uscita dello stadio di segmentazione dinamica è un’immagine “a
colori ridotti”, cioè ad ogni intervallo degli istogrammi caratterizzato da un
101
modo compreso fra due minimi locali, viene sostituito il valore
corrispondente al modo in quanto rappresenta il massimo della probabilità
che esso sia il colore effettivo dell’oggetto ad esso associato; in pratica,
l’immagine così ottenuta ha istogrammi aventi valore nullo in tutti i livelli ad
eccezione dei modi, che corrispondono ai modi dell’immagine originale; si
vedano come esempio le figure 4.10 e 4.11.
In generale, ad un modo corrisponde una porzione di uno o più
oggetti, infatti come illustrato nel Capitolo 2, gli algoritmi di thresholding
dinamico sono di segmentazione parziale e le regioni così ottenute non
godono della proprietà di essere connesse, è pertanto necessario un ulteriore
stadio di elaborazione che sfrutti conoscenza di alto livello sul dominio in
questione per aggregare regioni che rappresentano porzioni di oggetti, e per
classificare tali aggregati secondo i modelli di oggetto dell’insieme
ammissibile, ciò può essere formalizzato come:
I = Υ Ri
i
R = {R1, R2 ,Κ , Rk }
M = {m1, m2 ,Κ , mn }
(4.2)
C:R→M
dove R è l’insieme delle regioni in cui è partizionata l’immagine
dall’algoritmo di thresholding dinamico (cioè regioni monocromatiche), M è
l’insieme dei modelli di oggetto caratteristici del dominio, C è la funzione di
classificazione che permette di passare da una rappresentazione all’altra.
Tale classificazione può essere effettuata dinamicamente, ad esempio
raccogliendo informazioni statistiche dagli istogrammi quali la popolazione
complessiva delle regioni e la varianza, sfruttando conoscenza a priori
sull’ambiente, e integrando i dati nel tempo sotto forma di rappresentazione
probabilistica; tuttavia, poiché il dominio RoboCup è strutturato in base al
colore in maniera interamente nota a priori, è molto più efficiente ricorrere
ad una classificazione statica mediante mappa dello spazio YUV come i
metodi descritti nel paragrafo 2.1.1.
102
In questa ricerca però l’obbiettivo primario è stato la discriminazione
degli oggetti in maniera robusta rispetto a variazione di illuminazione,
perciò nella quantizzazione dello spazio YUV è conveniente privilegiare le
componenti di crominanza U e V rispetto alla luminanza:
•
Componenti U e V non quantizzate, rappresentate come piano UV
per catturare eventuali dipendenze fra i due spettri, sotto forma di
matrice a 256x256 elementi, dove ciascun elemento è una maschera
di 8 bit, che rappresenta quali colori del codominio della funzione di
classificazione sono in corrispondenza ad una determinata coppia
(u , v) , per un’occupazione di memoria risultante di 64Kbyte;
•
Vettore Y a 256 livelli, indipendente dal piano UV, ciascun livello è
una maschera di 8 bit, con la stessa semantica del caso precedente.
La funzione del vettore Y è di stabilire un intervallo ammissibile dei
valori di intensità luminosa in cui ciascun oggetto riconosciuto può
presentarsi, allo scopo di filtrare più efficacemente il rumore ambientale,
infatti è già stato evidenziato come la sensibilità cromatica sia comunque
funzione dell’intensità luminosa, per cui al di fuori di una certa gamma
diventa molto difficile discriminare gli oggetti in base alle componenti di
crominanza; in aggiunta, questa informazione è necessaria per riconoscere
colori quali il bianco e il nero, che ovviamente ricadono nello stesso insieme
di valori di crominanza che caratterizzano la scala dei grigi.
In conseguenza dell’indipendenza fra il vettore Y e il piano UV, con
questa rappresentazione è quindi possibile esprimere unicamente regioni
dello spazio YUV che abbiano la forma di cilindri generalizzati, tuttavia è
stato così possibile ottenere una rappresentazione compatta ed efficiente,
infatti l’occupazione di memoria complessiva supera appena i 64Kbyte.
103
Figura 4.25 Una regione dello spazio YUV
ammissibile
per
la
rappresentazione
implementata.
L’algoritmo di classificazione è quindi il seguente:
•
Per ogni punto dell’immagine, si leggono le 3 componenti YUV;
•
Per ciascuna delle componenti U e V, si accede all’istogramma
rispettivo, si individua la regione a cui appartiene il valore in ingresso
e si ritorna al suo posto il modo corrispondente; i valori modali delle
due componenti di crominanza così ottenuti vengono usati come
indici nell’accesso alla matrice di classificazione UV, che ritorna una
bitmapUV;
•
La componente Y viene usata direttamente per indicizzare il vettore
di classificazione Y, che ritorna una bitmapY;
•
Il risultato della classificazione è l’AND logico bit a bit delle due
bitmap: bitmapUV & bitmapY.
La componente Y non viene filtrata né vi si applica il thresholding
dinamico, in quanto il riconoscimento poggia principalmente sulle
componenti di crominanza; per individuare il bianco e il nero, è sufficiente
considerare, nella classe dei valori riconosciuti come grigi, tutti i valori della
104
Y al di sopra o al di sotto di una certa soglia; chiaramente, è difficile ottenere
un algoritmo robusto a variazioni di intensità luminosa per questi colori,
perché essi sono intrinsecamente definiti in base alla luminanza.
Figura 4.26 Schema complessivo.
105
4.3 Edge detection
Come rilevato nel paragrafo precedente, il bianco e il nero sono i
colori che risultano più sensibili a variazioni di illuminazione, tuttavia il nero
non fa parte dei colori che devono essere riconosciuti da un sistema di
visione nel dominio RoboCup SONY Legged League, perché nessun oggetto di
tale ambiente è individuabile in base a questo colore; il bianco viceversa è
rappresentato unicamente dalle linee sul campo di gioco, il quale ha colore
verde scuro; poiché il contrasto fra il valore di luminosità delle linee e quello
del campo è forte sotto ogni condizione di illuminazione, ad esclusione
ovviamente di situazioni limite, è possibile catturare questa informazione in
maniera molto robusta mediante tecniche di edge detection.
Infatti, mentre la soglia sul valore di luminanza per determinare il
bianco deve essere ricalibrata al variare dell’intensità luminosa della scena, il
gradiente della luminanza fra regioni ne risulta solo amplificato
positivamente o negativamente, ma i massimi restano localizzati sempre
nelle stesse posizioni:
I
Tbianco
= f ( I ) ⋅ Tbianco
∇ I ( p1, p 2 ) = f ( I ) ⋅ i ( p1 ) − f ( I ) ⋅ i ( p 2 ) = f ( I ) ⋅ ∇( p1, p 2 )
(4.3)
Nella (4.3), I è l’intensità luminosa incidente sulla scena, non nota, f(I)
è una funzione che lega la componente di luminanza dell’immagine con I,
I
monotona, crescente, ma anch’essa non nota, Tbianco
è la soglia al di sopra
della quale i colori possono essere classificati come bianco, dipendente da I,
∇ I ( p1 , p 2 ) il gradiente fra due punti dell’immagine in funzione di I (i(p) è la
luminanza del punto p): per poter riconoscere correttamente il bianco in
maniera indipendente dalla luce presente nella scena, bisognerebbe poter
misurare I e conoscere f(I), e sotto tali ipotesi, irrealizzabili nella pratica, si
potrebbe allora fissare in modo statico Tbianco; nel caso del gradiente invece,
calcolati direttamente sull’immagine i massimi locali di ∇ I , la (4.3) esprime
106
l’invarianza di essi da f(I), ovviamente al di fuori dei casi estremi in cui
f ( I ) → 0 e f (I ) → ∞ (che nel caso discreto, si traduce nella saturazione
dell’immagine verso il massimo valore rappresentabile).
Bisogna altresì sottolineare come una qualche forma di rilevamento di
bordi sarebbe comunque necessaria per permettere agli stadi successivi di
riconoscimento delle linee di operare correttamente, infatti le aree bianche
che verrebbero estratte in ragione di un processo di segmentazione
avrebbero uno spessore di numerosi pixel, cosa che contrasta con
l’assunzione fatta implicitamente nelle tecniche di codifica dei bordi che lo
spessore di questi sia unitario; in tal caso, si può risolvere il problema
effettuando una correlazione con una matrice rappresentante un modello
(pattern) della configurazione dei punti bianchi e verdi in corrispondenza ad
una certa tipologia di bordo nell’immagine22, ad esempio:
Figura 4.27 A sinistra, pattern per
riconoscimento dei bordi di immagini
segmentate; a destra, in evidenza due esempi
in cui il valore di correlazione dei pattern con
l’immagine è alto.
22
Si vedano in proposito [Gri01] e [Mas99].
107
In generale, la correlazione di un modello su immagini segmentate è
potenzialmente più efficiente dell’applicazione di un vero operatore
convoluzionale di edge detection, perché sono richieste operazioni di AND
bit a bit anziché moltiplicazioni, tuttavia, nel caso di telecamera con 3 gradi
di libertà di rotazione, serve la correlazione con almeno 8 pattern diversi per
rilevare tutti i bordi, di fatto annullando o ribaltando il vantaggio
computazionale; probabilmente ancora più significativo è il fatto che la
rilevazione
dei
bordi
così
ottenuta
è
interamente
dipendente
dall’informazione contenuta nella segmentazione, mentre con le tecniche di
edge detection si sfrutta informazione che altrimenti andrebbe persa e che
risulta molto più stabile, come visto, alle variazioni di illuminazione.
Nel Capitolo 3 è stato messo in evidenza come il SUSAN Edge
Detector superi nettamente i metodi basati su operatori differenziali sia per
rapporto segnale-rumore, sia per precisione nella localizzazione dei bordi e
per continuità spaziale degli stessi; altro aspetto rilevante è che è stato qui
possibile determinarne un’implementazione ad un costo di esecuzione
prossimo a quello di operatori differenziali di edge-enhancement come
Sobel.
Operatore SUSAN Edge Detector “Lite”:
•
Funzione di correlazione precalcolata;
•
Maschera di convoluzione 3x3;
•
Non viene determinata la direzione della normale all’edge;
•
Non viene eseguita la fase di non-maxima suppression;
•
Per limitare lo spessore dei bordi ad 1 pixel, il threshold geometrico
viene fissato pari a
Questo
filtro
1
n max .
2
nasce
dall’osservazione
che
le
operazioni
computazionalmente più costose del SUSAN Edge Detector “classico”
108
sono il calcolo dei momenti per la determinazione della direzione normale
all’edge e la fase di soppressione dei non-massimi; senza la seconda e senza
una tecnica di codifica dei bordi che ne faccia uso, la prima di tali operazioni
è del tutto superflua e pertanto può essere eliminata senza conseguenze;
diverso è il caso della seconda, in quanto la fase di edge enhancement
3
dell’algoritmo base fissa un valore del threshold geometrico ( n max ) che
4
permette una risposta positiva su entrambi i fronti di un edge a seconda
della curvatura di questo, per far sì che i “non-massimi” così ottenuti
vengano rimossi solo dalla fase successiva tenendo conto della direzione
dell’edge, mantenendo quindi la connettività dei contorni in zone critiche
quali le giunzioni e i profili a curvatura elevata.
Benchè tale caratteristica sia desiderabile in molti contesti, in un’ottica
di riconoscimento di linee, che sono edge diritti per definizione, è
sacrificabile in funzione dell’efficienza computazionale, a condizione di
utilizzare una tecnica di riconoscimento di forme che non necessiti di tale
proprietà; per limitare allora il numero di non-massimi rilevati
dall’algoritmo, è stato opportuno ridefinire il threshold geometrico in
funzione del profilo di un edge diritto, che su uno dei fronti e in
corrispondenza degli angoli ha sempre USAN di area inferiore a metà della
maschera (figura 3.19 (b) e (c)), da cui il valore g =
1
nmax .
2
4.4 Estrazione di oggetti nell’immagine
La segmentazione e l'individuazione degli edge sono solo il primo
passo nel processo di acquisizione di dati dalle immagini, infatti la
rappresentazione così ottenuta è solo la proiezione prospettica sul piano
immagine di una scena in realtà tridimensionale: nel corso di tale operazione
si perde l'informazione relativa ad una dimensione, e tale conoscenza non
può essere recuperata a meno di disporre di due diversi punti di vista della
109
scena (stereovisione) attraverso la geometria epipolare ([RN98],[MT96]);
tuttavia, avendo conoscenza a priori sulle caratteristiche degli oggetti che
compongono im mondo, dovendo determinarne solo la presenza, posizione
e orientazione, è possibile risolvere il problema anche avendo a disposizione
una sola telecamera, integrando tale informazione con la conoscenza
pregressa del dominio.
4.4.1 Formazione dei blob
Gli oggetti presenti nell'immagine segmentata sono rappresentati da
regioni omogenee di pixel aventi lo stesso colore: il processo di costruzione
di tali regioni connesse, che prendondo il nome di blob, è un operazione
tipicamente costosa che può avere un serio impatto sulle prestazioni, ed in
ambito RoboCup è stato spesso affrontato, con risultati non pienamente
soddisfacenti, con algoritmi di riempimento di poligoni mutuati dal mondo
della grafica 2D23.
In [Bru00] è stata proposta una tecnica che ha riscosso notevole
successo per la sua efficienza, e che pertanto è oggi alla base di numerosi
sistemi di visione in tempo reale.
Il processo si articola in due fasi:
•
Compressione RLE dell'immagine segmentata: per ogni linea di
scansione che compone l'immagine si raggruppano i pixel adiacenti
aventi lo stesso colore, che formano così una run: tale struttura
contiene il colore comune, il punto di inizio e il punto di fine; poiché
l'immagine segmentata ha solo 8 “colori” (sarebbe più giusto dire
classi di pixel) e gli oggetti che la compongono tendono a formare
ampie aree omogenee, tipicamente è possibile rimpiazzare decine di
pixel con una sola run, ottenendo un rapporto di compressione
spesso superiore al 90%;
23
Si vedano in particolare [CSVYHPS01] e [GT02].
110
•
Fusione delle run mediante algoritmo di union find: la codifica
RLE effettua una fusione dei pixel adiacenti secondo la connettività
orizzontale; aggregando insiemi di run secondo la connettività
verticale si ottengono i blob; ad ogni run è associato un puntatore ad
un nodo padre, il membro più in alto a sinistra della regione, che
all'atto della creazione viene inizializzato alla run stessa (foresta di
run disgiunte); effettuando la scansione riga per riga dell'immagine
RLE, se si trovano due run dello stesso colore che si
sovrappongono orizzontalmente e sono connesse verticalmente,
vengono fuse, ponendo come padre di quella inferiore la superiore; si
effettua quindi un'ultima scansione per comprimere i cammini, in cui
si risale dalle foglie (le run che non sono padre di nessuno) verso il
nodo radice (il nodo a cui si arriva, per ogni blob, risalendo il
cammino dettato dai puntatori padre a partire dalle foglie),
etichettando ogni run direttamente con il padre globale della regione,
che costituisce così un blob.
Figura 4.28 Union find con compressione dei
cammini.
111
Di ogni blob, durante il processo di formazione appena esposto, viene
determinato il rettangolo ad esso circoscritto (“bounding box”)
individuando il massimo e il minimo delle coordinate x e y, da cui se ne
 x + x min y max + y min 
,
calcola il baricentro  max
 ; viene infine annotata l'area
2
2


effettiva (in pixel) e il colore del blob.
Figura 4.29 Blob e bounding box ad esso
associata.
4.5 Ricostruzione della scena
4.5.1 Modello di telecamera
Per poter ricostruire correttamente l’informazione geometrica
contenuta nelle immagini, è necessario fornire un modello spaziale della
telecamera in modo da poter applicare le leggi della geometria proiettiva ai
punti così rilevati che, altrimenti, sarebbero adimensionali.
Il modello più semplice, è quello di telecamera a lente puntiforme (pinhole) [Bak99], in cui si modella la lente della telecamera come un punto,
avente quindi diametro infinitesimo, così da poter assumere che tutti i raggi
prospettici che congiungono i punti del mondo reale con la loro proiezione
sul piano immagine P passino per un unico punto, coincidente con la lente,
che prende il nome di centro della proiezione (indicato con O), posto a distanza
112
f dal piano immagine detta distanza focale; tale assunzione è spesso una
buona approssimazione della realtà, in quanto le dimensioni effettive delle
lenti utilizzate nei sistemi di visione sono molto piccole se confrontate con
le distanze fra gli oggetti in gioco.
Figura 4.30 Modello di telecamera puntiforme.
In molti casi tuttavia, il centro ottico non coincide con l’origine del
sistema di coordinate presente nell’immagine, ma ha in esso posizione (u0,v0),
gli assi x e y possono avere diversi fattori di scala sx ed sy , e non essere
perfettamente ortogonali fra loro ( sθ ); un’estensione del modello
precedente che prende in considerazione questi parametri aggiuntivi è detta
Trasformazone Diretta Lineare (DLT).
Tale modello può essere così espresso formalmente [MT96], [Bak99]:
113
p = [x m
q = [w xi
ym
wy i
 sx

K =0
0

sθ
sy
0
Λ

Μ
M =
Λ

0

1

q = K ⋅0
0

Λ
z m 1] coordinate reali ( sistema mondo)
w] coordinate immagine
u0 

v0 
1 
Λ Μ

R Μ T
Λ Λ Μ

0 0 1 
0 0 0

1 0 0 ⋅ M ⋅ p
0 1 0 
(4.4)
In esso, M è la matrice dei parametri cosiddetti estrinseci che
rappresenta il cambio di base dal sistema di riferimento del mondo (scena) al
sistema solidale con la telecamera, ed è composta dalla sotto-matrice di
rotazione R, le cui colonne sono 3 vettori ortonormali che rappresentano la
base del sistema ruotato della telecamera rispetto al sistema di riferimento
del mondo, e dal vettore T che rappresenta la traslazione fra le due origini; K
è la matrice dei parametri aggiuntivi di questo modello rispetto al pin-hole,
che vengono detti intrinseci; il vettore λ ⋅ q al variare di λ rappresenta il
raggio prospettico che congiunge il punto reale con la proiezione sul piano
immagine, passante per il centro ottico; per ottenere il punto di tale raggio
che giace sul piano immagine occorre imporre λ ⋅ w = f (condizione sulla
coordinata z nel sistema della telecamera).
Per completare il modello, bisogna però tenere conto che le lenti reali
introducono una distorsione non lineare significativa nella proiezione
prospettica; un metodo largamente usato in ambito di visione artificiale
modella in modo esplicito la distorsione in radiale e tangenziale[MT96]:
114
x = x − u0
y = y − v0
r = x2 + y2
(4.5)
x ′ = x + k1 x r 2 + k 2 x r 4 + k 3 x r 6 + P1 (2 x 2 + r 2 ) + 2 P2 x y
y ′ = y + k1 yr 2 + k 2 yr 4 + k 3 yr 6 + P1 (2 y 2 + r 2 ) + 2 P2 x y
dove x ′, y ′ sono le coordinate corrette dalla distorsione, ki sono i
coefficienti di distorsione radiale, Pi i coefficienti di distorsione tangenziale;
ad ogni modo, il primo coefficiente radiale, k1, di solito rappresenta oltre il
90% dell’intera distorsione.
Per utilizzare il modello così definito, occore quindi determinare i
parametri intrinseci ed estrinseci e i coefficienti di distorsione:
•
I parametri intrinseci e i coefficienti di distorsione possono essere
calcolati una volta per tutte, per una data telecamera, a partire da un
insieme di immagini di esempio utilizzando programmi appositi,
quali [Calib];
•
Anche i parametri estrinseci possono essere determinati nello stesso
modo, a condizione che la posizione e l’orientamento del sistema di
riferimento della telecamera siano fissi rispetto al sistema assoluto;
non è così nel caso dell’AIBO, perché la telecamera ha 3 gradi di
libertà di rotazione e l’altezza della testa del robot non è costante
durante la camminata, in conseguenza della deambulazione su
gambe; perciò, è necessario ricalcolare tali parametri dinamicamente,
in funzione delle rilevazioni dei sensori di giunto relativi alle gambe
e al collo del robot, rilevazioni necessariamente affette da sensibile
rumore.
I valori dei parametri intrinseci che sono stati così ricavati per questo
sistema, relativi all’immagine 176x144 sono:
115
f c = 161.1 (in pixel )
(u 0 , v0 ) = (81.65,72.32)
sx = s y = 1
sθ = 0 (assi perfettamente ortogonali )
k1 = 0.11553
Avere a disposizione il valore della distanza focale in pixel fc permette
di convertire immediatamente le distanze nell’immagine (in pixel) in distanze
nel mondo reale (in cm).
In questo progetto, per ragioni di efficienza, si è scelto di modellare la
non-linearità introdotta dalla lente unicamente in base al primo coefficiente
di distorsione radiale (k1); per lo stesso motivo, la funzione di correzione
della distorsione viene applicata alla bounding box dei blob, anziché
all’intera immagine.
Figura 4.31 Distorsione radiale: a sinistra,
immagine originale, a destra, immagine
corretta con modello di distorsione limitato al
coefficiente k1.
4.5.2 Riconoscimento di oggetti nella scena
Avendo a disposizione un modello corretto di telecamera, basta
integrare la conoscenza a priori sul dominio con le informazioni sui blob
estratte dall’immagine segmentata per individuare gli oggetti reali presenti
nella scena e la loro posizione rispetto all’osservatore.
116
Gli oggetti che fanno parte del dominio in esame sono:
•
La palla, di colore arancione e forma perfettamente sferica, di
diametro pari a 8 cm, giace sempre sul piano di gioco;
•
Le porte, una di colore giallo, l’altra di colore azzurro, hanno altezza
pari a 30 cm, larghezza 60 cm e profondità pari a 26cm; la forma è
parallepipedale, giacciono sul piano di gioco;
•
I landmark, composti da due cilindri sovrapposti, entrambi alti 10
cm, di raggio pari a 5 cm, una delle due metà è sempre rosa, l’altra
può essere verde, gialla o azzurra a seconda della posizione sul
campo; si trovano ad un’altezza rispetto al piano di gioco di 20 cm.
Il primo problema che si pone è quello di risolvere situazioni di
ambiguità in cui non è possibile identificare correttamente un oggetto in
base al solo colore del blob, ad esempio un’area azzurra nell’immagine
potrebbe essere una porta, ma potrebbe anche essere la parte inferiore di un
landmark di cui non si vede la metà rosa perché questa è al di fuori del
campo visivo del robot; bisogna anche tenere conto del fatto che la
tendenza del sensore di acquisizione di questa telecamera a spandere i colori
fra regioni aventi luminosità diversa porta alla comparsa nell’immagine finale
di falsi oggetti che non sono eliminabili in fase di segmentazione attraverso
il filtraggio, ad esempio la zona di intersezione fra le due metà di un marker
giallo-rosa appare spesso nell’immagine di un colore arancione brillante e
pertanto può essere confusa con la palla.
117
Figura 4.32 La parte rosa del marker è fuori
dal campo visivo del robot, pertanto il blob
giallo può essere interpretato anche come
porta.
In molti casi come quelli appena descritti, si può disambiguare la
situazione in modo soddisfacente sfruttando l’informazione nota a priori
sull’altezza relativa della telecamera del robot e quelle delle varie tipologie di
oggetti, infatti al variare dell’angolo di tilt, l’altezza della telecamera
appartiene all’intervallo [12 - 17] cm, per cui gli oggetti si possono dividere
rispetto ad essa in 3 classi:
•
Oggetti interamente al di sotto della telecamera: palla, campo, linee
del campo;
•
Oggetti interamente al di sopra della telecamera: landmark;
•
Oggetti la cui altezza si estende al di sopra e al di sotto della
telecamera: porte.
118
Per effettuare questa partizione sul piano immagine, occorre definire
un sistema di riferimento solidale col il corpo del robot, posto alla sua base,
avente asse Zr rivolto secondo l’altezza del robot, asse Xr secondo la
lunghezza, asse Yr secondo la larghezza; il sistema di riferimento solidale
con la telecamera ha invece asse Zc uscente dal piano immagine, assi Xc e Yc
diretti come gli assi dell’immagine ma con verso opposto:
Figura 4.33 Sistemi di riferimento del robot.
Preso p R = [ x
y
z ] un generico punto espresso nel sistema di
coordinate solidale col robot, effettuato il cambio di coordinate verso il
riferimento della telecamera e la proiezione prospettica, facendo poi tendere
separatamente le sue coordinate x, y, (relative al sistema robot) all’infinito:
119
t x   x   r11 x + r12 y + r13 z + t x 

   
r22 r23 t y   y   r21 x + r22 y + r23 z + t y 
⇒
=
⋅
r32 r33 t z   z   r31 x + r32 y + r33 z + t z 

   

0
0 1   1  
1

r x + r12 y + r13 z + t x 


 f ⋅ 11
r
x
r
y
r
z
t
+
+
+
C


z
31
32
33
 px  f
 C  p C  r21 x + r22 y + r23 z + t y 
z
⇒  p y  →
⇒
f⋅
r31 x + r32 y + r33 z + t z 
 C

 pz 
f






 r11 
f⋅ 
 r31 
 r 
⇒ lim p C =  f ⋅ 21  = x Cf
x →∞
 r31 
 f 




 r12 
f⋅ 
 r32 
 r 
⇒ lim p C =  f ⋅ 22  = y Cf
y →∞
 r32 
 f 




 r11

r
C
p =  21
r
 31
0

r12
r13
(4.6)
Al tendere di x, y all’infinito p C tende a x Cf e y Cf che sono detti punti
di fuga, cioè il luogo geometrico dei punti in cui convergono nella proiezione
prospettica tutte le direzioni parallele agli assi Xr , Yr
nel sistema di
riferimento del robot.
La linea che congiunge i due punti di fuga è l’orizzonte, ed è
l’intersezione del piano immagine con un piano parallelo al piano XYr nel
sistema di riferimento del robot posto ad un’altezza pari all’altezza della
telecamera.
120
Figura 4.34 Orizzonte come intersezione fra il
piano immagine P e il piano H parallelo al
suolo ad altezza pari a quella della lente della
telecamera C.
Rispetto all’orizzonte, le 3 classi di oggetti precedentemente definite
sono individuabili come “interamente al disotto” (palla, campo, linee del
campo), “interamente al disopra” (landmark) e “a cavallo” (porte).
Per stabilire la posizione di un punto p dell’immagine rispetto alla linea
ρ
dell’orizzonte h , occorre calcolare il versore ortonormale all’orizzonte ẑ C ,
il vettore congiungente p con un punto qualsiasi sulla linea dell’orizzonte, ad
esempio uno dei due punti di fuga, e proiettare tale vettore su ẑ C mediante
prodotto scalare:
zˆ C = 1;
ρ
zˆ C ⋅ h = 0;
(4.7)
altezza h ( p ) = x cf p ⋅ zˆ C
121
Figura 4.35 Calcolo dell’altezza di un punto
sull’orizzonte.
Applicando il calcolo dell’altezza rispetto all’orizzonte sui 4 punti
nord, sud, est e ovest che ne delimitano la bounding-box, si può stabilire se un
oggetto è interamente al disopra o al disotto o a cavallo dell’orizzonte.
La palla viene quindi individuata secondo i seguenti criteri:
•
il colore del blob deve essere arancione;
•
deve essere interamente al disotto dell’orizzonte, questo perché la
sua altezza rispetto al piano di gioco è di 8cm, quindi sempre minore
dell’altezza da terra della telecamera, il cui minimo è di 12cm; il
margine di differenza fra le due altezze è sufficiente a garantire
stabilità della decisione nel tempo anche a fronte dell’errore nel
calcolo della proiezione dell’orizzonte dovuta alla rumorosità dei
sensori di giunto;
•
l’area del blob espressa in pixel deve superare una soglia prefissata,
determinata dalla massima distanza ammissibile a cui è possibile
trovare la palla, che è funzione delle dimensioni del campo; questo
122
serve ad eliminare blob frutto di colori spurii in conseguenza dei
difetti del sensore CMOS ed errori di segmentazione;
•
il rapporto fra le dimensioni minima e massima della bounding-box
deve essere superiore ad una soglia compresa fra 0 e 1, infatti la
proiezione prospettica di una sfera è un cerchio perfetto, che ha tale
rapporto pari a 1, ma in conseguenza della sfocatura di movimento
la forma della palla tende ad essere dilatata secondo una direzione;
•
la densità del blob, ovvero il rapporto fra l’area effettiva della
regione colorata e l’area del rettangolo circoscritto deve essere
prossima a quella di un cerchio perfetto inscritto in un quadrato
avente lato pari al suo diametro, cioè:
•
πr 2
π
→ ;
2
4
4r
se più oggetti soddisfano le condizioni precedenti, si sceglie come
palla il blob più grande.
La posizione della palla viene calcolata come segue: sia ( x pI , y Ip ) la
posizione del baricentro della palla in coordinate immagine, si trasforma nel
sistema di coordinate della telecamera λ[ x Cp
y Cp
f ] (che ha origine alle
coordinate (u 0I , v0I ) ), al variare di λ il punto si muove lungo il raggio
prospettico; si passa infine al sistema di riferimento solidale con il corpo del
 x Rp 
 
robot  y Rp  = M
 zR 
 p
 λx Cp 


⋅  λy Cp  e si determina λ imponendo che la coordinata z Rp
 λf 


della proiezione del baricentro coincida con il valore noto a priori, che per la
palla è pari a 4 cm; in questo modo si ottengono i corrispondenti ( x Rp , y Rp ) ,
da cui la distanza dalla palla
 y Rp
( x Rp ) 2 + ( y Rp ) 2 e l’angolo arctan R
x
 p

;


questo metodo dà buoni risultati nel calcolo dell’angolo, con un errore
medio di circa 1°, mentre per la distanza dà risultati soddisfacenti solo da
123
vicino; in effetti il problema è nel cambio di coordinate telecamera -> robot,
che risente dell’errore di misura dei sensori di giunto nel calcolo dell’altezza
della telecamera da terra; la distanza può però essere ricavata con un’altra
tecnica in maniera più affidabile, che non fa uso di cambi di coordinate:
Figura 4.36 Calcolo della distanza dalla palla: C
è il centro ottico, P il piano immagine, d la
distanza del punto sul piano immagine, hi il
diametro della palla nell’immagine, hr il
diametro nel mondo reale, D la distanza della
telecamera dalla palla.
Osservando la figura 4.36, si nota come i triangoli Cab e Ca’b’ siano
simili, quindi
hanno tutti i lati in proporzione, così come sono in
proporzione d e D; per determinare D basta quindi calcolare
d=
2
f 2 + OB dove f è la distanza focale, OB è la distanza del baricentro
della palla B dal centro dell’immagine O, misurare hi diametro della palla
nell’immagine (essendo hr noto a priori), per ricavare D =
d ⋅ hr
.
hi
Utilizzando questa formula, è anche possibile calcolare la soglia sulla
dimensione minima ammissibile del blob, infatti il campo ha dimensione
124
440x290 cm, per cui la massima distanza fra un robot e la palla può essere
circa 530cm, da cui: hi =
d ⋅ hr 161 ⋅ 8
≅
= 2.44 pixel è il diametro minimo
D
530
ammissibile a cui corrisponde un’area di circa 6 pixel, tenendo conto della
sfocatura dei contorni e degli errori di segmentazione si può porre tale soglia
a 4 pixel.
Nel caso dei landmark, i criteri di discriminazione sono:
•
un marker è composto di due blob, di cui uno deve avere colore
rosa, mentre l’altro può essere giallo, verde o azzurro;
•
entrambi i blob devono essere interamente al disopra dell’orizzonte,
occorre individuare quale dei due è più in alto rispetto all’orizzonte
per classificare il landmark (es. rosa su verde o verde su rosa);
•
il rapporto fra l’area del blob che appare più piccolo (perché occluso
o parzialmente fuori dal campo visivo o influenzato dal rumore) e
quella del più grande, compresa fra 0 e 1, deve essere superiore ad
una certa soglia (idealmente, tale rapporto dovrebbe essere pari ad
uno);
•
la distanza massima fra i baricentri dei due blob deve essere
prossima alla lunghezza dell’asse più lungo del blob, infatti entrambe
sono pari a 10cm nell’oggetto reale;
•
l’area di almeno uno dei due blob deve essere superiore ad una certa
soglia, per ragioni analoghe al caso della palla;
•
se vengono individuati più landmark aventi la stessa combinazione
di colori e che soddisfano le condizioni precedenti, si considera solo
il più grande;
•
nel campo visivo del robot possono essere presenti al più due
landmark (differenti).
125
Il calcolo di distanza e angolo dal landmark si effettua con le stesse
formule utilizzate per la palla, con la differenza che, in questo caso, nella
prima si sostituisce al baricentro della palla il punto di mezzo sulla
congiungente i baricentri dei due blob, e si usa la distanza fra i detti
baricentri in luogo del diametro della palla nella seconda formula.
Il riconoscimento delle porte non comporta sostanziali variazioni
rispetto a quanto detto per palla e landmark, se non che in questo caso il
blob giallo o azzurro deve estendersi a cavallo dell’orizzonte, e l’unico modo
per calcolarne la distanza è in base all’altezza del baricentro, infatti si tratta
di oggetti che sono facilmente soggetti ad occlusioni per la presenza di robot
avversari e per le grandi dimensioni; più rilevante è il fatto che il diametro
per la palla e la distanza fra i baricentri dei marker sono grandezze invarianti
rispetto alla rotazione del piano immagine attorno all’asse ottico, mentre un
discorso analogo non può essere fatto per la larghezza o altezza della porta,
che non sono direttamente misurabili: ciò che si ha invece sono la larghezza
e l’altezza della bounding-box, che dipendono dalla rotazione.
Figura 4.37 Effetti della rotazione del piano
immagine rispetto al mondo: il raggio della
palla e la distanza fra i baricentri dei marker
restano invariati, la larghezza e l’altezza della
bounding-box della porta no.
126
4.5.3 Riconoscimento di linee
Anche nel caso dei punti appartenenti alle linee del campo rilevati
mediante edge-detection, è utile effettuare una selezione rispetto
all’orizzonte o a piani posti ad un’altezza inferiore, per eliminare punti che
hanno comunque un valore elevato del gradiente ma che non appartengono
alle linee del campo, bensì a contorni di altri oggetti, ad esempio landmark, o
all’ambiente circostante.
Figura 4.38 Sull’immagine è stata sovrapposta
la edge detection (in bianco) e la linea
dell’orizzonte (in viola), si noti come al di
sopra di essa si trovino bordi non appartenenti
alle linee del campo.
La tecnica di riconoscimento di forme scelta è la trasformata di
Hough per le rette, perché si presta bene a complementare i limiti di un
algoritmo di edge detection in versione semplificata che, per ragioni di
efficienza, non garantisce la connettività dei contorni, oltre ad essere robusta
rispetto al rumore e alle occlusioni.
Ai punti così selezionati è possibile correggere la distorsione radiale e
applicare il cambio di coordinate verso il sistema solidale col corpo del
robot ed ivi effettuare la trasformata di Hough: questo approccio ha il
127
vantaggio di fornire direttamente distanza ed angolo dalle linee così
riconosciute e di poter dimensionare la quantizzazione della matrice dei
parametri ρ,θ in funzione della risoluzione spaziale reale che si vuole
ottenere (ad esempio, quantizzando in maniera logaritmica ρ per tenere
conto della perdita di precisione nella misura all’aumentare della distanza);
d’altro canto, l’errore nel calcolo della matrice di cambio di coordinate che
affligge i robot che si muovono attraverso gambe può generare problemi nel
corretto riconoscimento delle linee; un’alternativa può essere la ricerca di
linee direttamente nel piano immagine, effettuando il cambio di coordinate
solo sulle rette così ottenute o su caratteristiche particolari quali le
intersezioni fra linee; i pregi e i difetti di questo approccio sono i duali del
precedente, oltre al fatto di essere praticamente inattuabile, per ragioni di
costo computazionale, nel caso di primitive di ordine superiore: la ricerca di
un cerchio di raggio noto nel piano del campo, a 2 parametri (costo O(n 2 ) )
si traduce nel piano immagine nella ricerca di un’ellisse prospettica ad 8
parametri (costo O(n 8 ) ).
128
Capitolo 5
Implementazione
Il progetto del sistema esposto nel capitolo precedente è stato
influenzato direttamente dalla necessità di ottenere un risultato consistente
in presenza di vincoli stringenti, sia dal punto di vista delle risorse di
elaborazione a disposizione, sia del tempo di risposta richiesto, pertanto
l’aspetto implementativo ha avuto un ruolo non trascurabile nella scelta delle
varie soluzioni, facendo pendere l’ago della bilancia a favore di tecniche che
permettessero un’esecuzione efficiente.
Dopo aver illustrato con uno schema il sistema progettato, verrà
approfondita l’implementazione dei blocchi funzionali più importanti ai fini
del progetto e signficativi dal punto di vista delle prestazioni: verrà prima
progettato
un
nuovo
algoritmo
di
thresholding
dinamico
computazionalmente più efficiente rispetto alla tecnica descritta in
letteratura; successivamente, alla luce dei risultati dell’analisi delle
caratteristiche del microprocessore di cui è dotato il sistema in esame,
verrano sviluppati due nuovi algoritmi basati sui principi dell’USAN, uno
dedicato alla riduzione del rumore, l’altro alla edge detection.
129
Figura 5.1 Schema funzionale del sistema di
visione: le parti tratteggiate non sono state
implementate in questo progetto, e per esse si
rimanda a lavori specifici sul tema della
localizzazione.
130
5.1 Thresholding dinamico
Il thresholding dinamico convenzionale, così come descritto in
letteratura (Capitolo 2), offre prestazioni sicuramente superiori al
thresholding ottimo, oltre al fatto di essere più adatto al dominio in esame
perché non fa assunzioni sulla modalità dell’istogramma, tuttavia la natura di
questo algoritmo comporta, nel caso migliore, la scansione dell’intero
istogramma ( 1 + log 2 m ) volte, se questo è m-modale, perché le chiamate
ricorsive si espandono ad albero binario: se l’albero è completo (caso
migliore), ogni nodo ha due figli, la profondità massima raggiunta è appunto
log 2 m e il costo temporale di visita, se n è il numero di livelli
dell’istogramma, è O(n ⋅ log 2 m) ; nel caso peggiore, un ramo ha profondità
m e il costo è O(n ⋅ m) .
Figura 5.2 Espansione dell’albero per m=4.
131
Figura 5.3 Numero minimo di scansioni
dell’istogramma (caso migliore) necessarie per
il thresholding dinamico convenzionale.
Tuttavia, cercare i massimi e i minimi assoluti di una regione e
suddividere rispetto ai minimi, iterando il procedimento, non è l’unico
modo per partizionare l’istogramma in regioni monomodali: si può infatti
immediatamente osservare come, effettuando una scansione da sinistra a
destra dell’istogramma, le regioni siano caratterizzate da una zona in cui la
funzione di probabilità è monotona crescente, che culmina in un massimo, e
sfocia in una zona in cui è monotona decrescente, che termina quando la
funzione inizia nuovamente a crescere; la prima zona è perciò caratterizzata
dal segno positivo della derivata prima, che si annulla in corrispondenza del
massimo e diviene negativa nella zona finale.
Nel caso discreto, la derivata dell’istogramma I nel punto i si ottiene
come semplice differenza ∆ i = I (i ) − I (i − 1) , e i punti di interesse per
delimitare una regione monomodale possono essere individuati in base al
segno di ∆ i e ∆ i −1 :
•
Inizio di una regione: ∆ i > 0; ∆ i −1 = 0 , se I (i − 1) = 0 la regione
che inizia è isolata e i ne rappresenta l’inizio, altrimenti è presente
132
un’altopiano24 che la congiunge ad una regione precedente; in tale
ipotesi, si sposta indietro l’inizio della regione nel punto di mezzo
dell’altopiano;
Figura 5.4 Inizio di una regione.
•
Fine di una regione: ∆ i = 0; ∆ i −1 < 0 , se I (i − 1) = 0 la regione
che finisce è isolata e i-1 ne rappresenta la fine, altrimenti è presente
un altopiano che la congiunge ad una regione seguente; in tale
ipotesi, la determinazione del punto di fine di questa regione viene
rimandata al momento in cui si raggiungerà la fine dell’altopiano;
24
Un altopiano è un intervallo dell’istogramma in cui il valore I(i) è costante e diverso da 0.
133
Figura 5.5 Fine di una regione.
•
Punto angoloso: ∆ i > 0; ∆ i −1 < 0 in i termina una regione e ne
inizia un’altra, il punto i viene assegnato all’inizio della nuova
regione.
134
Figura 5.6 Punto angoloso fra due regioni
adiacenti.
Il modo di ciascuna regione viene determinato incrementalmente a
partire dal punto di inizio, confrontando ogni nuovo valore letto con il
massimo relativo alla regione sin lì individuato, fino al raggiungimento del
punto di fine.
L’uscita di questo stadio è un vettore (per ciascuna componenente
cromatica), avente tanti elementi quanti quelli dell’istogramma (256 in questa
implementazione), che associa a ciascun livello di intensità presente
nell’istogramma il corrispondente valore modale, così costruito: ogni volta
che viene raggiunto il punto di fine di una regione nel processo di analisi
dell’istogramma, si scrive sull’intervallo del vettore di uscita, delimitato
dall’inizio e dalla fine della regione, il valore modale ricavato; tale vettore,
indicato nello schema generale come istogramma monomodale serve in fase di
classificazione per effettuare il mapping fra i colori dei punti dell’immagine e
i modi corrispondenti, semplicemente utilizzando il valore U o V del pixel
in esame come indice nell’accesso ad esso.
L’algoritmo qui progettato effettua la scansione di ogni istogramma
una volta sola, indipendentemente dalla modalità dell’input, per cui il costo
asintotico è O(n) , dove n è il numero di livelli dell’istogramma: tale risultato
135
è molto più favorevole rispetto all’ O(n ⋅ log 2 m) che caratterizza il caso
migliore dell’algoritmo descritto in letteratura.
5.2 SUSAN
Nonostante l’importanza del processo di segmentazione dinamica, gli
stadi del sistema di gran lunga più costosi in termini di tempo di
elaborazione sono il filtraggio per la riduzione del rumore e la edgedetection, in quanto operano su un insieme di dati superiore di due ordini di
grandezza per cardinalità rispetto agli istogrammi: l’immagine è infatti
composta da tre piani Y,U,V di 176x144 punti ciascuno, mentre gli
istogrammi sono rappresentati da 256 livelli; effettuare la convoluzione di
ogni pixel con un intorno di dimensione m significa moltiplicare
ulteriormente per tale fattore il costo di esecuzione.
Da ciò segue la necessità di svolgere ciascuna operazione coinvolta nel
processo di filtraggio nel modo più efficiente possibile, e ciò non può
prescindere da un’analisi delle peculiarità del processore di elezione su cui
sarà eseguito l’algoritmo (la variante MIPS installata sul robot AIBO), pur
tenendo in considerazione caratteristiche più generali comuni a processori di
largo utilizzo.
5.2.1 Analisi delle caratteristiche del processore
La famiglia di processori MIPS R4000, descritta in [Hei94], presenta
un’architettura decisamente efficiente, con un ampio spazio di registri a
disposizione (32 di uso generale e 32 in virgola mobile), architettura
superpipelined in cui la maggior parte delle istruzioni sono sovrapponibili
nell’esecuzione, coprocessore matematico integrato.
Una caratteristica notevole è il nucleo di esecuzione operante ad una
frequenza doppia rispetto al clock principale (“double-pumped”), per cui il
throughput di picco teorico è di 2 operazioni per clock; questa forma di
136
parallelismo a livello di flusso di istruzioni è più efficiente rispetto alle
architetture cosiddette superscalari ([HP95], [HP96]), in cui il processore è in
grado di eseguire due o più istruzioni in parallelo per ciclo di clock sotto
opportune condizioni, perché, a fronte di un’identico throughput di picco,
è minore la frequenza degli stalli della pipeline o di una risorsa di esecuzione
dovuta alla dipendenza fra i dati.
Un altro aspetto di rilievo è la presenza di un’unità di calcolo in
virgola mobile implementata come un coprocessore indipendente, dotato
del proprio insieme di registri, accessibili anche al processore principale per
le operazioni di lettura e scrittura, e capace di operare in parallelo rispetto
all’unità centrale.
Figura 5.7 Istruzioni floating-point, con tempo
di latenza25 associato e periodo di
interdizione26.
25
La latenza (di esecuzione) è il numero di cicli richiesti per il completamento di un’istruzione dal
momento in cui entra nello stadio di esecuzione.
137
Le operazioni che rappresentano il percorso più critico dal punto di
vista dell’esecuzione sono l’addizione (ADD), la moltiplicazione (MUL), e le
operazioni di conversione da numeri interi (pixel) a floating-point
(CVT.S.W, CVT.W.S); da tenere in considerazione anche la divisione (DIV)
e il test condizionale (COND); le corrispondenti operazioni intere sono:
Figura 5.8 Istruzioni intere su operandi a 32
bit. Un periodo di interdizione pari a 0
significa che l’istruzione non può essere
sovrapposta con nessun’altra operazione di
CPU. Le corrispondenti operazioni a 64 bit
hanno latenza e periodo di interdizione circa
doppi.
Le operazioni aritmetiche di CPU che non sono in tabella, quali
addizione e shift, hanno latenza e periodo di interdizione unitari, pertanto
sono molto efficienti; da notare che moltiplicazione e divisione sono invece
più lente delle corrispondenti operazioni floating-point, in particolare la
divisione, che paralizza la pipeline per 75 cicli.
Altre istruzioni importanti sono i salti condizionali (branch) che sono
implementati con la tecnica del delay-slot: l’istruzione seguente un branch
viene sempre eseguita mentre viene letto l’indirizzo di destinazione; sono
richiesti complessivamente 3 cicli di clock nel caso in cui il salto venga
effettuato, per il calcolo dell’indirizzo di destinazione; altrimenti non si
incorre in alcuna penalità; esso è l’unico costo associato a questa operazione,
in quanto in flusso delle istruzioni avviene rigidamente in ordine
sequenziale, a differenza di processori più moderni che fanno uso di
26
Il periodo di interdizione è il numero cicli che devono trascorrere prima che si possa mandare in
esecuzione una nuova istruzione dello stesso tipo o che usa le stesse risorse di esecuzione (ad
esempio, addizione e sottrazione).
138
predizione di salto ed esecuzione speculativa27, che nel caso di predizione
errata comporta la perdita di decine di cicli di clock per lo svuotamento
della pipeline.
Il principale fattore limitante le prestazioni di questa efficiente
architettura è l’assenza, nella variante embedded in uso sull’AIBO, di una
cache di secondo livello, in quanto la cache di primo livello, di 8Kbyte dati
più 8Kbyte istruzioni, non è sufficiente a lavorare efficientemente su insiemi
di dati ampi.
5.2.2 Ottimizzazione degli accessi in memoria
La parte più critica dal punto di vista delle prestazioni degli algoritmi
SUSAN smoothing ed edge detection è sicuramente la funzione di correlazione,
infatti nel processamento di un’immagine di N pixel con una matrice di
convoluzione di M pixel, essa viene invocata NxM-1 volte; oltretutto, è una
funzione non lineare, che implica l’esecuzione di operazioni costose quali
elevamento a potenza e divisione, per cui può richiedere complessivamente
centinaia di cicli di clock per ogni esecuzione.
c ( p, p 0 ) = e
 ( I ( p ) − I ( p0 ) 
−

T


k
; k ∈ {2;6}
(5.1)
Osservando la funzione di correlazione, si nota però una caratteristica
importante: il dominio della funzione è dato da tutti i valori che la differenza
I ( p ) − I ( p 0 ) può assumere, e poiché gli spettri Y,U,V dell’immagine sono
quantizzati in 256 livelli ciascuno, I ( p ) − I ( p 0 ) ∈ [−255;255] ; poiché tale
differenza nella formula è elevata ad una potenza pari (2 o 6), di tale
intervallo ha senso considerare solo i valori positivi, quindi [0;255].
27
L’esecuzione speculativa è l’esecuzione di istruzioni secondo il ramo più probabile di un branch, è
detta “speculativa” in quanto tali istruzioni vanno in esecuzione prima di avere risolto la direzione del
branch.
139
Essendo la funzione definita su un intervallo abbastanza contenuto di
valori, può essere calcolata off-line e memorizzata in un vettore di 256
elementi (look-up table); durante l’esecuzione del filtro SUSAN, basta così
utilizzare il valore assoluto della differenza I ( p) − I ( p 0 ) come indice del
vettore per ottenere il valore della correlazione fra p e p0.
Su un processore dotato di un quantitativo ragionevole di cache, come
le moderne CPU per personal computer, non ci sarebbe bisogno di
particolari accortezze in questo procedimento, ma nel caso di un processore
dotato di un cache dati complessiva di appena 8Kbyte, è necessario
effettuare delle ottimizzazioni al fine di dimensionare la look-up table in
modo da avere un’alta probabilità che essa sia interamente contenuta nella
cache ogni volta che sia necessario accedervi, e che possa venire ricaricata,
in caso non sia presente, con un numero minore possibile di accessi in
memoria principale, che ha tempi di latenza superiori di due ordini di
grandezza.
Un primo aspetto su cui occorre porre l’attenzione è la quantizzazione
dell’immagine della funzione, essa infatti nel caso continuo appartiene
all’intervallo [0;1], ma ciò su computer potrebbe essere realizzato solo
attraverso una rappresentazione in virgola mobile, che richiede 4 byte per
elemento in precisione singola, 8 byte in precisione doppia, che si traducono
in 1 e 2Kbyte rispettivamente di occupazione di memoria complessiva,
troppi rispetto alla dimensione della cache; lavorando invece con numeri
interi, si può rappresentare la funzione attraverso singoli byte, effettuando
una quantizzazione dell’immagine della funzione a 256 valori (il massimo
ammesso dal tipo byte); l’occupazione di memoria complessiva in questo
caso è di 256byte.
Da osservazioni sperimentali su immagini e relativi istogrammi, questa
perdita di risoluzione della funzione di correlazione non sembra avere alcun
effetto negativo apprezzabile sulla qualità dell’algoritmo.
140
L’unico problema con l’uso di interi per la rappresentazione della
look-up table è l’assenza di una istruzione specifica del processore per il
calcolo del valore assoluto, cosa che in virgola mobile può essere fatta con
l’istruzione ABS, poco costosa su questo processore; tuttavia, l’esecuzione
dei calcoli necessari alla convoluzione in virgola mobile, per quanto
efficienti, sono significativamente più costosi rispetto ai calcoli interi, in
particolare l’operazione di addizione che è 4 volte più lenta, oltre alla
necessità di ricorrere ad istruzioni di conversione di formato interi->virgola
mobile perché i punti dell’immagine sono memorizzati sotto forma di interi;
si può allora raddoppiare la dimensione della look-up table per tenere conto
anche di valori negativi di I ( p) − I ( p 0 ) : poiché un array non può avere
indice negativo, è necessario traslare l’origine della funzione di correlazione
nell’elemento di mezzo dell’array di dimensioni doppie.
In questo modo, la dimensione dell’array in cui è memorizzata la
funzione di correlazione sale a 511byte (non 512, perché l’origine del
dominio non viene duplicata); per ridurre tale valore, si può cercare una
quantizzazione anche del dominio della funzione, individuando un
compromesso
ottimale
fra
prestazioni
e
qualità
della
risposta:
sperimentalmente, si è ricavato che effettuando una quantizzazione 4:1
l’immagine risulta indistinguibile rispetto alla versione non quantizzata, e le
prestazioni sfiorano il massimo; con una quantizzazione 8:1 si raggiunge il
frame rate massimo, ma il modesto incremento prestazionale di circa il 5%
non giustifica la perdita di qualità, pur lieve; rapporti di quantizzazione
superiori non producono alcun ulteriore aumento di velocità e introducono
distorsioni dell’immagine via via più accentuate; in ultima analisi, si è quindi
individuato come ottimo il rapporto 4:1, che si traduce in una dimensione
complessiva della tabella di 127byte.
141
Figura 5.9 SUSAN: look-up table per funzione
di correlazione quantizzata 4:1.
Nonostante l’accesso alla tabella quantizzata richieda un’operazione di
divisione per 4 del valore di ingresso, e la divisione sia di per se
un’operazione molto lenta, lavorando su interi la divisione per numeri che
siano potenze di 2 può essere ottenuta come shift a destra di un numero di
posizioni pari all’esponente di 2, in questo caso 4=22; l’operazione di shift è
eseguita in un solo ciclo di clock dalla maggior parte dei processori, e in
questo il MIPS R4000 non fa eccezione.
Figura 5.10 Operazione di shift a destra.
142
Confrontando questa implementazione con l’alternativa offerta
dall’implementazione della funzione valore assoluto (ABS) ottenuta tramite
test per determinare fra I(p) e I(p0) quale sia il maggiore, con look-up table di
64 elementi, il risultato è stato favorevole alla prima, per cui questa è la
soluzione che è stata scelta per la realizzazione dell’algoritmo complessivo.
Un altro aspetto critico nel determinare la velocità d’esecuzione dei
filtri è il percorso di accesso alla matrice che rappresenta l’immagine stessa:
considerando un maschera di convoluzione 3x3, è evidente come, per
filtrare ogni pixel, sia necessario accedere anche ad 8 altri pixel che ne
costituiscono l’intorno, per cui si può ben capire l’importanza di
minimizzare il numero di volte che uno stesso pixel viene letto dalla
memoria principale, potendo ritrovare i punti del suo intorno già letti
all’interno della cache.
L’immagine fornita dal dispositivo di acquisizione del robot è
memorizzata come un array monodimensionale dove tutti i punti
appartenenti ad una lina orizzontale sono memorizzati consecutivamente,
una componente spettrale dopo l’altra, per cui per saltare da una riga alla
successiva, occorre sommare all’indice dell’array corrente tre volte il numero
di punti che costituiscono una linea.
Figura 5.11 Rappresentazione dell’immagine in
memoria.
143
Per far sì che l’immagine venga letta dalla memoria una volta sola
durante la convoluzione, è necessario poter ritrovare in cache tutti i punti
dell’intorno ad eccezione del punto più avanti nell’ordine di scansione, che
per una matrice 3x3 è il punto più in basso a destra: ogni volta che la
maschera viene spostata di una posizione verso destra o verso il basso, esso
conterrà un valore nuovo, mentre tutti gli altri punti della maschera sono già
stati letti in un passo precedente.
Figura
5.12
Filtraggio
del
punto
contrassegnato dalla croce: nella scansione per
riga, i punti rappresentati in grigio sono già
stati letti dalla memoria almeno una volta,
l’unico punto nuovo appartenente al suo
intorno è stato evidenziato in nero; i punti in
grigio scuro rappresentano il numero minimo
di punti che devono essere sempre presenti in
cache per garantire che l’immagine venga letta
una sola volta dalla memoria.
Perché quindi ogni punto venga letto dalla memoria una e una sola
volta, è necessario che durante la convoluzione siano sempre presenti in
cache le ultime due righe o colonne (a seconda dell’ordine di scansione
orizzontale o verticale) su cui è già passato l’algoritmo: poichè le righe sono
lunghe 176 pixel e le colonne 144, si potrebbe pensare che una scansione
dell’immagine per colonna sia più efficiente nello sfruttamento della cache,
perché sarebbe sufficiente trovare 2x144 elementi anziché 2x176.
Tale ragionamento è in realtà errato, perché non tiene conto di una
caratteristica importante degli accessi in memoria comune ormai a tutti i
144
processori: per minimizzare l’effetto della latenza della memoria principale
sfruttandone maggiormente la banda passante, per il principio di località
degli accessi, ogni volta che si cerca di leggere (o scrivere) un dato che non è
presente in cache, non viene letto il dato isolato, ma viene trasferito un
blocco di memoria che lo contiene, di dimensione prefissata, che prende il
nome di cache line; nel caso del MIPS R4000 la dimensione minima28 di una
cache line è di 16 byte, e per come sone organizzati i dati in memoria (per
riga), una scansione per colonna comporterebbe la necessità di conservare
2x16x144=4.6Kbyte pari a oltre la metà della cache dati; nel caso di una
scansione per riga si ha un valore oltre 10 volte inferiore, pari a
2x176=352byte, pertanto è sicuramente la scelta più efficiente.
In realtà anche nel caso della scansione per riga, a meno che i dati in
memoria non siano allineati modulo 16, al termine della scansione di una
riga vengono letti dei valori che appartengono alla riga successiva di un’altra
componente dell’imagine, per via dell’ordine di memorizzazione già
illustrato; ci si può chiedere se sia allora più conveniente processare insieme
le varie componenti spettrali oppure effettuare 3 scansioni separate
dell’immagine: la scelta più efficiente è la seconda, infatti nel caso peggiore
verrebbero letti 15 byte in più per ogni riga (ciò come detto dipende
dall’allineamento in memoria dell’array), per un totale di 2x191=382byte,
mentre per effettuare il filtraggio in parallelo delle 3 componenti
dell’immagine, la quantità di dati da mantenere in cache sarebbe di
3x2x176=1056byte.
Considerando quindi la memoria necessaria per la look-up table e per
la scansione dell’immagine, questo algoritmo può funzionare alla massima
velocità utilizzando al più 382+127=509byte, pari a circa 1/16 della
dimensione della cache complessiva; se la visione fosse l’unico processo,
questa condizione sarebbe quindi sempre verificata, tuttavia ciò non è
possibile a causa dei cambi di contesto effettuati dalla CPU in conseguenza
28
A seconda della modalità di funzionamento del processore (32 o 64 bit), la cache line può essere di 16
o 32 byte.
145
dell’esecuzione concorrente di altri processi necessari al funzionamento del
robot.
5.2.3 Ottimizzazione delle istruzioni
Il modo più semplice per accedere all’immagine è attraverso un
insieme di funzioni messe a disposizione dal sistema operativo del robot, in
particolare, esiste una funzione che permette di leggere direttamente il
valore di una componente di un pixel attraverso la sua posizione (x,y)
all’interno dell’immagine; il problema di tale approccio è che non è
efficiente, sia perché le chiamate a funzione di per sé hanno un costo
dovuto al salvataggio e al ripristino di registri sullo stack e alla necessità di
effettuare un doppio salto di indirizzo, sia perché per permettere l’accesso
casuale
all’array,
tale
funzione
deve
necessariamente
contenere
un’operazione di moltiplicazione del valore y per la larghezza dell’immagine:
la moltiplicazione è un operazione abbastanza costosa, come visto, e
utilizzando tale funzione verrebbe effettuata NxM volte solo per leggere i
pixel dell’immagine e il loro intorno; discorso analogo, a parte l’evitare la
chiamata a funzione, se si accedesse al vettore immagine come ad un array
bidimensionale attraverso l’aritmetica dei puntatori.
Sfruttando la sequenzialità degli accessi è però possibile evitare
moltiplicazioni semplicemente mantenendo un contatore che rappresenta la
posizione corrente all’interno dell’array, incrementato di 1 ogni volta che si
passa al pixel adiacente fino al termine della riga, in cui occorre sommare un
valore pari a 2 volte la lunghezza della riga, per saltare lo spazio di memoria
occupato dalle righe relative agli altri spettri; nell’effettuare la convoluzione,
per ottenere i punti che hanno coordinata y superiore o inferiore rispetto al
nucleo basta sommare o sottrarre dall’indice una quantità pari a 3 volte la
larghezza di una riga.
L’algoritmo del filtro sin qui progettato è quindi:
SUSAN Smoothing:
146
Figura 5.13 Algoritmo SUSAN Smoothing.
Con questo algoritmo di filtraggio, grazie all’insieme di ottimizzazioni
sin qui introdotte, l’intero sistema di visione, in concorrenza con altri
processi, riesce a processare circa 7-8 fotogrammi al secondo a 200MHz
(con la maschera 3x3): tale risultato di per sé può già essere considerato
adatto ad una elaborazione in tempo reale, anche se, per effettuare al meglio
il tracciamento di oggetti veloci come la palla, sarebbe desiderabile superare i
10 fotogrammi al secondo.
Tale soglia può essere raggiunta con questo algoritmo utilizzando una
maschera di convoluzione che consideri solo i 4 vicini del nucleo nelle
posizioni nord, sud, est e ovest; come si vede, a fronte di una riduzione del
50% del numero di punti di intorno considerati, l’incremento di prestazioni
è solo del 25%; in tal senso è molto probabile che il collo di bottiglia sia da
attribuirsi all’operazione di divisione necessaria a normalizzare il risultato,
dovuta al fatto che la funzione di correlazione assume valori compresi
nell’intervallo [0;255] anziché [0;1]; oltre a ciò, nel calcolo della media dei
147
valori all’interno dell’USAN, viene effettuata una moltiplicazione per ogni
punto appartenente alla maschera, e tali operazioni rappresentano
sicuramente un fattore importante nel costo complessivo.
Come detto nel Capitolo 4, utilizzando una funzione di correlazione
binaria anziché gaussiana, è possibile apportare delle modifiche importanti
all’algoritmo che permettono di migliorarne in modo significativo le
prestazioni:
•
Lo scopo delle moltiplicazioni nell’algoritmo base è di pesare i punti
nella media in funzione del loro valore di correlazione; in questo
caso però la funzione è binaria, perciò basterebbe un’operatore
condizionale per verificare se un punto appartiene o no all’USAN
per includerlo o meno nella media; sfortunatamente tale operazione
richiederebbe un test e un branch, pertanto non sarebbe molto più
efficiente di una moltiplicazione; sfruttando però il fatto che la
rappresentazione binaria di -1 è 11111111, e la rappresentazione di 0
è ovviamente 00000000, si può far sì che la funzione di correlazione
ritorni -1 o 0 e così utilizzare il valore ritornato come maschera di
bit per fare un operazione di AND (che ha costo d’esecuzione di 1
clock) con il valore di luminosità del pixel al posto della
moltiplicazione;
•
Il valore di correlazione così definito può anche essere usato per
determinare l’area dell’USAN (cambiata di segno), a tale scopo basta
infatti sommare i valori da essa ritornati per ogni punto d’intorno;
poiché con questo tipo di maschera tali punti sono solo 4, si
possono individuare 5 diverse situazioni:
•
Area dell’USAN pari a -4: per ottenere il valore medio
dell’USAN, bisogna dividere per 4, operazione ottenibile a
costo unitario tramite shift a destra di 2 posizioni;
•
Area dell’USAN pari a -3: bisognerebbe dividere per 3, ma
poiché il nucleo è comunque correlato con il resto
148
dell’USAN, basta sommare il valore del nucleo ed effettuare
di nuovo lo shift a destra di 2 posizioni;
•
Area dell’USAN pari a -2: la divisione è per 2, come shift a
destra di una posizione;
•
Area dell’USAN pari a -1: si somma il nucleo e si effettua lo
shift a destra di una posizione;
•
Area dell’USAN pari a 0: il punto è isolato, perciò bisogna
trovare il mediano, non è però necessario ordinare
completamente il suo intorno, ma basta trovare i suoi due
valori di mezzo e farne la media, ciò può essere fatto
dividendo
l’intorno
in
due
coppie
e
ordinandole
separatamente, con un semplice test; si confrontano così i
due massimi ottenuti, prendendo il minore, e i due minimi,
prendendo il maggiore; essi sono i valori di mezzo
dell’intorno.
•
In questo modo, non viene effettuata alcuna divisione, ma è
necessario eseguire 5 operazioni condizionali; l’impatto di esse può
essere minimizzato annidando i confronti in modo che la situazione
più probabile richieda un solo test, la seconda 2, la terza 3 e così via,
minimizzando il costo d’escuzione dell’algoritmo nel caso più
comune, che ha quindi il maggior impatto sulle prestazioni.
149
Figura 5.14 Percentuale di pixel dell’immagine
aventi USAN di una certa area per valore del
threshold di luminosità: la linea rossa
rappresenta area 4, la blu area 3, la viola area 2,
la verde area 1, la nera area 0.
Osservando il grafico, costruito su un campione di immagini riprese
dalla telecamera del robot, si nota come, a parte i casi degeneri caratterizzati
da un valore di threshold inferiori a 4, in cui l’algoritmo comunque è
inutilizzabile perché non si comporta correttamente (per threshold pari a 0,
coincide con il filtro mediano), già a partire da un threshold pari a 8, oltre il
90% dei pixel abbiano USAN di area 3 o 4, e per i valori nell’ordine di 1820, in cui il risultato qualitativo per questo tipo di immagini è massimo, la
quasi totalità dei pixel abbiano area dell’USAN pari a 4 e il costo di
esecuzione dell’algoritmo è molto prossimo a quello di un box-filter di pari
maschera; la frequenza di elaborazione media del sistema di visione usando
il filtro così progettato è di circa 14 fotogrammi al secondo a 200MHz; in
conseguenza di tale risultato, il filtro qui realizzato è stato battezzato
SUSAN Smoothing “Real Time”.
150
SUSAN Smoothing Real Time:
Figura 5.15
Nel caso dell’operatore di edge detection, questo tipo di maschera non
si può usare, perché non rileva bene i bordi diagonali: la maschera minima
utilizzabile è pertanto la 3x3, tuttavia l’algoritmo di per sé è esente da
moltiplicazioni e divisioni, ed è pertanto efficiente.
SUSAN Edge Detector “Lite”:
151
Figura 5.16
La frequenza di elaborazione media del sistema di visione
comprensivo di Smoothing “Real Time” e Edge Detection, su processore a
400MHz, è superiore a 20 fotogrammi al secondo.
5.3 Estrazione oggetti
Il processo che porta dalla formazione dei blob al riconoscimento
degli oggetti è stato implementato e testato con successo nell’ambito di
questa progetto, tuttavia la sua esposizione non risulta significativa ai fini di
questa trattazione, non ponendo particolari problemi dal punto di vista delle
prestazioni.
152
Capitolo 6
Risultati
6.1 Ambiente di prova
Allo scopo di valutare i risultati conseguiti con questa ricerca, il
sistema progettato è stato messo a confronto con un algoritmo tradizionale,
basato unicamente sulla classificazione statica descritta nella Sezione 2.1.1,
in un ambiente in cui potesse essere messa alla prova la robustezza della
segmentazione in condizioni operative più realistiche rispetto a quelle delle
gare.
Il campo di gioco è stato perciò posto in un ambiente dove
l’illuminazione è rappresentata da:
•
una componente artificiale sotto forma di lampade al neon poste sul
soffitto della stanza, modellabili come una sorgente di luce diffusa a
temperatura di colore di 4300K;
•
una componente naturale, di intensità variabile nell’arco della
giornata, rappresentata da luce solare che filtra attraverso delle tende
in prossimità della porta azzurra del campo, modellabile come una
sorgente di luce direzionale a temperatura di colore di 6500K.
•
oltre a ciò, i landmark aventi metà inferiore di colore rosa sono
parzialmente in ombra rispetto ad entrambe le sorgenti, per la
prossimità di scrivanie.
153
Figura 6.1 Condizioni di illuminazione sul
campo di gioco.
Come termine di paragone, è stato utilizzato lo stesso algoritmo di
classificazione statica impiegato nel nuovo sistema, senza gli stadi di
filtraggio e thresholding dinamico, né edge detection: in questo modo, da un
lato si può verificare il miglioramento introdotto specificamente da questi
stadi aggiuntivi, dall’altro è possibile effettuare il confronto in condizioni
non stazionarie, infatti questa tecnica di classificazione è poco vincolata alla
componente di luminosità, a differenza di rappresentazioni quali quelle
descritte in [VLVRSC02], [GT02] e [CSVYHPS01] che ottengono migliori
risultati qualitativi ma solo in condizioni di luce stabili.
154
6.2 Esperimenti29
Il primo risultato che merita di essere rimarcato è la compressione del
dominio di classificazione associato all’apprendimento da un’imagine di
esempio, dovuto sia alla filtraggio del rumore che al thresholding dinamico.
Figura 6.2 Immagine d’esempio.
Figura 6.3 Immagine segmentata, Sistema 1.
29
Da qui in poi, per chiarezza e concisione di notazione, si indicherà il sistema basato sul solo
thresholding statico come “Sistema 1”, mentre il nuovo sistema qui progettato verra indicato come
“Sistema 2”.
155
Figura 6.4 Immagine segmentata Sistema 2.
Come si vede dalle figure, nel segmentare la prima immagine
d’esempio il comportamento di entrambi i sistemi è buono, si nota una
leggera rumorosità nell’algoritmo convenzionale, che comunque non
comporta alcun problema al corretto riconoscimento degli oggetti; il nuovo
sistema non classifica il bianco, sebbene ciò sia comunque possibile, ma
rileva i contorni delle linee del campo tramite edge detection.
Si osservi ora la corrispondente occupazione della mappa di
classificazione UV:
156
Figura 6.5 Mappa di classificazione UV,
relativa alla figura 6.1, Sistema 1: i colori (rosa,
verde, giallo, bianco) indicano il valore
assegnato ad una certa zona della mappa
Figura 6.6 Mappa di classificazione UV,
relativa alla figura 6.1, Sistema 2.
157
Come si vede, nel caso del Sistema 2, la classificazione di un’immagine
occupa appena pochi punti sparsi nella mappa di classificazione, questo
perché essa avviene solo sui modi dell’istogramma, che rappresentano delle
regioni omogenee dell’immagine, mentre con una tecnica tradizionale la
classificazione avviene a livello di pixel, quindi è necessario classificare tutti i
valori degli spettri degli oggetti che si vogliono estrarre.
La conseguenza è che in nuovo sistema è in grado di discriminare
colori che, a causa delle condizioni di illuminazione, tendono a sovrapporsi
nel piano cromatico UV:
Figura 6.7
158
Figura 6.8 Immagine segmentata con il
Sistema 1.
Figura 6.9 Color map usata per segmentare
l’mmagine precedente.
La Color Map riportata in figura 6.9 è stata ottenuta imponendo che la
parte inferiore del landmark posto nell’angolo in alto a sinistra in figura 6.7
159
sia verde, come è in realtà: la conseguenza è stata però che anche la porta
azzurra, in alto a desta, sia stata classificata erroneamente come verde,
perché nell’immagine le componenti cromatiche dei due oggetti si
sovrappongono, in conseguenza dell’illuminazione non ottimale e della
scarsa sensibilità della telecamera; tale risultato non è accettabile, perciò
bisogna imporre che la porta venga riconosciuta come azzurra.
Figura 6.10
160
Figura 6.11 Nuova Color map: nel riquadro
tratteggiato è stato evidenziato il cambiamento
rispetto alla precedente.
Il risultato della nuova associazione è che una porzione del piano UV
che prima era classificata come “verde” è stata cambiata in “azzurro”: la
porta è ora identificabile correttamente dalle funzioni di estrazione oggetti,
ma una parte del landmark verde è adesso classificata come azzurra: ciò non
pone problemi nel riconoscimento in questo fotogramma, perché l’area
verde è comunque superiore per dimensioni all’area azzurra.
Ripetendo la segmentazione dell’immagine in figura 6.7 dopo aver
ultimato il processo di calibrazione della Color map utilizzando altri
fotogrammi che riprendono varie porzioni di campo sotto differenti
condizioni di luce, si ottiene:
161
Figura 6.12
Nell’immagine, si nota che la parte del landmark verde classificata in
modo scorretto come azzurra ha dimensioni simili alla parte riconosciuta
correttamente, pertanto il sistema di estrazione degli oggetti potrebbe
identificare erroneamente tale marker come “rosa-azzurro”, e ciò avrebbe
come conseguenza un errore (temporaneo) del robot nell’orientarsi sul
campo.
Questo problema può essere superato utilizzando il nuovo sistema,
che grazie alla capacità di filtrare l’informazione non significativa, riesce ad
evitare la sovrapposizione fra le due regioni:
162
Figura 6.13
L’immagine ottenuta, oltre ad essere globalmente meno affetta da
rumore,
non
presenta
situazioni
problematiche
per
il
corretto
riconoscimento degli oggetti presenti nella scena.
Una situazione analoga può essere rintracciata nel fotogramma
seguente:
163
Figura 6.14
164
Figura 6.15 Sistema 1.
In questo fotogramma, la parte verde del landmark, nell’angolo in alto
a sinistra, è del tutto irriconoscibile.
165
Figura 6.16 Sistema 2.
L’ultimo elemento che occorre evidenziare è l’opportunità dell’uso
della edge detection per il riconoscimento delle linee, che permette sia una
rilevazione molto più robusta a variazioni di luminosità della scena, sia una
migliore localizzazione dei bordi; si consideri in proposito l’immagine
seguente:
166
Figura 6.17
167
Figura 6.18 Immagine segmentata, Sistema 1.
Osservando la figura 6.18, si nota come le due righe più grandi, che
delimitano il campo, siano diversamente illuminate, infatti il bordo parallelo
all’osservatore si trova nella zona d’ombra del terreno di gioco, dovuta alla
prossimità di suppellettili; nell’immagine segmentata, si nota come tale
bordo venga rilevato in maniera molto confusa e frammentata; si può allora
intervenire sulla Color map per includere nella classificazione delle linee quei
valori che non sono stati correttamente riconosciuti.
168
Figura 6.19 Nuova immagine segmentata,
Sistema 1.
In questo caso, l’aver risolto il precedente problema ne ha però aperto
uno nuovo, infatti adesso i muri, che hanno luminosità nell’immagine simile
al nuovo bordo, vengono classificati come bianco, e ciò rende difficile
individuare le linee.
Utilizzando la edge detection, i bordi vengono rilevati correttamente
sotto un’ampia gamma di condizioni di luce:
169
Figura 6.20 Sistema 2, rilevamento delle linee
mediante edge detection.
6.3 Ricostruzione della scena
Alla luce degli ottimi risultati ottenuti dal sistema di segmentazione, è
stata svolta una breve analisi delle prestazioni delle routine di alto livello di
ricostruzione dell’informazione tridimensionale, in particolare misurando la
corrispondenza fra le distanze dai landmark stimate dal sistema di visione e
le distanze reali, fattore molto importante nel determinare l’accuratezza che
può essere raggiunta da un algoritmo di auto localizzazione che ne faccia
uso .
Tali risultati sono così riassumibili:
170
Distanza Reale
Valore medio rilevato
Deviazione Standard
1m
95cm
10cm
2m
190cm
10cm
3m
280cm
20cm
4m
370cm
30cm
A parte un lieve errore sistematico per difetto nella stima della
distanza di circa il 5-7%, la deviazione standard è sufficientemente
contenuta anche per landmark molto lontani.
Nel caso della palla e delle porte, la caratteristica più importante è la
massima distanza a cui esse sono rilevabili: è stato verificata la capacità di
individuare la palla correttamente fino a circa 4 metri, con una deviazione
standard della misura simile al caso dei landmark; per le porte, in virtù anche
delle loro dimensioni, non ci sono problemi anche a distanze superiori ai 5
metri.
6.4 Applicazione: localizzazione basata su
landmark
Grazie all’affidabilità dell’informazione visiva acquisita con questo
sistema, è stato possibile sviluppare una tecnica di localizzazione basata su
landmark con tracciamento della posizione mediante filtro di Kalman30.
Il filtro di Kalman è un’osservatore asintotico dello stato, ottimo nel
caso di sistemi lineari31, che permette di stimare lo stato interno di un
sistema sulla base del modello del processo, della distribuzione di probabilità
dell’errore di misura dell’uscita del sistema, e della distribuzione di
30
Per un’introduzione sul filtro di Kalman, si veda [WB95].
31
Una trattazione completa sulla teoria dei sistemi può essere trovata in [Mon00].
171
probabilità dell’errore sulla stima del modello del sistema; nel caso in esame,
lo stato del sistema è rappresentato dalla terna [ x
y θ ] che esprime la
posizione e l’orientazione del robot nel sistema di riferimento solidale con il
campo.
Quando il robot viene posto sul campo di gioco, la sua posizione gli è
interamente ignota, pertanto è necessario effettuare la localizzazione
assoluta: vedendo due landmark (i=1,2), senza che il robot si sposti, se ne
hanno a disposizione sia le coordinate relative alla posizione del robot
R
R
W
( x mi
, y mi
) , sia le coordinate assolute ( x mi
, y Wmi ) , note a priori, nel sistema di
riferimento del campo; si hanno allora a disposizione 4 equazioni che
permettono di risolvere le 3 incognite [ x Wr
 x Wmi   cosθ rW
 W 
 y mi  =  sin θ rW
 1   0
 

− sin θ rW
cosθ rW
0
y Wr
θ rW ] :
R

x rW   x mi



W
R
y r  ⋅  y mi  ; i = 1,2
1   1 
(6.1)
Posto:
a = cosθ rW
b = sin θ rW
v = x mR1 − x mR 2
w = y mR1 − y mR 2
k=x
W
m1
−x
j=y
W
m1
− y mW2
(6.1’)
W
m2
 v − w

M = 
w v 
e risolvendo il sistema, si ottiene:
172
k
a
  = M −1 ⋅  
 j
b
x rW = x Wm1 − a ⋅ x mR1 + b ⋅ y mR1
(6.2)
y Wr = y Wm1 − b ⋅ x mR1 − a ⋅ y mR1
b
θ rW = arctan( )
a
A partire dalla posizione iniziale così determinata, integrando di volta
in volta i dati di spostamento relativo ottenuti dal modulo di locomozione
del robot (odometria) con l’informazione visiva sui landmark attraverso un
filtro di Kalman lineare, si effettua il tracciamento della posizione: a
differenza della localizzazione assoluta, non è necessario vedere due
landmark per localizzare il robot, ma basta aggiornare la stima dello stato del
sistema al passo precedente con la posizione relativa rispetto ad un marker
solo.
In generale, il modello del sistema in esame non è lineare, in quanto
per uno spostamento relativo di [∆x ∆y ∆θ ] nel sistema di riferimento
del robot, ∆x, ∆y dipendono da θ secondo la matrice di rotazione; il
modello può essere però reso lineare separandolo in due processi, uno che
contolla l’evoluzione della posizione (x, y), l’altro dell’orientazione θ ; tale
scelta implica l’assunzione che questi due sottosistemi siano indipendenti, e
questo è ragionevole nel caso della rilevazione visiva, in cui la distanza e
l’angolo dal landmark vengono stimati in base a proprietà differenti
dell’oggetto presente nell’immagine, mentre lo stesso non può dirsi nel caso
dell’odometria, tuttavia l’errore odometrico di per sé tende a divergere se lo
stato non viene aggiornato sufficientemente di frequente attraverso
rilevazioni sensoriali.
Il processo è allora stato così modellato:
θˆk− = Akθ θˆk −1 + Bkθ u θk + wθk
p( wθk ) = N (0, Qkθ )
θ −
k
P
θ
k −1
=P
+Q
(6.3)
θ
k
173
L’equazione (6.3) rappresenta il predict del filtro di Kalman relativo
all’orientazione del robot sul campo, e serve ad integrare i dati
dell’odometria:
u θk = ∆θ kodom
Akθ = I
(6.3.1)
Bkθ = I
wθk è l’errore di processo relativo all’incertezza sul modello, e tramite il
filtro di Kalman la sua densità di probabiltà deve avere andamento
gaussiano a valor medio nullo e varianza data dalla matrice Qkθ , Pkθ − è la
matrice di covarianza dell’errore d’angolo sin qui determinato; poiché il
sistema è unidimensionale, Qkθ = q ⋅ ∆θ kodom , dove q è un paramentro da
determinare opportunamente.
Dopo aver aggiornato lo stato stimato θˆk− , esso verrà utilizzato per
determinare il processo relativo a (x,y):
zˆ k− = Akz zˆ k− + Bkz u kz + wkz
p( wkz ) = N (0, Qkz )
 xˆ 
zˆ k =  k 
 yˆ k 
 ∆x odom 
u kz =  kodom 
 ∆y k 
z
Ak = I 2 x 2
(6.4)
 cosθˆk− − sin θˆk− 

Bkz = 
ˆ − cosθˆ − 
sin
θ
k
k 

z−
z
z
Pk = Pk−1 + Qk
La (6.4) rappresenta il predict relativo alla posizione del robot: come
si vede, l’aver modellato il sistema come due processi separati, che si
influenzano reciprocamente al di fuori del filtro di Kalman, ha permesso di
174
produrre un modello lineare per l’aggiornamento dell’odometria relativa alla
posizione del robot.
La matrice di covarianza Qkz può essere calcolata come segue:
Figura 6.21
La direzione del movimento del robot rispetto al sistema assoluto è
data dalla somma fra θˆk− e la direzione che esso ha nel sistema relativo, β k :
la gaussiana bidimensionale che rappresenta l’errore di processo avrà allora
un asse diretto secondo il moto e l’altro ortogonalmente, aventi varianze
σ //2 , σ ⊥2 proporzionali all’ampiezza dello spostamento.
α = θˆk− + β k
Qkz = U Q Λ QU Q−1
 cos α
U Q = 
 sin α
− sin α 

cos α 
(6.5)
σ 2 0 

Λ Q =  //
2
 0 σ⊥
175
Quando la visione rileva la presenza di un landmark nell’immagine, si
effettua il correct del filtro di Kalman relativo alla posizione:
s kz = Hz k + v kz
p(v kz ) = N (0, Rkz )
zˆ k = zˆ k− + K kz ( s kz − Hzˆ k− )
(6.5)
H = I 2 x2 ⇒
⇒ K kz = Pkz − ( Pkz − + Rkz ) −1
⇒ Pkz = ( I − K kz ) Pkz −
Nella (6.5), s kz rappresenta la misura dell’uscita del sistema di
posizione, che in questo modello coincide con lo stato stesso (matrice di
trasformazione di uscita H pari all’identità).
Avendo a disposizione un solo landmark, non si può misurare
direttamente la posizione del robot, ma si sa che essa giace su una
circonferenza di raggio pari alla distanza dal landmark e in esso centrata:
assumendo che la frequenza di rilevazioni sensoriali sia adeguata, la
posizione s kz può essere ricavata come il punto su tale circonferenza che
intercetta la congiungente fra il landmark e la posizione stimata del robot in
base all’odometria ẑ k− (predict); l’incertezza di misura dovrebbe avere una
distribuzione di probabilità a forma di corona circolare intorno al landmark,
tuttavia con il filtro di Kalman si possono modellare solo distribuzioni
gaussiane, quindi Rkz sarà approssimato attraverso una gaussiana centrata
in s kz , con un asse molto lungo diretto tangenzialmente alla circonferenza,
funzione del raggio ( σ //2 ), e un asse ad esso ortogonale proporzionale
all’errore di misura della distanza del robot dal landmark ( σ ⊥2 ).
176
Figura 6.22 Calcolo della posizione e della
matrice di covarianza rispetto ad un landmark
(M).
Sulla base del calcolo della posizione stimata ẑ k è possibile effettuare
anche il correct relativo all’orientazione:
s θk = Hθ k + v kθ
p (v kθ ) = N (0, Rkθ )
θˆ = θˆ − + K θ ( s θ − Hθˆ − )
k
k
k
k
(6.6)
k
H=I⇒
⇒ K kθ = Pkθ − ( Pkθ − + Rkθ ) −1
⇒ Pkθ = ( I − K kθ ) Pkθ −
Infatti l’angolo s θk è dato dalla somma dell’angolo fra il landmark e il
robot in coordinate assolute β , calcolabile quindi in base a ẑ k , e l’angolo
relativo sotto cui il robot vede il marker γ , misurato dal sistema di visione.
177
Figura 6.23 Costruzione di
178
s θk = β + γ
Conclusioni e sviluppi futuri
Nel corso dello sviluppo di questa tesi, sono stati raggiunti i seguenti
risultati:
•
Sono state analizzate le caratteristiche di un dominio dinamico e
competitivo su cui è stata focalizzata la ricerca, e dell’ambiente di
esecuzione, individuando gli aspetti critici al fine del conseguimento
degli obiettivi;
•
Si è progettato un sistema di segmentazione di immagini in tempo
reale, capace di superare i limiti tipici di tecniche che si muovono
nello stesso ambito, attraverso thresholding dinamico e filtraggio
non lineare, allo scopo di scartare informazione non significativa ai
fini della classificazione.
•
Si è messo a confronto tale approccio con una tecnica basata
esclusivamente sulla classificazione statica, attraverso una serie di
esperimenti, mettendo in risalto i problemi incontrati dal sistema
tradizionale dovuti alla non uniformità e stazionarietà delle
condizioni di illuminazione, e l’efficacia della nuova tecnica nel
superarli.
•
In conclusione, il sistema soddisfa tutti gli obiettivi proposti.
Sviluppi futuri
Un aspetto su cui non è stata focalizzata l’attenzione di questa tesi
sono le tecniche di calibrazione del sistema di classificazione: per costruire la
mappa UV e il vettore Y, è necessaria una lunga fase d’apprendimento
basata su un gran numero di esempi; indubbiamente, la capacità di
adattamento dell’algoritmo a condizioni di illuminazione variegate rende
poco frequente tale operazione, tuttavia lo studio di tecniche ad hoc per
179
l’apprendimento da esempi può portare dei benefici anche in termini di
qualità dei risultati raggiungibili, attraverso una migliore capacità di
generalizzazione e una minore dipendenza dagli errori (umani) in fase di
calibrazione.
Un altro aspetto interessante, meritevole di approfondimento, è lo
studio di tecniche di calibrazione automatica basate sul tracciamento delle
proprietà della luce presente nella scena: tale problema, nel caso generale, è
estremamente complesso, sia per l’impossibilità di misurare direttamente
l’intensità e la temperatura di colore della luce, sia per la difficoltà di ricavare
una legge che permetta di stabilire la variazione della tonalità nell’immagine
di certi colori reali al variare delle condizioni di luce.
Limitando il dominio di applicazione di tale ricerca a variazioni
contenute della luce rispetto ad un riferimento utilizzato in fase di
calibrazione manuale, è possibile sfruttare qualche proprietà nota a priori e
facilmente individuabile del dominio operativo per ricavare dal confronto
un’indicazione sulla variazione della luce stessa: nel caso dell’ambiente
RoboCup, è noto che il piano sotto le zampe del robot è sempre di colore
verde; sfruttando tale informazione si possono costruire gli istogrammi
limitati ad una porzione dell’immagine al di sotto di una linea parallela
all’orizzonte e posta ad un’altezza prossima a quella del piano di gioco,
cercare il modo principale, rappresentativo della massima probabilità di
essere il verde del campo, e confrontandolo con il valore di riferimento
determinato in fase di calibrazione manuale, integrando le differenze così
ottenute nel tempo attraverso metodi probabilistici; dopo un certo periodo
di osservazione, sarà così disponibile una stima della variazione delle
condizioni di illuminazione rispetto a quelle in essere durante la calibrazione
manuale, da usare per aggiornare le mappe di classificazione secondo
qualche legge da determinare (traslazione, dilatazione, erosione, ecc.).
Anche il tema dell’estrazione di linee, di cui qui è stato progettato solo
il primo stadio, può essere ripreso e sviluppato in un’ottica di localizzazione,
180
attraverso l’integrazione di dati medianti formalismi più potenti rispetto al
filtro di Kalman, in grado di rappresentare distribuzioni multimodali, data la
maggior incertezza di identificazione di una linea rispetto ad un landmark.
181
182
BIBLIOGRAFIA
[SB95]
S.M.Smith,
J.M.Brady.
S.U.S.A.N. – A new approach to
low level image processing. 1995.
[Can86] J.F.Canny. A computational
approach to edge detection. 1986.
[Can83] J.F.Canny. Finding edges and
lines in images. 1983.
[Rob65]
L.Roberts.
Machine
Perception of 3-D Solids. 1965.
[Sob90] I.Sobel. An isotropic 3x3
image gradient operator. 1990.
[Pre70]
J.M.S.Prewitt.
Object
enhancement and extraction. 1970.
[MH80] D.Marr, E.C.Hildreth.
Theory of edge detection. 1980.
[RN98]
S.J.Russel,
P.Norvig.
Intelligenza Aritificale – un approccio
moderno. 1998.
[PPR01]
F.Pirri,
M.Pirrone,
M.Romano. Dispense dal corso
di Ingegneria della conoscenza.
2001.
[Gris01] G.Grisetti. Localizzazione
robusta ed affidabile per robot mobili
in ambiente dinamico. 2001.
[AIBOnet] www.aibonet.com.
[Hei94] J.Heinrich. MIPS R4000
Microprocessor User’s Manual.
1994.
[Ard00] E.Ardizzone. Teoria e Teniche
di Elaborazione dell’Immagine.
2000.
[CSVYHPS01] S. Chen, M.Siu,
T.Vogelgesang, T.F.Yik, B.Hengst,
S.B.Pham, C.Sammut. The UNSW
Robocup 2001 Sony Legged League
Team. 2001.
[Mas99] D.Mastrantuono. AutoLocalizzazione per robot mobili basata su
trasformata di Hough. 1999.
[MT96] R.Mohr, B.Triggs. Projective
Geometry for Image Analysis. 1996.
[Bru00] J.Bruce. Realtime machine
vision perception and prediction.
2000.
[BBV00]
J.Bruce,
T.Balch,
M.Veloso. Fast and inexpensive
color image segmentation for
interactive robots. 2000.
[VLVRSC02] M.Veloso, S.Lenser,
D.Vail, M.Roth, A.Stroupe,
S.Chernova. CMPack-02: CMU’s
Legged Robot Soccer Team. 2002.
[GT02] Autori Vari. German Team
report for Robocup 2002. 2002.
[HIPS00] B.Hengst, D.Ibbotson,
S.B.Pham, C.Sammut. The
UNSW United 2000 Sony legged
robot software system. 2000.
[SHB98]
M.Sonka,
V.Hlavac,
R.Boyle.
Image
Processing,
Analysis, and Machine Vision.
1998.
[AB94] R.Adams, L.Bischof. Seeded
Region Growing. 1994.
[MJ97] A.Mehnert, P.Jackway. An
improved seeded region growing
algorithm. 1997.
[Cus96] R.Cusani. Teoria dei segnali.
1996.
[DR78] L.S.Davis, A.Rosenfeld.
Noise cleaning by iterated local
averaging. 1978.
[Bro84] D.R.K.Brownrigg. The
Weighted Median Filter. 1984.
[AF88] G.R.Arce, S.A.Fontana. On
the midrange estimator. 1988.
[WVL81]
D.C.C.Wang,
A.H.Vagnucci, C.C.Li. Gradient
Inverse Weighted smoothing scheme
and the evaluation of its performance.
1981.
183
[Bak99] H.Bakstein. A complete
DLT-based Camera Calibration with a
Virtual 3D Calibration Object.1999.
[Calib]
J.Y.Bouguet.
Camera
Calibration Toolbox for Matlab.
www.vision.caltech.edu/bouguetj/c
alib_doc/
[HP95]
J.L.Hennessy,
D.A.Patterson. Struttura e Progetto dei
Calcolatori. 1995.
[HP96]
J.L.Hennessy,
D.A.Patterson. Computer Architecture:
a Quantitative Approach (second edition).
1996.
[WB95] G.Welch, G.Bishop. An
Introdcution to the Kalman Filter. 1995.
[Mon00] S.Monaco. Teoria dei
Sistemi. 2000.
2
4