11.07.2014 Views

Progetto e Realizzazione di un Sensore Ibrido Omnidirezionale/pin ...

Progetto e Realizzazione di un Sensore Ibrido Omnidirezionale/pin ...

Progetto e Realizzazione di un Sensore Ibrido Omnidirezionale/pin ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Università degli Stu<strong>di</strong> <strong>di</strong> Parma<br />

Facoltà <strong>di</strong> Ingegneria<br />

Corso <strong>di</strong> Laurea in Ingegneria Elettronica<br />

______<br />

<strong>Progetto</strong> e realizzazione <strong>di</strong> <strong>un</strong> sensore<br />

ibrido omni<strong>di</strong>rezionale/<strong>pin</strong>-hole e suo<br />

impiego per compiti <strong>di</strong> navigazione <strong>di</strong> robot<br />

autonomi<br />

Relatore: Chiar.mo Prof. Ing. Giovanni Adorni<br />

Correlatori: Dott. Ing. Stefano Cagnoni<br />

Dott. Ing. Monica Mordonini<br />

Tesi <strong>di</strong> Laurea <strong>di</strong>: Luca Bolognini<br />

Anno Accademico 1999-2000


In<strong>di</strong>ce<br />

Prefazione 4<br />

Ringraziamenti 6<br />

1. La visione artificiale 7<br />

1.1. Introduzione 7<br />

1.2. Fasi <strong>di</strong> elaborazione delle immagini 9<br />

1.3. La visione artificiale e la robotica 11<br />

1.4. Obiettivi generali e introduzione al progetto 15<br />

2. Calibrazione prospettica <strong>di</strong> <strong>un</strong> sensore visivo 17<br />

2.1. Introduzione 17<br />

2.1.1. Il processo <strong>di</strong> formazione dell’immagine e l’effetto prospettico 18<br />

2.1.2. La calibrazione dei sensori visivi e la prospettiva inversa 22<br />

2.2. Sistema cata<strong>di</strong>ottrico per la visione a 360 gra<strong>di</strong> 25<br />

2.2.1. I cata<strong>di</strong>ottri 25<br />

2.2.2. <strong>Realizzazione</strong> del prototipo 29<br />

2.2.3. Tecniche <strong>di</strong> calibrazione prospettica sperimentate 32<br />

2.2.3.1. Tecnica <strong>di</strong> calibrazione geometrica o esplicita 33<br />

2.2.3.2. Tecnica <strong>di</strong> calibrazione empirica o implicita 38<br />

2.2.3.3. Tecnica combinata analitico-empirica 44<br />

2.3. <strong>Sensore</strong> visivo frontale 50<br />

2.3.1. Variante della tecnica <strong>di</strong> calibrazione analitico-empirica 51<br />

2.4. <strong>Progetto</strong> del software per la calibrazione 56<br />

2.4.1. Analisi dei requisiti 57<br />

2.4.2. <strong>Progetto</strong> del sistema 60<br />

2.4.3. La misura del coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale 66<br />

3. Calibrazione <strong>di</strong> <strong>un</strong> sistema binoculare 68<br />

3.1. La visione stereoscopica 68<br />

2


3.2. Soluzione roto-traslazionale 71<br />

4. L’elaborazione delle immagini e l’obstacle detection 74<br />

4.1. Utilizzazione <strong>di</strong> HOPS per problemi <strong>di</strong> visione artificiale 74<br />

4.2. Algoritmi utilizzati e risultati conseguiti 75<br />

4.2.1. Fase <strong>di</strong> pre-processing 76<br />

4.2.2. Fase <strong>di</strong> segmentazione e <strong>di</strong> interpretazione 86<br />

4.2.3. Risultati 98<br />

4.3. Sviluppi futuri 105<br />

5. La gestione del sistema visivo 106<br />

5.1. Introduzione 106<br />

5.2. Definizione dei requisiti 107<br />

5.3. Analisi dei requisiti e modello concettuale del dominio 111<br />

5.4. <strong>Progetto</strong> del modulo visivo 117<br />

5.5. Sviluppi futuri 125<br />

Conclusioni 126<br />

Bibliografia 128<br />

3


Prefazione<br />

Questa tesi ha affrontato <strong>di</strong>fferenti aspetti <strong>di</strong> <strong>un</strong> progetto <strong>di</strong> visione artificiale applicata<br />

alla robotica, centrato sull’impiego <strong>di</strong> <strong>un</strong> sensore visivo denominato HOPS (Hybrid<br />

Omni<strong>di</strong>rectional/Pin-hole Sensor). L’idea <strong>di</strong> questo sensore si fonda sull’utilizzo <strong>di</strong> <strong>un</strong><br />

cata<strong>di</strong>ottro per la visione omni<strong>di</strong>rezionale combinato ad <strong>un</strong>a tra<strong>di</strong>zionale telecamera<br />

CCD. L’impiego <strong>di</strong> sensori omni<strong>di</strong>rezionali è attualmente <strong>di</strong>ffuso in molti ambiti<br />

applicativi della visione artificiale: sia per facilitare l’auto-localizzazione e la<br />

navigazione <strong>di</strong> robot mobili in ambienti semi-strutturati e non strutturati sia, ad<br />

esempio, in applicazioni <strong>di</strong> sorveglianza. Questi e altri ambiti traggono vantaggio<br />

dall’ampiezza dei campi visivi generabili tramite cata<strong>di</strong>ottro e dalla compatta<br />

organizzazione delle informazioni (seppur caratterizzata da <strong>un</strong>a risoluzione limitata).<br />

Nel caso specifico <strong>di</strong> HOPS, si è deciso <strong>di</strong> associare al cata<strong>di</strong>ottro <strong>un</strong> secondo più<br />

tra<strong>di</strong>zionale sensore visivo allo scopo <strong>di</strong> rafforzare le potenzialità del sistema sensoriale<br />

con informazioni più dettagliate riguardanti <strong>un</strong>a specifica regione spaziale, rendendo<br />

quin<strong>di</strong> più affidabile la ricostruzione dell’ambiente circostante.<br />

Il progetto ha come obiettivo finale la creazione <strong>di</strong> <strong>un</strong> sistema <strong>di</strong> gestione <strong>di</strong> robot<br />

mobili che si avvalga, nel campo sensoriale, <strong>di</strong> <strong>un</strong> modulo <strong>di</strong> visione capace <strong>di</strong> sfruttare<br />

tutte le potenzialità del sensore HOPS. Il lavoro descritto in questa tesi riguarda<br />

l’impostazione generale del progetto, la calibrazione del sensore e la costruzione <strong>di</strong> <strong>un</strong><br />

modulo <strong>di</strong> gestione della visione secondo i principi <strong>di</strong> generalità, flessibilità e<br />

modularità. Come primo elemento <strong>di</strong> <strong>un</strong> sistema <strong>di</strong> visione completo, sono state<br />

realizzate delle routines per l’obstacle detection, utilizzando HOPS come sensore<br />

binoculare per la realizzazione <strong>di</strong> algoritmi <strong>di</strong> inversione prospettica.<br />

In particolare, dopo aver introdotto, nel primo capitolo, le tematiche della visione<br />

artificiale applicata alla robotica, nel secondo capitolo la tesi descrive la calibrazione del<br />

4


sensore HOPS, nel terzo (brevemente) la calibrazione stereo, nel quarto le tecniche <strong>di</strong><br />

analisi delle immagini realizzate per l’obstacle detection. Infine, nel quinto capitolo, il<br />

progetto del sistema <strong>di</strong> gestione sensoriale per robot mobili.<br />

5


Ringraziamenti<br />

Desidero ringraziare il Prof. Giovanni Adorni per avermi dato la possibilità <strong>di</strong> svolgere<br />

questo lavoro, che mi ha consentito <strong>di</strong> affrontare molti problemi della visione artificiale<br />

attraverso <strong>un</strong> progetto articolato, comprendente aspetti teorici e applicativi <strong>di</strong>versi.<br />

Ringrazio inoltre il Dott. Stefano Cagnoni e la Dott.ssa Monica Mordonini per la loro<br />

presenza costante e i loro preziosi consigli.<br />

Vorrei anche ringraziare gli studenti del Laboratorio <strong>di</strong> Visione e del Laboratorio <strong>di</strong><br />

Robotica per aver contribuito a creare <strong>un</strong> ambiente <strong>di</strong> lavoro collaborativo e<br />

amichevole.<br />

6


Capitolo 1.<br />

La visione artificiale<br />

1.1. Introduzione<br />

L’apparato visivo è senza dubbio il più potente tra gli apparati sensoriali <strong>di</strong> cui<br />

l’evoluzione ha dotato la specie umana: fornisce <strong>un</strong>a vasta quantità <strong>di</strong> informazioni<br />

sull’ambiente circostante e ci permette <strong>di</strong> interagire con esso in maniera intelligente,<br />

senza bisogno <strong>di</strong> <strong>un</strong> contatto fisico. Allo stesso tempo però la visione è <strong>un</strong> processo<br />

complicato e le nostre conoscenze sulla biologia <strong>di</strong> questo processo sono ancora<br />

limitate. Da <strong>un</strong>a parte quin<strong>di</strong> non dobbiamo stupirci dell’estrema attenzione e degli<br />

sforzi che si sono fatti per dare alle macchine la capacità <strong>di</strong> vedere, ma d’altra parte,<br />

dobbiamo prendere atto anche delle gran<strong>di</strong> <strong>di</strong>fficoltà incontrate. La visione artificiale è<br />

<strong>un</strong> settore <strong>di</strong> ricerca ormai particolarmente attivo da oltre trent’anni. Un periodo, questo,<br />

nel quale si sono avvicendate molte teorie, si sono confrontati para<strong>di</strong>gmi alternativi e<br />

sono state sviluppate tecniche <strong>di</strong>verse. In alc<strong>un</strong>i settori <strong>di</strong> ricerca, come ad esempio<br />

l’image processing e la pattern recognition, questo ha portato a <strong>un</strong> rapido sviluppo e<br />

alla creazione <strong>di</strong> molteplici sistemi utilizzabili nella pratica. Ma in altri settori, in<br />

particolare quelli che comportano operazioni <strong>di</strong> più alto livello, i progressi sono stati più<br />

limitati.<br />

Possiamo <strong>di</strong>re che “la visione artificiale si pone l’obiettivo <strong>di</strong> automatizzare ed integrare<br />

<strong>un</strong>a vasta gamma <strong>di</strong> processi e rappresentazioni tipiche della percezione visiva” [Ballard<br />

e Brown, 1982]. La percezione visiva è <strong>un</strong> processo che mette in relazione l’input<br />

visuale con modelli del mondo preesistenti. Data l’estrema <strong>di</strong>versità tra le immagini<br />

percepite e i modelli che ne descrivono ed astraggono le informazioni, i sistemi <strong>di</strong><br />

visione artificiale normalmente sono costituiti da <strong>un</strong>a gerarchia <strong>di</strong> livelli rappresentativi<br />

7


interme<strong>di</strong> che richiedono altrettanti processi per la loro interconnessione. Quin<strong>di</strong> la<br />

visione artificiale è strettamente legata sia a problematiche <strong>di</strong> analisi <strong>di</strong> basso livello,<br />

dette anche <strong>di</strong> early-processing, sia a problematiche <strong>di</strong> più alto livello, che si possono<br />

definire cognitive.<br />

I processi che costituiscono le fondamenta della percezione visiva, quelli <strong>di</strong> basso<br />

livello, forniscono la sensibilità a caratteristiche quali la luminosità, il colore, la<br />

<strong>di</strong>stanza, o la stessa percezione <strong>di</strong> oggetti e la <strong>di</strong>stinzione tra terreno e ostacoli. Tutte<br />

capacità che i sistemi visivi biologici hanno sviluppato nel corso <strong>di</strong> milioni <strong>di</strong> anni <strong>di</strong><br />

evoluzione e i cui meccanismi, come abbiamo già osservato, risultano essere ancora<br />

parzialmente inaccessibili. La necessità da parte dei sistemi <strong>di</strong> visione artificiale <strong>di</strong><br />

emulare queste capacità, richiede <strong>di</strong> inventare tecniche e strumenti per l’estrazione <strong>di</strong><br />

queste informazioni elementari. I processi <strong>di</strong> estrazione <strong>di</strong> queste informazioni<br />

rappresentano le basi per elaborazioni <strong>di</strong> più alto livello, come la modellizzazione<br />

geometrica dell’ambiente circostante e la pianificazione, che hanno invece come<br />

obiettivo quello <strong>di</strong> interpretare la scena circostante sulla base <strong>di</strong> <strong>un</strong> modello del mondo<br />

più o meno strutturato.<br />

8


1.2. Le fasi <strong>di</strong> elaborazione delle immagini<br />

I processi che portano alla percezione visiva si collocano a livelli <strong>di</strong> astrazione <strong>di</strong>versi,<br />

sia in natura e che nel campo della visione artificiale. A questi <strong>di</strong>versi livelli <strong>di</strong><br />

astrazione corrispondono settori <strong>di</strong> ricerca <strong>di</strong>stinti: l’image processing, che a partire da<br />

certe immagini ne genera <strong>di</strong> nuove, cercando <strong>di</strong> isolare le informazioni utili dal rumore;<br />

la pattern classification, che invece classifica i frammenti <strong>di</strong> informazione ottenuti; ed<br />

infine la scene analysis, che a partire da <strong>un</strong>a descrizione simbolica elementare <strong>di</strong> <strong>un</strong>a<br />

scena, cerca <strong>di</strong> produrne <strong>un</strong>’altra più complessa, in <strong>un</strong> tentativo d’interpretazione basato<br />

sulla conoscenza del mondo esterno immagazzinata in precedenza.<br />

In letteratura (si vedano ad esempio [Ballard e Brown, 1982] e [Gonzales e Woods,<br />

1992]) le tecniche <strong>di</strong> analisi delle immagini vengono analogamente sud<strong>di</strong>vise in tre<br />

categorie: tecniche <strong>di</strong> basso livello (dal processo <strong>di</strong> acquisizione delle immagini al preprocessing),<br />

<strong>di</strong> me<strong>di</strong>o livello (dalla segmentazione delle immagini alla loro<br />

rappresentazione e descrizione) e <strong>di</strong> alto livello (in cui si ricerca <strong>un</strong>a interpretazione<br />

della scena osservata). Innanzitutto notiamo che le tre categorie non presentano <strong>un</strong>a<br />

separazione netta, <strong>un</strong>a precisa linea <strong>di</strong> confine. Tuttavia possiamo legare alle<br />

elaborazioni <strong>di</strong> basso livello l’obiettivo <strong>di</strong> ridurre il rumore ed esaltare quegli aspetti<br />

delle immagini che più ci interessano per le elaborazioni seguenti. Alle elaborazioni <strong>di</strong><br />

me<strong>di</strong>o livello possiamo ricondurre l’obiettivo <strong>di</strong> sud<strong>di</strong>videre l’immagine in regioni,<br />

in<strong>di</strong>viduare precisi elementi <strong>di</strong> interesse (regioni, confini, ecc.), per gi<strong>un</strong>gere ad <strong>un</strong>a<br />

caratterizzazione e a <strong>un</strong>a descrizione delle componenti dell’immagine <strong>di</strong> maggiore<br />

interesse. Infine le elaborazioni <strong>di</strong> alto livello sono finalizzate all’interpretazione della<br />

scena osservata e vogliono ricondurre gli elementi estratti nei processi <strong>di</strong> livello più<br />

basso ad <strong>un</strong> modello del mondo esterno, ad esempio per riconoscere oggetti specifici,<br />

pianificare traiettorie ed obiettivi, eccetera. E’ quin<strong>di</strong> chiaro che, salendo <strong>di</strong> gra<strong>di</strong>no in<br />

gra<strong>di</strong>no i tre livelli <strong>di</strong> tecniche, si richiede via via <strong>un</strong> grado più elevato <strong>di</strong> intelligenza e<br />

conoscenza a priori del mondo esterno per il raggi<strong>un</strong>gimento degli scopi: il preprocessing<br />

non ha nulla <strong>di</strong> “intelligente”, ma si limita a ripetere meccanicamente certe<br />

operazioni, l’interpretazione della scena richiede invece <strong>un</strong> alto grado <strong>di</strong> elasticità e <strong>di</strong><br />

9


conoscenza del mondo esterno. Per questo motivo le tecniche relative a quest’ultima<br />

categoria risultano essere più legate al loro specifico contesto applicativo.<br />

10


1.3. La visione artificiale e la robotica<br />

La visione artificiale trova nella robotica <strong>un</strong>a delle sue più importanti fonti <strong>di</strong><br />

applicazione al mondo reale. Se, come definita da Brady [Brady, 1985], “la robotica è la<br />

connessione intelligente tra percezione e azione”, o come <strong>di</strong>ce Arkin [Arkin, 1998], “<strong>un</strong><br />

robot intelligente è <strong>un</strong>a macchina capace <strong>di</strong> estrarre informazioni dal suo ambiente e<br />

usare la conoscenza sul suo mondo per muoversi in maniera sicura ed al fine <strong>di</strong><br />

perseguire <strong>un</strong>o scopo”, indubbiamente <strong>un</strong>a delle principali sorgenti <strong>di</strong> informazione sul<br />

mondo esterno, ossia <strong>un</strong>o degli strumenti <strong>di</strong> percezione migliori, non può che essere la<br />

visione.<br />

L’applicazione delle tecniche <strong>di</strong> visione artificiale ad <strong>un</strong> ambito così fortemente a<br />

contatto con la complessità del mondo reale, qual è la robotica, implica tutta <strong>un</strong>a serie <strong>di</strong><br />

problematiche aggi<strong>un</strong>tive, legate all’integrazione del sistema visivo e delle informazioni<br />

da esso prodotte con le restanti componenti del sistema robotico (<strong>un</strong> modulo <strong>di</strong><br />

ragionamento e presa delle decisioni, <strong>un</strong> modulo <strong>di</strong> implementazione delle decisioni<br />

tramite operazioni sul mondo esterno o sullo stato interno del sistema, eccetera), nonché<br />

alla necessità <strong>di</strong> interagire con l’ambiente in tempo reale. Nel corso degli ultimi due<br />

decenni si sono sperimentati innumerevoli approcci a queste problematiche. In generale<br />

potremmo <strong>di</strong>re che tutti questi approcci possono essere ricondotti a tre <strong>di</strong>verse famiglie<br />

<strong>di</strong> soluzioni (e quin<strong>di</strong> anche a tre tipologie architetturali): l’approccio gerarchico<br />

(introdotto da Marr [Marr, 1982]), che può essere fatto risalire al para<strong>di</strong>gma della<br />

percezione generalizzata, le visual routines (introdotte da Ullman [Ullman, 1985]), e la<br />

visione attiva (introdotta da Bajcsy [Bajcsy, 1988]), più legate invece al para<strong>di</strong>gma della<br />

percezione modulare. In realtà <strong>di</strong>fficilmente si può ricondurre <strong>un</strong> sistema <strong>di</strong> visione<br />

artificiale reale ad <strong>un</strong>o solo <strong>di</strong> questi modelli, che rappresentano com<strong>un</strong>que importanti<br />

p<strong>un</strong>ti <strong>di</strong> riferimento teorici e metodologici per inquadrare il problema. Analizziamo<br />

brevemente le caratteristiche <strong>di</strong> questi tre approcci.<br />

L’approccio gerarchico ha gettato le fondamenta <strong>di</strong> gran parte del lavoro svolto nel<br />

settore e ha influenzato anche gli altri due approcci che analizzeremo. Esso è <strong>un</strong><br />

11


approccio computazionale alla visione, in cui la percezione visiva è fondamentalmente<br />

<strong>un</strong> problema <strong>di</strong> elaborazione <strong>di</strong> informazione su più livelli gerarchici:<br />

− L’input del sistema è l’immagine (o più immagini) intesa come matrice <strong>di</strong> valori <strong>di</strong><br />

intensità luminosa (o insieme <strong>di</strong> matrici per le immagini a colori) e ass<strong>un</strong>ta come<br />

dato <strong>di</strong> partenza la cui formazione è <strong>un</strong> processo in<strong>di</strong>pendente dalle fasi successive.<br />

− Un primo sta<strong>di</strong>o elaborativo, che produce il cosiddetto raw primal sketch, è quello<br />

<strong>di</strong> estrazione <strong>di</strong> informazioni elementari dall’immagine: i contorni, le <strong>di</strong>scontinuità<br />

<strong>di</strong> intensità.<br />

− Il raw primal sketch contiene <strong>un</strong>’informazione ancora parziale, frammentaria,<br />

<strong>di</strong>pendente dal p<strong>un</strong>to <strong>di</strong> vista della telecamera. Ecco che con varie tecniche legate al<br />

gra<strong>di</strong>ente <strong>di</strong> luminosità (shape from sha<strong>di</strong>ng, shape from texture, shape from<br />

contour, il metodo delle immagini intrinseche, che cerca <strong>di</strong> combinare le precedenti,<br />

eccetera) si cerca <strong>di</strong> completare questa informazione e tramite la visione stereo<br />

ottenerne <strong>di</strong> aggi<strong>un</strong>tiva sulla profon<strong>di</strong>tà spaziale.<br />

− Si gi<strong>un</strong>ge quin<strong>di</strong> alla cosiddetta rappresentazione 2½D, in cui il tipo <strong>di</strong><br />

rappresentazione è sempre l’immagine ma tramite la componente <strong>di</strong> profon<strong>di</strong>tà si<br />

aggi<strong>un</strong>ge informazione tri<strong>di</strong>mensionale. Questa informazione è com<strong>un</strong>que sempre<br />

legata al p<strong>un</strong>to <strong>di</strong> vista della telecamera: su essa non si è ancora gi<strong>un</strong>ti a introdurre<br />

concetti <strong>di</strong> regione, oggetto, parte.<br />

− L’ultima fase <strong>di</strong> elaborazione, che porta alla rappresentazione 3D, cerca infine <strong>di</strong><br />

astrarsi dal p<strong>un</strong>to <strong>di</strong> vista della telecamera e <strong>di</strong> interpretare la scena in<strong>di</strong>viduando<br />

oggetti, caratterizzandone la forma in termini <strong>di</strong> orientazione delle superfici<br />

elementari che li compongono e spostando il sistema <strong>di</strong> riferimento negli oggetti<br />

in<strong>di</strong>viduati stessi, al preciso scopo <strong>di</strong> renderne la rappresentazione in<strong>di</strong>pendente dal<br />

p<strong>un</strong>to <strong>di</strong> vista.<br />

Quasi tutti i primi stu<strong>di</strong> ed esperimenti riguardanti la percezione robotica si sono rifatti<br />

al para<strong>di</strong>gma della percezione generalizzata: il sistema visivo veniva considerato come<br />

<strong>un</strong> modulo a sé stante, in<strong>di</strong>pendente dal resto, anche a causa delle <strong>di</strong>fficoltà tecniche<br />

inizialmente incontrate ed il notevole peso elaborativo richiesto. Inoltre, per assicurare<br />

in ogni situazione l’acquisizione <strong>di</strong> sufficiente informazione, ci si poneva l’obiettivo <strong>di</strong><br />

12


<strong>un</strong>a ricostruzione tri<strong>di</strong>mensionale completa della scena osservata. Questi due aspetti<br />

finivano per <strong>di</strong>ventare limiti del sistema stesso: si determinava <strong>un</strong>o spreco <strong>di</strong> risorse<br />

elaborative e il sistema era troppo rigido per operare efficientemente in tempo reale.<br />

Dalla rilevazione <strong>di</strong> questi limiti ebbe origine il secondo para<strong>di</strong>gma: quello <strong>di</strong><br />

percezione modulare. In questo caso il sistema sensoriale non è più <strong>un</strong>a componente<br />

in<strong>di</strong>pendente, ma interagisce e si mette al servizio degli altri moduli del robot. In<br />

pratica, <strong>di</strong> volta in volta, ricerca e rileva solamente le informazioni necessarie, senza<br />

andare oltre il bisogno <strong>di</strong> informazioni del robot.<br />

Innumerevoli sono gli approcci nati a partire da questo para<strong>di</strong>gma <strong>di</strong> interazione<br />

sistema-percezione. Essi presentano <strong>di</strong>versi gra<strong>di</strong> <strong>di</strong> influenza dello stato interno e della<br />

conoscenza pregressa del robot sul processo visivo in quasi tutte le sue fasi. Tra gli<br />

esempi più importanti dobbiamo ricordare la percezione attiva (con controllo interattivo<br />

del robot sul processo percettivo), la percezione action-oriented (dove le ipotesi <strong>di</strong><br />

azione e <strong>di</strong> goal influenzano il tipo <strong>di</strong> analisi e <strong>di</strong> elaborazione da eseguire), la<br />

percezione basata sulle aspettative e meto<strong>di</strong> focus-of-attention (dove le conoscenze<br />

immagazzinate sull’ambiente influenzano rispettivamente l’interpretazione e l’area <strong>di</strong><br />

interesse delle immagini). Tutti questi approcci fanno com<strong>un</strong>que riferimento alle due<br />

famiglie <strong>di</strong> cui abbiamo detto sopra: la visione attiva e le visual routines.<br />

La visione attiva introduce, rispetto al modello dell’approccio gerarchico, <strong>un</strong> importante<br />

grado <strong>di</strong> libertà: ogni livello elaborativo può influenzare i precedenti in <strong>un</strong>a sorta <strong>di</strong><br />

retroazione controllata dagli effettivi bisogni del sistema, ed in particolare inserisce in<br />

questo loop anche la fase <strong>di</strong> acquisizione delle immagini, fase quin<strong>di</strong> non più passiva<br />

ma <strong>di</strong> ricerca attiva.<br />

Infine le visual routines costituiscono <strong>un</strong> approccio <strong>un</strong> po’ più flessibile dei precedenti<br />

che si fonda sulla realizzazione e l’impiego <strong>di</strong> <strong>un</strong> insieme <strong>di</strong> routines elementari che<br />

operano elaborazioni finalizzate ad <strong>un</strong> preciso obiettivo. Vi sono routines più generiche<br />

(dette routines <strong>un</strong>iversali) finalizzate ad <strong>un</strong>a prima elaborazione delle immagini (cioè a<br />

far emergere le informazioni elementari) e quin<strong>di</strong> applicabili in molte situazioni, ed <strong>un</strong><br />

13


insieme <strong>di</strong> routines più specifiche della singola applicazione finalizzate a elaborazioni<br />

generalmente <strong>di</strong> alto livello. Secondo quest’ultimo para<strong>di</strong>gma, quin<strong>di</strong>, ogni sistema<br />

visivo non può che essere de<strong>di</strong>cato a specifici compiti e all’estrazione <strong>di</strong> informazioni<br />

legate alle applicazioni specifiche.<br />

Oggi, la visione artificiale ha due principali aree <strong>di</strong> applicazione nella robotica: il<br />

riconoscimento e l’interpretazione degli oggetti presenti nella scena (al servizio quin<strong>di</strong><br />

<strong>di</strong> manipolatori e robot mobili) e la navigazione in ambienti indoor o outdoor (al<br />

servizio <strong>di</strong> veicoli, trasportatori, robot mobili). In molte <strong>di</strong> queste applicazioni, da <strong>un</strong><br />

utilizzo combinato <strong>di</strong> sensori ottici e <strong>di</strong> range-sensors, sempre più ricercatori stanno<br />

attualmente spostando la propria attenzione verso sistemi basati esclusivamente sulla<br />

visione. Oltre alla semplicità, flessibilità e relativa economicità <strong>di</strong> questi, l’abbandono<br />

<strong>di</strong> altri tipi <strong>di</strong> sensori quali laser e ultrasuoni, consente <strong>di</strong> superare le non trascurabili<br />

problematiche <strong>di</strong> confronto e fusione tra dati provenienti da sistemi sensoriali<br />

<strong>di</strong>somogenei.<br />

14


1.4. Obiettivi generali e introduzione al progetto<br />

Il primo obiettivo <strong>di</strong> questa tesi riguarda il progetto e la realizzazione <strong>di</strong> <strong>un</strong> modulo<br />

software <strong>di</strong> gestione <strong>di</strong> <strong>un</strong> sistema <strong>di</strong> visione binoculare per robot mobili in tutti i suoi<br />

principali aspetti: a partire dalla calibrazione dei singoli sensori ottici, passando per la<br />

calibrazione stereo del sistema, per gi<strong>un</strong>gere a strumenti <strong>di</strong> analisi e interpretazione<br />

delle immagini e ad <strong>un</strong> sottomodulo <strong>di</strong> com<strong>un</strong>icazione dei risultati ottenuti. Il modulo <strong>di</strong><br />

visione può essere infatti visto come <strong>un</strong>o dei componenti del robot stesso in grado <strong>di</strong><br />

com<strong>un</strong>icare (ad esempio ad <strong>un</strong> modulo <strong>di</strong> pianificazione ed azione) i propri risultati.<br />

Durante la fase <strong>di</strong> progetto si è seguito come principio fondamentale quello della<br />

generalità, ossia si è voluto creare <strong>un</strong> modulo in grado <strong>di</strong> adattarsi facilmente a <strong>di</strong>verse<br />

applicazioni e a <strong>di</strong>versi sensori visivi, d<strong>un</strong>que non solo a <strong>un</strong>o specifico sistema<br />

binoculare e ad <strong>un</strong>a specifica applicazione. Allo stesso tempo però, buona parte del<br />

lavoro svolto ha riguardato il progetto e la realizzazione fisica <strong>di</strong> <strong>un</strong>o specifico sistema<br />

binoculare (denominato HOPS, Hybrid Omni<strong>di</strong>rectional/Pin-hole Sensor, si veda il<br />

paragrafo 2.2.2) nel cui utilizzo il modulo software sviluppato ha trovato la sua<br />

principale applicazione. Per il sensore HOPS è centrale l’idea dell’impiego combinato<br />

<strong>di</strong> <strong>un</strong> sensore cata<strong>di</strong>ottrico per la visione omni<strong>di</strong>rezionale, ed <strong>un</strong> sensore più tra<strong>di</strong>zionale<br />

(<strong>un</strong>a telecamera CCD che inquadra la regione frontale) con il quale con<strong>di</strong>vide parte del<br />

campo visivo fornendo quin<strong>di</strong> informazioni stereoscopiche.<br />

Il lavoro svolto può essere ricondotto a due <strong>di</strong>versi obiettivi <strong>di</strong> ricerca: <strong>un</strong>a prima parte<br />

ha riguardato la messa a p<strong>un</strong>to <strong>di</strong> tecniche per la calibrazione <strong>di</strong> sensori ottici, con<br />

particolare riferimento al sistema cata<strong>di</strong>ottrico impiegato (capitolo 2); <strong>un</strong>a seconda parte<br />

ha riguardato l’analisi delle immagini, ponendosi l’obiettivo generale <strong>di</strong> analizzare le<br />

informazioni stereoscopiche per rilevare la presenza <strong>di</strong> eventuali ostacoli al movimento<br />

del robot in ambienti semi-strutturati e non strutturati (capitolo 3 per la calibrazione<br />

stereo, capitolo 4 per l’analisi delle immagini). Questa seconda parte ha utilizzato il<br />

modello dell’inversione prospettica (paragrafo 2.1.2), ricavando informazione sulla<br />

presenza <strong>di</strong> ostacoli dall’analisi delle <strong>di</strong>fferenze tra le immagini generate per inversione<br />

15


prospettica a partire da quelle acquisite dalle due telecamere.<br />

In relazione a queste <strong>di</strong>verse parti della ricerca sono stati progettati e realizzati due<br />

<strong>di</strong>fferenti moduli software:<br />

− il modulo per la calibrazione (paragrafo 2.4), che raccoglie l’insieme degli algoritmi<br />

sperimentati, ne permettere l’applicazione a <strong>di</strong>versi tipi <strong>di</strong> sensori e situazioni<br />

(principio <strong>di</strong> generalità), ed è stato strutturato per permettere <strong>un</strong>a facile integrazione<br />

<strong>di</strong> nuovi algoritmi;<br />

− il software per il controllo della visione binoculare (capitolo 5), che risulta<br />

in<strong>di</strong>pendente dalla calibrazione e dal tipo <strong>di</strong> sensori, e che fornisce delle routines<br />

generiche per l’identificazione e l’analisi <strong>di</strong> ostacoli e per l’estrazione <strong>di</strong><br />

informazioni <strong>di</strong> basso livello, permettendo <strong>un</strong>a facile integrazione <strong>di</strong> routines più<br />

specifiche per singole applicazioni (come potrebbe essere la ricerca del pallone nel<br />

caso <strong>di</strong> applicazione in campo Robocup). Infine il software gestisce tutti gli aspetti<br />

del controllo hardware dei framegrabber e gli strumenti <strong>di</strong> inversione prospettica.<br />

L’architettura realizzata propone quin<strong>di</strong> alc<strong>un</strong>i aspetti computazionali tipici<br />

dell’approccio gerarchico e altri aspetti operativi più legati invece al para<strong>di</strong>gma delle<br />

visual routines.<br />

Allo scopo <strong>di</strong> facilitare l’integrazione <strong>di</strong> nuovi algoritmi nell’architettura dei moduli<br />

sopra descritti, si è deciso <strong>di</strong> progettare e realizzare il software con tecniche e strumenti<br />

orientati agli oggetti.<br />

16


Capitolo 2.<br />

Calibrazione <strong>di</strong> <strong>un</strong> sensore visivo<br />

2.1. Introduzione<br />

Obiettivo della prima parte del progetto è generare <strong>un</strong>a rimappatura, secondo la tecnica<br />

della prospettiva inversa, delle immagini acquisite dalle due telecamere sulla superficie<br />

<strong>di</strong> riferimento del pavimento.<br />

Questo capitolo descrive le fasi del progetto finalizzate alla calibrazione dei due sensori<br />

ottici utilizzati: la realizzazione fisica dell’apparato sperimentale, le tecniche <strong>di</strong><br />

calibrazione utilizzate, le problematiche emerse e infine il progetto del software <strong>di</strong><br />

calibrazione realizzato. Vengono quin<strong>di</strong> introdotte le tematiche riguardanti il processo <strong>di</strong><br />

formazione dell’immagine, le principali tecniche <strong>di</strong> calibrazione esistenti, la tecnica<br />

della prospettiva inversa e le sue applicazioni.<br />

17


2.1.1. Il processo <strong>di</strong> formazione dell’immagine e l’effetto<br />

prospettico<br />

Questo paragrafo inquadra le principali fasi e le problematiche del processo <strong>di</strong><br />

formazione delle immagini <strong>di</strong>gitali.<br />

Il processo <strong>di</strong> formazione dell’immagine <strong>di</strong> <strong>un</strong>a scena su <strong>un</strong>a superficie implica che, tra<br />

tutti i raggi luminosi riflessi o emessi dagli oggetti presenti nella scena, sia possibile<br />

eseguire <strong>un</strong>a selezione, in maniera che, idealmente, la luce proiettata su <strong>di</strong>versi p<strong>un</strong>ti<br />

della superficie <strong>di</strong> formazione dell’immagine provenga da <strong>di</strong>versi p<strong>un</strong>ti dello spazio<br />

della scena e, viceversa, <strong>di</strong>versi p<strong>un</strong>ti dello spazio proiettino luce su <strong>di</strong>versi p<strong>un</strong>ti della<br />

superficie. Lo scopo del processo è quin<strong>di</strong> produrre sulla superficie <strong>un</strong>a immagine che<br />

sia <strong>un</strong>a rappresentazione sufficientemente buona della scena. I fenomeni e le<br />

problematiche che intervengono in questo processo sono molteplici e hanno portato, nel<br />

corso della storia, a molteplici stu<strong>di</strong> sia scientifici che tecnologici.<br />

Per ottenere questo risultato <strong>di</strong> selezione il sistema <strong>di</strong> filtraggio ideale dal p<strong>un</strong>to <strong>di</strong> vista<br />

della risoluzione è lo stenoscopio, ossia <strong>un</strong>a camera oscura dotata <strong>di</strong> <strong>un</strong> piccolo foro su<br />

<strong>un</strong> lato che determina la formazione dell’immagine sul lato opposto. Questo foro lascia<br />

entrare nella scatola, tra tutti i raggi luminosi propagati da ogni singolo p<strong>un</strong>to dello<br />

spazio oggetto (ossia lo spazio tra il <strong>di</strong>spositivo <strong>di</strong> filtraggio e la scena stessa), solo<br />

quelli che sono <strong>di</strong>rezionati attraverso il foro. Quin<strong>di</strong> ad ogni p<strong>un</strong>to dello spazio oggetto<br />

corrisponderà nello spazio immagine (ossia lo spazio tra il filtro e la superficie <strong>di</strong><br />

formazione dell’immagine) <strong>un</strong> cono <strong>di</strong> luce, e quin<strong>di</strong> <strong>un</strong>a piccola ellisse luminosa (detta<br />

“<strong>di</strong>sco <strong>di</strong> Airy”) sulla superficie come contributo all’immagine. In altre parole, il <strong>di</strong>sco<br />

<strong>di</strong> Airy è la proiezione del foro sulla superficie nella <strong>di</strong>rezione della retta congi<strong>un</strong>gente<br />

il centro del foro ad <strong>un</strong> p<strong>un</strong>to dello spazio. La somma <strong>di</strong> tutte le ellissi prodotte da tutti i<br />

p<strong>un</strong>ti dello spazio genera l’immagine. Tanto più piccolo è il foro, tanto più alta sarà la<br />

risoluzione dell’immagine: infatti, dati due p<strong>un</strong>ti dello spazio molto vicini, i due <strong>di</strong>schi<br />

<strong>di</strong> Airy da essi prodotti avranno <strong>un</strong>a percentuale <strong>di</strong> sovrapposizione delle aree tanto<br />

minore quanto minore sarà il <strong>di</strong>ametro del foro. E’ proprio in questi termini che si può<br />

18


misurare la risoluzione dell’immagine prodotta. Il principale limite alla risoluzione<br />

dell’immagine è dovuto al fenomeno della <strong>di</strong>ffrazione che ci impe<strong>di</strong>sce <strong>di</strong> ridurre oltre<br />

<strong>un</strong> certo limite ben preciso (pari a <strong>un</strong> <strong>di</strong>ametro <strong>di</strong> 0,38 mm) le <strong>di</strong>mensioni del foro. Oltre<br />

questo limite infatti la <strong>di</strong>ffrazione determina <strong>un</strong> deterioramento dell’immagine,<br />

sfocandola.<br />

Il principale problema pratico dello stenoscopio, che lo rende non utilizzabile in casi<br />

pratici, è il fatto che tanto minore è la <strong>di</strong>mensione del foro, tanto minore è la quantità <strong>di</strong><br />

luce che lo può attraversare per <strong>un</strong>ità <strong>di</strong> tempo: per operare l’acquisizione <strong>di</strong><br />

<strong>un</strong>’immagine in tempi brevi risulta necessario avere fori <strong>di</strong> <strong>di</strong>mensione elevata, a<br />

scapito quin<strong>di</strong> della risoluzione. Da qui nasce l’esigenza, per recuperare la risoluzione<br />

persa, <strong>di</strong> sostituire il foro con <strong>un</strong> altro tipo <strong>di</strong> filtro, <strong>un</strong>a lente, in grado <strong>di</strong> concentrare<br />

tutta la luce proveniente da <strong>un</strong>’area più ampia, focalizzandola sulla superficie <strong>di</strong><br />

formazione dell’immagine. Questo vantaggio viene però pagato nei termini <strong>di</strong> <strong>un</strong>a<br />

proiezione non più ideale sulla superficie. L’ottica <strong>di</strong> tutte le telecamere, infatti, produce<br />

<strong>un</strong>a <strong>di</strong>storsione delle immagini (si veda figura 2.33), generalmente <strong>di</strong>stinta in <strong>un</strong>a<br />

componente ra<strong>di</strong>ale e <strong>un</strong>a tangenziale, <strong>di</strong> solito trascurabile. In quasi tutte le telecamere<br />

con angoli <strong>di</strong> apertura non superiori agli 80 gra<strong>di</strong> questo effetto <strong>di</strong> <strong>di</strong>storsione è<br />

com<strong>un</strong>que molto limitato e <strong>un</strong> primo modello grossolano dell’ottica può anche<br />

trascurarlo.<br />

Analizziamo ora il fenomeno che va sotto il nome <strong>di</strong> effetto prospettico. Trascurando la<br />

<strong>di</strong>storsione delle lenti (adottando quin<strong>di</strong> il cosiddetto modello <strong>pin</strong>-hole per l’ottica della<br />

telecamera), l’effetto prospettico è il processo <strong>di</strong> proiezione degli oggetti<br />

tri<strong>di</strong>mensionale della scena reale nelle corrispondenti forme sulla superficie <strong>di</strong><br />

formazione dell’immagine. In particolare questa proiezione si chiama proiezione<br />

geometrica planare, ed è caratterizzata dal fatto che la proiezione avviene su <strong>un</strong> piano e<br />

che le linee <strong>di</strong> proiezione sono delle rette. La retta <strong>di</strong> proiezione <strong>di</strong> ogni p<strong>un</strong>to della<br />

scena dello spazio oggetto o passa per <strong>un</strong>o specifico p<strong>un</strong>to detto centro <strong>di</strong> proiezione e<br />

da qui interseca il piano <strong>di</strong> proiezione, se si tratta <strong>di</strong> <strong>un</strong>a proiezione prospettica, o è<br />

parallela ad <strong>un</strong> asse <strong>di</strong> proiezione <strong>un</strong>ico per tutti i p<strong>un</strong>ti, se si tratta <strong>di</strong> <strong>un</strong>a proiezione<br />

ortografica.<br />

19


La proiezione prospettica è <strong>un</strong> processo che determina la per<strong>di</strong>ta <strong>di</strong> molte informazioni:<br />

da <strong>un</strong> mondo tri<strong>di</strong>mensionale si passa a <strong>un</strong>a descrizione bi<strong>di</strong>mensionale, quin<strong>di</strong> le<br />

informazioni su <strong>di</strong>mensione, profon<strong>di</strong>tà e posizione relativa degli oggetti si perdono. Si<br />

tratta <strong>di</strong> <strong>un</strong> processo non lineare e non reversibile. Inoltre questo fenomeno va a<br />

sommarsi a quello delle <strong>di</strong>storsioni introdotte dall’ottica.<br />

Sempre considerando <strong>un</strong> sistema ottico non <strong>di</strong>storcente e <strong>un</strong>a superficie <strong>di</strong> formazione<br />

dell’immagine planare, la relazione matematica tra le coor<strong>di</strong>nate <strong>di</strong> <strong>un</strong> p<strong>un</strong>to nello<br />

spazio osservato e quelle del suo corrispondente nell’immagine generata (ossia le<br />

equazioni della proiezione prospettica) è piuttosto elementare:<br />

x = ( X f ) / Z<br />

y = ( Y f ) / Z<br />

Laddove X, Y, Z sono le coor<strong>di</strong>nate nello spazio oggetto riferite ad <strong>un</strong> sistema <strong>di</strong><br />

coor<strong>di</strong>nate centrato nel centro ottico O (come si vede in figura 2.1), x, y le coor<strong>di</strong>nate<br />

sul piano dell’immagine F, f la <strong>di</strong>stanza focale del sensore, cioè la <strong>di</strong>stanza tra il centro<br />

ottico del sistema <strong>di</strong> lenti e il piano <strong>di</strong> formazione dell’immagine (oO). Questa relazione<br />

permette, conoscendo la <strong>di</strong>stanza focale, <strong>di</strong> determinare come ogni p<strong>un</strong>to dello spazio<br />

vada a generare <strong>un</strong> p<strong>un</strong>to dell’immagine ma, come abbiamo osservato precedentemente,<br />

questa relazione non è invertibile.<br />

20


Figura 2.1<br />

Nel processo descritto l’immagine generata sulla superficie è <strong>un</strong>’immagine continua.<br />

Quin<strong>di</strong>, per ottenere <strong>un</strong>’immagine <strong>di</strong>gitale, è necessario effettuarne <strong>un</strong> campionamento.<br />

Questo generalmente avviene tramite <strong>un</strong>a struttura a matrice <strong>di</strong> elementi sensibili alla<br />

luminosità detta CCD (Charge Coupled Device). Questo campionamento determina <strong>un</strong><br />

ulteriore deterioramento della qualità dell’immagine, sia in termini <strong>di</strong> risoluzione, che in<br />

termini <strong>di</strong> quantizzazione dei livelli <strong>di</strong> intensità luminosa.<br />

21


2.1.2. La calibrazione dei sensori visivi e la prospettiva<br />

inversa<br />

Un passo fondamentale verso il recupero <strong>di</strong> almeno <strong>un</strong>a parte delle informazioni perse<br />

durante il processo <strong>di</strong> formazione dell’immagine è la cosiddetta calibrazione del sensore<br />

visivo. Nel caso più generale e classico questa consiste nel ricavare le caratteristiche<br />

ottico-geometriche interne della telecamera, inerenti al modello adottato della<br />

telecamera stessa (dette parametri intrinseci), e quelle esterne, cioè l’orientazione ed il<br />

posizionamento della telecamera nello spazio (dette parametri estrinseci). A partire da<br />

<strong>un</strong>a precisa conoscenza <strong>di</strong> questi parametri e dall’utilizzo <strong>di</strong> informazioni sull’ambiente<br />

<strong>di</strong> lavoro, o derivanti da sistemi <strong>di</strong> visione stereoscopica, o derivanti ad esempio da<br />

sequenze <strong>di</strong> immagini, risulta possibile recuperare informazioni sulla profon<strong>di</strong>tà, la<br />

<strong>di</strong>stanza relativa e la forma degli oggetti. Insomma si può cercare <strong>di</strong> aggi<strong>un</strong>gere<br />

tri<strong>di</strong>mensionalità alla conoscenza che si ha della scena osservata. Tra le innumerevoli<br />

tecniche proposte in letteratura per la calibrazione <strong>di</strong> telecamere, la principale è<br />

probabilmente quella <strong>di</strong> Tzai [Tzai, 1997]. Un’altra tecnica molto importante è stata<br />

proposta da Faugeras [Faugeras, 1993].<br />

Un modo <strong>di</strong> impiegare le informazioni sul sistema ottico ricavate dalla sua calibrazione<br />

è quello che va sotto il nome <strong>di</strong> prospettiva inversa (IPM, Inverse Perspective<br />

Map<strong>pin</strong>g). Come descritto nello stu<strong>di</strong>o del processo <strong>di</strong> formazione dell’immagine, le<br />

immagini fornite da <strong>un</strong>a qualsiasi telecamera danno <strong>un</strong>a rappresentazione molto <strong>di</strong>storta<br />

della realtà: si ha <strong>un</strong>a componente <strong>di</strong> <strong>di</strong>storsione legata all’ottica della telecamera, ma<br />

soprattutto <strong>un</strong>a <strong>di</strong>storsione geometrica legata al processo <strong>di</strong> proiezione prospettica. La<br />

prospettiva inversa è <strong>un</strong> tecnica che vuol rimappare le informazioni presenti<br />

nell’immagine I su <strong>un</strong>a nuova immagine rettificata R che <strong>di</strong>a <strong>un</strong>a rappresentazione non<br />

<strong>di</strong>storta <strong>di</strong> ciò che appare su <strong>un</strong> qual<strong>un</strong>que piano P preso come riferimento. Questa<br />

mappatura può essere così descritta:<br />

Dati (k,m) le coor<strong>di</strong>nate del pixel dell’immagine I che rappresenta il<br />

p<strong>un</strong>to (x,y) del piano P (ed è questa la relazione (k(x,y),m(x,y)) che la<br />

22


calibrazione deve in<strong>di</strong>viduare) e I(k,m) la sua intensità, (i,j) le<br />

coor<strong>di</strong>nate del pixel dell’immagine rettificata R che rappresenta lo<br />

stesso p<strong>un</strong>to (x,y) del piano P e R(i,j) la sua intensità, a parte traslazioni<br />

nei sistemi <strong>di</strong> riferimento,<br />

i = ro<strong>un</strong>d(x / Sens),<br />

j = ro<strong>un</strong>d(y / Sens),<br />

R(i(x) , j(y)) = I(k(x,y) , m(x,y))<br />

Dove Sens è la l<strong>un</strong>ghezza del lato del quadrato <strong>di</strong> superficie del piano<br />

P rappresentata da <strong>un</strong> pixel dell’immagine R.<br />

Nel caso della navigazione in cui questo piano <strong>di</strong> riferimento è tipicamente il piano del<br />

pavimento il risultato <strong>di</strong> questa operazione è la generazione <strong>di</strong> <strong>un</strong>a mappa dell’ambiente<br />

a livello pavimento: questa immagine sembrerà <strong>un</strong>a fotografia scattata dall’alto verso il<br />

basso ad <strong>un</strong>a altezza considerevole. Tutti gli elementi della scena che non si trovano sul<br />

piano <strong>di</strong> riferimento risulteranno ulteriormente <strong>di</strong>storti. E’ chiaro però che riuscendo a<br />

<strong>di</strong>stinguere (sia tramite conoscenza a priori sull’ambiente <strong>di</strong> lavoro sia tramite l’impiego<br />

<strong>di</strong> visione stereo) ciò che giace e ciò che non giace su questo piano, si ottiene<br />

informazione sulla profon<strong>di</strong>tà, posizione relativa e <strong>di</strong>stanza fra gli oggetti nello spazio<br />

osservato.<br />

A seconda della specifica applicazione il piano <strong>di</strong> riferimento potrà essere <strong>di</strong>verso: oltre<br />

a quello del pavimento, si può ad esempio pensare <strong>di</strong> avere piani orizzontali a <strong>di</strong>verse<br />

altezze per stu<strong>di</strong>are la posizione <strong>di</strong> oggetti specifici dalle <strong>di</strong>mensioni note, o piani<br />

verticali per l’analisi <strong>di</strong> pareti (si veda [Adorni et al., 2000a]), eccetera. Le applicazioni<br />

possono essere molteplici: dalla navigazione indoor e outdoor, alla ricostruzione e<br />

analisi <strong>di</strong> specifici piani <strong>di</strong> <strong>un</strong>a scena (ad esempio pareti <strong>di</strong> palazzi), all’autolocalizzazione<br />

in ambienti strutturati. I vantaggi <strong>di</strong> ottenere <strong>un</strong>a tale descrizione<br />

dell’ambiente sono ovvi e infatti negli ultimi <strong>di</strong>eci anni si sono sviluppate molte<br />

applicazioni sfruttando questo strumento.<br />

L’applicazione <strong>di</strong> questa tecnica a campi quali il riconoscimento <strong>di</strong> ostacoli e la<br />

determinazione dello spazio libero, trova le sue origini in <strong>un</strong> progetto sviluppato nel<br />

23


1991 da Mallot H.A. [Mallot et al., 1991a]. Da allora, questa tecnica è stata utilizzata in<br />

numerosi progetti <strong>di</strong> cui alc<strong>un</strong>i esempi possono essere trovati in bibliografia, sia nel<br />

campo <strong>di</strong> navigazione indoor ([Adorni et al., 2000a], [Adorni et al., 2000b], [Bohrer et<br />

al., 1991], [Christensen et al., 1994], [Cornell et al., 1992], [Drocourt et al., 1999], [Lee<br />

et al., 1994], [Mallot et al., 1991a], [Mallot et al., 1991b], [Morgenthaler et al., 1990],<br />

[Santos e San<strong>di</strong>ni, 1996]), sia per la navigazione <strong>di</strong> veicoli su strada, ([Bertozzi e<br />

Broggi, 1996], [Bohrer et al., 1991], [Gang e Tae, 2000], [Onoguchi et al., 1998],<br />

[Storjohann et al., 1993], [Zielke et al., 1990]).<br />

Dobbiamo però notare come non sia sempre possibile conoscere con precisione tutti i<br />

parametri intrinseci ed estrinseci del sensore. D’altro conto, per applicare l’IPM, la<br />

conoscenza <strong>di</strong> tutti questi non è strettamente necessaria. L’obiettivo da raggi<strong>un</strong>gere è la<br />

determinazione <strong>di</strong> <strong>un</strong>a relazione tra la posizione dei pixel nell’immagine originale e la<br />

relativa posizione nell’immagine rettificata (quin<strong>di</strong> sul piano preso come riferimento<br />

nello spazio oggetto). Conoscendo tutti i parametri intrinseci ed estrinseci del sensore<br />

ottico, questa relazione è <strong>un</strong>a trasformazione geometrica relativamente semplice (si<br />

veda a riguardo il paragrafo 2.2.3.1). In caso contrario, è possibile cercare questa<br />

relazione attraverso tecniche <strong>di</strong> calibrazione più empiriche che, come descritto nei<br />

successivi paragrafi, presentano alc<strong>un</strong>i vantaggi operativi in sede <strong>di</strong> calibrazione, ma<br />

anche svantaggi dovuti alla necessità <strong>di</strong> operare <strong>un</strong>a nuova calibrazione completa ad<br />

ogni mo<strong>di</strong>fica, strutturale o <strong>di</strong> componentistica, del sensore visivo.<br />

24


2.2. <strong>Sensore</strong> cata<strong>di</strong>ottrico per la visione a 360 gra<strong>di</strong><br />

2.2.1. I cata<strong>di</strong>ottri<br />

Molte delle applicazioni nel campo della visione artificiale richiedono (o com<strong>un</strong>que<br />

possono trarre beneficio da) <strong>un</strong> ampio campo visivo. Esistono molteplici esempi a<br />

questo riguardo: la sorveglianza, la tele-conferenza, l’acquisizione <strong>di</strong> modelli per la<br />

realtà virtuale, l’operazione in spazi <strong>di</strong> gran<strong>di</strong> lavoro, e chiaramente il trasporto, l’autolocalizzazione,<br />

la stima del proprio movimento, la pianificazione.<br />

Purtroppo le telecamere convenzionali hanno, nella maggior parte dei casi, <strong>un</strong> campo<br />

visivo piuttosto limitato, e questo risulta essere spesso restrittivo per l’applicazione. Per<br />

cercare <strong>di</strong> ovviare a questa mancanza sono state introdotte numerose varianti ai sensori<br />

visivi classici. Fra le soluzioni proposte le più imme<strong>di</strong>ate riguardano l’utilizzo <strong>di</strong> più<br />

telecamere o <strong>di</strong> telecamere mobili (active vision). Un approccio alternativo molto<br />

efficace che permette <strong>di</strong> semplificare la gestione dell’input visivo è <strong>di</strong> accrescere il<br />

campo visivo utilizzando specchi in congi<strong>un</strong>zione alle tra<strong>di</strong>zionali telecamere. Per<br />

sensore cata<strong>di</strong>ottrico si intende app<strong>un</strong>to la combinazione <strong>di</strong> lenti e specchi posizionati<br />

in configurazioni appropriatamente stu<strong>di</strong>ate per ottenere <strong>un</strong> campo visivo molto<br />

superiore rispetto a quello del sensore effettivamente utilizzato. Il termine cata<strong>di</strong>ottrico<br />

deriva da “<strong>di</strong>ottrica”, la <strong>di</strong>sciplina degli elementi rifrangenti (le lenti) e la “catottrica”, la<br />

<strong>di</strong>sciplina delle superfici riflettenti (gli specchi).<br />

Se si vuole espandere il campo visivo in maniera isotropa, la migliore delle soluzioni è<br />

probabilmente quella <strong>di</strong> adottare specchi convessi con <strong>un</strong> asse <strong>di</strong> simmetria centrale<br />

(quin<strong>di</strong> a sezione tipicamente conica, sferica, ellittica, parabolica, eccetera) e in effetti<br />

quasi tutti i sistemi impiegati sono <strong>di</strong> questo tipo ([Svoboda e Pajdla, 2000], [Hicks e<br />

Bajcsy, 1999]). Posizionando l’asse ottico della telecamera in verticale e facendolo<br />

coincidere con l’asse <strong>di</strong> simmetria dello specchio si ottiene <strong>un</strong> ampio campo visivo in<br />

tutte le <strong>di</strong>rezioni.<br />

25


Nel campo della robotica, in particolare, ci si sta movendo verso ambienti <strong>di</strong> lavoro<br />

sempre meno strutturati e sempre più <strong>di</strong>namici che propongono numerosi problemi<br />

legati all’in<strong>di</strong>viduazione <strong>di</strong> caratteristiche generali dell’ambiente circostante, ad<br />

esempio, nell’auto-localizzazione (si veda [Zhang et al., 1999]), o nella ricerca <strong>di</strong><br />

oggetti <strong>di</strong> interesse. Questo richiede l’utilizzo <strong>di</strong> sensori visivi che <strong>di</strong>ano <strong>un</strong>a<br />

informazione più “globale” (anche se meno precisa e particolareggiata) sulla scena in<br />

cui il robot è immerso, e permettano quin<strong>di</strong> <strong>di</strong> ottenere <strong>un</strong>a veloce descrizione, magari<br />

sommaria ma più <strong>di</strong>rettamente traducibile in azione. E’ per questo che i cata<strong>di</strong>ottri<br />

vengono utilizzati in ambienti <strong>di</strong>namici come ad esempio quello della competizione<br />

Robocup ([Asada et al., 1998], [Marquez e Lima, 2000], [Bonarini et al., 2000]).<br />

L’impiego <strong>di</strong> cata<strong>di</strong>ottri quin<strong>di</strong> ha il vantaggio <strong>di</strong> raccogliere in <strong>un</strong>a sola immagine<br />

informazione riguardante <strong>un</strong>a vasta area, evitando i complessi meccanismi <strong>di</strong> controllo<br />

generalmente impiegati nella visione attiva; tuttavia vanno anche evidenziati due nuovi<br />

problemi connessi:<br />

− la riflessione della telecamera e del robot sullo specchio fa sì che la parte centrale<br />

dell’immagine, ossia quella caratterizzata da maggiore risoluzione e minori<br />

<strong>di</strong>storsioni, sia generalmente occupata dall’immagine riflessa del robot e non sia<br />

quin<strong>di</strong> utilizzabile per descrivere la scena circostante;<br />

− l’utilizzo congi<strong>un</strong>to <strong>di</strong> <strong>un</strong>a telecamera e <strong>di</strong> <strong>un</strong>o specchio concavo determina il<br />

sommarsi <strong>di</strong> effetti <strong>di</strong>storcenti <strong>di</strong> cui risulta spesso <strong>di</strong>fficile trovare la legge e quin<strong>di</strong><br />

compensare l’effetto.<br />

In particolare per quanto riguarda il primo <strong>di</strong> questi due aspetti va citato il progetto e<br />

utilizzo <strong>di</strong> specchi dalla forma non <strong>di</strong>storcente ([Hicks e Bajcsy, 1999], [Marchese e<br />

Sorrenti, 2000], [Marquez e Lima, 2000]), appositamente introdotti per limitare il<br />

problema. Anche lo specchio utilizzato in questo progetto cerca <strong>di</strong> limitare questo<br />

problema, impiegando <strong>un</strong>a forma progettata per dare <strong>un</strong>a più ampia descrizione, rispetto<br />

ai classici specchi conici, della regione circostante vicina al robot, senza pagare il<br />

prezzo <strong>di</strong> <strong>un</strong>a descrizione a risoluzione troppo bassa delle regioni più <strong>di</strong>stanti (si veda<br />

per i particolari [Bonarini et al., 2000]).<br />

26


Tutti questi aspetti fanno sì che tramite il cata<strong>di</strong>ottro si possano ottenere informazioni<br />

adeguate per <strong>un</strong>’analisi <strong>di</strong> massima <strong>di</strong> <strong>un</strong>’ampia scena (facilitando ad esempio l’autolocalizzazione,<br />

l’in<strong>di</strong>viduazione <strong>di</strong> oggetti ed elementi <strong>di</strong> possibile interesse per<br />

l’applicazione, eccetera), ma non sufficientemente dettagliate per <strong>un</strong>’analisi<br />

approfon<strong>di</strong>ta dei particolari (ad esempio per l’in<strong>di</strong>viduazione <strong>di</strong> ostacoli). Ecco perché<br />

<strong>un</strong>a buona soluzione è quella <strong>di</strong> associare <strong>un</strong> tipo <strong>di</strong>fferente <strong>di</strong> sensore al cata<strong>di</strong>ottro in<br />

modo da accrescere la qualità e la risoluzione dell’informazione legata ad <strong>un</strong>a specifica<br />

parte (ad esempio quella considerata frontale) del campo visivo e rendere più robusta<br />

l’analisi della scena. Un esempio può essere quello presentato da Clérentin [Clérentin et<br />

al., 2000] che associa al cata<strong>di</strong>ottro <strong>un</strong> range-finder laser. Anche nel nostro progetto è<br />

stato introdotto <strong>un</strong> secondo sensore, che in questo caso è <strong>un</strong>a telecamera CCD usata per<br />

inquadrare la regione considerata frontale al robot.<br />

In molti degli esempi <strong>di</strong> applicazioni visti a inizio paragrafo risulta essere interessante la<br />

proprietà, che alc<strong>un</strong>i cata<strong>di</strong>ottri presentano, <strong>di</strong> avere <strong>un</strong> singolo p<strong>un</strong>to <strong>di</strong> proiezione:<br />

ogni fascio luminoso che attraversa l’apertura dell’ottica, e che si era precedentemente<br />

riflesso sullo specchio, sarebbe passato per <strong>un</strong> singolo p<strong>un</strong>to (detto <strong>di</strong> proiezione) se non<br />

ci fosse stato lo specchio stesso. Si rende così molto semplice la generazione <strong>di</strong><br />

immagini a prospettiva pura e immagini panoramiche a partire da quelle acquisite dal<br />

cata<strong>di</strong>ottro, il che permette al sistema <strong>di</strong> visione <strong>di</strong> utilizzare tutte le più tra<strong>di</strong>zionali e<br />

testate tecniche <strong>di</strong> analisi delle immagini, nonché <strong>di</strong> presentare agli eventuali utenti<br />

immagini non <strong>di</strong>storte. Solo i cata<strong>di</strong>ottri che fanno uso <strong>di</strong> specchi con specifiche forme<br />

possono presentare (se adeguatamente progettati) questa proprietà, ossia specchi a<br />

sezione parabolica, ellittica ed iperbolica.<br />

Nel nostro caso, dato che le immagini provenienti dal sensore omni<strong>di</strong>rezionale vengono<br />

rielaborate per ottenere la simulazione <strong>di</strong> <strong>un</strong> p<strong>un</strong>to <strong>di</strong> vista <strong>di</strong> tipo bird-eye, ossia per<br />

creare <strong>un</strong>a “vista dall’alto”, questa proprietà del singolo p<strong>un</strong>to <strong>di</strong> proiezione non risulta<br />

essere rilevante, mentre molto importante è invece l’ampiezza del campo visivo<br />

combinata alla risoluzione con cui gli oggetti vengono visti a <strong>di</strong>stanza e la possibilità <strong>di</strong><br />

vedere oggetti molto vicini al robot.<br />

27


Un problema centrale che è stato affrontato nella prima parte della sperimentazione<br />

effettuata è quello della calibrazione del sensore cata<strong>di</strong>ottrico. Le <strong>di</strong>fficoltà incontrate<br />

sono legate sostanzialmente al fatto <strong>di</strong> non conoscere con precisione la forma dello<br />

specchio impiegato. Infatti, non solo questo non risulta, a causa dell’imprecisione della<br />

tecnologia <strong>di</strong> realizzazione impiegata, esattamente rispondente al progetto (si veda<br />

[Bonarini et al., 2000]), ma la sua superficie risulta abbastanza irregolare. Gli algoritmi<br />

sviluppati non hanno tuttavia perso in generalità e sono applicabili a qualsiasi tipo <strong>di</strong><br />

specchio e <strong>di</strong> telecamera.<br />

I prossimi paragrafi tratteranno innanzitutto dell’apparato sperimentale realizzato, per<br />

poi descrivere le <strong>di</strong>verse tecniche impiegate per la calibrazione del sensore e i risultati<br />

ottenuti.<br />

28


2.2.2. <strong>Realizzazione</strong> del prototipo<br />

E’ stato realizzato <strong>un</strong> prototipo sperimentale <strong>di</strong> sensore costituito da due sensori visivi:<br />

<strong>un</strong> sensore cata<strong>di</strong>ottrico per la visione omni<strong>di</strong>rezionale, e <strong>un</strong>a normale telecamera posta<br />

frontalmente. A questo sistema è stato dato il nome HOPS: Hybrid<br />

Omni<strong>di</strong>rectional/Pin-hole Sensor. Come si può osservare nelle figure 2.2-4, la struttura<br />

è costituita fondamentalmente da <strong>un</strong> cilindro in plexiglas, <strong>un</strong> ripiano circolare interno ad<br />

esso, <strong>un</strong>o specchio fissato sulla sommità del cilindro, due telecamere a CCD. Questo<br />

sistema è simile a quello descritto in [Clérentin et al., 2000], anche se in questo caso il<br />

cata<strong>di</strong>ottro è combinato con <strong>un</strong> sensore visivo che, utilizzato come tale e non come<br />

range-sensor, fornisce informazioni più ricche utilizzabili in <strong>di</strong>verse applicazioni. Nel<br />

caso specifico dell’applicazione sviluppata, come già detto, si utilizza la combinazione<br />

delle immagini acquisite dai due sensori visivi per la ricerca <strong>di</strong> ostacoli nell’area<br />

frontale al robot.<br />

Figura 2.2 Figura 2.3 Figura 2.4<br />

Nel prototipo realizzato, per la parte che costituisce il cata<strong>di</strong>ottro, <strong>un</strong>a delle due<br />

telecamere è fissata al centro del ripiano circolare ed è orientata verticalmente verso la<br />

specchio in maniera tale da far coincidere il suo asso ottico con l’asse dello specchio.<br />

29


Inoltre il ripiano circolare interno possiede <strong>un</strong> grado <strong>di</strong> libertà che gli permette <strong>di</strong> essere<br />

posizionato a <strong>di</strong>verse altezze. La seconda telecamera è invece posizionata sul ripiano <strong>di</strong><br />

plexiglas che poggia sopra lo specchio, orientata in modo tale da inquadrare l’area <strong>di</strong><br />

fronte al sistema. Sia la base del sistema che il ripiano della telecamera superiore sono<br />

entrambi dotati <strong>di</strong> <strong>un</strong> sistema per l’orientamento della struttura costituito da quattro<br />

coppie vite-molla utilizzate come regolatori <strong>di</strong> posizione tra due ripiani <strong>di</strong> plexiglas.<br />

Tramite la regolazione <strong>di</strong> queste è possibile orientare il piano della base dello specchio e<br />

il ripiano della telecamera superiore in modo che essi risultino paralleli al piano del<br />

pavimento, ottenendo quin<strong>di</strong> anche la verticalità dell’asso ottico del cata<strong>di</strong>ottro.<br />

Ve<strong>di</strong>amo ora più in particolare le caratteristiche dello specchio impiegato. Per il suo<br />

progetto si veda [Bonarini et al., 2000]. Come mostrato in figura 2.5, la sua forma <strong>di</strong><br />

progetto (la cui sezione è rappresentata dalla linea nera più spessa) è data<br />

dall’intersezione (con tangenza) <strong>di</strong> <strong>un</strong> cono e <strong>di</strong> <strong>un</strong>a sfera. La sfera ha <strong>un</strong> raggio <strong>di</strong> 6.6<br />

cm, il cono <strong>un</strong> angolo <strong>di</strong> apertura <strong>di</strong> circa 117 gra<strong>di</strong> ed <strong>un</strong>a base <strong>di</strong> raggio 8.9 cm. I due<br />

soli<strong>di</strong> si incontrano ad <strong>un</strong>a <strong>di</strong>stanza dall’asse del cono pari a 3.5 cm, cosicché lo<br />

specchio nel suo complesso raggi<strong>un</strong>ge <strong>un</strong>’altezza <strong>di</strong> 4.3 cm.<br />

Figura 2.5<br />

In realtà le tecnologie <strong>di</strong> lavorazione dell’acciaio utilizzate per la realizzazione <strong>di</strong><br />

specchi per cata<strong>di</strong>ottri, introducono spesso delle imprecisioni sia per quanto riguarda il<br />

profilo dello specchio che per la sua regolarità superficiale: nel nostro caso solo <strong>un</strong>a<br />

30


egione centrale e <strong>un</strong>a esterna dello specchio possono essere considerate corrispondenti<br />

al progetto, mentre tutta la regione interme<strong>di</strong>a è <strong>un</strong>a regione <strong>di</strong> passaggio dal profilo<br />

della sfera a quello del cono. Si sono inoltre osservate imprecisioni anche dal p<strong>un</strong>to <strong>di</strong><br />

vista della simmetria assiale (ossia la sezione perpen<strong>di</strong>colare all’asse non è<br />

perfettamente circolare ma piuttosto leggermente ellittica) e delle irregolarità locali a<br />

livello della superficie riflettente. Questi problemi hanno richiesto, per la calibrazione<br />

del cata<strong>di</strong>ottro, l’utilizzo <strong>di</strong> <strong>un</strong>a tecnica parzialmente empirica per il recupero delle<br />

<strong>di</strong>storsioni locali legate alle irregolarità osservate.<br />

Data la sua forma lo specchio non presenta <strong>un</strong> singolo p<strong>un</strong>to <strong>di</strong> proiezione, ma come<br />

osservato in precedenza, questo risulta essere utile solo nel caso <strong>di</strong> generazione e analisi<br />

<strong>di</strong> immagini panoramiche o prospettiche pure. Nella nostra situazione, invece, il p<strong>un</strong>to<br />

<strong>di</strong> arrivo del processo <strong>di</strong> calibrazione dovrà essere piuttosto <strong>un</strong>a inversione prospettica<br />

riferita al piano del pavimento (con la conseguente visione <strong>di</strong> tipo bird-eye). Il progetto<br />

della forma dello specchio è stato finalizzato a:<br />

− ottenere <strong>un</strong> campo visivo molto ampio mantenendo il più possibile alta la<br />

risoluzione degli oggetti ai margini <strong>di</strong> questo,<br />

− rendere minima l’occlusione del campo visivo da parte del robot stesso: esso,<br />

riflettendosi nello specchio, fa sì che l’area centrale dell’immagine sia “persa” e con<br />

l’utilizzo <strong>di</strong> più tra<strong>di</strong>zionali specchi conici determina la copertura della regione<br />

vicina al robot. Quin<strong>di</strong> oggetti vicini o a contatto con il robot possono risultare<br />

occlusi e non osservabili tramite il cata<strong>di</strong>ottro. In particolare in applicazioni quali la<br />

competizione Robocup (per la quale lo specchio è stato progettato) dove il robot<br />

deve identificare specifici oggetti, raggi<strong>un</strong>gerli e manipolarli, è fondamentale evitare<br />

che si verifichi questa occlusione.<br />

La soluzione è stata quella <strong>di</strong> adottare <strong>un</strong>o specchio con la regione centrale sferica, che<br />

riduce questo effetto <strong>di</strong> occlusione, e <strong>un</strong>a parte esterna conica che permette <strong>di</strong> ottenere<br />

<strong>un</strong> migliore compromesso fra campo visivo e risoluzione.<br />

La telecamera superiore, infine è posizionata lateralmente rispetto all’asse ottico del<br />

cata<strong>di</strong>ottro in maniera tale da ottenere <strong>un</strong>a maggiore <strong>di</strong>sparità stereo e quin<strong>di</strong> <strong>un</strong>a più<br />

facile estrazione delle informazioni tri<strong>di</strong>mensionali contenute nella coppia <strong>di</strong> immagini.<br />

31


2.2.3. Tecniche <strong>di</strong> calibrazione prospettica sperimentate<br />

La calibrazione del sensore cata<strong>di</strong>ottrico, come visto, ha l’obiettivo finale <strong>di</strong> ottenere<br />

<strong>un</strong>a corrispondenza tra la posizione dei p<strong>un</strong>ti del piano <strong>di</strong> riferimento (nel nostro caso<br />

quello del pavimento) e la posizione dei pixel nell’immagine acquisita dal cata<strong>di</strong>ottro<br />

stesso. In questo modo, sapendo da quale pixel ogni p<strong>un</strong>to del piano viene<br />

rappresentato, è imme<strong>di</strong>ata l’operazione <strong>di</strong> inversione della prospettiva per ottenere <strong>un</strong>a<br />

visione <strong>di</strong> tipo bird-eye.<br />

Come già precedentemente notato, <strong>un</strong> obiettivo primario <strong>di</strong> tutto il lavoro svolto è la<br />

generalità, ossia l’applicabilità delle routines e degli algoritmi impiegati a nuove,<br />

<strong>di</strong>verse situazioni. Per questo motivo il software realizzato è stato strutturato in maniera<br />

da poter essere esteso facilmente con nuovi algoritmi e soluzioni al problema della<br />

calibrazione, permettendo <strong>un</strong> facile adattamento e impiego con i più svariati tipi <strong>di</strong><br />

sensori ottici. Nel seguito vengono presentati i principali algoritmi <strong>di</strong> calibrazione<br />

sperimentati.<br />

Nel corso della ricerca svolta sul sensore cata<strong>di</strong>ottrico sono state progettate ed impiegate<br />

principalmente tre tecniche <strong>di</strong> calibrazione <strong>di</strong>fferenti: <strong>un</strong>a basata su <strong>un</strong> modello<br />

geometrico del sistema, <strong>un</strong>a seconda, più empirica, basata sull’impiego <strong>di</strong> campioni <strong>di</strong><br />

corrispondenza p<strong>un</strong>to-pixel e sull’interpolazione tra <strong>di</strong> essi, <strong>un</strong>a terza che trova <strong>un</strong> buon<br />

compromesso tra lo stu<strong>di</strong>o empirico del problema e la sua modellizzazione analitica.<br />

32


2.2.3.1. Tecnica <strong>di</strong> calibrazione geometrica o esplicita<br />

Questa tecnica <strong>di</strong> calibrazione utilizza <strong>un</strong> modello molto simile a quello classico<br />

impiegato da Tzai [Tzai, 1996]. Tramite la costruzione <strong>di</strong> <strong>un</strong> modello geometrico del<br />

sensore visivo fondato sulla conoscenza della posizione e dell’orientazione reciproca<br />

della telecamera e dello specchio, dei parametri intrinseci della telecamera, della forma<br />

dello specchio, della posizione e orientazione del piano <strong>di</strong> riferimento per l’inversione<br />

prospettica, il modello permette <strong>di</strong> calcolare la relazione tra pixel dell’immagine e p<strong>un</strong>ti<br />

del piano <strong>di</strong> riferimento. Per la telecamera si utilizza <strong>un</strong> modello <strong>pin</strong>-hole, ipotizzando<br />

che la <strong>di</strong>storsione introdotta dall’ottica sia sferica e trascurando <strong>un</strong>’eventuale<br />

componente tangenziale. In particolare, tra i parametri intrinseci della telecamera, solo<br />

gli angoli <strong>di</strong> apertura e il coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale dell’ottica risultano essere<br />

rilevanti ai fini del modello.<br />

Figura 2.6<br />

Con riferimento all’immagine in figura 2.6, il modello utilizzato permette <strong>di</strong> ricostruire<br />

il percorso che il fascio <strong>di</strong> luce L (rappresentato per semplicità con <strong>un</strong>a linea), incidente<br />

sull’apertura dell’ottica O, ha seguito per gi<strong>un</strong>gere sul piano <strong>di</strong> formazione<br />

dell’immagine I, passando attraverso la sua incidenza e riflessione sullo specchio M,<br />

fino a risalire al p<strong>un</strong>to della superficie del piano <strong>di</strong> riferimento S da cui esso è stato<br />

emesso. Si crea quin<strong>di</strong> <strong>un</strong>a relazione tra il p<strong>un</strong>to in posizione p sul piano <strong>di</strong> formazione<br />

33


dell’immagine (legato alla <strong>di</strong>rezione <strong>di</strong> incidenza del fascio luminoso sull’ottica e al<br />

coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale <strong>di</strong> questa) e il p<strong>un</strong>to del piano P. Questo metodo si<br />

basa sul presupposto che lo specchio, e più in generale il cata<strong>di</strong>ottro, abbia <strong>un</strong> asse <strong>di</strong><br />

simmetria verticale coincidente con l’asse ottico. In questo modo ad ogni p<strong>un</strong>to in<br />

posizione p <strong>di</strong>stante <strong>un</strong> valore d specifico dall’incidenza dell’asse ottico sul piano I<br />

corrisponde <strong>un</strong> p<strong>un</strong>to P <strong>di</strong>stante <strong>un</strong> valore D specifico dal p<strong>un</strong>to <strong>di</strong> incidenza dell’asse<br />

ottico sul piano S (perpen<strong>di</strong>colare a questo). Si crea quin<strong>di</strong> <strong>un</strong>a f<strong>un</strong>zione D(d), che<br />

permette <strong>di</strong> rimappare sul piano S l’immagine generata su I. Ve<strong>di</strong>amo nel dettaglio<br />

l’algoritmo utilizzato:<br />

1. dato <strong>un</strong> p<strong>un</strong>to p del piano <strong>di</strong> formazione dell’immagine (con riferimento<br />

all’immagine 2.5) <strong>di</strong> coor<strong>di</strong>nate (x p , y p ) riferite ad <strong>un</strong> sistema cartesiano xoy centrato<br />

nel p<strong>un</strong>to c <strong>di</strong> incidenza sul piano dell’asse ottico della telecamera ed espresse in<br />

<strong>un</strong>ità <strong>di</strong> pixel, se ne calcola la <strong>di</strong>stanza d da c stesso:<br />

d = v( x p ² + y p ²)<br />

2. si calcola l’inclinazione <strong>di</strong> incidenza sul centro ottico del raggio luminoso che ha<br />

generato nell’immagine il p<strong>un</strong>to p. Per far questo bisogna prima recuperare l’effetto<br />

della <strong>di</strong>storsione ra<strong>di</strong>ale (<strong>di</strong> coefficiente K) sul valore <strong>di</strong> d calcolando d 1 :<br />

d 1 = d (1 + K d²)<br />

3. si calcola l’angolo <strong>di</strong> incidenza a:<br />

a = arctan ( d 1 / f )<br />

con f <strong>di</strong>stanza focale effettiva della telecamera (ossia il segmento cO) espressa in<br />

<strong>un</strong>ità <strong>di</strong> pixel e definita come:<br />

f = (d i /2) / tan(a o /2)<br />

dove a o è l’apertura angolare orizzontale dell’ottica e d i la <strong>di</strong>mensione orizzontale in<br />

pixel dell’immagine (ma potrebbero essere anche quelle verticali);<br />

4. conoscendo l’altezza h del p<strong>un</strong>to O dal piano <strong>di</strong> riferimento, si calcola l’equazione<br />

f(X,Y) della retta passante per O con <strong>di</strong>rezione in<strong>di</strong>cata dall’angolo a e riferita ad <strong>un</strong><br />

sistema <strong>di</strong> riferimento XYZC centrato in C con asse Z verticale e coincidente con<br />

l’asse ottico della telecamera, X e Y paralleli a x e y, e orientati opport<strong>un</strong>amente.<br />

Dato che in realtà lo specchio è <strong>un</strong>a superficie <strong>di</strong> rotazione e quin<strong>di</strong> il sistema è<br />

simmetrico rispetto al suo asse centrale, possiamo limitarci allo stu<strong>di</strong>o<br />

34


dell’equazione f(R) con R <strong>di</strong>stanza sul piano <strong>di</strong> riferimento dal p<strong>un</strong>to C:<br />

f(R) = h + tan(a) R<br />

5. Tra i presupposti dell’algoritmo c’è la conoscenza della forma esatta dello specchio,<br />

f<strong>un</strong>zione ra<strong>di</strong>ale Z = g(R). Dalla soluzione del sistema delle due equazioni f(R) e<br />

g(R) si può ricavare il valore R p <strong>di</strong> R tale che f(R p ) = g(R p ), che rappresenta la<br />

<strong>di</strong>stanza dall’asse ottico dell’ incidenza del fascio luminoso L sullo specchio M. A<br />

partire dalla derivata g'(R) <strong>di</strong> g(R) in R p si può ottenere l’angolo <strong>di</strong> inclinazione b =<br />

arctan( g'(R p ) ) dello specchio nel p<strong>un</strong>to <strong>di</strong> incidenza e si può calcolare l’angolo <strong>di</strong><br />

salita s con cui il fascio luminoso è gi<strong>un</strong>to allo specchio a partire dal p<strong>un</strong>to P:<br />

s = p/2 – a – 2b<br />

6. Conoscendo s si può calcolare la <strong>di</strong>stanza D del p<strong>un</strong>to P dal centro C:<br />

D = R p + g(R p ) / tan(s)<br />

7. Infine le coor<strong>di</strong>nate (X p ,Y p ) <strong>di</strong> P sono semplicemente:<br />

X p = x p D / d<br />

Y p = y p D / d<br />

8. la look-up-table <strong>di</strong> inversione prospettica assocerà al pixel dell’immagine rettificata<br />

che descrive il p<strong>un</strong>to del piano <strong>di</strong> riferimento <strong>di</strong> coor<strong>di</strong>nate (X p ,Y p ) il pixel<br />

dell’immagine acquisita <strong>di</strong> coor<strong>di</strong>nate (ro<strong>un</strong>d(x p ),ro<strong>un</strong>d(y p )).<br />

In conclusione ciò che si deve conoscere per applicare l’algoritmo è: l’equazione ra<strong>di</strong>ale<br />

della forma dello specchio g(R) (che notiamo include anche l’altezza <strong>di</strong> questo sul piano<br />

<strong>di</strong> riferimento), il coefficiente <strong>di</strong> <strong>di</strong>storsione dell’ottica K, la <strong>di</strong>mensione in pixel delle<br />

immagini acquisite d i , l’angolo <strong>di</strong> apertura dell’ottica a o , l’altezza h del centro ottico O<br />

dal piano <strong>di</strong> riferimento.<br />

Questo algoritmo possiede il vantaggio <strong>di</strong> sud<strong>di</strong>videre tutti i componenti del cata<strong>di</strong>ottro<br />

e <strong>di</strong> analizzarli separatamente, in modo tale che la mo<strong>di</strong>fica <strong>di</strong> <strong>un</strong>o <strong>di</strong> essi o la<br />

riorganizzazione nello spazio del sistema comporti solamente la necessità <strong>di</strong> misurare i<br />

nuovi valori ass<strong>un</strong>ti dai parametri del modello (ad esempio l’altezza dello specchio dal<br />

suolo, il coefficiente <strong>di</strong> <strong>di</strong>storsione <strong>di</strong> questa, l’equazione della forma dello specchio)<br />

per ottenere <strong>un</strong>a nuova calibrazione del sistema. D’altro canto non sempre è possibile<br />

35


conoscere con precisione questi parametri e inoltre il sistema è molto sensibile anche a<br />

piccoli errori in alc<strong>un</strong>i <strong>di</strong> questi.<br />

L’applicazione <strong>di</strong> questo semplice algoritmo al nostro caso specifico ha dato alc<strong>un</strong>i<br />

problemi legati sostanzialmente all’approssimativa conoscenza della forma dello<br />

specchio utilizzato. Per testare l’algoritmo ci si è basati sulla forma dello specchio<br />

decisa in fase <strong>di</strong> progetto ma questa, come ci si è accorti, corrisponde solo parzialmente<br />

alla sua forma effettiva. Il progetto dello specchio prevede per la parte sferica <strong>un</strong> raggio<br />

<strong>di</strong> circa 6.6 cm, e per il cono <strong>un</strong> angolo <strong>di</strong> apertura <strong>di</strong> 31 gra<strong>di</strong>. La forma dello specchio<br />

derivante da questi valori è risultata non coincidere con la forma reale e per cercare <strong>di</strong><br />

trovare <strong>un</strong>a f<strong>un</strong>zione che potesse descriverla in modo più accurato, ma sempre<br />

basandosi sull’ipotesi della <strong>di</strong>visione della forma dello specchio in <strong>un</strong>a regione sferica e<br />

<strong>un</strong>a conica tra loro tangenti, si è cercato <strong>di</strong> trovare dei valori alternativi per il raggio<br />

della sfera e l’apertura del cono basandosi su dei campioni empiricamente acquisiti della<br />

f<strong>un</strong>zione d(D). Nei grafici riportati <strong>di</strong> seguito (in figura 2.7 e figura 2.8), vengono messe<br />

a confronto la curva d(D) ottenuta empiricamente per interpolazione <strong>di</strong> campioni <strong>di</strong><br />

coppie <strong>di</strong> p<strong>un</strong>to P - pixel p (la curva nera spessa) e quelle ottenute tramite l’algoritmo<br />

geometrico: per alc<strong>un</strong>i valori del raggio della sfera, mantenendo fisso il valore<br />

dell’angolo <strong>di</strong> apertura del cono, in figura 2.7; per alc<strong>un</strong>i valori dell’angolo <strong>di</strong> apertura<br />

del cono, mantenendo fisso il valore del raggio della sfera, in figura 2.8.<br />

In conclusione si è osservato che: la parte interna dello specchio viene meglio descritta<br />

da <strong>un</strong>a sfera <strong>di</strong> raggio 6.15 cm, quella esterna da <strong>un</strong> cono con angolo <strong>di</strong> apertura <strong>di</strong> 35<br />

gra<strong>di</strong>, mentre tutta la regione interme<strong>di</strong>a è <strong>un</strong>a transizione tra sfera e cono che non può<br />

essere modellizzata nel quadro <strong>di</strong> questa ipotesi cono-sfera.<br />

Questo algoritmo non è quin<strong>di</strong> stato utilizzato per la calibrazione <strong>di</strong> questo specifico<br />

cata<strong>di</strong>ottro, ma rimane pur sempre <strong>un</strong> buono strumento, efficace nel caso <strong>di</strong> utilizzo <strong>di</strong><br />

specchi realizzati con tecnologie a più alta precisione.<br />

36


160<br />

140<br />

120<br />

d (pixel)<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22<br />

D (x20cm)<br />

Figura 2.7<br />

180<br />

160<br />

140<br />

120<br />

d (pixel)<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22<br />

D (x20cm)<br />

Figura 2.8<br />

37


2.2.3.2. Tecnica <strong>di</strong> calibrazione empirica o implicita<br />

Invece <strong>di</strong> creare <strong>un</strong> modello articolato che descrive separatamente tutte le parti del<br />

sistema fisico (la telecamera con i suoi parametri intrinseci, lo specchio e la sua forma,<br />

il posizionamento reciproco <strong>di</strong> questi, il piano <strong>di</strong> riferimento, eccetera), per cercare <strong>di</strong><br />

ovviare ai problemi visti nel paragrafo precedente si è sviluppato <strong>un</strong> algoritmo che<br />

anziché basarsi su <strong>un</strong> modello analitico si fonda su basi strettamente empiriche.<br />

Ve<strong>di</strong>amone i passi principali nella versione più generale:<br />

− Si definiscono due sistemi <strong>di</strong> riferimento bi<strong>di</strong>mensionali cartesiani: <strong>un</strong>o (xoy)<br />

posizionato sul piano dell’immagine F, con <strong>un</strong>ità <strong>di</strong> misura pari al pixel, l’altro<br />

(XOY) posizionato sul piano <strong>di</strong> riferimento per l’inversione prospettica S, con <strong>un</strong>ità<br />

<strong>di</strong> misura pari a Sens (espressa ad esempio in centimetri).<br />

− Si raccolgono <strong>un</strong> insieme ? <strong>di</strong> N campioni empirici costituito da coppie <strong>di</strong> p<strong>un</strong>ti<br />

(p i ,P i ) con p i appartenente al piano dell’immagine F e P i al piano <strong>di</strong> riferimento S,<br />

tali che il pixel p i dell’immagine sia <strong>un</strong>a rappresentazione <strong>di</strong> <strong>un</strong> intorno del p<strong>un</strong>to P i<br />

(si veda la figura 2.9). Le coppie <strong>di</strong> campioni in ? dovranno essere rappresentativi<br />

<strong>di</strong> tutte le regioni <strong>di</strong> interesse del campo visivo, ed essere concentrati più<br />

densamente nelle regioni <strong>di</strong> maggior importanza: la precisione locale dell’inversione<br />

prospettica sarà infatti proporzionale a questa densità.<br />

− Per ogn<strong>un</strong>o dei p<strong>un</strong>ti G della porzione del piano S che viene rappresentata<br />

dall’immagine sul piano F, tale che G ? P i per ogni (p i , P i ) ? ? , si ricercano i tre<br />

p<strong>un</strong>ti P i primi vicini a G (tali che lo racchiudano nel triangolo <strong>di</strong> cui essi sono i<br />

vertici) e si opera <strong>un</strong>a semplice interpolazione lineare tra le posizioni dei p<strong>un</strong>ti p i<br />

associati ad essi trovando così la posizione del p<strong>un</strong>to g da associare a G (si veda la<br />

figura 2.8). In questo modo si riesce a rimappare tutta l’area <strong>di</strong> interesse<br />

dell’immagine sulla superficie <strong>di</strong> S.<br />

38


Figura 2.9<br />

Questa interpolazione lineare avviene secondo <strong>un</strong>a semplice regola: date le tre coppie <strong>di</strong><br />

p<strong>un</strong>ti campione (p 1 , P 1 ), (p 2 , P 2 ), (p 3 , P 3 ) con P 1 , P 2 , P 3 primi vicini <strong>di</strong> G che, come<br />

in<strong>di</strong>cato in figura 2.10, lo circondano, e dati R 1 , R 2 , R 3 le tre <strong>di</strong>stanze tra questi e G, si<br />

avrà che<br />

(1) x g = [ x p1 (R 2 R 3 ) + x p2 (R 1 R 3 ) + x p3 (R 1 R 2 ) ] / (R 1 R 2 + R 2 R 3 + R 1 R 3 );<br />

e chiaramente<br />

(2) y g = [ y p1 (R 2 R 3 ) + y p2 (R 1 R 3 ) + y p3 (R 1 R 2 ) ] / (R 1 R 2 + R 2 R 3 + R 1 R 3 ).<br />

39


Figura 2.10<br />

L’implementazione <strong>di</strong> questa tecnica può essere resa molto semplice se i p<strong>un</strong>ti Pi dei<br />

campione <strong>di</strong> ? vengono scelti su <strong>un</strong> reticolo regolare applicato al piano S quale può<br />

essere <strong>un</strong> reticolo a maglie quadrate o rettangolari o, come nel caso in questione, l<strong>un</strong>go<br />

linee <strong>di</strong>rettrici ra<strong>di</strong>ali passanti per il p<strong>un</strong>to <strong>di</strong> incidenza dell’asse ottico sul piano S. Ad<br />

esempio come mostrato in figura 2.11 si potrebbero scegliere come p<strong>un</strong>ti P i quattro<br />

serie <strong>di</strong> p<strong>un</strong>ti (quelli rossi) presi ad intervalli regolari l<strong>un</strong>go le quattro semirette <strong>di</strong>rettrici<br />

principali.<br />

Figura 2.11<br />

40


Scegliere in questo modo i p<strong>un</strong>ti campione risulta particolarmente efficace quando il<br />

sistema presenta <strong>un</strong> asse <strong>di</strong> simmetria ra<strong>di</strong>ale incidente perpen<strong>di</strong>colarmente nel centro O<br />

del piano S. Tramite questa ass<strong>un</strong>zione, <strong>di</strong>venta facile estendere l’algoritmo visto e<br />

calcolare la posizione <strong>di</strong> g in I da associare a G in S tramite delle semplici interpolazioni<br />

lineari tra coppie <strong>di</strong> p<strong>un</strong>ti campione (non più terne) la cui posizione è conosciuta in<br />

maniera imme<strong>di</strong>ata. Dato il p<strong>un</strong>to G, infatti, sulla base della sua <strong>di</strong>stanza dal centro del<br />

sistema <strong>di</strong> riferimento O, possiamo trovare banalmente che i quattro p<strong>un</strong>ti (sempre con<br />

riferimento alla figura 2.11) P 2 , P 3 , P 6 e P 7 lo racchiudono in <strong>un</strong> settore <strong>di</strong> corona<br />

circolare. Tramite interpolazione lineare l<strong>un</strong>go le due rette <strong>di</strong>rettrici coinvolte<br />

rispettivamente tra i p<strong>un</strong>ti P 2 , P 3 e tra i p<strong>un</strong>ti P 6 , P 7 si calcolano g 1 e g 2 associati a G 1 e<br />

G 2 (i p<strong>un</strong>ti l<strong>un</strong>go le <strong>di</strong>rettrici in questione che si posizionano alla stessa <strong>di</strong>stanza <strong>di</strong> G da<br />

O). Le formule per questa interpolazione lineare sono banalmente ricavate come<br />

riduzione al caso <strong>di</strong> due p<strong>un</strong>ti della (1) e della (2). Infine, grazie all’ipotesi vista sulla<br />

simmetria ra<strong>di</strong>ale, si può operare <strong>un</strong>’interpolazione l<strong>un</strong>go il tratto <strong>di</strong> circonferenza che<br />

<strong>un</strong>isce G 1 a G 2 passando per G, in questo caso però, invece <strong>di</strong> utilizzare come peso<br />

dell’interpolazione le <strong>di</strong>stanze R si utilizzano gli angoli a =G 1 -O-G e ß =G-O-G 2 :<br />

x g = (x g1 ß + x g2 a) / (p/2);<br />

y g = (y g1 ß + y g2 a) / (p/2).<br />

Alc<strong>un</strong>e osservazioni:<br />

− questo posizionamento dei p<strong>un</strong>ti P i campione ne determina <strong>un</strong>a densità decrescente<br />

dalla regione centrale verso l’esterno. Questo consentirà <strong>di</strong> ottenere <strong>un</strong>a inversione<br />

prospettica <strong>di</strong> precisione massima nelle vicinanze del robot e decrescente<br />

allontanandosi;<br />

− il numero <strong>di</strong> rette <strong>di</strong>rettrici dalle quali attingere p<strong>un</strong>ti campione <strong>di</strong>pende chiaramente<br />

dalla precisione con cui si vuole calibrare il sistema: all’aumentare del loro numero<br />

la calibrazione risulta più robusta nell’affrontare eventuali imperfezioni della<br />

simmetria ra<strong>di</strong>ale.<br />

41


Nel nostro caso si è scelto <strong>di</strong> utilizzare campioni presi da otto <strong>di</strong>rettrici equi<strong>di</strong>stanti<br />

angolarmente. Per quanto riguarda la rilevazione delle coppie <strong>di</strong> campioni, questa è<br />

<strong>un</strong>’operazione che viene fatta con l’ausilio <strong>di</strong> <strong>un</strong> pattern <strong>di</strong> regioni bianche e nere che si<br />

alternano regolarmente l<strong>un</strong>go <strong>un</strong> <strong>di</strong>rezione (si veda l’immagine in figura 2.12).<br />

Attualmente questa rilevazione viene fatta manualmente tramite l’osservazione <strong>di</strong><br />

immagini rappresentanti il pattern in posizioni specifiche. Per velocizzare e rendere più<br />

efficiente il processo <strong>di</strong> calibrazione, <strong>un</strong> dei possibili sviluppi futuri riguarda<br />

l’automatizzazione dell’intero processo. Infatti, in<strong>di</strong>pendentemente dal posizionamento<br />

dei campioni, questa tecnica <strong>di</strong> calibrazione ha lo svantaggio <strong>di</strong> richiedere <strong>un</strong>a nuova<br />

completa calibrazione ad ogni mo<strong>di</strong>fica del sistema visivo (che non sia <strong>un</strong>a semplice<br />

variazione <strong>di</strong> altezza del sensore nel suo complesso). In figura 2.12 è mostrato il pattern<br />

utilizzato per la calibrazione. Nelle figure 2.13, 2.14 e 2.15 si possono osservare i<br />

risultati ottenuti utilizzando <strong>un</strong> numero crescente <strong>di</strong> rette <strong>di</strong>rettrici (<strong>un</strong>a, quattro e otto)<br />

per l’acquisizione <strong>di</strong> coppie <strong>di</strong> campioni.<br />

Figura 2.12 Figura 2.13<br />

42


Figura 2.14 Figura 2.15<br />

Dall’osservazione dell’ultima immagine si può notare come in molte regioni siano<br />

presenti ancora notevoli <strong>di</strong>storsioni locali (si noti ad esempio la base della porta sulla<br />

destra dell’immagine). Queste <strong>di</strong>storsioni sono da attribuire in gran parte alla linearità<br />

dell’interpolazione utilizzata: usare <strong>un</strong>’interpolazione lineare equivale ad approssimare<br />

la forma dello specchio tramite <strong>un</strong> insieme <strong>di</strong> quadrilateri, superfici piane che accostate<br />

generano <strong>un</strong>a superficie a gra<strong>di</strong>ente <strong>di</strong>scontinuo. In realtà lo specchio ha <strong>un</strong>a superficie<br />

molto più continua e proprio per permettere al modello implicito dello specchio che<br />

viene generato nel processo <strong>di</strong> calibrazione <strong>di</strong> preservare questa continuità, si è adottata<br />

<strong>un</strong>a terza tecnica <strong>di</strong> calibrazione che costituisce <strong>un</strong> buon compromesso tra l’approccio<br />

analitico della tecnica esplicita e l’approccio empirico <strong>di</strong> quella implicita.<br />

43


2.2.3.3. Tecnica <strong>di</strong> calibrazione analitico-empirica<br />

Questa tecnica <strong>di</strong> calibrazione è <strong>un</strong>a estensione della precedente (calibrazione empirica)<br />

e ha lo scopo <strong>di</strong> correggere le imprecisioni dell’inversione prospettica introdotte dalla<br />

linearità della interpolazione eseguita tra i campioni usati. A partire dallo stesso insieme<br />

<strong>di</strong> campioni ? scelti sulle otto rette <strong>di</strong>rettrici (come nel caso precedente), si può definire<br />

F(R) come la f<strong>un</strong>zione che lega la <strong>di</strong>stanza R del p<strong>un</strong>to P dal centro O del sistema <strong>di</strong><br />

coor<strong>di</strong>nate del piano S alla <strong>di</strong>stanza r <strong>di</strong> <strong>un</strong> pixel p (associato a P per prospettiva<br />

inversa) dal centro dell’immagine o. Affinché F(R) sia effettivamente <strong>un</strong>a f<strong>un</strong>zione,<br />

sarebbe necessario ipotizzare <strong>un</strong>a perfetta simmetria assiale del sistema. Ciò nella<br />

pratica non è vero e quin<strong>di</strong> conviene limitare il dominio della f<strong>un</strong>zione ad <strong>un</strong>a singola<br />

semiretta nascente in O (cioè nel centro del piano <strong>di</strong> riferimento). Nell’ipotesi che il<br />

sistema, se non simmetrico assialmente, sia quantomeno ra<strong>di</strong>ale, questo limita il<br />

codominio <strong>di</strong> F(R) ad <strong>un</strong>a semiretta nascente in o (ossia nel centro dell’immagine).<br />

Possiamo ora definire <strong>di</strong> volta in volta per ogn<strong>un</strong>a della rette <strong>di</strong>rettrici scelte per i<br />

campioni <strong>un</strong>a f<strong>un</strong>zione F i (R) della quale le coppie (p i , P i ) associate a quella <strong>di</strong>rettrice, e<br />

quin<strong>di</strong> le relative <strong>di</strong>stanze r i ed R i dai centri o e O rappresentano rispettivamente dei<br />

campioni e dei p<strong>un</strong>ti <strong>di</strong> campionamento. Conoscere con precisione e per tutte le<br />

<strong>di</strong>rezioni possibili questa f<strong>un</strong>zione significa aver calibrato perfettamente il sistema.<br />

Nella calibrazione empirica si erano implicitamente calcolate delle approssimanti a<br />

queste f<strong>un</strong>zioni, e lo si era fatto tramite <strong>un</strong>a interpolazione lineare tra campioni vicini<br />

(chiamiamo queste approssimazioni I i (R)). Nel grafico in figura 2.16 sono riportati i<br />

risultati <strong>di</strong> queste approssimazioni l<strong>un</strong>go gli otto raggi <strong>di</strong>rettori impiegati.<br />

44


Figura 2.16<br />

Invece <strong>di</strong> eseguire questa imprecisa interpolazione si preferisce ora utilizzare delle<br />

f<strong>un</strong>zioni che non approssimano <strong>di</strong>rettamente le F i (R) ma i loro campioni (chiamiamole<br />

P i (R)). In particolar modo si usa <strong>un</strong> polinomio <strong>di</strong> sesto grado, che garantisce <strong>un</strong>a<br />

maggior continuità alle approssimanti <strong>di</strong> F i (R). Il grafico nella figura 2.17, rappresenta<br />

il confronto tra queste due <strong>di</strong>verse approssimazioni <strong>di</strong> <strong>un</strong>a F i (R): la linea nera è il<br />

polinomio <strong>di</strong> sesto grado e la linea gialla l’interpolazione lineare tra i p<strong>un</strong>ti ottenute a<br />

partire da campioni presi l<strong>un</strong>go <strong>un</strong>a singola <strong>di</strong>rettrice.<br />

45


Figura 2.17<br />

Questo polinomio approssimante sarà quin<strong>di</strong> quello che meglio si avvicina a tutti i p<strong>un</strong>ti<br />

campione, ma allo stesso tempo non passerà necessariamente per i campioni stessi:<br />

utilizzandolo si ottiene quin<strong>di</strong> <strong>un</strong> maggior grado <strong>di</strong> continuità ma si rischia <strong>di</strong> perdere in<br />

precisione laddove lo specchio presenti delle forti irregolarità locali. Queste due serie <strong>di</strong><br />

f<strong>un</strong>zioni approssimanti vengono quin<strong>di</strong> utilizzate in combinazione mo<strong>di</strong>ficando<br />

localmente le P i (R), laddove queste si <strong>di</strong>scostino oltre <strong>un</strong> certo limite (Lim) dai valori<br />

campionati, sulla base delle I i (R). In pratica si ridefinisce la specifica P i (R) come se<br />

stessa maggiorata localmente (in <strong>un</strong> intervallo pari a due campionature) fino a farla<br />

passare per il valore del campione. Se ad esempio per il campione k-esimo (posto a<br />

<strong>di</strong>stanza R k dal centro) l<strong>un</strong>go la <strong>di</strong>rettrice i-esima si ha che |P i (R k ) - I i (R k )| > Lim, allora<br />

la f<strong>un</strong>zione P i (R) viene mo<strong>di</strong>ficata in tutto l’intervallo (R k-1 … R k+1 ) nel seguente modo:<br />

P i (r) = P i (r) + (P i (R k ) - I i (R k )) (r – R k-1 ) / (R k – R k-1 ) per R k-1 < r < R k<br />

P i (r) = P i (r) + (P i (R k ) - I i (R k )) (R k+1 – r) / (R k+1 – R k ) per r in R k = r < R k+1<br />

46


Nelle figure è mostrato il confronto tra il risultato ottenuto tramite l’utilizzo delle<br />

approssimanti I i (R) (figura 2.18), P i (R) (figura 2.19), e della loro combinazione C i (R)<br />

(figura 2.20). Di seguito vengono presentati i risultati ottenuti, tramite quest’ultima<br />

tecnica <strong>di</strong> calibrazione, su alc<strong>un</strong>e coppie (originale - rettificata) <strong>di</strong> immagini (figure<br />

2.21, 2.22, 2.23, 2.24, 2.25, 2.26).<br />

Figura 2.18 Figura 2.19<br />

Figura 2.20<br />

47


Figura 2.21 Figura 2.22<br />

Figura 2.23 Figura 2.24<br />

48


Figura 2.25 Figura 2.26<br />

49


2.3. <strong>Sensore</strong> visivo frontale<br />

Come visto, nel sistema <strong>di</strong> visione artificiale realizzato, al sensore cata<strong>di</strong>ottrico è stato<br />

accostata <strong>un</strong>a telecamera tra<strong>di</strong>zionale (<strong>pin</strong>-hole) al fine <strong>di</strong> permettere <strong>un</strong>a più accurata<br />

analisi della scena posta frontalmente al robot. Infatti, la visione ottenuta tramite il<br />

cata<strong>di</strong>ottro è tipicamente caratterizzata da <strong>un</strong> ampio campo visivo, ma anche da <strong>un</strong>a<br />

bassa risoluzione, specialmente nelle zone più <strong>di</strong>stanti dal centro. L’aggi<strong>un</strong>ta <strong>di</strong> questo<br />

secondo sensore visivo permette, <strong>un</strong>a volta identificato <strong>un</strong> oggetto <strong>di</strong> interesse, o<br />

com<strong>un</strong>que in<strong>di</strong>viduata la <strong>di</strong>rezione da seguire, <strong>di</strong> analizzare più dettagliatamente e<br />

accuratamente la regione <strong>di</strong> spazio verso cui ci si muove. In particolare, <strong>un</strong>a delle<br />

applicazioni consentite dall’utilizzo combinato dei due sensori è la ricerca <strong>di</strong> ostacoli e<br />

quin<strong>di</strong> dell’area camminabile nello spazio visivo com<strong>un</strong>e.<br />

Il modello <strong>pin</strong>-hole utilizzato per le telecamere tra<strong>di</strong>zionali è noto e descritto ad<br />

esempio in [Mallot et al., 1991a], [Onoguchi et al., 1998], [Bertozzi et al., 1998],<br />

[Adorni et al., 2000a]. La calibrazione <strong>di</strong> <strong>un</strong>a telecamera consiste nella ricerca dei<br />

parametri che regolano il modello e che non sempre sono noti o facili da ottenere. Nel<br />

lavoro descritto è stata sperimentata <strong>un</strong>a tecnica <strong>di</strong> calibrazione ispirata a quella<br />

analitico-empirica impiegata nella calibrazione del sistema cata<strong>di</strong>ottrico.<br />

50


2.3.1. Variante della tecnica <strong>di</strong> calibrazione analitico-empirica<br />

Generiamo <strong>un</strong>a <strong>di</strong>scretizzazione dell’area del piano <strong>di</strong> riferimento appartenente al<br />

campo visivo tramite la semplice sovrapposizione <strong>di</strong> <strong>un</strong>a griglia a celle quadrate <strong>di</strong> lato<br />

pari a Sens (che nell’immagine rettificata è la <strong>di</strong>mensione dell’area rappresentata da<br />

ogni singolo pixel) con i lati paralleli alla proiezione sul piano dell’asse ottico della<br />

telecamera. Definiamo quin<strong>di</strong> <strong>un</strong> sistema <strong>di</strong> coor<strong>di</strong>nate XOY a valori <strong>di</strong>screti per<br />

identificare ogn<strong>un</strong>a <strong>di</strong> queste celle, con origine O sull’intersezione della verticale del<br />

centro ottico della telecamera col piano <strong>di</strong> riferimento. Notiamo che a questo p<strong>un</strong>to<br />

possiamo riferirci (analogamente a quanto accade per le immagini) a righe e colonne <strong>di</strong><br />

celle.<br />

Il proce<strong>di</strong>mento <strong>di</strong> calibrazione proposto si fonda su:<br />

1) la proprietà per cui, se la <strong>di</strong>storsione ra<strong>di</strong>ale dell’ottica fosse nulla, ad ogni riga<br />

dell’immagine corrisponderebbe <strong>un</strong>a retta orizzontale sul piano <strong>di</strong> riferimento del<br />

pavimento;<br />

2) la raccolta <strong>di</strong> <strong>un</strong> insieme ? <strong>di</strong> campioni (p i , P i , S i ) costituiti dalle terne: p i , pixel<br />

dell’immagine rettificata; P i , cella del piano <strong>di</strong> riferimento rappresentata<br />

nell’immagine dal pixel p i (o da <strong>un</strong> insieme <strong>di</strong> pixel tra cui p i , a seconda del valore<br />

<strong>di</strong> Sens); S i , definito meglio in seguito, qui semplicemente numero <strong>di</strong> pixel che,<br />

accostati <strong>un</strong>o all’altro, rappresentano <strong>un</strong>a l<strong>un</strong>ghezza nel piano <strong>di</strong> riferimento pari al<br />

lato della cella elementare.<br />

In realtà la <strong>di</strong>storsione dell’ottica non è nulla, ma si può ipotizzare che questa<br />

<strong>di</strong>storsione sia <strong>di</strong> tipo sferico e rilevante esclusivamente nella sua componente ra<strong>di</strong>ale<br />

(ipotesi valida dato che la telecamera presenta <strong>un</strong> angolo <strong>di</strong> apertura inferiore agli 80<br />

gra<strong>di</strong>, quin<strong>di</strong> piuttosto basso) e che quin<strong>di</strong> sia possibile identificare <strong>un</strong> coefficiente <strong>di</strong><br />

<strong>di</strong>storsione ra<strong>di</strong>ale (K) che sia costante in ogni p<strong>un</strong>to dell’immagine. Grazie<br />

all’in<strong>di</strong>pendenza dell’effetto della <strong>di</strong>storsione ra<strong>di</strong>ale dall’effetto prospettico, che ci<br />

permette <strong>di</strong> vederli come due blocchi in<strong>di</strong>pendenti posti in cascata, è possibile<br />

recuperare la <strong>di</strong>storsione dell’ottica tramite la semplice espansione dell’immagine<br />

51


descritta dalla formula (da applicare a tutti i pixel dell’immagine <strong>di</strong>storta):<br />

x u = x d (1 + K (x d ² + y d ²))<br />

y u = y d (1 + K (x d ² + y d ²))<br />

Dove (x d , y d ) sono le coor<strong>di</strong>nate del pixel dell’immagine originale <strong>di</strong>storta riferite ad <strong>un</strong><br />

sistema cartesiano con origine nel centro dell’immagine, mentre (x u , y u ) sono le<br />

coor<strong>di</strong>nate riferite allo stesso sistema cartesiano alle quali il pixel deve essere spostato.<br />

In questo modo l’immagine in figura 2.27 viene espansa nell’immagine non più <strong>di</strong>storta<br />

in figura 2.28.<br />

Figura 2.27 Figura 2.28<br />

Nell’immagine in cui è stata eliminata la <strong>di</strong>storsione vale la proprietà descritta al p<strong>un</strong>to<br />

1).<br />

I campioni da raccogliere vengono presi l<strong>un</strong>go <strong>un</strong>a specifica <strong>di</strong>rezione tale che i pixel p i<br />

appartengono alla colonna centrale dell’immagine, come in<strong>di</strong>cato in figura 2.29.<br />

52


Figura 2.29<br />

Qui si può notare come sia stato posizionato sul pavimento <strong>di</strong> fronte alla telecamera <strong>un</strong><br />

pattern <strong>di</strong> quadrati neri su sfondo bianco <strong>di</strong> <strong>di</strong>mensioni e posizione note, allo scopo <strong>di</strong><br />

permettere <strong>un</strong>a facile identificazione <strong>di</strong> specifici pixel (i p i ) nell’immagine. Scegliendo i<br />

pixel p i in corrispondenza dei p<strong>un</strong>ti <strong>di</strong> maggiore <strong>di</strong>scontinuità luminosa nella transizione<br />

da <strong>un</strong>a regione bianca a <strong>un</strong>a nera, e viceversa, l<strong>un</strong>go la retta evidenziata in rosso, i p<strong>un</strong>ti<br />

P i corrispondenti possono essere ricavati imme<strong>di</strong>atamente dalla geometria del pattern.<br />

Infine, gli S i relativi possono essere stimati con buona precisione tramite la misura della<br />

l<strong>un</strong>ghezza l in pixel delle linee rosse orizzontali evidenziate nell’immagine (figura 2.29)<br />

e tramite la conoscenza dell’effettiva larghezza spaziale L (in <strong>un</strong>ità <strong>di</strong> cella) dei quadrati<br />

neri. In particolare si avrà che:<br />

S i = l k / L<br />

(numero <strong>di</strong> pixel / cella)<br />

dove k è <strong>un</strong> fattore correttivo costante ricavato empiricamente per tener conto delle<br />

<strong>di</strong>verse <strong>di</strong>mensioni delle superfici rappresentate dai pixel in <strong>di</strong>verse posizioni su <strong>un</strong>a<br />

stessa riga dell’immagine: a pixel più vicini al centro <strong>di</strong> ogni riga corrisponderà <strong>un</strong>a<br />

superficie del piano <strong>di</strong> riferimento maggiore rispetto a quelli più lontani.<br />

53


Sono ora <strong>di</strong>sponibili tutti i dati necessari ad operare la calibrazione. Si noti come tra<br />

tutti i parametri intrinseci ed estrinseci della telecamera risulti necessario conoscere<br />

solamente il coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale dell’ottica. Analizziamo ora le principali<br />

fasi dell’algoritmo <strong>di</strong> calibrazione:<br />

a) con riferimento al capitolo 2.2.3.3., utilizzando le coppie <strong>di</strong> campioni (p i , P i ), si<br />

genera la f<strong>un</strong>zione <strong>di</strong>screta C(R) approssimante <strong>di</strong> F(R) l<strong>un</strong>go la retta rappresentata<br />

nell’immagine dalla colonna centrale (ve<strong>di</strong> figura 2.29). Anche in questo caso R ha<br />

il significato <strong>di</strong> <strong>di</strong>stanza tra la verticale del centro ottico sul piano <strong>di</strong> riferimento e la<br />

posizione della generica cella P sulla retta sul piano <strong>di</strong> riferimento rappresentata<br />

nell’immagine dalla colonna centrale; in questo caso r = C(R) rappresenta la<br />

<strong>di</strong>stanza in pixel, dal fondo dell’immagine, del pixel p, corrispondente per<br />

inversione prospettica a P e posizionato sulla colonna centrale dell’immagine. Si<br />

ottiene quin<strong>di</strong> la mappatura <strong>di</strong> inversione prospettica dei campioni P i l<strong>un</strong>go quella<br />

che potremmo definire la colonna centrale <strong>di</strong> celle del piano <strong>di</strong> riferimento.<br />

b) Si genera quin<strong>di</strong>, con lo stesso metodo, l’approssimante S(R) alla nuova f<strong>un</strong>zione<br />

G(R) i valori S i della quale rappresentano i campioni associati ai p<strong>un</strong>ti P i presi a<br />

specifiche <strong>di</strong>stanze R i dall’origine O, l<strong>un</strong>go la retta rappresentata nell’immagine<br />

dalla colonna centrale.<br />

c) Per completare la mappatura dell’inversione prospettica basta osservare che p<strong>un</strong>ti a<br />

pari <strong>di</strong>stanza dall’origine O vengono rappresentati con uguale risoluzione<br />

nell’immagine, e quin<strong>di</strong> la f<strong>un</strong>zione S(R) può essere applicata a qualsiasi cella del<br />

piano <strong>di</strong> riferimento che rientra nel campo visivo della telecamera, conoscendone la<br />

<strong>di</strong>stanza dal centro O. Quin<strong>di</strong>, fissata <strong>un</strong>a qual<strong>un</strong>que riga Y a <strong>di</strong> celle del piano <strong>di</strong><br />

riferimento, e detta X c l’ascissa della colonna centrale <strong>di</strong> celle che è stata già<br />

rimappata, ci si sposta in orizzontale e si associa ad ogni cella (X c + n, Y a ) (con n<br />

intero con modulo compreso tra 1 e la semilarghezza dell’area <strong>di</strong> interesse del<br />

piano) il pixel (x c , y c ) dell’immagine, baricentro dell’eventualmente gruppo <strong>di</strong> pixel<br />

che rappresentano la cella in questione, secondo la formula:<br />

54


y c = ro<strong>un</strong>d( C(Y a ) )<br />

x c = ro<strong>un</strong>d[( ? i S( D(X c + i , Y a ) ) ) + S( D(x c + n, y a ) ) / 2 ]<br />

sommatoria, quest’ultima, per i che va da 1 ad n-1 per n positivo, da<br />

n-1 a -1 per n negativo, dove la f<strong>un</strong>zione D(X,Y) è la <strong>di</strong>stanza (in<br />

<strong>un</strong>ità celle) della cella <strong>di</strong> coor<strong>di</strong>nate (X,Y) dal centro O.<br />

Il risultato della mappatura così effettuata è mostrato nelle figure 2.30 e 2.31.<br />

Figura 2.30 Figura 2.31<br />

55


2.4. <strong>Progetto</strong> del software per la calibrazione<br />

In questa sezione vengono descritte le metodologie, i principi e le principali fasi <strong>di</strong><br />

progettazione del modulo software per la calibrazione <strong>di</strong> sensori visivi.<br />

Come detto, il principio cui ci si è attenuti nel progetto è stato quello della generalità,<br />

ossia si è cercato <strong>di</strong> sviluppare algoritmi e architettura il più possibile in<strong>di</strong>pendenti dagli<br />

specifici sensori visivi utilizzati nel progetto. Alc<strong>un</strong>i degli algoritmi sviluppati sono del<br />

tutto generici e applicabili a qualsiasi tipo <strong>di</strong> sensore, altri sono invece più specifici,<br />

poiché si basano su particolari proprietà dei sensori utilizzati, quali ad esempio la<br />

presenza <strong>di</strong> <strong>un</strong> asse <strong>di</strong> simmetria o particolari forme del sensore.<br />

Il software è stato strutturato in modo da poter essere integrato con l’introduzione <strong>di</strong><br />

nuovi algoritmi in maniera molto semplice. In effetti, trattandosi <strong>di</strong> sperimentazione,<br />

sono state provate varie soluzioni e quin<strong>di</strong> la possibilità <strong>di</strong> avere <strong>un</strong>’architettura elastica<br />

e facilmente espan<strong>di</strong>bile è stato <strong>un</strong> obiettivo fondamentale.<br />

Gli algoritmi principali che sono stati implementati sono quelli presentati nei precedenti<br />

paragrafi <strong>di</strong> questo capitolo, e non saranno quin<strong>di</strong> ulteriormente descritti, saranno invece<br />

descritte in dettaglio le fasi <strong>di</strong> analisi dei requisiti e <strong>di</strong> progetto del sistema al quale gli<br />

algoritmi saranno applicati.<br />

56


2.4.1. Analisi dei requisiti<br />

Dato <strong>un</strong> sensore visivo da calibrare, l’ obiettivo del software progettato è quello <strong>di</strong><br />

costruire (tramite <strong>un</strong>o degli algoritmi visti precedentemente) <strong>un</strong>a “look-up-table” che<br />

descriva la mappatura <strong>di</strong> inversione prospettica, ossia la relazione tra la posizione dei<br />

p<strong>un</strong>ti sul piano <strong>di</strong> riferimento della calibrazione e la posizione dei pixel che li<br />

rappresentano nell’immagine acquisita dalla telecamera. In definitiva la look-up-table<br />

che dobbiamo generare dovrà ricevere in ingresso la posizione (X,Y) <strong>di</strong> <strong>un</strong> p<strong>un</strong>to sul<br />

piano, operare <strong>un</strong>a <strong>di</strong>scretizzazione sulla posizione <strong>di</strong> questo p<strong>un</strong>to (se questa non lo è<br />

già) e dare in uscita la posizione (x,y) del pixel relativo:<br />

x = Mx[ro<strong>un</strong>d(X / Sens)][ro<strong>un</strong>d(Y / Sens)],<br />

y = My[ro<strong>un</strong>d(X / Sens)][ro<strong>un</strong>d(Y / Sens)],<br />

dove: ro<strong>un</strong>d è <strong>un</strong>’operatore <strong>di</strong> arrotondamento all’intero più vicino, Sens è l’<strong>un</strong>ità <strong>di</strong><br />

misura in cui vogliamo muoverci nello spazio (o meglio il rapporto tra questa <strong>un</strong>ità <strong>di</strong><br />

misura e quella in cui sono espressi X e Y), Mx ed My sono due matrici contenenti i<br />

valori ricavati dalla calibrazione.<br />

In realtà, poiché sul piano <strong>di</strong> riferimento possiamo già operare <strong>un</strong>a <strong>di</strong>scretizzazione<br />

sud<strong>di</strong>videndolo in <strong>un</strong> reticolo <strong>di</strong> quadrati <strong>di</strong> lato Sens (sufficientemente piccolo per<br />

permetterci <strong>un</strong> accesso alle posizioni del piano con adeguata risoluzione, e ad esempio<br />

misurato in cm), non ci riferiremo ai p<strong>un</strong>ti dello spazio, ma alla posizione delle sue<br />

celle: la cella (X,Y) sarà quella il cui baricentro è posizionato, rispetto al sistema <strong>di</strong><br />

riferimento del piano, in (X*Sens,Y*Sens) cm. Quin<strong>di</strong> in generale l’accesso alla lookup-table<br />

sarà <strong>un</strong> semplice accesso ad <strong>un</strong>a matrice <strong>di</strong> coppie <strong>di</strong> valori.<br />

Oltre alla look-up-table vista, nel sistema si genera e gestisce anche la tabella inversa,<br />

che potremmo chiamare “tabella <strong>di</strong> localizzazione”: dato <strong>un</strong> pixel in<strong>di</strong>ca quale parte<br />

della superficie del piano <strong>di</strong> riferimento esso rappresenti, quin<strong>di</strong> permette <strong>di</strong> attribuire<br />

57


<strong>un</strong>a localizzazione sul piano <strong>di</strong> riferimento agli “oggetti” in<strong>di</strong>viduati nell’immagine<br />

acquisita.<br />

Nel <strong>di</strong>agramma <strong>di</strong> flusso dei dati mostrato in figura 2.32 sono riass<strong>un</strong>te tutte le<br />

f<strong>un</strong>zionalità che sono state realizzate nel software. Ve<strong>di</strong>amone brevemente <strong>un</strong>a<br />

descrizione:<br />

a) generazione delle “tabelle <strong>di</strong> calibrazione” (la look-up-table per la prospettiva<br />

inversa e la tabella <strong>di</strong> localizzazione): riceve in ingresso da file i dati riguardanti il<br />

tipo <strong>di</strong> calibrazione da effettuare (cioè l’algoritmo da impiegare), la <strong>di</strong>mensione<br />

delle immagini, la porzione <strong>di</strong> interesse del piano <strong>di</strong> riferimento, <strong>un</strong>a serie <strong>di</strong><br />

parametri legati all’algoritmo stesso e <strong>un</strong>a eventuale lista <strong>di</strong> campioni (per le<br />

tecniche <strong>di</strong> calibrazione empiriche). La tabella <strong>di</strong> localizzazione, se necessaria, viene<br />

generata per inversione della prima. Altro possibile flusso <strong>di</strong> dati è quello che<br />

permette <strong>di</strong> ricevere in ingresso la tabella <strong>di</strong> inversione prospettica (letta da file) e<br />

generare da essa per inversione la tabella <strong>di</strong> localizzazione.<br />

b) Salvataggio su file delle tabelle <strong>di</strong> sistema (in <strong>un</strong> apposito formato) allo scopo <strong>di</strong><br />

poter essere lette e utilizzate sia da questo software in <strong>un</strong> secondo tempo (ad<br />

esempio salvare su file la tabella <strong>di</strong> inversione prospettica per creare a partire da<br />

essa, in <strong>un</strong> secondo momento, la tabella <strong>di</strong> localizzazione), o (soprattutto) per<br />

utilizzarla con <strong>un</strong> software <strong>di</strong> gestione <strong>di</strong> acquisizione e rettifica <strong>di</strong> immagini.<br />

c) Lettura <strong>di</strong> immagini da file, rettifica tramite la tabella generata, salvataggio su file<br />

delle immagini rettificate. Questa f<strong>un</strong>zionalità rappresenta in parte il test del sistema<br />

poiché chiaramente permette <strong>un</strong> <strong>di</strong>retto controllo del risultato dell’elaborazione.<br />

Vengono supportati due formati <strong>di</strong> immagini non compressi: Portable PixelMap<br />

(PPM) per le immagini RGB e Portable GreyMap (PGM) per quelle in scala <strong>di</strong><br />

grigio.<br />

d) Accesso ai valori delle tabelle da parte <strong>di</strong> <strong>un</strong> utente esterno (quale potrebbe essere<br />

sia il programmatore in fase <strong>di</strong> test degli algoritmi, sia <strong>un</strong> eventuale software <strong>di</strong><br />

acquisizione ed analisi delle immagini che faccia uso delle tabelle <strong>di</strong> calibrazione).<br />

58


Figura 2.32<br />

59


2.4.2. <strong>Progetto</strong> del sistema<br />

A questo p<strong>un</strong>to si sono sud<strong>di</strong>vise le f<strong>un</strong>zionalità analizzate nella fase precedente in<br />

gruppi il più possibile coesi ed in<strong>di</strong>pendenti tra <strong>di</strong> loro. Ogn<strong>un</strong>o <strong>di</strong> questi gruppi sarà<br />

incluso in <strong>un</strong>o o più moduli che dovranno fornire tutte le f<strong>un</strong>zionalità specificate. Una<br />

prima sud<strong>di</strong>visione <strong>di</strong> alto livello può essere fatta <strong>di</strong>stribuendo le f<strong>un</strong>zionalità tra due<br />

moduli:<br />

− <strong>un</strong> modulo <strong>di</strong> generazione e gestione delle tabelle (che renda anche <strong>di</strong>sponibile<br />

l’accesso alle tabelle stesse) che chiameremo CALIBRA;<br />

− <strong>un</strong> modulo <strong>di</strong> impiego delle tabelle per la rielaborazione delle immagini che<br />

chiameremo IMAGELAB.<br />

Questa sud<strong>di</strong>visione in due moduli, seppur sbilanciata a livello <strong>di</strong> numero e complessità<br />

<strong>di</strong> f<strong>un</strong>zionalità da supportare, crea però <strong>un</strong>a netta <strong>di</strong>visione tra il primo, modulo centrale<br />

del sistema (con elevate possibilità <strong>di</strong> riutilizzo in successive evoluzioni o <strong>di</strong> supporto in<br />

altri sistemi), ed il secondo, modulo <strong>di</strong> supporto e test del f<strong>un</strong>zionamento del primo.<br />

Data inoltre la necessità <strong>di</strong> gestire molte tabelle bi<strong>di</strong>mensionali contenenti <strong>di</strong>versi tipi <strong>di</strong><br />

dati si è deciso <strong>di</strong> creare <strong>un</strong> terzo modulo in grado <strong>di</strong> gestire tutte le f<strong>un</strong>zioni legate alle<br />

tabelle e al loro accesso (comprendenti f<strong>un</strong>zionalità quali l’inizializzazione r<strong>un</strong>-time,<br />

l’accesso, la mo<strong>di</strong>fica, la cancellazione, ecc.), che chiameremo MATRICI.<br />

In figura 2.33 viene presentato <strong>un</strong> <strong>di</strong>agramma dei moduli e delle loro <strong>di</strong>pendenze<br />

utilizzando lo strumento <strong>di</strong> rappresentazione grafica detto Graphical Design Notation<br />

nel quale i rettangoli corrispondono a moduli, le frecce rappresentano la relazione USA<br />

(a meno che non provengano dall’esterno, nel qual caso si tratta <strong>di</strong> ingressi del modulo),<br />

le frecce <strong>di</strong> maggior spessore (quelle grigie) la relazione EREDITA DA (usata per le<br />

classi), il contenimento <strong>di</strong> <strong>un</strong> modulo in <strong>un</strong> altro in<strong>di</strong>ca la relazione COMPOSTO DA.<br />

Verrà inoltre usato il corrispondente strumento testuale detto Textual Design Notation<br />

per <strong>un</strong>a descrizione semiformale dei moduli stessi.<br />

60


Figura 2.33<br />

IMAGELAB utilizza le tabelle gestite da CALIBRA, quin<strong>di</strong> è evidente la sua<br />

<strong>di</strong>pendenza da esso. Per rendere più imme<strong>di</strong>ato l’utilizzo delle risorse richieste da<br />

IMAGELAB e quin<strong>di</strong> più veloce l’elaborazione complessiva, si è deciso <strong>di</strong> trasformare<br />

questa <strong>di</strong>pendenza in <strong>un</strong>a vera e propria ere<strong>di</strong>tarietà, cosicché IMAGELAB <strong>di</strong>viene <strong>un</strong>a<br />

sottoclasse <strong>di</strong> CALIBRA, pur mantenendo rispetto a quest’ultima il più stretto grado <strong>di</strong><br />

information hi<strong>di</strong>ng. In effetti, da <strong>un</strong> p<strong>un</strong>to <strong>di</strong> vista concettuale e <strong>di</strong> ruolo dei due moduli,<br />

questa trasformazione non è pienamente con<strong>di</strong>visibile. Tuttavia il motivo principale per<br />

fare ciò è la ricerca <strong>di</strong> efficienza nell’accesso ai dati delle tabelle. L’impostazione del<br />

progetto è quin<strong>di</strong> orientata agli oggetti, cosa che come vedremo permette anche<br />

<strong>un</strong>’efficace gestione delle tabelle del modulo MATRICI implementato come classe.<br />

Attraverso la Textual Design Notation, <strong>di</strong>amo ora <strong>un</strong>a descrizione più formale e<br />

completa dei moduli realizzati, a partire dalla definizione <strong>di</strong> alc<strong>un</strong>i tipi <strong>di</strong> dato utili a tali<br />

moduli.<br />

Type posizione;<br />

Made of xspazio:integer;<br />

yspazio:integer;<br />

-- variabili <strong>di</strong> definizione delle coor<strong>di</strong>nate <strong>di</strong> <strong>un</strong> p<strong>un</strong>to spaziale<br />

61


stato:integer;<br />

-- variabile <strong>di</strong> stato della struttura dati.<br />

End posizione;<br />

Type pixel;<br />

Made of xpixel:integer;<br />

ypixel:integer;<br />

-- variabili <strong>di</strong> definizione delle coor<strong>di</strong>nate <strong>di</strong> <strong>un</strong> pixel<br />

stato:integer;<br />

-- variabile <strong>di</strong> stato della struttura dati<br />

End pixel;<br />

Type <strong>di</strong>stanza;<br />

Made of raggioSpazio:integer;<br />

raggioImmagine:integer;<br />

-- variabili <strong>di</strong> definizione <strong>di</strong> <strong>un</strong>a corrispondenza ra<strong>di</strong>ale tra <strong>di</strong>stanze nella<br />

superficie <strong>di</strong> deprospettizzazione e nell’immagine<br />

stato:integer;<br />

-- variabile <strong>di</strong> stato della struttura dati<br />

End posizione;<br />

Type pixelpgm;<br />

Made of integer;<br />

-- Per como<strong>di</strong>tà ridefinisco il tipo integer come pixelpgm<br />

End pixelpgm;<br />

Type pixelppm;<br />

Made of R:integer;<br />

G:integer;<br />

B:integer;<br />

-- queste cono le componenti <strong>di</strong> Red Green Blue dei pixel dell’immagine ppm.<br />

End pixelppm;<br />

62


Ed ora passiamo ai moduli del sistema:<br />

Generic module MATRICI;<br />

-- E’ <strong>un</strong>a classe generica che permette la creazione r<strong>un</strong>-time e la gestione degli<br />

accessi a matrici bi<strong>di</strong>mensionali <strong>di</strong> dati <strong>di</strong> tipo TipoMatrice.<br />

-- Deve fornire le f<strong>un</strong>zionalità <strong>di</strong> allocazione <strong>di</strong> matrici <strong>di</strong> <strong>di</strong>mensioni definite a<br />

r<strong>un</strong> time, l’accesso in lettura e scrittura, la liberazione della memoria.<br />

Exports Procedure crea(xmatrice:integer, ymatrice:integer);<br />

-- alloca <strong>un</strong>a matrice <strong>di</strong> <strong>di</strong>menzione xmatrice, ymatrice<br />

F<strong>un</strong>ction acce<strong>di</strong>(x:integer, y:integer): TipoMatrice &;<br />

-- che permette <strong>di</strong> accedere ad <strong>un</strong> elemento della matrice.<br />

Procedure libera();<br />

-- che semplicemente libera la memoria allocata.<br />

Implementation<br />

-- per rendere veloce ed efficiente l’accesso alle matrici allocate bisogna rendere<br />

inline i meto<strong>di</strong> <strong>di</strong> accesso.<br />

-- <strong>un</strong>a buona implementazione dei meto<strong>di</strong> <strong>di</strong> accesso richiede l’overloa<strong>di</strong>ng<br />

dell’operatore <strong>di</strong> normale accesso agli array.<br />

End MATRICI;<br />

Module CALIBRA;<br />

-- E’ il modulo centrale che genera e gestisce l’accesso alle tabelle del sistema<br />

-- Fornisce le f<strong>un</strong>zionalità <strong>di</strong>: generazione delle tabelle, lettura e scrittura delle<br />

tabelle su file, accesso alle tabelle da utente esterno.<br />

Uses MATRICI;<br />

-- qui MATRICI viene usato per la rappresentazione della tabella <strong>di</strong> inversione<br />

prospettica e della tabella <strong>di</strong> localizzazione.<br />

-- TipoMatrici assume i valori “pixel” per la prima e “posizione” per la seconda.<br />

Exports F<strong>un</strong>ction Xspa(): integer;<br />

F<strong>un</strong>ction Yspa(): integer;<br />

F<strong>un</strong>ction Ximm(): integer;<br />

63


F<strong>un</strong>ction Ximm(): integer;<br />

-- questi meto<strong>di</strong> permettono ai moduli <strong>di</strong> utilizzo del presente <strong>di</strong> conoscere le<br />

<strong>di</strong>mensioni dell’area <strong>di</strong> piano <strong>di</strong> interesse e delle immagini su cui il modulo<br />

lavora.<br />

Procedure Calibra(file ingresso:string);<br />

-- si pone come procedura <strong>di</strong> costruzione dell’oggetto, lettura del file <strong>di</strong> dati <strong>di</strong><br />

ingresso e a seconda <strong>di</strong> questo esecuzione <strong>di</strong> <strong>un</strong>o dei meto<strong>di</strong> per la<br />

calibrazione (non elencati <strong>di</strong> seguito). Contempla anche il caso <strong>di</strong> lettura delle<br />

tabelle da file.<br />

Procedure Genera_tabella_localizzazione();<br />

Procedure Legge_tabella_localizzazione(nome file:string);<br />

Procedure Salva_tabella_prospettica(nome_file:string);<br />

Procedure Salva_tabella_localizzazione(nome_file:string);<br />

F<strong>un</strong>ction Acce<strong>di</strong>_tabella_prospettica(xspazio: intero, yspazio: intero): type<br />

pixel;<br />

-- Accede ad <strong>un</strong>a struttura <strong>di</strong> descrizione del pixel legata ad <strong>un</strong> p<strong>un</strong>to spaziale<br />

F<strong>un</strong>ction Acce<strong>di</strong>_tabella_localizzazione(xpixel: intero, ypixel: intero): type<br />

pixel;<br />

-- Accede ad <strong>un</strong>a struttura <strong>di</strong> descrizione del p<strong>un</strong>to spaziale legato and <strong>un</strong> pixel<br />

Implementation<br />

-- i due meto<strong>di</strong> <strong>di</strong> accesso alle tabelle non eseguono controlli sulla correttezza<br />

dei parametri attuali, perdendo quin<strong>di</strong> in sicurezza, ma guadagnando in velocità<br />

<strong>di</strong> accesso, p<strong>un</strong>to questo fondamentale nelle applicazioni in campo visivo. In<br />

ogni caso vengono forniti dal modulo tutti i dati necessari per fare eventuali<br />

controlli dall’esterno: cioè le <strong>di</strong>mensioni delle immagini e dell’area <strong>di</strong> piano<br />

trattati.<br />

End CALIBRA;<br />

Generic module IMAGELAB inherits CALIBRA;<br />

-- E’ il modulo <strong>di</strong> utilizzo delle tabelle <strong>di</strong> sistema.<br />

-- Deve fornire le f<strong>un</strong>zionalità <strong>di</strong> lettura delle immagini <strong>di</strong> input, generazione<br />

delle immagini <strong>di</strong> output, e <strong>di</strong> salvataggio delle stesse.<br />

64


Uses MATRICI;<br />

-- qui MATRICI viene usato per la rappresentazione dell’immagine <strong>di</strong> input e <strong>di</strong><br />

quella <strong>di</strong> output.<br />

-- TipoMatrice può assumere i valori pixelppm, pixelpgm.<br />

Exports Procedure Leggi_immagine(file immagine:string);<br />

Procedure Rettifica_immagine();<br />

Procedure Salva_immagine(file immagine:string);<br />

-- tutti e tre questi meto<strong>di</strong> sono ridefiniti per ogni tipo <strong>di</strong> immagine supportata.<br />

-- in particolare TipoImmagine può assumere il valore pixelppm e pixelpgm;<br />

Implementation<br />

-- l’elaborazione delle immagini dovrebbe avvenire tramite l’accesso alle tabelle<br />

<strong>di</strong> CALIBRA per ottenere le corrispondenze tra immagine <strong>di</strong> input e immagine<br />

<strong>di</strong> output.<br />

Infatti la posizione <strong>di</strong> <strong>un</strong> pixel nell’immagine <strong>di</strong> output corrisponde alla<br />

posizione dell’oggetto da esso rappresentato se esso si trova sul piano <strong>di</strong><br />

riferimento.<br />

End IMAGELAB;<br />

Per quanto riguarda in particolare la rettificazione delle immagini, questa avviene<br />

semplicemente creando <strong>un</strong>a nuova immagine dello stesso formato (cioè grayscale o<br />

RGB) nella quale ad ogni pixel venga fatta corrispondere la descrizione <strong>di</strong> <strong>un</strong>a cella del<br />

piano <strong>di</strong> riferimento con uguali coor<strong>di</strong>nate. L’algoritmo consiste semplicemente nel<br />

consultare per ogni cella dello spazio (e quin<strong>di</strong> per ogni pixel dell’immagine <strong>di</strong> output)<br />

la tabella <strong>di</strong> inversione prospettica. Questa ci fornisce la posizione del pixel<br />

dell’immagine <strong>di</strong> input (II) nel quale leggere i valori <strong>di</strong> luminosità da assegnare al pixel<br />

dell’immagine <strong>di</strong> output (IO):<br />

IO[X][Y] = II[ M[X][Y].xpixel ][ M[X][Y].ypixel ],<br />

con riferimento al simbolismo utilizzato nel capitolo precedente (2.4.1.)<br />

e considerando che nel progetto sviluppato Mx e My sono <strong>un</strong>ite<br />

in <strong>un</strong>a stessa struttura dati M, la tabella <strong>di</strong> inversione prospettica.<br />

65


2.4.3. La misura del coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale<br />

Viene fatto qui <strong>un</strong> breve cenno alla tecnica utilizzata per il recupero della <strong>di</strong>storsione<br />

ra<strong>di</strong>ale introdotta dall’ottica delle telecamere. Come già spiegato in capitoli precedenti,<br />

l’ottica delle telecamere introduce <strong>un</strong>a <strong>di</strong>storsione che, generalmente, quando l’angolo<br />

<strong>di</strong> apertura non sia molto elevato, può essere approssimata con <strong>un</strong>a <strong>di</strong>storsione<br />

ellissoidale. In questo caso limitiamo il nostro breve stu<strong>di</strong>o al caso particolare ma<br />

frequente <strong>di</strong> <strong>di</strong>storsione sferica. Distorsione sferica significa che potremmo immaginare<br />

l’immagine come su <strong>un</strong> foglio <strong>di</strong> carta il cui centro sia appoggiato ad <strong>un</strong>a sfera (e tale<br />

quin<strong>di</strong> da piegarsi e assumere <strong>un</strong>a forma arrotondata). Per poter recuperare la<br />

<strong>di</strong>storsione e vedere nell’immagine <strong>un</strong>a corretta rappresentazione della scena bisogna<br />

compiere <strong>un</strong>’operazione equivalente a prendere i vertici del foglio <strong>di</strong> carta e tenderli in<br />

modo da raddrizzare il foglio stesso.<br />

Trascurata ogni componente tangenziale, la <strong>di</strong>storsione può essere identificata da <strong>un</strong><br />

singolo parametro, coefficiente <strong>di</strong> <strong>di</strong>storsione ra<strong>di</strong>ale K e per “tendere il foglio” risulta<br />

sufficiente applicare <strong>un</strong>a espansione dell’immagine secondo le semplici formule<br />

presentate nel paragrafo 2.3.1.<br />

Il parametro K generalmente non è noto e per poter semplificare la sua misura è stato<br />

realizzato <strong>un</strong> software che permette <strong>di</strong> mostrare in tempo reale il risultato<br />

dell’espansione dell’immagine dato <strong>un</strong> certo valore <strong>di</strong> K e <strong>di</strong> far variare quest’ultimo a<br />

piacimento. In questo modo, utilizzando <strong>un</strong>’immagine <strong>di</strong> <strong>un</strong> pattern noto (ad esempio<br />

<strong>un</strong>a griglia <strong>di</strong> righe), è possibile ricercare <strong>un</strong> buon valore per K facendolo variare fino a<br />

che l’immagine espansa risulti rispettare la geometria del pattern (ossia quando le righe<br />

della griglia siano <strong>di</strong>ritte). Nelle due immagini seguenti (figura 2.34 e figura 2.35) sono<br />

riportate l’immagine originale e quella espansa (nell’immagine dell’interfaccia grafica<br />

del software realizzato) dove per pattern <strong>di</strong> esempio si sono utilizzate le righe <strong>di</strong><br />

separazione fra le piastrelle <strong>di</strong> <strong>un</strong> pavimento.<br />

66


Figura 2.34 Figura 2.35<br />

Si può notare come, mentre le righe nell’immagine <strong>di</strong> sinistra sono leggermente <strong>di</strong>storte<br />

e quin<strong>di</strong> non perfettamente rettilinee, nella seconda immagine (dove l’espansione è<br />

responsabile delle linee nere) la <strong>di</strong>storsione è stata recuperata.<br />

67


Capitolo 3.<br />

Calibrazione <strong>di</strong> <strong>un</strong> sistema binoculare<br />

3.1. La visione stereo<br />

Le <strong>di</strong>fferenti prospettive sotto le quali i nostri due occhi vedono, determinano delle<br />

piccole <strong>di</strong>fferenze (<strong>di</strong>sparità stereo) nel posizionamento degli oggetti osservati nelle due<br />

singole viste monoculari della scena. Il sistema visivo umano è in grado <strong>di</strong> utilizzare<br />

queste <strong>di</strong>sparità per stimare la profon<strong>di</strong>tà della scena e la <strong>di</strong>stanza, forma e posizione<br />

relativa degli oggetti. Le due viste monoculari vengono <strong>un</strong>ite e rielaborate in <strong>un</strong>a<br />

rappresentazione non più bi<strong>di</strong>mensionale ma tri<strong>di</strong>mensionale della scena osservata.<br />

La visione stereoscopica è stata approfon<strong>di</strong>tamente stu<strong>di</strong>ata per molto tempo e il<br />

problema fondamentale alla sua base è l’estrazione <strong>di</strong> informazioni stereoscopiche<br />

elementari a partire dalle immagini acquisite: bisogna poter associare ad ogni pixel<br />

dell’immagine <strong>di</strong> destra <strong>un</strong> pixel (rappresentante la stessa parte <strong>di</strong> <strong>un</strong> oggetto) <strong>di</strong> quella<br />

<strong>di</strong> sinistra, ottenendo in questo modo <strong>un</strong>a in<strong>di</strong>cazione (<strong>di</strong>pendente dalle posizioni <strong>di</strong><br />

questi due pixel) sulla <strong>di</strong>sparità tra le due immagini. Ottenere <strong>un</strong>a corretta e veloce<br />

stima delle <strong>di</strong>sparità è reso <strong>di</strong>fficile dal fatto che ulteriori ingenti <strong>di</strong>fferenze tra le due<br />

viste emergono a causa <strong>di</strong> fenomeni quali l’occlusione tra oggetti, le riflessioni<br />

speculari, ecc.<br />

A prima vista questo problema è <strong>di</strong> natura bi<strong>di</strong>mensionale, cosa che complicherebbe<br />

ancora <strong>di</strong> più la sua soluzione, ma in realtà, con semplici considerazioni, è possibile<br />

trasformare il problema in mono<strong>di</strong>mensionale: da <strong>un</strong>’analisi della geometrica del<br />

sistema risulta che p<strong>un</strong>ti corrispondenti <strong>di</strong> oggetti 3D sono rappresentati nelle due<br />

immagini su specifiche linee dette linee epipolari. Quin<strong>di</strong>, data <strong>un</strong>a riga dell’immagine<br />

68


<strong>di</strong> destra, ad essa competerà <strong>un</strong>a linea dell’immagine <strong>di</strong> sinistra secondo <strong>un</strong>a relazione<br />

<strong>di</strong>pendente dalla geometria del sistema e la ricerca delle <strong>di</strong>sparità potrà limitarsi ad <strong>un</strong>a<br />

ricerca e ad <strong>un</strong> matching <strong>di</strong> <strong>di</strong>scontinuità <strong>di</strong> colore o intensità su righe, alla soluzione<br />

quin<strong>di</strong> <strong>di</strong> <strong>un</strong> problema mono<strong>di</strong>mensionale. Evidentemente questo richiede <strong>un</strong>a<br />

calibrazione del sistema binoculare per recuperare le <strong>di</strong>storsioni introdotte dalle ottiche<br />

e per mettere in relazione tra <strong>di</strong> loro le righe delle immagini.<br />

Quello appena descritto è il caso classico <strong>di</strong> calibrazione <strong>di</strong> <strong>un</strong> sistema binoculare. Nel<br />

nostro caso specifico, in realtà, la situazione è <strong>di</strong>versa: il proce<strong>di</strong>mento seguito si basa<br />

sul modello dell’inversione prospettica e quin<strong>di</strong>, limitandosi all’estrazione <strong>di</strong><br />

informazioni stereo legate ad <strong>un</strong> solo specifico piano (gli oggetti o giacciono sul piano o<br />

non ne fanno parte), non serve cercare le <strong>di</strong>sparità dei singoli pixel ma basta operare <strong>un</strong>a<br />

sottrazione pixel a pixel delle due immagini, per poi analizzarne le <strong>di</strong>fferenze. Prima <strong>di</strong><br />

analizzare i particolari del processo <strong>di</strong> calibrazione, vale la pena <strong>di</strong> notare come in ogni<br />

caso, anche non adottando il modello dell’inversione prospettica, non avremmo potuto<br />

operare con la tecnica suddetta dato che lo specchio utilizzato nel cata<strong>di</strong>ottro non<br />

presenta <strong>un</strong> singolo p<strong>un</strong>to prospettico. Non sarebbe stato quin<strong>di</strong> possibile (se non<br />

passando per <strong>un</strong> processo <strong>di</strong> calibrazione assai più complicato) gi<strong>un</strong>gere a immagini<br />

prospettiche pure, passo in<strong>di</strong>spensabile affinché valga il principio delle linee epipolari.<br />

Il problema <strong>di</strong> calibrazione binoculare è in realtà molto più semplice <strong>di</strong> quello basato sul<br />

metodo delle linee epipolari. Dall’inversione prospettica delle due immagini stereo, si<br />

generano due descrizioni (mappe) del piano <strong>di</strong> riferimento del pavimento, che<br />

coincidono laddove rappresentano qualcosa che effettivamente risiede su questo piano,<br />

e <strong>di</strong>fferiscono laddove invece si presenta <strong>un</strong> oggetto che emerge dal piano: la<br />

calibrazione stereo consiste solamente nell’identificare quali pixel debbano essere<br />

confrontati con quali, tenendo conto che le due immagini rettificate possono avere scale<br />

<strong>di</strong>verse (ossia la porzione <strong>di</strong> piano rappresentata da <strong>un</strong> pixel può non essere la stessa per<br />

entrambe le immagini). La soluzione sarà utilizzare per il confronto <strong>un</strong>a semplice rototraslazione<br />

<strong>di</strong> <strong>un</strong>a immagine rispetto all’altra (con <strong>un</strong>’eventuale fattore <strong>di</strong> scala).<br />

Vedremo nel prossimo paragrafo come questa soluzione è stata realizzata nel nostro<br />

sistema.<br />

69


Come ultima considerazione si noti che il calcolo della <strong>di</strong>sparità stereo, evidentemente<br />

possibile per ogni p<strong>un</strong>to dell’immagine nel caso in cui si abbiano due telecamere<br />

tra<strong>di</strong>zionali, non è così imme<strong>di</strong>ata nel nostro caso specifico: la presenza dello specchio<br />

fa sì che nell’immagine da cata<strong>di</strong>ottro ogni pixel sia legato ad <strong>un</strong>a prospettiva <strong>di</strong>fferente<br />

e <strong>di</strong>pendente dall’orientazione del piano tangente allo specchio nel p<strong>un</strong>to <strong>di</strong> riflessione<br />

per il quale passa il fascio luminoso che genera il pixel stesso. Quin<strong>di</strong>, se la telecamera<br />

superiore fosse posizionata con il centro ottico nelle vicinanze dell’asse ottico del<br />

cata<strong>di</strong>ottro, potrebbe verificarsi che per alc<strong>un</strong>i pixel le due prospettive coincidano e<br />

quin<strong>di</strong> in loro corrispondenza si avrebbe l’annullamento delle <strong>di</strong>fferenze stereo. Per<br />

scongiurare questa eventualità la telecamera superiore è stata posizionata lateralmente<br />

rispetto a quest'asse.<br />

70


3.2. Soluzione roto-traslazionale<br />

Come detto, entrambe le immagini rettificate sono <strong>un</strong>a rappresentazione <strong>di</strong> <strong>un</strong>a porzione<br />

del piano <strong>di</strong> riferimento. Di esse, basta prendere in considerazione la parte in com<strong>un</strong>e.<br />

In figura 3.1 è rappresentato il campo visivo delle due telecamere: in giallo quello del<br />

cata<strong>di</strong>ottro, in blu quello della telecamera frontale e in verde la parte in com<strong>un</strong>e. “C” è<br />

la proiezione sul pavimento del centro ottico della telecamera frontale ed “A”<br />

l’intersezione dell’asse ottico del cata<strong>di</strong>ottro con il pavimento. In questa immagine è<br />

stato volutamente all<strong>un</strong>gato il campo visivo della telecamera frontale per mostrare come<br />

sia possibile sovrapporre solamente <strong>un</strong>a parte <strong>di</strong> questo; in realtà tutto il campo visivo<br />

della telecamera frontale è contenuto in quello del cata<strong>di</strong>ottro.<br />

Figura 3.1<br />

Nelle figure 3.2 e 3.3 rispettivamente, sono invece presentate le immagini rettificate da<br />

cata<strong>di</strong>ottro e da telecamera frontale ottenute da <strong>un</strong>a scena del campo Robocup. In esse si<br />

ha <strong>un</strong>a rappresentazione delle due rispettive porzioni del piano del pavimento<br />

inquadrato. Si fissi <strong>un</strong> sistema <strong>di</strong> riferimento xoy per la telecamera frontale centrato in C<br />

e con asse y <strong>di</strong>rezionato come la bisettrice del campo visivo, e <strong>un</strong>o XOY per il<br />

cata<strong>di</strong>ottro (ma potrebbe essere <strong>un</strong> qualsiasi sensore) centrato in A e con asse Y<br />

71


<strong>di</strong>rezionato verso il fronte convenzionale del robot e infine <strong>un</strong> terzo sistema <strong>di</strong><br />

riferimento apb del robot, anch’esso per localizzare p<strong>un</strong>ti sul piano <strong>di</strong> riferimento e con<br />

b <strong>di</strong>rezionato esattamente come Y. Notiamo che nel caso considerato (ma questo non<br />

sarà vero in generale) il sistema <strong>di</strong> riferimento del robot coincide con quello del<br />

cata<strong>di</strong>ottro. Obiettivo della calibrazione stereo è <strong>di</strong> trovare quelle trasformazioni dei<br />

sistemi <strong>di</strong> riferimento dei due sensori visivi che li porta a coincidere con il sistema <strong>di</strong><br />

riferimento del robot. Queste trasformazioni sono delle roto-traslazioni definite da tre<br />

parametri: R è la rotazione in ra<strong>di</strong>anti, Dx la coor<strong>di</strong>nata sull’asse a (quello del sistema <strong>di</strong><br />

riferimento del robot) del centro del sistema <strong>di</strong> riferimento in questione (O o o), Dy<br />

analogamente sull’asse b (si veda la figura 3.4 come esempio per <strong>un</strong> singolo sistema <strong>di</strong><br />

riferimento). Questi parametri, per ogn<strong>un</strong>o dei due sensori ottici, si possono determinare<br />

nel seguente modo:<br />

a) si posiziona <strong>un</strong> pattern predefinito (come può essere quello rappresentato in figura<br />

3.2) in <strong>un</strong>a posizione nota rispetto al sistema <strong>di</strong> riferimento del robot, e quin<strong>di</strong> si<br />

conoscono le posizioni <strong>di</strong> certi p<strong>un</strong>ti (ad esempio (a p ,b p ) per il p<strong>un</strong>to P) del pattern<br />

rispetto al sistema apb;<br />

b) si acquisisce <strong>un</strong>’immagine per sensore visivo;<br />

c) si estrapolano dalla rettificazione <strong>di</strong> queste le posizioni relative ai sistemi <strong>di</strong><br />

riferimento xoy e XOY dei p<strong>un</strong>ti corrispondenti ((x p , y p ) e (X p ,Y p )).<br />

In questo modo abbiamo ottenuto dei campioni delle due trasformazioni <strong>di</strong> sistema <strong>di</strong><br />

riferimento che cerchiamo. Se il sistema fosse esente da rumore e da errori <strong>di</strong><br />

quantizzazione basterebbero tre p<strong>un</strong>ti per identificare i tre parametri richiesti per la<br />

trasformazione (sarebbe <strong>un</strong> semplice sistema lineare a tre equazioni e tre incognite), ma<br />

poiché questo non accade conviene campionare su <strong>un</strong> numero maggiore <strong>di</strong> p<strong>un</strong>ti<br />

(multiplo <strong>di</strong> tre) e, ad esempio, me<strong>di</strong>are i valori ottenuti per R, Dx, Dy da <strong>di</strong>verse terne<br />

<strong>di</strong> campioni. O come alternativa meno empirica utilizzare la tecnica dei minimi quadrati<br />

per minimizzare gli errori sui valori dei parametri.<br />

72


Figura 3.2 Figura 3.3<br />

Figura 3.4<br />

73


Capitolo 4.<br />

L’elaborazione delle immagini<br />

e l’obstacle detection<br />

4.1. Utilizzazione <strong>di</strong> HOPS per problemi <strong>di</strong> visione artificiale<br />

Il sensore HOPS realizzato prevede, come abbiamo visto, da <strong>un</strong>a parte la possibilità <strong>di</strong><br />

impiego del cata<strong>di</strong>ottro per <strong>un</strong>’analisi poco particolareggiata ma globale della scena<br />

circostante: applicazioni quali l’auto-localizzazione, la ricerca su tutta la regione<br />

circostante al sistema <strong>di</strong> eventuali elementi <strong>di</strong> interesse, come potrebbe essere il pallone<br />

in <strong>un</strong>a partita della Robocup, trovano grossi vantaggi nell’uso <strong>di</strong> <strong>un</strong> sensore <strong>di</strong> quel tipo.<br />

Mentre l’altra telecamera può essere utilizzata per <strong>un</strong>’analisi a maggiore risoluzione<br />

della scena presente <strong>di</strong> fronte al robot.<br />

L’uso congi<strong>un</strong>to delle informazioni provenienti dalle due telecamere è in realtà solo <strong>un</strong>a<br />

delle possibilità <strong>di</strong> impiego <strong>di</strong> HOPS, ed inoltre, in applicazioni <strong>di</strong> visione binoculare,<br />

HOPS non dà vantaggi rispetto a sensori binoculari più tra<strong>di</strong>zionali. L’obiettivo<br />

primario del lavoro svolto nell’analisi delle immagini è stato quello <strong>di</strong> riconoscere la<br />

presenza <strong>di</strong> ostacoli nello spazio visivo com<strong>un</strong>e ai due sensori <strong>di</strong> cui HOPS si avvale,<br />

quin<strong>di</strong> <strong>un</strong> utilizzo da sistema binoculare. Questa, chiaramente, è <strong>un</strong>’applicazione<br />

centrale per la navigazione <strong>di</strong> robot mobili e quin<strong>di</strong> componente fondamentale per la<br />

costruzione <strong>di</strong> <strong>un</strong> qualsiasi sistema <strong>di</strong> visione completo. A seconda della specifica<br />

applicazione e dello specifico ambiente <strong>di</strong> lavoro, bisognerà implementare <strong>un</strong> insieme <strong>di</strong><br />

routines che completino l’insieme delle f<strong>un</strong>zionalità necessarie allo scopo.<br />

74


4.2. Algoritmi utilizzati e risultati conseguiti<br />

Il meccanismo <strong>di</strong> riconoscimento degli ostacoli proposto si basa sulla tecnica della<br />

prospettiva inversa che è stata analizzata nel paragrafo 2.1.2. Allo scopo <strong>di</strong> ottenere<br />

informazioni riguardanti la presenza <strong>di</strong> ostacoli e quin<strong>di</strong> l’entità dell’area camminabile,<br />

<strong>un</strong>a valida alternativa allo stu<strong>di</strong>o delle <strong>di</strong>sparità stereo su linee epipolari, già esplorata in<br />

alc<strong>un</strong>i stu<strong>di</strong> ([Adorni et al., 2000a], [Bertozzi e Broggi, 1996], [Mallot et al., 1991a],<br />

[Onoguchi et al.,1998], si veda inoltre la sezione sulla tecnica della prospettiva inversa),<br />

è quella <strong>di</strong> rettificare entrambe le immagini e, grazie ad <strong>un</strong>a calibrazione del sistema<br />

binoculare (si veda a riguardo il terzo capitolo), <strong>di</strong> confrontarle <strong>di</strong>rettamente:<br />

l’operazione <strong>di</strong> recupero della prospettiva è svolta rispetto al piano del pavimento<br />

(ipotizzato orizzontale), e quin<strong>di</strong> entrambe le immagini rettificate saranno identiche<br />

nella loro rappresentazione <strong>di</strong> ciò che risiede sul pavimento stesso, mentre tutto ciò che<br />

emerge da questo piano (gli ostacoli) subirà <strong>un</strong>a <strong>di</strong>storsione <strong>di</strong>pendente dalla prospettiva<br />

dalla quale si osserva la scena, cioè <strong>un</strong>a <strong>di</strong>storsione che risulta essere <strong>di</strong>versa per le due<br />

<strong>di</strong>verse telecamere. Una semplice ricerca delle <strong>di</strong>fferenze tra le due immagini pixel a<br />

pixel fa quin<strong>di</strong> emergere informazioni sugli ostacoli presenti. Si tratta d<strong>un</strong>que a quel<br />

p<strong>un</strong>to <strong>di</strong> interpretare le informazioni emerse per gi<strong>un</strong>gere all’identificazione degli<br />

ostacoli veri e propri.<br />

Nei prossimi paragrafi saranno messe in luce le principali tecniche <strong>di</strong> elaborazione ed<br />

analisi delle immagini utilizzate. In particolare queste saranno sud<strong>di</strong>vise in:<br />

− fase <strong>di</strong> pre-processing, costituita da tutte le elaborazioni che a partire dalle immagini<br />

acquisite cercano <strong>di</strong> accentuare l’informazione <strong>di</strong> basso livello, e ridurre il rumore.<br />

− fase <strong>di</strong> segmentazione e <strong>di</strong> interpretazione, nella quale, da <strong>un</strong>a parte, si cerca <strong>di</strong><br />

identificare regioni e <strong>di</strong> darne <strong>un</strong>a descrizione e classificazione, dall’altra si cerca <strong>di</strong><br />

ragionare sulle caratteristiche delle regioni in<strong>di</strong>viduate per ottenere <strong>un</strong>a<br />

interpretazione della scena osservata (in questo caso l’area camminabile).<br />

75


4.2.1. Fase <strong>di</strong> pre-processing<br />

Obiettivo <strong>di</strong> questa prima fase <strong>di</strong> elaborazione delle immagini è <strong>di</strong> far emergere e<br />

marcare le regioni in cui le due immagini rettificate sono <strong>di</strong>verse, a causa della presenza<br />

<strong>di</strong> <strong>un</strong> ostacolo. Le due telecamere operano in con<strong>di</strong>zioni <strong>di</strong>verse sia <strong>di</strong> illuminazione,<br />

che <strong>di</strong> area inquadrata. Inoltre nel prototipo realizzato la situazione è aggravata dal fatto<br />

che i due sensori CCD hanno delle curve <strong>di</strong> sensibilità alla luce <strong>di</strong>verse ed entrambe<br />

utilizzano <strong>un</strong> sistema <strong>di</strong> bilanciamento automatico del bianco, problemi che com<strong>un</strong>que<br />

possono essere eliminati o limitati al momento della realizzazione dell’apparato<br />

definitivo. Quin<strong>di</strong> non può bastare <strong>un</strong> semplice e imme<strong>di</strong>ato confronto tra le due<br />

immagini pixel a pixel, ma saranno necessari alc<strong>un</strong>i passi <strong>di</strong> elaborazione per ridurre il<br />

rumore e le <strong>di</strong>fferenze cromatiche con cui stessi oggetti vengono visti dalle due <strong>di</strong>verse<br />

telecamere. Le due seguenti (figura 4.1 e figura 4.2) sono <strong>un</strong> esempio <strong>di</strong> immagini così<br />

come lette dai framegrabbers, acquisite in <strong>un</strong> campo per la competizione Robocup e<br />

utilizzate in questa sede per <strong>un</strong>a semplice descrizione degli algoritmi impiegati.<br />

Figura 4.1<br />

76


Figura 4.2<br />

La prima operazione che viene eseguita sulle immagini lette dai framegrabber è quella<br />

<strong>di</strong> inversione della prospettiva: questa operazione viene eseguita molto semplicemente<br />

utilizzando la look-up-table generata nella fase iniziale <strong>di</strong> calibrazione del sistema.<br />

Inoltre si estraggono dalle immagini rettificate quelle parti appartenenti al campo visivo<br />

com<strong>un</strong>e, le si sottopone ad <strong>un</strong>a roto-traslazione sulla base dei parametri in<strong>di</strong>viduati in<br />

fase <strong>di</strong> calibrazione stereoscopica del sensore, e si ottengono così due nuove immagini.<br />

Si hanno quin<strong>di</strong> tre immagini rettificate <strong>di</strong> interesse: <strong>un</strong>a rappresentante tutta la regione<br />

del campo visivo del sensore omni<strong>di</strong>rezionale (ve<strong>di</strong> figura 4.3.), e le altre due<br />

rappresentanti esclusivamente quel settore del campo visivo che è com<strong>un</strong>e ad entrambe<br />

le telecamere e riferite al sistema <strong>di</strong> riferimento del robot (ve<strong>di</strong> figura 4.4 per<br />

l’immagine da telecamera frontale e figura 4.5 per l’immagine da sensore omni<strong>di</strong>rezionale).<br />

La prima potrà essere utilizzata per compiti <strong>di</strong> auto-localizzazione e ricerca<br />

ad ampio raggio <strong>di</strong> oggetti <strong>di</strong> possibile interesse, le altre due vengono qui impiegate<br />

come coppia stereo per la ricerca <strong>di</strong> ostacoli.<br />

77


Figura 4.3<br />

Figura 4.4 Figura 4.5<br />

78


La seconda operazione è <strong>un</strong>a trasformazione dell’istogramma dell’immagine<br />

proveniente dal sensore cata<strong>di</strong>ottrico allo scopo <strong>di</strong> renderlo il più simile possibile a<br />

quello dell’immagine proveniente dall’altra telecamera (chiamiamola <strong>di</strong> riferimento).<br />

Chiamiamo immagine iniziale quella da cata<strong>di</strong>ottro originale (figura 4.4) e immagine<br />

trasformata il risultato dell’applicazione dell’algoritmo all’immagine iniziale. Questa<br />

operazione risulta essere necessaria per ridurre le <strong>di</strong>fferenze cromatiche con cui gli<br />

stessi oggetti sono rappresentati nelle due immagini (si vedano le figure 4.3 e 4.4).<br />

Questo è dovuto sia ai <strong>di</strong>fferenti campi visivi delle due telecamere, e quin<strong>di</strong> la <strong>di</strong>fferente<br />

scena rappresentata, sia dal fatto che mentre la telecamera frontale osserva <strong>di</strong>rettamente<br />

la scena che rappresenta, il cata<strong>di</strong>ottro riceve luce in<strong>di</strong>retta per riflessione dello specchio<br />

e filtrata dal cilindro <strong>di</strong> plexiglas della struttura. Descriviamo brevemente i passi<br />

dell’elaborazione eseguita:<br />

− l’istogramma dell’immagine iniziale viene trasformato in<strong>di</strong>pendentemente sulle tre<br />

bande R, G, B, ipotizzando che la correlazione tra i loro andamenti sia bassa. Nel<br />

seguito ci riferiremo alle operazioni da svolgere su <strong>un</strong>a sola delle tre bande (ad<br />

esempio quella del rosso R), ma il tutto è identico anche per le altre due;<br />

− per ogni valore p tra 0 e 255 (ossia tutti i valori <strong>di</strong> intensità che <strong>un</strong> pixel può<br />

assumere) l’istogramma dell’immagine trasformata dovrà avere (come risultato<br />

finale) che il suo integrale da 0 a p sia il più vicino possibile all’integrale sullo stesso<br />

intervallo dell’istogramma dell’immagine <strong>di</strong> riferimento;<br />

− per ottenere questo si dovrà operare questa integrazione da 0 a p (ottenendo valore<br />

T) prima sull’immagine <strong>di</strong> riferimento, e poi andare a cercare nell’istogramma<br />

dell’immagine iniziale per quale valore q si ottiene l’integrale nell’intervallo (0..q)<br />

<strong>di</strong> valore più vicino a T;<br />

− grazie ad <strong>un</strong>a integrazione su intervalli <strong>di</strong> <strong>di</strong>mensione crescente (da 0 a 255), si<br />

ottiene quin<strong>di</strong> <strong>un</strong>a f<strong>un</strong>zione q(p). Ecco che la trasformazione dell’istogramma<br />

consisterà semplicemente nel mo<strong>di</strong>ficare le intensità dei pixel dell’immagine<br />

trasformante sulla base della relazione q(p) ottenuta: da esse si può infatti<br />

sud<strong>di</strong>videre l’istogramma in intervalli delimitati dai valori q(i) con i da 0 a 255,<br />

ossia il primo intervallo (per i = 0) sarà [0...q(0)], l’n-esimo (n=i+1) sarà pari a:<br />

] q(n-2) … q(n-1) ]<br />

79


Ad ogni pixel con intensità, sulla banda in questione, compresa nell’intervallo n-<br />

esimo verrà assegnato <strong>un</strong> nuovo valore <strong>di</strong> intensità pari a i=n-1.<br />

Si è scelto <strong>di</strong> operare questa trasformazione sull’immagine da cata<strong>di</strong>ottro perché questa<br />

presenta tipicamente <strong>un</strong> istogramma con valori molto bassi nelle regioni estreme, <strong>di</strong><br />

bassa e alta intensità, quin<strong>di</strong> minor contrasto. Grazie a questa operazione si rendono le<br />

due immagini (quella <strong>di</strong> riferimento e quella trasformata) il più simili possibile sia dal<br />

p<strong>un</strong>to <strong>di</strong> vista cromatico che del contrasto. Faccio notare che questa elaborazione viene<br />

eseguita tra due immagini che, a parte piccole <strong>di</strong>fferenze legate alla <strong>di</strong>storsione della<br />

prospettiva inversa sugli ostacoli, inquadrano la stessa porzione <strong>di</strong> <strong>un</strong>a scena e quin<strong>di</strong><br />

rappresentano gli stessi oggetti e lo stesso sfondo, cosa necessaria per poter considerare<br />

fondato l’algoritmo stesso. Il risultato può essere evidenziato dal confronto tra le due<br />

immagini in figura 4.6 e figura 4.7: la prima è la stessa immagine <strong>di</strong> figura 4.3, la<br />

seconda è il risultato dell’applicazione <strong>di</strong> questa trasformazione all’immagine in figura<br />

4.4.<br />

Figura 4.6 Figura 4.7<br />

Per evidenziare meglio il risultato ottenuto è interessante osservare gli istogrammi delle<br />

due immagini iniziali, quelle in figura 4.4 e in figure 4.3, rispettivamente nella figura<br />

4.8 e nella figura 4.9, e l’istogramma ottenuto dalla trasformazione (e quin<strong>di</strong> relativo<br />

all’immagine in figura 4.7) in figura 4.10.<br />

80


Figura 4.8<br />

Figura 4.9<br />

Figura 4.10<br />

81


Si noti come tramite la trasformazione suddetta gli istogrammi delle tre componenti<br />

dell’immagine da cata<strong>di</strong>ottro vengano espansi e assumano <strong>un</strong> profilo molto simile a<br />

quello dell’istogramma dell’immagine da telecamera frontale.<br />

Nella terza fase viene generata <strong>un</strong>a nuova immagine a partire dal confronto <strong>di</strong>retto delle<br />

altre due: si calcola cioè la <strong>di</strong>fferenza <strong>di</strong> intensità pixel a pixel nelle tre <strong>di</strong>verse bande <strong>di</strong><br />

colore. Detti C 1 e C 2 i colori dei due pixel in esame si ottengono le seguenti <strong>di</strong>fferenze<br />

dR=|R 1 -R 2 |, dG=|G 1 -G 2 |, dB=|B 1 -B 2 |. Tra dR, dG, dB si sceglie poi la più alta<br />

(chiamiamola dM) e si opera su <strong>di</strong> essa <strong>un</strong>a sogliatura ad <strong>un</strong> valore S, cosicché dM=0<br />

per Max{dR,dG,dB} < S, dM = Max{dR,dG,dB} per Max{dR,dG,dB} = S. Per rendere il<br />

valore S <strong>di</strong>pendente dall’ambiente specifico e dall’illuminazione, lo si è reso pari al<br />

valore me<strong>di</strong>o delle intensità me<strong>di</strong>e (Im) delle due immagini: S = Im. Questa uguaglianza<br />

si è <strong>di</strong>mostrata valida, permettendo <strong>un</strong>a buona separazione dell’informazione dal rumore<br />

in tutti gli ambienti in cui si è effettuato <strong>un</strong> test del sistema. Il valore <strong>di</strong> dM infine<br />

rappresenta l’intensità del tono <strong>di</strong> grigio della nuova immagine generata. Nelle due<br />

immagini proposte in figura 4.11 e in figura 4.12, viene mostrato prima il risultato <strong>di</strong><br />

questo confronto nelle sue tre componenti R, G, B e poi l’immagine generata con i<br />

valori dM.<br />

Figura 4.11 Figura 4.12<br />

82


Nell’immagine ottenuta dal confronto, si possono evidenziare regioni tipicamente legate<br />

al <strong>di</strong>verso posizionamento dei confini laterali degli ostacoli nelle due immagini<br />

rettificate. Si tratta quasi sempre <strong>di</strong> regioni all<strong>un</strong>gate e posizionate verticalmente<br />

nell’immagine. E’ presente ancora <strong>un</strong>a notevole quantità <strong>di</strong> rumore che in questo ultimo<br />

passo della fase <strong>di</strong> pre-processing si cerca <strong>di</strong> ridurre tramite l’applicazione <strong>di</strong> <strong>un</strong> filtro<br />

che cerca <strong>di</strong> in<strong>di</strong>viduare ed evidenziare regioni localmente compatte e con estensione<br />

verticale, e <strong>di</strong> cancellare o ridurre <strong>di</strong> intensità regioni estese prevalentemente in<br />

orizzontale e poco compatte, come ad esempio piccoli gruppi <strong>di</strong> pixel isolati.<br />

Il filtro opera su <strong>un</strong>a finestra <strong>di</strong> lato pari a nove pixel e mo<strong>di</strong>fica l’intensità del pixel<br />

centrale in base ai valori <strong>di</strong> pixel situati in posizioni particolari in <strong>un</strong> suo intorno.<br />

Nell’immagine in figura 4.13 viene presentato <strong>un</strong>o schema dei pixel presi in<br />

considerazione da questo filtro, colorati a seconda del loro ruolo: il pixel nero è quello<br />

<strong>di</strong> riferimento al quale il filtro è applicato, dai valori <strong>di</strong> intensità letti nei pixel gialli si<br />

ottengono informazioni sull’estensione locale verticale verso il basso e da quelli azzurri<br />

verso l’alto, da quelli rossi sull’estensione locale orizzontale e da quelli ver<strong>di</strong><br />

sull’appartenenza del pixel ad <strong>un</strong>a “regione estesa”. Dall’uso del termine “estensione”<br />

emerge l’ipotesi iniziale fatta dal filtro che ogni pixel <strong>di</strong> riferimento sia parte <strong>di</strong> <strong>un</strong>a<br />

regione a intensità non nulla (<strong>un</strong>a <strong>di</strong> quelle emerse dall’analisi delle <strong>di</strong>fferenze del passo<br />

precedente e mostrate in figura 4.12), e questo in<strong>di</strong>pendentemente dal valore <strong>di</strong> intensità<br />

del pixel <strong>di</strong> riferimento stesso. A seconda dei valori letti nei vari gruppi <strong>di</strong> pixel, e sulla<br />

base <strong>di</strong> semplici euristiche il filtro conferma o smentisce questa ipotesi.<br />

Figura 4.13<br />

83


Dato che l’immagine <strong>di</strong> input del filtro ha già subito <strong>un</strong>a sogliatura che ha azzerato tutti<br />

i valori più bassi dell’intensità me<strong>di</strong>a dell’immagine (ve<strong>di</strong> passo precedente), per<br />

ogn<strong>un</strong>o dei gruppi <strong>di</strong> pixel (mostrati in figura 4.13) si opera <strong>un</strong> semplice conteggio del<br />

numero <strong>di</strong> pixel non nulli, ottenendo come risultato contA, contG, contV e contR,<br />

rispettivamente contatori del gruppo degli azzurri, dei gialli, dei ver<strong>di</strong>, dei rossi.<br />

Ogn<strong>un</strong>o <strong>di</strong> questi contatori ha <strong>un</strong> suo valore massimo pari al numero <strong>di</strong> pixel del gruppo<br />

relativo (mA, mG, mV, mR). Inoltre viene ricercato il valore <strong>di</strong> intensità più alto (M) tra<br />

tutti quelli letti. L’intensità del pixel centrale viene mo<strong>di</strong>ficata in due possibili<br />

situazioni:<br />

1. se i valori rilevati mostrano la possibile presenza <strong>di</strong> <strong>un</strong>a regione <strong>di</strong> intensità non<br />

nulla che si estende localmente in verticale e poco in orizzontale, l’intensità del<br />

pixel centrale viene elevata al valore letto più alto M. In particolare questo avviene<br />

applicando la regola:<br />

if ((contA = (mA/2)) AND (contG = (mG/2)) AND (contR < (mR/2)) AND (contV<br />

< (mV/2)))<br />

then (intensità del pixel <strong>di</strong> riferimento = M)<br />

2. se la situazione che si può ipotizzare a partire dai pixel considerati è quella <strong>di</strong> <strong>un</strong>a<br />

regione localmente non estesa in verticale e poco compatta, l’intensità del pixel<br />

centrale viene azzerata. In particolare si applica la regola:<br />

if ((contA = 0) AND (contG = 0))<br />

or if ( ((contA = 0) OR (contG = 0)) AND (contR > (mR/2)) )<br />

then (intensità del pixel <strong>di</strong> riferimento = 0)<br />

Si noti come l’<strong>un</strong>ico momento in cui il valore dell’intensità del pixel <strong>di</strong> riferimento è<br />

usato nell’algoritmo è durante la ricerca del valore massimo M.<br />

Questo filtro è stato testato in innumerevoli situazioni e ha sempre dato <strong>un</strong> buon<br />

risultato <strong>di</strong> abbassamento del rumore. Infine l’immagine viene trasformata da toni <strong>di</strong><br />

grigio a bianco e nero utilizzando <strong>un</strong>a soglia <strong>di</strong> valore molto basso fissato a 10. Il<br />

risultato ottenuto è presentato in figura 4.14.<br />

84


Figura 4.14<br />

85


4.2.2. Fase <strong>di</strong> segmentazione e <strong>di</strong> interpretazione<br />

Queste due fasi, sebbene concettualmente <strong>di</strong>stinte, sono presentate insieme poiché nel<br />

lavoro svolto procedono <strong>di</strong> pari passo. L’immagine generata nella precedente fase <strong>di</strong><br />

pre-processing (si veda figura 4.14) contiene tutta l’informazione <strong>di</strong>sponibile sui<br />

possibili ostacoli presenti nella scena, <strong>di</strong> cui evidenzia sostanzialmente, tramite le<br />

regioni <strong>di</strong> <strong>di</strong>fferenza emerse, parte dei contorni.<br />

Come primo passo, per in<strong>di</strong>viduare, <strong>di</strong>stinguere e poter poi stu<strong>di</strong>are le regioni<br />

<strong>di</strong>fferenza, si opera <strong>un</strong>a segmentazione <strong>di</strong> tipo blob-coloring (basata su connettività a<br />

otto vicini) delle regioni bianche evidenziate nell’immagine (figura 4.14). La fase <strong>di</strong><br />

interpretazione si basa sostanzialmente su euristiche per la classificazione delle regioni<br />

ottenute da questa segmentazione, e per la loro combinazione. Tipicamente la presenza<br />

<strong>di</strong> <strong>un</strong> ostacolo può produrre nella fase <strong>di</strong> segmentazione dell’immagine due o più<br />

regioni <strong>di</strong>stinte, che sarà necessario combinare tra loro, associandole ad <strong>un</strong>o stesso<br />

ostacolo .<br />

Analizziamo brevemente le fasi <strong>di</strong> questa elaborazione. Definiamo due sistemi <strong>di</strong><br />

riferimento legati all’immagine da elaborare: il primo (xoy) semplicemente centrato sul<br />

pixel in alto a sinistra dell’immagine (a cui fanno riferimento le coor<strong>di</strong>nate <strong>di</strong> tutti i<br />

pixel esaminati) con assi <strong>di</strong>rezionati positivamente verso il basso per le y, e verso destra<br />

per le x. Poiché l’immagine è rettificata e ogni pixel è quin<strong>di</strong> la descrizione <strong>di</strong> <strong>un</strong>a ben<br />

nota regione del piano <strong>di</strong> riferimento, possiamo utilizzare <strong>un</strong> secondo sistema <strong>di</strong><br />

riferimento (XOY) coincidente con quello del robot, quin<strong>di</strong> centrato sul robot stesso, e<br />

utilizzato per definire le posizioni relative al robot degli oggetti descritti dai pixel.<br />

Definiamo inoltre la sensibilità Sens associata all’immagine come il lato del quadrato <strong>di</strong><br />

superficie del pavimento descritto da <strong>un</strong> pixel dell’immagine stessa (pari, nel nostro<br />

caso, a 2cm).<br />

Tra tutte le regioni <strong>di</strong>fferenza, segmentate con la tecnica <strong>di</strong> blob-coloring, quelle<br />

costituite da pochi pixel (meno <strong>di</strong> 25) vengono subito eliminate come siano rumore. Per<br />

86


tutte le altre vengono calcolati <strong>un</strong>a serie <strong>di</strong> parametri per le successive fasi <strong>di</strong><br />

elaborazione. Ve<strong>di</strong>amoli:<br />

− posizione dell’apice inferiore (x 1 ,y 1 ), ossia il p<strong>un</strong>to della regione più in basso (se ne<br />

è presente più <strong>di</strong> <strong>un</strong>o sulla stessa riga, il centrale);<br />

− posizione <strong>di</strong> <strong>un</strong> eventuale secondo apice inferiore (x 2 ,y 2 ) rilevato in base alla<br />

seguente euristica: il pretendente secondo apice, pixel (x,y), deve appartenere alla<br />

regione in questione, si deve avere che, invece, tutti i pixel della riga sottostante<br />

(y+1) con valore x compreso tra (x-3) ed (x+3) non appartengono alla regione, e<br />

infine la <strong>di</strong>stanza tra (x 1 ,y 1 ) e (x 2 ,y 2 ) sia maggiore <strong>di</strong> (10/Sens) (per evitare che i due<br />

apici portino la stessa informazione). Tra tutti gli eventuali pretendenti al ruolo <strong>di</strong><br />

secondo apice si sceglie quello con <strong>di</strong>stanza angolare maggiore dal primo apice<br />

rispetto all’origine del sistema <strong>di</strong> riferimento del robot (ossia con il massimo angolo<br />

(X1,Y1)-O-(X,Y)). Il calcolo <strong>di</strong> questo secondo apice inferiore è utile per l’analisi <strong>di</strong><br />

regioni <strong>di</strong>fferenza che comprendono entrambi i confini laterali degli ostacoli ad esse<br />

associati.<br />

− posizione dell’apice superiore (x s ,y s );<br />

− altezza A = sqrt((x s -x 1 )² + (y s -y 1 )²);<br />

− larghezza me<strong>di</strong>a Lm, definita come la me<strong>di</strong>a su tutte le righe comprese tra y s e y 1<br />

(ossia su tutta l’altezza) della <strong>di</strong>stanza tra il primo e l’ultimo pixel appartenenti alla<br />

regione;<br />

− larghezza massima LM, definita come la massima tra le <strong>di</strong>stanze tra il primo e<br />

l’ultimo pixel della regione su tutte le righe comprese tra y s e y 1 .<br />

− posizione del baricentro della regione (x b ,y b ), come semplice me<strong>di</strong>a pesata sulla<br />

larghezza della regione riga per riga;<br />

− ad entrambi i lati (destro e sinistro) della regione <strong>di</strong>fferenza si in<strong>di</strong>vidua <strong>un</strong> insieme<br />

<strong>di</strong> pixel <strong>di</strong> test: per ogni riga (y i ) compresa tra y s e y 1 si scelgono come p<strong>un</strong>ti per le<br />

suddette statistiche (x Si ,y i ), per l’insieme sul lato sinistro e (x Di ,y i ) per l’insieme sul<br />

lato destro, tali che (x Si +2,y i ) è il primo pixel della regione sulla riga, e (x Di -2,y i ) è<br />

l’ultimo pixel della regione sulla riga. Su questi insiemi <strong>di</strong> pixel, presi però<br />

dall’immagine rettificata proveniente dal cata<strong>di</strong>ottro in figura 4.7, vengono poi<br />

87


calcolate alc<strong>un</strong>e statistiche: il colore me<strong>di</strong>o destro CmD (nelle sue componenti RmD<br />

– valore me<strong>di</strong>o della banda del rosso a destra, GmD, BmD) e il colore me<strong>di</strong>o sinistro<br />

CmS (nelle sue componenti RmS – valore me<strong>di</strong>o della banda del rosso a sinistra,<br />

GmS, BmS); l’intensità me<strong>di</strong>a destra ImD e sinistra ImS e la loro varianze VmD<br />

(varianza me<strong>di</strong>a dell’intensità sul lato destro) e VmS; infine la variazione me<strong>di</strong>a del<br />

colore, tra i pixel <strong>di</strong> test (ad esempio (x Si ,y i )) ed i pixel sottostanti (quin<strong>di</strong><br />

(x Si ,y i +1)), <strong>di</strong> destra (FmD) e <strong>di</strong> sinistra (FmS):<br />

FmD = [ ? Dc( Im(x Di ,y i ) , Im(x Di ,y i +1) ) ] / N<br />

N è il numero <strong>di</strong> p<strong>un</strong>ti dell’insieme <strong>di</strong> test <strong>di</strong> destra, Im(x,y) è il colore RGB del pixel<br />

(x,y) dell’immagine rettificata da cata<strong>di</strong>ottro in figura 4.7, Dc è la f<strong>un</strong>zione <strong>di</strong><br />

appartenenza alla classe fuzzy <strong>di</strong> <strong>di</strong>fferenza colore <strong>di</strong> cui si parlerà in seguito, e la<br />

sommatoria è estesa a tutti i pixel del gruppo <strong>di</strong> test in questione.<br />

Si opera quin<strong>di</strong> <strong>un</strong>a classificazione delle regioni in base ad alc<strong>un</strong>i dei parametri elencati:<br />

la loro larghezza me<strong>di</strong>a Lm, la loro altezza A, nonché la me<strong>di</strong>a delle loro altezze A e la<br />

loro variazione <strong>di</strong> spessore l<strong>un</strong>go l’altezza (semplicemente stimata tramite la <strong>di</strong>fferenza<br />

tra Lm e LM). E’ da notare come la maggior parte delle situazioni incontrate nei test ha<br />

prodotto in termini <strong>di</strong> queste regioni <strong>di</strong>fferenza, delle classi <strong>di</strong> regioni ben definite e<br />

facilmente gestibili per l’identificazione degli ostacoli:<br />

1) regioni l<strong>un</strong>ghe ((A > 0.7A) OR (A > 110/Sens)) e spesse (Lm > 40/Sens) o con<br />

variazioni elevate dello spessore (LM > 2Lm), che presentino in ogni caso <strong>un</strong><br />

secondo apice (x2,y2), che nella maggior parte dei casi, estendendosi l<strong>un</strong>go due o<br />

più lati dell’ostacolo ne permettono da sole l’identificazione:<br />

if { [(A > 0.7A) OR (A > 110/Sens)] AND [(Lm > 40/Sens) OR (LM > 2Lm)] }<br />

AND [(x2,y2) è definito]<br />

2) regioni l<strong>un</strong>ghe ((A > 0.7A) OR (A > 110/Sens)) e sottili (Lm = 40/Sens) e con<br />

variazioni basse dello spessore (LM = 2Lm), o che com<strong>un</strong>que presentino <strong>un</strong> solo<br />

apice inferiore, che richiedono quasi sempre <strong>di</strong> essere combinate con altre regioni al<br />

fine <strong>di</strong> in<strong>di</strong>viduare l’ostacolo, e che quin<strong>di</strong> vengono considerate per prime nella<br />

88


successiva fase <strong>di</strong> matching:<br />

if { [(A > 0.7A) OR (A > 110/Sens)] AND [((Lm = 40/Sens) AND (LM = 2Lm))<br />

OR ((x 2 ,y 2 ) non è definito)] }<br />

3) regioni corte ((A = 0.7A) AND (A = 110/Sens)) e con <strong>un</strong> basso rapporto<br />

altezza/spessore me<strong>di</strong>o (Lm = 0.16A), che vengono interpretati come parte <strong>di</strong> piccoli<br />

ostacoli da in<strong>di</strong>viduare attraverso l’espansione della regione stessa (i piccoli ostacoli<br />

<strong>di</strong>fficilmente generano regioni <strong>di</strong>fferenze su entrambi i lati da combinare, ma<br />

piuttosto dei blob che ricoprono parte dell’oggetto stesso):<br />

if { [(A = 0.7A) AND (A = 110/Sens)] AND (Lm = 0.16A) }<br />

4) regioni corte ((A = 0.7A) AND (A = 110/Sens)) e con <strong>un</strong> elevato rapporto<br />

altezza/spessore me<strong>di</strong>o (Lm < 0.16A), che vengono interpretati come regioni<br />

analoghe a quelle del tipo sub 2), ma che essendo più corte sono meno atten<strong>di</strong>bili e<br />

quin<strong>di</strong> rivestiranno <strong>un</strong> ruolo secondario nella fase <strong>di</strong> matching:<br />

if { [(A = 0.7A) AND (A = 110/Sens)] AND (Lm < 0.16A) }<br />

Per cercare <strong>di</strong> rendere più limitato l’insieme delle regioni <strong>di</strong>fferenza e quin<strong>di</strong><br />

semplificare le successive fasi <strong>di</strong> interpretazione, viene utilizzata <strong>un</strong>a tecnica <strong>di</strong><br />

estensione delle regioni dei casi sub 2) e sub 4) allo scopo <strong>di</strong> cercare <strong>di</strong> collegarle ad<br />

altre analoghe con stessa orientazione e simili colorazioni ai lati (ossia ipotizzando che<br />

siano legati allo stesso ostacolo). In particolare l’algoritmo prevede <strong>di</strong> estendere verso<br />

l’alto (per <strong>un</strong>a l<strong>un</strong>ghezza limitata a 30/Sens pixel) la regione in questione l<strong>un</strong>go la<br />

<strong>di</strong>rezione tan(ang1) riferita al sistema <strong>di</strong> coor<strong>di</strong>nate del robot e in<strong>di</strong>cata dalla retta<br />

passante per il suo apice superiore (x s ,y s ) e il suo baricentro (x b ,y b ). Nel caso in cui<br />

durante questa operazione si incontri <strong>un</strong>’altra regione <strong>di</strong>fferenza appartenete al caso sub<br />

2), sub 3) o sub 4), si dovrà ipotizzare o meno l’appartenenza delle due regioni allo<br />

stesso ostacolo. Ciò avviene se:<br />

− la <strong>di</strong>rezione tan(ang2) della seconda regione definita nel sistema <strong>di</strong> riferimento del<br />

robot come la <strong>di</strong>rezione della retta passante per l’apice inferiore (x 1 ,y 1 ) e il baricentro<br />

(x b ,y b ) della seconda regione, è tale che:<br />

ang1 – ang2 < 0.2 rad;<br />

− i colori me<strong>di</strong> delle due regioni o sul lato destro (CmD1 e Cmd2) o sul lato sinistro<br />

89


(CmS1 e CmS2) sono considerati uguali utilizzando la tecnica fuzzy descritta in<br />

seguito:<br />

(Dc(CmS1,CmS2)=0) or (Dc(CmD1,CmD2)=0);<br />

dove la f<strong>un</strong>zione Dc(colore1,colore2) rappresenta il grado <strong>di</strong> appartenenza alla<br />

classe <strong>di</strong> <strong>di</strong>fferenza <strong>di</strong> colore della coppia <strong>di</strong> colori.<br />

Nel caso in cui si operi l’estensione la nuova regione nata dalla fusione delle due viene<br />

nuovamente classificata.<br />

La figura 4.15 mostra il risultato della segmentazione e della tecnica <strong>di</strong> estensione<br />

nell’immagine: le varie regioni in<strong>di</strong>viduate sono state colorate a posteriori per <strong>un</strong>a<br />

migliore visualizzazione. Il piccolo riquadro nero nell’immagine vuole mettere in<br />

evidenza la fusione fra la regione azzurra e quella verde per estensione della regione<br />

azzurra: si noti infatti la <strong>di</strong>fferenza con l’immagine in figura 4.14, dove le due regioni<br />

sono separate.<br />

Figura 4.15<br />

90


Per commentare l’esempio, secondo la tecnica <strong>di</strong> classificazione vista, le macchie blu e<br />

viola appartengono alla classe sub 2), la macchia nera, quella verde scuro e quella<br />

arancio alla classe sub 3), quelle azzurra e verde chiaro alla classe sub 4) prima della<br />

loro <strong>un</strong>ione e alla classe sub 2) dopo.<br />

Per lo stu<strong>di</strong>o della <strong>di</strong>versità <strong>di</strong> colore si fa ampio utilizzo della seguente tecnica fuzzy:<br />

dati due colori RGB C 1 e C 2 , per ogn<strong>un</strong>a delle tre bande R, G, B si definisce <strong>un</strong>a classe<br />

fuzzy <strong>di</strong> <strong>di</strong>fferenza, sulla specifica banda, tra i due colori (Dr, Dg, Db). Questa è<br />

definita come (nel caso della banda R):<br />

Dr(C 1 ,C 2 ) = 0 per |R 1 -R 2 | < sogliaInferiore<br />

Dr(C 1 ,C 2 ) = arctan [(|R 1 -R 2 | - sogliaInferiore)/costanteDiScala] /(p/2)<br />

altrove<br />

Il grado <strong>di</strong> appartenenza alla classe <strong>di</strong> <strong>di</strong>versità <strong>di</strong> colore RGB Dc, è invece dato da:<br />

Dc(C 1 ,C 2 ) = Max{Dr,Dg,Db} per Max{Dr,Dg,Db} > sogliaDifferenza<br />

Dc(C 1 ,C 2 ) = 0 altrove<br />

Quin<strong>di</strong> i due colori C 1 e C 2 verranno considerati uguali per Dc = 0, <strong>di</strong>versi (con grado<br />

variabile) altrimenti.<br />

Il passo successivo del metodo consiste nell’operare <strong>un</strong>a combinazione (matching) delle<br />

regioni classificate nel caso sub 2) e sub 4) e nella “chiusura” <strong>di</strong> certe aree<br />

dell’immagine contenenti ipotesi <strong>di</strong> ostacolo (denominate regioni ostacolo). Il matching<br />

viene eseguito tramite euristiche che si basano sulle statistiche descritte<br />

precedentemente. Come visto, queste statistiche sono calcolate su <strong>un</strong> insieme <strong>di</strong> p<strong>un</strong>ti<br />

alla destra e <strong>un</strong> insieme <strong>di</strong> p<strong>un</strong>ti alla sinistra delle regioni <strong>di</strong>fferenza. Poiché le regioni<br />

<strong>di</strong>fferenza si presentano prevalentemente l<strong>un</strong>go i confini degli ostacoli, si tratta <strong>di</strong> <strong>un</strong><br />

insieme <strong>di</strong> pixel che fanno parte dell’immagine dell’ostacolo e, verosimilmente, <strong>un</strong><br />

insieme <strong>di</strong> pixel che fanno parte dello sfondo <strong>di</strong>etro a questo. Nella maggior parte dei<br />

casi, quello che si deve decidere è se, data <strong>un</strong>a situazione come quella descritta nel caso<br />

sub 2), l’ostacolo ipotizzato si trovi più probabilmente alla sua sinistra o alla sua destra.<br />

Il matching viene operato nel modo seguente:<br />

− per ogni regioni del caso sub 2) e sub 4) si cercano le regioni prime vicine <strong>di</strong> destra<br />

91


e <strong>di</strong> sinistra anch’esse del tipo sub 2) o sub 4); tale vicinanza è stabilita in base alla<br />

<strong>di</strong>stanza angolare tra i baricentri (x b ,y b ) e (x bi ,y bi ) delle regioni rispetto al centro del<br />

sistema <strong>di</strong> riferimento del robot, e in base al posizionamento degli apici e dei<br />

baricentri delle regioni stesse. Ad esempio la regione i è la vicina <strong>di</strong> destra (se esiste)<br />

<strong>di</strong> quella in questione se:<br />

(y si < y b < y 1i ) OR (y s < y bi < y 1 )<br />

e l’angolo (X b ,Y b )-O-(X bi ,Y bi ) è il minimo tra quelli delle regioni che rispettano la<br />

prima con<strong>di</strong>zione;<br />

Questo è <strong>un</strong> passo molto importante perché in<strong>di</strong>vidua le coppie <strong>di</strong> regioni <strong>di</strong>fferenza<br />

che identificano le possibili regioni ostacolo rappresentate dalle aree comprese tra<br />

due regioni <strong>di</strong>fferenza prime vicine e le aree comprese tra <strong>un</strong>a regione <strong>di</strong>fferenza e il<br />

margine laterale del campo visivo (qualora la regione <strong>di</strong>fferenza non abbia <strong>un</strong>a<br />

regione vicina a destra o a sinistra).<br />

− Sulla base delle statistiche inizialmente calcolate si trovano i valori <strong>di</strong> alc<strong>un</strong>i<br />

in<strong>di</strong>catori sulla presenza <strong>di</strong> ostacoli, sia operando su singole regioni <strong>di</strong>fferenza (data<br />

ogni regioni <strong>di</strong>fferenza si attribuirà <strong>un</strong>a maggiore probabilità alla presenza <strong>di</strong> <strong>un</strong><br />

ostacolo alla sua destra piuttosto che alla sua sinistra se la variazione <strong>di</strong> colore e <strong>di</strong><br />

intensità luminosa sarà minore a destra che a sinistra), sia su coppie vicine <strong>di</strong> regioni<br />

<strong>di</strong>fferenza (data <strong>un</strong>a coppia <strong>di</strong> regioni <strong>di</strong>fferenza la presenza <strong>di</strong> <strong>un</strong> ostacolo nell’area<br />

compresa tra <strong>di</strong> esse può essere in<strong>di</strong>cata da <strong>un</strong>a colorazione simile presente<br />

all’interno delle due regioni stesse, nonché da <strong>un</strong>’intensa variazione <strong>di</strong> colorazione,<br />

stu<strong>di</strong>ata con la tecnica fuzzy descritta in seguito, nella zona tra gli apici inferiori<br />

delle regioni stesse, corrispondente alla base del possibile ostacolo). Questi<br />

in<strong>di</strong>catori verranno esaminati più approfon<strong>di</strong>tamente in seguito.<br />

− Fase <strong>di</strong> matching: a ogn<strong>un</strong>o <strong>di</strong> questi in<strong>di</strong>catori utilizzati viene fornito <strong>un</strong> peso e se<br />

ne opera <strong>un</strong>a me<strong>di</strong>a ponderata, andando quin<strong>di</strong> ad attribuire ad ogni area compresa<br />

tra due regioni <strong>di</strong>fferenza vicine (o tra <strong>un</strong>a regione <strong>di</strong>fferenza e il margine laterale<br />

del campo visivo) <strong>un</strong> certo grado <strong>di</strong> probabilità sulla presenza in quell’area<br />

d’immagine <strong>di</strong> <strong>un</strong> ostacolo (ossia attribuendo <strong>un</strong>a probabilità alle possibili regioni<br />

ostacolo). Questi in<strong>di</strong>catori vengono letti più volte con soglie decrescenti in maniera<br />

da permettere e privilegiare prima <strong>un</strong> matching “forte”, poi via via <strong>un</strong>o più debole.<br />

92


Le regioni <strong>di</strong>fferenza che non risultano trovare matching vengono lasciate in sospeso<br />

come regioni incerte. Ve<strong>di</strong>amo più nel dettaglio le fasi <strong>di</strong> controllo richieste da<br />

questa fase dall’algoritmo:<br />

1. definiamo <strong>un</strong>a soglia <strong>di</strong> probabilità So = 0.9, pari cioè, per l’uso che<br />

se ne farà, ad <strong>un</strong> valore molto alto.<br />

2. Per ogn<strong>un</strong>a delle regioni <strong>di</strong>fferenza del caso sub 2) e sub 4), e per<br />

ogn<strong>un</strong>a delle coppie in<strong>di</strong>viduate (possibili regioni ostacolo), calcolo i<br />

valori degli in<strong>di</strong>catori precedentemente descritti e, operandone <strong>un</strong>a<br />

me<strong>di</strong>a ponderata (vedremo in seguito i pesi <strong>di</strong> questa me<strong>di</strong>a), associo<br />

alle possibili regioni ostacolo <strong>un</strong> grado <strong>di</strong> probabilità.<br />

3. Tutte le aree comprese tra due regioni <strong>di</strong>fferenza, o tra <strong>un</strong>a regione<br />

<strong>di</strong>fferenza e il margine del campo visivo (ossia tutte le possibili<br />

regioni ostacolo), che abbiano <strong>un</strong> in<strong>di</strong>ce <strong>di</strong> probabilità superiore o pari<br />

alla soglia So, verranno definite come ostacolo e le relative regioni<br />

<strong>di</strong>fferenza subiranno il matching.<br />

4. Se tutte le regioni dei casi sub 2) e sub 4) hanno trovato matching<br />

l’operazione è finita, altrimenti si riduce la soglia So (ad esempio So<br />

= So – 0.1) e si ripete dal p<strong>un</strong>to 3. Se però So è pari ad <strong>un</strong> valore<br />

minimo prefissato (nel nostro caso pari a 0.3), si prosegue dal p<strong>un</strong>to<br />

seguente.<br />

5. tutte le regioni del tipo sub 2) e sub 4) che non hanno trovato<br />

matching vengono considerate incerte.<br />

Ve<strong>di</strong>amo ora più approfon<strong>di</strong>tamente gli in<strong>di</strong>catori utilizzati in questa fase <strong>di</strong> matching:<br />

ipotizziamo ad esempio <strong>di</strong> avere due regioni <strong>di</strong>fferenza vicine in<strong>di</strong>cate con s (quella<br />

sinistra) e d (quella destra), e calcoliamo la probabilità che la regione compresa tra <strong>di</strong><br />

esse (Os) sia effettivamente <strong>un</strong> ostacolo:<br />

− in<strong>di</strong>catore <strong>di</strong> variazione <strong>di</strong> intensità luminosa V:<br />

V = 0 se (VmDs < 2 VmSs) AND (VmSd < 2 VmDd)<br />

V = 0.5 se (VmDs = 2 VmSs) XOR (VmSd = 2 VmDd)<br />

V = 1 se (VmDs = 2 VmSs) AND (VmSd = 2 VmDd)<br />

Dove VmS e VmD in<strong>di</strong>cano la varianza <strong>di</strong> intensità luminosa ai lati delle regioni<br />

93


<strong>di</strong>fferenza, mentre s e d in<strong>di</strong>cano la regione <strong>di</strong>fferenza specifica;<br />

− in<strong>di</strong>catore <strong>di</strong> variazione <strong>di</strong> colore laterale F:<br />

F = 0 se (FmDs < 2 FmSs) AND (FmSd < 2 FmDd)<br />

F = 0.5 se (FmDs = 2 FmSs) XOR (FmSd = 2 FmDd)<br />

F = 1 se (FmDs = 2 FmSs) AND (FmSd = 2 FmDd)<br />

Dove i fattori Fm sono la me<strong>di</strong>a delle variazioni tra i colori dei pixel dell’insieme <strong>di</strong><br />

test e i pixel a loro sottostanti (ossia sono il numero me<strong>di</strong>o <strong>di</strong> attraversamenti dei<br />

confini tra regioni a colorazione <strong>di</strong>versa);<br />

− in<strong>di</strong>catore <strong>di</strong> pari colorazione ai due margini laterali dell’ostacolo C:<br />

C = 0 se Dc(CmDs , CmSd) > 0<br />

C = 1 se Dc(CmDs , CmSd) = 0<br />

dove Dc è la f<strong>un</strong>zione <strong>di</strong> appartenenza alla classe fuzzy <strong>di</strong> <strong>di</strong>fferenza <strong>di</strong> colore,<br />

definita in seguito. Si richiede cioè che l’ostacolo abbia <strong>un</strong>a colorazione simile ai<br />

suoi due estremi laterali;<br />

− in<strong>di</strong>catore <strong>di</strong> alta variazione <strong>di</strong> colorazione tra i due apici inferiori delle regioni<br />

<strong>di</strong>fferenza U:<br />

si considera il rettangolo <strong>di</strong> immagine con x compreso tra (x 1s +1) e (x 1d -1)<br />

(ossia le coor<strong>di</strong>nate x degli apici inferiori delle regioni <strong>di</strong>fferenze s e d), e<br />

con y compreso tra (min{y 1s ,y 1d }-6) e (max{y 1s ,y 1d }+6) e si conta il<br />

numero Nv <strong>di</strong> colonne del rettangolo l<strong>un</strong>go le quali si incontra almeno <strong>un</strong><br />

p<strong>un</strong>to ad elevata <strong>di</strong>scontinuità <strong>di</strong> colore: per ogni pixel della colonna si<br />

opera <strong>un</strong> confronto tra il colore me<strong>di</strong>o dei tre pixel superiori ed il colore<br />

me<strong>di</strong>o dei tre pixel inferiori con la tecnica fuzzy descritta, e, se il grado <strong>di</strong><br />

appartenenza alla classe <strong>di</strong> <strong>di</strong>versità <strong>di</strong> colore è superiore a 0.5, la colonna<br />

presenta tale <strong>di</strong>scontinuità. Si avrà:<br />

U = 0 se (Nv / (x 1d - x 1s - 2)) < 0.5<br />

U = 1 se (Nv / (x 1d - x 1s - 2)) = 0.5<br />

Il significato <strong>di</strong> questo in<strong>di</strong>catore è che se effettivamente tra le regioni s e d è<br />

presente <strong>un</strong> ostacolo, la base dell’ostacolo sarà compresa tra i loro apici<br />

inferiori, e quin<strong>di</strong> si presenterà <strong>un</strong> confine tra regioni a colorazione <strong>di</strong>verse<br />

(l’ostacolo ed il pavimento).<br />

94


Mentre i primi due in<strong>di</strong>catori si fondano sull’analisi <strong>di</strong> caratteristiche della singola<br />

regione <strong>di</strong>fferenza, e basano il loro principio sull’ipotesi che l’ostacolo abbia delle<br />

variazioni <strong>di</strong> colore e intensità più limitate rispetto al suo sfondo, il terzo e quarto<br />

in<strong>di</strong>catore sono invece legati a caratteristiche della coppia <strong>di</strong> regioni <strong>di</strong>fferenza da<br />

collegare e si sono <strong>di</strong>mostrati più efficaci. Per questo motivo agli in<strong>di</strong>catori si<br />

attribuiscono pesi <strong>di</strong>versi: I e F hanno peso rispettivamente pI e pF pari a 2, C ha peso<br />

pC pari a 6, U ha peso pU pari a 10. In conclusione, la probabilità Po attribuita alla<br />

regione ostacolo Os è pari a:<br />

Po = (I * pI + F * pF + C * pC + U *pU) / (pI + pF + pC + pU)<br />

In seguito si opera la “chiusura” dei contorni in<strong>di</strong>viduando le regioni in cui si ipotizza<br />

essere presente <strong>un</strong> ostacolo: questa chiusura verrà eseguita sulla base della posizione dei<br />

due apici inferiori per regioni appartenenti alla classe sub 1) e sub 3) (sempre che queste<br />

ultime presentino due apici) e sulla base dei primi apici inferiori delle coppie <strong>di</strong> regioni<br />

<strong>un</strong>ite da matching. In ogni casi si avranno due apici da collegare per “chiudere” l’area<br />

dell’ostacolo. Questa operazione avviene tracciando solamente linee orizzontali e,<br />

laddove necessario, prol<strong>un</strong>gamenti delle regioni sub 2) e sub 4) e linee ra<strong>di</strong>ali al centro<br />

del sistema <strong>di</strong> riferimento del robot (O) nel caso sub 1) e sub 3). Nell’immagine in<br />

figura 4.16 viene mostrato il risultato <strong>di</strong> questa operazione.<br />

95


Figura 4.16<br />

L’ultima fase <strong>di</strong> elaborazione consiste nell’adattare tramite estensione o restringimento<br />

laterale e verticale le regioni in<strong>di</strong>viduate ad effettive regioni (a colorazione <strong>un</strong>iforme)<br />

presenti nell’immagine rettificata iniziale (figura 4.6). Si torna ad utilizzare quin<strong>di</strong><br />

l’immagine RGB rettificata proveniente dalla telecamera frontale, e per eseguire questo<br />

adattamento si stu<strong>di</strong>a linea per linea la <strong>di</strong>scontinuità della colorazione in <strong>un</strong> intorno<br />

(detto IntO) dell’intervallo delle regioni-ostacolo su quella linea, e si spostano i confini<br />

<strong>di</strong> questa regione in maniera da farli corrispondere alle <strong>di</strong>scontinuità più elevate e<br />

vicine. Per lo stu<strong>di</strong>o della <strong>di</strong>versità <strong>di</strong> colore si utilizza <strong>un</strong>a tecnica fuzzy già descritta.<br />

In particolare per ogni pixel <strong>di</strong> IntO si confrontano i due colori C1 e C2 ottenuti dalla<br />

me<strong>di</strong>a dei valori RGB dei tre pixel precedenti e dei tre pixel successivi a quello in<br />

questione. Ricercando i massimi locali <strong>di</strong> appartenenza a questa classe l<strong>un</strong>go il<br />

segmento in questione IntO si trovano i possibili nuovi estremi della regione ostacolo e<br />

nel caso della presenza <strong>di</strong> più possibilità si scelgono quelle che massimizzano il fattore<br />

(I / D), dove I è l’intensità <strong>di</strong> appartenenza alla classe Dc, D è la <strong>di</strong>stanza tra il massimo<br />

locale e l’estremo iniziale, sulla riga della regione-ostacolo, da spostare.<br />

96


Utilizzando i seguenti valori <strong>di</strong> soglia: sogliaInferiore = 10; costanteDiScala = 25;<br />

sogliaDifferenza = 0.5, si è ottenuto il risultato mostrato in figura 4.17, dove le macchie<br />

rosse in<strong>di</strong>viduano gli ostacoli e quin<strong>di</strong>, per contrasto, l’area camminabile.<br />

Figura 4.17<br />

97


4.2.3. Risultati<br />

Occupiamoci ora delle prestazioni ottenute dal sistema <strong>di</strong> riconoscimento degli ostacoli:<br />

ci interessa sia la velocità <strong>di</strong> esecuzione e la complessità delle elaborazioni viste, sia<br />

l’efficacia <strong>di</strong> riconoscimento degli ostacoli. In particolare questo secondo in<strong>di</strong>ce <strong>di</strong><br />

prestazione si basa su <strong>un</strong> test eseguito montando il sensore HOPS su <strong>un</strong> robot mobile e<br />

impiegandolo per il riconoscimento <strong>di</strong> ostacoli l<strong>un</strong>go traiettorie navigate in <strong>di</strong>versi<br />

ambienti.<br />

Utilizzando <strong>un</strong> processore AMD K6 a 350MHz si è raggi<strong>un</strong>ta <strong>un</strong>a frequenza <strong>di</strong> lavoro <strong>di</strong><br />

circa 3Hz (acquisizioni e analisi al secondo); ciò significa che con <strong>un</strong> processore più<br />

recente non si avrebbero problemi a raggi<strong>un</strong>gere i 10 Hz. A parte la fase <strong>di</strong><br />

inizializzazione del sistema, che richiede <strong>un</strong> tempo <strong>di</strong> circa 7 secon<strong>di</strong> per la lettura delle<br />

look-up-tables e la creazione delle strutture dati richieste, possiamo sud<strong>di</strong>videre l’intero<br />

processo in sottofasi e analizzare più nel dettaglio il tempo <strong>di</strong> esecuzione richiesto da<br />

ogn<strong>un</strong>a <strong>di</strong> esse. Come mostrato in figura 4.19, possiamo identificare le seguenti<br />

sottofasi:<br />

− acquisizione, in cui i valori <strong>di</strong> intensità dei pixel vengono letti da <strong>un</strong> buffer<br />

aggiornato dal framegrabber e vengono <strong>di</strong>rettamente utilizzati per la generazione<br />

delle immagini rettificate;<br />

− preparazione al confronto, dove si generano le immagini riguardanti il solo campo<br />

visivo com<strong>un</strong>e e si opera la trasformazione d’istogramma;<br />

− confronto, in cui viene generata l’immagine <strong>di</strong> confronto e operato il filtraggio <strong>di</strong><br />

questa;<br />

− segmentazione, dove si opera il blob coloring;<br />

− interpretazione, dove infine si opera il matching e l’adattamento delle regioni<br />

ostacolo.<br />

Si osservi nella figura 4.19 come, mentre le prime due sottofasi sono “doppie” e quin<strong>di</strong><br />

eseguibili in parallelo per le due <strong>di</strong>verse telecamere, tutte le successive sono “<strong>un</strong>iche”.<br />

98


Figura 4.19<br />

I tempi me<strong>di</strong> <strong>di</strong> esecuzione rilevati per le <strong>di</strong>verse sottofasi sono pari a: 41ms (per il<br />

cata<strong>di</strong>ottro) e 30ms (per la telecamera frontale) per le due fasi <strong>di</strong> acquisizione, 50ms e<br />

45ms per le due fasi <strong>di</strong> preparazione (la trasformazione dell’istogramma avviene solo<br />

per l’immagine da cata<strong>di</strong>ottro), ed infine 29ms, 33ms, 150s rispettivamente per il<br />

confronto, la segmentazione, l’interpretazione. In conclusione si ha <strong>un</strong> ciclo elaborativo<br />

<strong>di</strong> acquisizione-ricerca ostacoli che richiede <strong>un</strong> tempo pari a 378ms, che app<strong>un</strong>to<br />

corrisponde ad <strong>un</strong>a frequenza <strong>di</strong> 2,65Hz. Facendo <strong>un</strong>a semplice analisi sulla possibilità<br />

<strong>di</strong> rendere parallela l’elaborazione, si è osservato che sia la fase <strong>di</strong> acquisizione che<br />

quella <strong>di</strong> preparazione al confronto, ma anche circa l’80% della fase <strong>di</strong> interpretazione si<br />

prestano favorevolmente all’impiego <strong>di</strong> processori in parallelo. Nel caso <strong>di</strong> due<br />

processori si determinerebbe <strong>un</strong> elevato incremento <strong>di</strong> prestazioni, portando facilmente<br />

la frequenza <strong>di</strong> lavoro attorno ai 4Hz.<br />

Dal p<strong>un</strong>to <strong>di</strong> vista della complessità degli algoritmi è stato calcolato che: detti m ed n il<br />

numero <strong>di</strong> pixel delle due immagini rettificate (quella da cata<strong>di</strong>ottro e quella da<br />

telecamera frontale), le sottofasi <strong>di</strong> acquisizione e preparazione al confronto sono<br />

rispettivamente degli O(m) e O(n), le fasi <strong>di</strong> confronto e segmentazione sono degli O(n)<br />

e infine la fase <strong>di</strong> interpretazione, volendo adottare <strong>un</strong>a stima molto peggiorativa, è <strong>un</strong><br />

O(m+nvn). Quin<strong>di</strong> il ciclo completo è sostanzialmente <strong>un</strong> O(m+nvn).<br />

Occupiamoci ora delle prestazioni <strong>di</strong> riconoscimento degli ostacoli. Sono stati eseguiti<br />

numerosi test del sistema in ambienti indoor parzialmente strutturati quali il campo<br />

99


della competizione Robocup, laboratori e corridoi della facoltà ottenendo buoni risultati<br />

<strong>di</strong> affidabilità. I test si sono svolti nel seguente modo: il sistema viene montato su <strong>un</strong><br />

robot mobile e viene simulato (dato che non esiste ancora <strong>un</strong> modulo comportamentale<br />

e <strong>di</strong> pianificazione) il suo spostamento l<strong>un</strong>go <strong>un</strong>a traiettoria verso <strong>un</strong>o specifica meta.<br />

Tra il p<strong>un</strong>to <strong>di</strong> partenza e la meta vengono posizionati degli ostacoli che il modulo <strong>di</strong><br />

visione dovrebbe riconoscere. Se effettivamente questi vengono riconosciuti si può<br />

ipotizzare che il sistema, <strong>un</strong>a volta dotato <strong>di</strong> <strong>un</strong> modulo <strong>di</strong> pianificazione adeguato,<br />

raggi<strong>un</strong>gerebbe la meta comportandosi adeguatamente, e quin<strong>di</strong> si dà esito positivo al<br />

test. Le immagini acquisite durante i test sono prese dalle posizioni più critiche l<strong>un</strong>go la<br />

traiettoria seguita e lo spostamento successivo ad ogni acquisizione è chiaramente<br />

legato al risultato <strong>di</strong> ricerca <strong>di</strong> ostacoli prodotto dal sistema.<br />

Come esempi significativi, presentiamo <strong>di</strong> seguito i risultati <strong>di</strong> due <strong>di</strong> questi test:<br />

− il primo eseguito in <strong>un</strong> corridoio della facoltà nel quale sono stati posizionati sia<br />

degli ostacoli veri e propri (<strong>un</strong> classificatore, <strong>un</strong> cestino, <strong>un</strong>a sacca, <strong>un</strong>a se<strong>di</strong>a e <strong>un</strong>a<br />

persona) sia dei finti ostacoli (pattern ad alto contrasto <strong>di</strong>segnati su fogli posti sul<br />

pavimento) per testare l’efficacia dell’algoritmo <strong>di</strong> stu<strong>di</strong>o delle <strong>di</strong>fferenze stereo<br />

basato sull’IPM. In questo test gli ostacoli sono fissi.<br />

− Il secondo eseguito in <strong>un</strong> laboratorio della facoltà nel quale si introduce la mobilità<br />

degli ostacoli (in particolare <strong>di</strong> <strong>un</strong>a persona) e quin<strong>di</strong> si simula <strong>un</strong>a interazione tra il<br />

movimento <strong>di</strong> questi e la traiettoria del robot.<br />

I risultati dei test vengono presentati come sequenze <strong>di</strong> immagini relative a p<strong>un</strong>ti critici<br />

del percorso navigato. Innanzitutto abbiamo le due immagini acquisite, poi le due<br />

immagini rettificate pronte al confronto (nelle quali compare solo la parte <strong>di</strong> campo<br />

visivo com<strong>un</strong>e), infine l’immagine rappresentante l’area camminabile (in cui in rosso<br />

sono evidenziati gli ostacoli, ossia le parti della scena non camminabili). Nella figura<br />

4.20 la mappa <strong>di</strong> rappresentazione schematica delle scene del test, mentre nella tabella<br />

<strong>di</strong> seguito è presentato l’insieme delle immagini relative al primo test.<br />

100


Figura 4.20<br />

Acquisizione<br />

frontale<br />

Acquisizione<br />

cata<strong>di</strong>ottro<br />

Rettificata<br />

frontale<br />

Rettificata<br />

cata<strong>di</strong>ottro<br />

Area<br />

camminabile<br />

101


Come si può osservare nella mappa rappresentata in figura 4.20, sono stati posizionati<br />

l<strong>un</strong>go il corridoio sei ostacoli (1-6) e tre finti ostacoli (A-C). Il cerchio blu rappresenta il<br />

robot ed il segmento nero ad esso ra<strong>di</strong>ale, la <strong>di</strong>rezione <strong>di</strong> osservazione nell’istante <strong>di</strong><br />

acquisizione. La traiettoria percorsa dal robot è in<strong>di</strong>cata in azzurro e va da sinistra verso<br />

destra. Nella prima posizione del robot sono stati osservati tre ostacoli: <strong>un</strong> mobile da<br />

ufficio sulla sinistra (1), <strong>un</strong> cestino in centro (2) e ed <strong>un</strong>a sporgenza del muto. Dalla<br />

rielaborazione delle immagini acquisite nella seconda posizione emergono nuovamente<br />

il mobile (1), il cestino (2) ed <strong>un</strong>a borsa (3). Nella terza posizione, <strong>un</strong>a se<strong>di</strong>a (4) e la<br />

borsa (3); nella quarta nuovamente la se<strong>di</strong>a (4) e sullo sfondo il muro; infine nella<br />

quinta <strong>un</strong>a persona nel centro (5), il muro e l’inizio <strong>di</strong> <strong>un</strong> vaso (6) sulla destra e l’inizio<br />

<strong>di</strong> <strong>un</strong>’asse <strong>di</strong> legno (7) <strong>di</strong>stesa sulla sinistra.<br />

Inoltre tutti gli ostacoli finti, inquadrati nelle prime tre immagini, sono stati<br />

correttamente interpretati.<br />

Passiamo ora al secondo test: la mappa della scena è presentata nella figura 4.21, mentre<br />

le sequenze <strong>di</strong> immagini sono riportate nella tabella seguente.<br />

Figura 4.21<br />

102


Acquisizione<br />

frontale<br />

Acquisizione<br />

cata<strong>di</strong>ottro<br />

Rettificata<br />

frontale<br />

Rettificata<br />

cata<strong>di</strong>ottro<br />

Area<br />

camminabile<br />

Nel secondo test la navigazione avviene in <strong>un</strong> laboratorio. In esso si trovano i seguenti<br />

ostacoli: <strong>un</strong>a cassettiera (1), <strong>un</strong>a scatola <strong>di</strong> cartone (2), <strong>un</strong>a se<strong>di</strong>a (3), tre tavoli (4, 5, 6),<br />

nonché <strong>un</strong>a persona che, durante la navigazione del robot, cammina e quin<strong>di</strong> rende<br />

<strong>di</strong>namico l’ambiente. Infine abbiamo due finti ostacoli (A e B). Anche qui il robot è<br />

rappresentato dal cerchio blu e la traiettoria dalla linea azzurra, percorsa da sinistra<br />

verso destra. La persona usata come ostacolo mobile è invece rappresentata dal cerchio<br />

rosso e la sua traiettoria dalla linea gialla (anch’essa percorsa da sinistra verso destra).<br />

Ad ogni istante <strong>di</strong> acquisizione <strong>di</strong> immagini riportato è stata in<strong>di</strong>cata la relativa<br />

103


posizione della persona. Quin<strong>di</strong> ad esempio, il terzo cerchio rosso corrisponde alla<br />

posizione della persona relativa alla terza acquisizione <strong>di</strong> immagini.<br />

Nella prima rappresentazione dell’area camminabile si identificano due ostacoli, sulla<br />

sinistra la cassettiera (1) e sulla destra la persona seduta sulla se<strong>di</strong>a (3). Nella seconda<br />

viene identificata <strong>un</strong>a grossa regione ostacolo che comprende sia la persona (ora alzatasi<br />

in pie<strong>di</strong>) sia due tavoli (4, 5). Nella terza la persona che si <strong>di</strong>rige verso il centro della<br />

stanza, nonché <strong>un</strong> tavolo sullo sfondo (4). Nella quarta la persona che si <strong>di</strong>rige verso la<br />

porta, la scatola (2) sulla sinistra e la gamba <strong>di</strong> <strong>un</strong> tavolo (6) sullo sfondo. Infine nella<br />

quinta rappresentazione si osservano due soli ostacoli: la base della se<strong>di</strong>a sulla destra e<br />

<strong>un</strong>a gamba <strong>di</strong> <strong>un</strong> tavolo (3) sullo sfondo.<br />

Anche in questo caso i finti ostacoli sono stati correttamente interpretati come area<br />

camminabile, prova del buon f<strong>un</strong>zionamento degli algoritmi <strong>di</strong> calibrazione e <strong>di</strong><br />

inversione prospettica.<br />

104


4.3. Sviluppi futuri<br />

In questa prima fase del progetto centrato sull’impiego <strong>di</strong> HOPS ci si è posto l’obiettivo<br />

<strong>di</strong> fornire il sistema sensoriale della capacità <strong>di</strong> in<strong>di</strong>viduare ostacoli nella regione <strong>di</strong><br />

campo visivo com<strong>un</strong>e alle due telecamere. In fasi successive del progetto sarà<br />

necessario sviluppare routines per l’estrazione <strong>di</strong> altri tipi <strong>di</strong> informazioni, legate<br />

all’applicazione specifica: ad esempio nel caso dell’applicazione Robocup è<br />

fondamentale la capacità <strong>di</strong> auto-localizzazione nel campo (estremamente facilitata<br />

dall’impiego del cata<strong>di</strong>ottro), <strong>di</strong> riconoscimento <strong>di</strong> alc<strong>un</strong>i oggetti <strong>di</strong> interesse quali il<br />

pallone e le porte, eccetera. Quin<strong>di</strong> sarà fondamentale estendere le f<strong>un</strong>zionalità visive<br />

per sfruttare a pieno il sensore cata<strong>di</strong>ottrico, per l’analisi su vasto raggio <strong>di</strong><br />

caratteristiche <strong>di</strong> interesse, e l’accoppiamento dei due sensori per <strong>un</strong>’analisi più<br />

approfon<strong>di</strong>ta dei particolari della regione frontale al robot.<br />

Al sistema visivo che si occupa <strong>di</strong> fornire informazioni sul mondo esterno dovranno<br />

essere affiancati <strong>un</strong>o o più moduli che si occu<strong>pin</strong>o <strong>di</strong> utilizzare queste informazioni con<br />

scopi più decisionali: ad esempio si dovranno sviluppare f<strong>un</strong>zionalità <strong>di</strong> pianificazione<br />

delle traiettorie dato <strong>un</strong> ambiente con ostacoli e obiettivi da raggi<strong>un</strong>gere.<br />

105


Capitolo 5.<br />

La gestione del sistema visivo<br />

5.1. Introduzione<br />

Questo capitolo descrive il progetto del sistema <strong>di</strong> gestione dell’apparato visivo <strong>di</strong> <strong>un</strong><br />

robot mobile. Verranno messe in luce tutte le principali scelte architetturali e progettuali.<br />

Dopo <strong>un</strong>a fase iniziale <strong>di</strong> definizione dei requisiti, delle f<strong>un</strong>zionalità da sviluppare e del<br />

loro scheduling, il processo <strong>di</strong> creazione del sistema si fonda sull’iterazione <strong>di</strong> tre passi<br />

fondamentali: l’analisi <strong>di</strong> <strong>un</strong> sottoinsieme delle f<strong>un</strong>zionalità (con la conseguente<br />

creazione <strong>di</strong> <strong>un</strong> modello concettuale del dominio, ossia <strong>un</strong> insieme <strong>di</strong> entità e <strong>di</strong> concetti<br />

messi in relazione tra <strong>di</strong> loro), la progettazione delle classi necessarie a garantire al<br />

sistema le f<strong>un</strong>zionalità scelte (e quin<strong>di</strong> la costruzione <strong>di</strong> <strong>un</strong> <strong>di</strong>agramma delle classi,<br />

passando attraverso <strong>un</strong>’analisi delle interazioni e collaborazioni prima tra i concetti e<br />

poi tra le classi), lo sviluppo delle classi progettate.<br />

Il paragrafo 5.2 contiene <strong>un</strong>a breve descrizione dei risultati della fase <strong>di</strong> definizione dei<br />

requisiti del sistema. Nel paragrafo 5.3 si in<strong>di</strong>viduano i p<strong>un</strong>ti chiave della fase <strong>di</strong> analisi<br />

dei requisiti e della creazione <strong>di</strong> <strong>un</strong> modello concettuale del dominio. Infine, nel<br />

paragrafo 5.4, si sviluppa la fase <strong>di</strong> progetto delle classi del sistema.<br />

106


5.2. Definizione dei requisiti<br />

Il modulo <strong>di</strong> gestione software dell’apparato sensoriale visivo <strong>di</strong> <strong>un</strong> robot mobile è stato<br />

progettato tenendo conto delle seguenti specifiche:<br />

− il modulo visivo deve gestire tutte le fasi dall’acquisizione delle immagini,<br />

all’interpretazione della scena circostante, alla com<strong>un</strong>icazione del modello della<br />

scena costruito ad altri moduli elaborativi del robot (comportamentale, attuativo, <strong>di</strong><br />

pianificazione, eccetera). Infatti il modulo visivo è solo <strong>un</strong>o dei componenti <strong>di</strong> <strong>un</strong><br />

più ampio sistema <strong>di</strong> gestione del robot mobile e deve quin<strong>di</strong> integrarsi in <strong>un</strong>a<br />

architettura <strong>di</strong> livello superiore nella quale deve sostanzialmente utilizzare <strong>un</strong><br />

sistema <strong>di</strong> com<strong>un</strong>icazione per render noti agli altri moduli interessati i risultati delle<br />

proprie elaborazioni ed eventualmente per ricevere informazioni dall’esterno.<br />

− La conformazione dell’apparato visivo è da considerarsi del tutto generica, a parte<br />

l’<strong>un</strong>ico ass<strong>un</strong>to <strong>di</strong> avere due sole telecamere: in<strong>di</strong>pendentemente dall’utilizzo <strong>di</strong><br />

cata<strong>di</strong>ottri o telecamere CCD più tra<strong>di</strong>zionali o altri tipi <strong>di</strong> sensori visivi, ad ogni<br />

nuovo input sensoriale il sistema acquisisce al massimo due immagini da <strong>di</strong>verse<br />

telecamere. In realtà anche se nel modulo viene preso in considerazione <strong>un</strong> sistema<br />

<strong>di</strong> visione binoculare, deve essere possibile gestire con semplici mo<strong>di</strong>fiche la<br />

presenza <strong>di</strong> altre telecamere.<br />

− Le eventuali informazioni <strong>di</strong> inizializzazione del sistema, riguardanti ad esempio la<br />

calibrazione dei <strong>di</strong>versi sensori visivi o i parametri <strong>di</strong> acquisizione, devono essere<br />

co<strong>di</strong>ficate in maniera <strong>un</strong>iforme e in<strong>di</strong>pendente dal sensore stesso (per potersi astrarre<br />

da questo).<br />

− Nell’analisi delle immagini, per rendere facile l’impiego del sistema in <strong>di</strong>fferenti tipi<br />

<strong>di</strong> applicazioni, il modulo visivo deve essere flessibile per potersi adattare a casi<br />

<strong>di</strong>versi e integrare nuovi algoritmi. Il sistema, pronto per <strong>un</strong>a specifica applicazione,<br />

avrà infatti sia <strong>un</strong> insieme <strong>di</strong> routines <strong>di</strong> base fornite all’origine (come quelle per<br />

l’inversione prospettica, l’obstacle detection, eccetera), sia <strong>un</strong> insieme <strong>di</strong> routines<br />

più specifiche da integrare nel sistema <strong>di</strong> volta in volta (secondo il para<strong>di</strong>gma delle<br />

visual routines).<br />

− Trattandosi <strong>di</strong> elaborazione in sistemi real-time si vuol poter raggi<strong>un</strong>gere <strong>un</strong>a<br />

107


frequenza <strong>di</strong> lavoro sufficiente a garantire al robot <strong>un</strong>a buona reattività, che<br />

possiamo quantificare con il valore <strong>di</strong> 10 acquisizioni/secondo.<br />

− Il sistema deve avere <strong>un</strong> <strong>di</strong>spositivo software <strong>di</strong> controllo della frequenza effettiva <strong>di</strong><br />

lavoro e la possibilità <strong>di</strong> ridurre il carico computazionale <strong>di</strong> certe elaborazioni<br />

eseguite, per poter gestire l’analisi delle immagini in maniera proporzionale alle<br />

risorse elaborative <strong>di</strong>sponibili.<br />

A partire da queste specifiche è possibile estrapolare <strong>un</strong> insieme <strong>di</strong> f<strong>un</strong>zionalità<br />

elementari per il sistema. Nella tabella che segue vengono presentate e descritte tutte le<br />

f<strong>un</strong>zionalità prese in considerazione: ossia solo quelle del tutto generiche ed<br />

in<strong>di</strong>pendenti da ogni specifica applicazione.<br />

Ref.# F<strong>un</strong>zionalità Attributi Dettagli e Limiti Cat. Attr.<br />

R1.1 Settare i parametri <strong>di</strong><br />

f<strong>un</strong>zionamento dei<br />

framegrabbers.<br />

R1.2 Acquisire immagini dalle due<br />

telecamere.<br />

Interfaccia<br />

grafica<br />

Dimensioni<br />

immagini<br />

R1.3 Settare i parametri degli descrizione<br />

strumenti <strong>di</strong> inversione <strong>un</strong>iforme e<br />

prospettica delle telecamere. in<strong>di</strong>pendente<br />

dallo<br />

specifico<br />

sensore.<br />

R1.4 Operare l’inversione prospettica Tolleranza<br />

sulle immagini acquisite. imprecisioni<br />

Finestra sullo Opzionale<br />

schermo con<br />

l’immagine<br />

catturata.<br />

Circa 500x300 Opzionale<br />

Entro circa 10cm Obbligat.<br />

dalla posizione<br />

reale a 3 m dal<br />

108


sistema<br />

R1.5 Identificare il campo visivo<br />

Tolleranza<br />

Eventuali errori <<br />

Obbligat.<br />

com<strong>un</strong>e e settare i parametri<br />

imprecisioni<br />

5cm<br />

degli strumenti <strong>di</strong> confronto<br />

stereo.<br />

R1.6 Calibrare i colori dei <strong>di</strong>versi<br />

sensori.<br />

R1.7 Analizzare le immagini e<br />

Risposta<br />

Frequenza totale<br />

Desiderato<br />

interpretare la scena<br />

temporale<br />

del sistema <strong>di</strong> 10<br />

rappresentata secondo i criteri<br />

Hz con <strong>un</strong><br />

della specifica applicazione.<br />

processore recente<br />

R1.8 Operare l’obstacle detection.<br />

R1.9 Aggiornare la rappresentazione<br />

del mondo esterno via via che si<br />

identificano nuovi elementi.<br />

R1.10 Regolare il carico<br />

computazionale dell’analisi<br />

delle immagini tramite <strong>un</strong>a<br />

relativa politica.<br />

R1.11 Generare messaggi <strong>di</strong><br />

Limite<br />

I messaggi<br />

descrizione del mondo esterno<br />

<strong>di</strong>mensionale<br />

dovranno essere il<br />

più concisi<br />

possibile<br />

R1.12 Inviare e ricevere messaggi<br />

tramite il “sistema <strong>di</strong><br />

com<strong>un</strong>icazione”<br />

R1.13 Utilizzare messaggi ricevuti per<br />

eventualmente mo<strong>di</strong>ficare il<br />

proprio stato interno (politica <strong>di</strong><br />

gestione e analisi) e la<br />

descrizione del mondo esterno.<br />

109


Il modulo visivo rappresenta solamente <strong>un</strong>a delle componenti del sistema <strong>di</strong> gestione<br />

del robot mobile. Le f<strong>un</strong>zionalità che dovranno essere realizzate in questo sistema<br />

possono essere sud<strong>di</strong>vise in <strong>di</strong>fferenti gruppi affidati a <strong>di</strong>fferenti moduli: <strong>un</strong> modulo<br />

sensoriale <strong>di</strong> visione (ma potremmo avere anche <strong>un</strong> modulo sensoriale <strong>di</strong> <strong>di</strong>versa natura<br />

da collegare a questo), <strong>un</strong> modulo <strong>di</strong> pianificazione e decisione comportamentale,<br />

moduli specifici per implementare <strong>di</strong>versi comportamenti (come può essere la<br />

manipolazione <strong>di</strong> <strong>un</strong>o specifico oggetto), <strong>un</strong> modulo <strong>di</strong> attuazione (ossia <strong>di</strong> controllo <strong>di</strong><br />

basso livello dei motori, eventuali piccoli arti meccanici o utensili eccetera). Una<br />

possibile architettura <strong>di</strong> sistema prevede la gestione delle f<strong>un</strong>zionalità <strong>di</strong> ogni modulo da<br />

parte <strong>di</strong> <strong>un</strong>o o più agenti software. Com<strong>un</strong>icando agli altri agenti i risultati delle loro<br />

elaborazioni e decisioni, questi permettono agli altri <strong>di</strong> crearsi <strong>un</strong> modello (relativo ai<br />

loro compiti) del mondo esterno. Chiaramente, mentre il modulo comportamentale per<br />

sua natura può essere facilmente implementato da <strong>un</strong> pool <strong>di</strong> agenti, quello visivo, o più<br />

in generale sensoriale, data la sua natura piuttosto ripetitiva, garantisce poche possibilità<br />

<strong>di</strong> implementazione tramite <strong>un</strong> agente vero e proprio. In ogni caso si è voluto realizzare<br />

<strong>un</strong> modulo visivo basato sul progetto <strong>di</strong> <strong>un</strong> insieme <strong>di</strong> classi facilmente adottabili come<br />

strumenti elaborativi <strong>di</strong> <strong>un</strong> eventuale agente visivo.<br />

Le principali problematiche <strong>di</strong> sviluppo del modulo che si possono a questo p<strong>un</strong>to<br />

in<strong>di</strong>viduare sono:<br />

− i limiti <strong>di</strong> velocità operativa da rispettare: questo problema riguardante in modo<br />

particolare i l<strong>un</strong>ghi tempi richiesti dall’elaborazione delle immagini e l’eventuale<br />

lentezza <strong>di</strong> scambio <strong>di</strong> messaggi tra moduli cooperanti qualora i messaggi non<br />

fossero sufficientemente schematici e completi;<br />

− l’implementazione <strong>di</strong> efficaci routines per l’obstacle detection.<br />

Per quanto riguarda l’analisi degli use cases del modulo, in questo sta<strong>di</strong>o del progetto<br />

non esiste ancora <strong>un</strong>a definizione chiara degli altri moduli presenti nel sistema, e tanto<br />

meno del sistema <strong>di</strong> com<strong>un</strong>icazione tra <strong>di</strong> essi. Quin<strong>di</strong> più che use cases del modulo<br />

visivo, risulta essere interessante lo stu<strong>di</strong>o delle interazioni tra sottoparti del modulo<br />

stesso, che è stato sviluppato nella fase <strong>di</strong> progetto delle classi.<br />

110


5.3. Analisi dei requisiti e modello concettuale del dominio<br />

A partire dai requisiti e dalle f<strong>un</strong>zionalità finora prese in considerazione, è stato<br />

possibile estrapolare <strong>un</strong> insieme <strong>di</strong> concetti chiave del dominio <strong>di</strong> interesse e metterli in<br />

relazione tra <strong>di</strong> loro allo scopo <strong>di</strong> creare <strong>un</strong>a mappa, <strong>un</strong> modello concettuale.<br />

Ecco <strong>un</strong>a lista <strong>di</strong> concetti con relativi attributi (tra parentesi) che rientrano nel dominio<br />

<strong>di</strong> interesse: non si tratta <strong>di</strong> <strong>un</strong> dominio del mondo reale (quin<strong>di</strong> molti concetti sono<br />

astratti) ma si è cercato <strong>di</strong> evitare concetti <strong>di</strong> tipo informatico, non adatti a questa fase<br />

preliminare <strong>di</strong> analisi.<br />

Sistema <strong>di</strong><br />

visione<br />

(frequenza<br />

desiderata,<br />

frequenza<br />

reale)<br />

Agente esterno Com<strong>un</strong>icatore Ricercatore Feature (tempo<br />

dell’osservazione)<br />

Mondo Esterno<br />

(numero<br />

features<br />

in<strong>di</strong>viduate)<br />

Sistema<br />

Binoculare<br />

(posizionament<br />

o reciproco dei<br />

sistemi <strong>di</strong><br />

riferimento)<br />

Telecamera<br />

(corrispondenz<br />

e p<strong>un</strong>ti-pixel,<br />

Ximmagine,<br />

Yimmagine)<br />

Messaggio<br />

(sorgente,<br />

destinatario)<br />

Frame Grabber<br />

(parametri <strong>di</strong><br />

acquisizione)<br />

ImmagineRGB<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB)<br />

ImmagineRGB<br />

Ricostruita<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB,<br />

sensibilita)<br />

ImmagineGrey<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità grey)<br />

ImmagineGrey<br />

Ricostruita<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità grey,<br />

sensibilita)<br />

Immagine<br />

Segmentata<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB,<br />

matrice<br />

segmenti,<br />

sensibilita)<br />

111


Ostacolo<br />

(posizione,<br />

velocità)<br />

Robot<br />

(posizione,<br />

orientazione,<br />

velocità)<br />

Area<br />

Camminabile<br />

(matrice<br />

camminabilità)<br />

E’ necessario chiarire il significato <strong>di</strong> alc<strong>un</strong>i <strong>di</strong> questi concetti:<br />

− Mondo Esterno non è altro che <strong>un</strong>a rappresentazione della conoscenza della scena e<br />

dell’ambiente che il modulo ha acquisito dalle sue elaborazioni;<br />

− Agente Esterno è chiaramente <strong>un</strong> qualsiasi agente esterno al sistema (modulo visivo)<br />

con il quale si debba com<strong>un</strong>icare;<br />

− Com<strong>un</strong>icatore che si occupa <strong>di</strong> mandare e ricevere messaggi;<br />

− Messaggio costituito da informazioni riguardanti <strong>un</strong>a o più features in<strong>di</strong>viduate;<br />

− ImmagineRGB è <strong>un</strong>a semplice immagine acquisita;<br />

− ImmagineRGB Ricostruita è <strong>un</strong>a immagine generata per inversione prospettica da<br />

immagine acquisita;<br />

− Immagine Segmentata è composta da <strong>un</strong>a immagine RGB Ricostruita e <strong>di</strong><br />

<strong>di</strong>stinguere tra <strong>di</strong>verse aree <strong>di</strong> essa.<br />

Ve<strong>di</strong>amo ora le principali relazioni tra i concetti elencati. Innanzitutto la relazione <strong>di</strong><br />

generalizzazione, poi <strong>un</strong>a seconda tabella per le altre. Invece <strong>di</strong> mostrare queste<br />

relazioni in <strong>un</strong> <strong>di</strong>agramma UML delle classi, si è preferito farlo con tabelle per <strong>un</strong>a<br />

migliore visibilità.<br />

Superclasse Sottoclasse Commento<br />

Messaggio Feature Ogni feature è anche <strong>un</strong> messaggio che<br />

può essere com<strong>un</strong>icato<br />

Feature Ostacolo Ogni elemento <strong>di</strong> cui si vuol poter<br />

com<strong>un</strong>icare l’entità è <strong>un</strong>a feature<br />

Feature Area Camminabile Ogni elemento <strong>di</strong> cui si vuol poter<br />

com<strong>un</strong>icare l’entità è <strong>un</strong>a feature<br />

112


Feature Robot Ogni elemento <strong>di</strong> cui si vuol poter<br />

com<strong>un</strong>icare l’entità è <strong>un</strong>a feature<br />

ImmagineRGB ImmagineRGB Ricostruita<br />

ImmagineGrey ImmagineGrey Ricostruita<br />

ImmagineRGB<br />

Ricostruita<br />

Immagine Segmentata<br />

Soggetto Relazione Oggetto Descrizione<br />

Ricercatore(1) Usa Sistema<br />

Binoculare (1)<br />

Per acquisire e preparare (tramite<br />

inversione prospettica e calibrazione<br />

stereo) le immagini alla ricerca delle<br />

Features.<br />

Sistema <strong>di</strong><br />

visione (1)<br />

Usa Ricercatore (1) Per la costruzione <strong>di</strong> <strong>un</strong> modello del<br />

mondo esterno sulla base delle<br />

Features trovate.<br />

Sistema <strong>di</strong> Usa Com<strong>un</strong>icatore Per com<strong>un</strong>icare le Features trovate.<br />

visione (1)<br />

(1)<br />

Ricercatore (1) Elabora ImmagineRGB<br />

(0..2)<br />

Ricercatore (1) Elabora ImmagineRGB<br />

Ricostruita<br />

(0..*)<br />

Ricercatore (1) Elabora ImmagineGrey<br />

(0..2)<br />

Ricercatore (1) Elabora ImmagineGrey<br />

Ricostruite<br />

(0..*)<br />

Ricercatore (1) Elabora Immagine<br />

Segmentata<br />

(0..*)<br />

113


Com<strong>un</strong>icatore Prepara Messaggio (0..*)<br />

(1)<br />

Messaggio (1) Composto Da Feature (0..*)<br />

Com<strong>un</strong>icatore<br />

(1)<br />

Com<strong>un</strong>ica<br />

con<br />

Agente Esterno<br />

(1..*)<br />

Per informare su ciò che si conosce<br />

del mondo esterno<br />

Agente Esterno<br />

(1)<br />

Riceve Messaggio (1..*) Con la descrizione del mondo<br />

esterno<br />

Ricercatore (1) Trova Feature (0..*) Il Ricercatore cerca le features <strong>di</strong><br />

interesse nelle immagini a<br />

<strong>di</strong>sposizione<br />

Sistema <strong>di</strong> Aggiorna Mondo Esterno Ad ogni nuova scoperta fatta<br />

visione (1)<br />

(1)<br />

Mondo Esterno Contiene Feature (1..*)<br />

(1)<br />

Sistema Composto Da Telecamera (2)<br />

Binoculare (1)<br />

Telecamera (1) Gestisce ImmagineRGB<br />

(2)<br />

Gestisce l’immagine acquisista e<br />

quella ricostruita<br />

Telecamera (1) Gestisce ImmagineRGB Gestisce l’immagine ricostruita<br />

Ricostruita (1)<br />

Telecamera (1) Usa Frame Grabber<br />

(1)<br />

Allo scopo <strong>di</strong> analizzare le <strong>di</strong>namiche interne è utile sud<strong>di</strong>videre i concetti in quattro<br />

<strong>di</strong>verse aree tematiche:<br />

− Sistema ed Ambiente, l’insieme delle parti, i componenti fondamentali, e la<br />

conoscenza acquisita.<br />

− Ricerca, tutto ciò che ha a che fare con l’analisi delle immagini e la<br />

rappresentazione del mondo.<br />

− Sistema binoculare, le parti del sistema visivo e le immagini da esso generate.<br />

− Com<strong>un</strong>icazione, i messaggi e l’interfaccia con l’esterno.<br />

114


Sud<strong>di</strong>vi<strong>di</strong>amo i concetti tra queste aree tematiche.<br />

Sistema ed Com<strong>un</strong>icazione Ricerca Sistema Binoculare<br />

Ambiente<br />

Sistema <strong>di</strong> visione Com<strong>un</strong>icatore Ricercatore Sistema Binoculare<br />

Mondo Esterno Messaggio Feature Telecamera<br />

Agenti Esterni<br />

Immagine<br />

Frame Grabber<br />

Segmentata<br />

Ostacolo<br />

ImmagineRGB<br />

Robot<br />

ImmagineRGB<br />

Ricostruita<br />

Area Camminabile ImmagineGrey<br />

ImmagineGrey<br />

Ricostruita<br />

Le <strong>di</strong>verse aree tematiche corrispondono alle f<strong>un</strong>zionalità che il sistema deve gestire. In<br />

particolare le f<strong>un</strong>zionalità: R1.1-R1.5 sono legate all’area tematica Sistema Binoculare;<br />

le f<strong>un</strong>zionalità R1.6-R1.8 all’area della Ricerca; R1.11, R1.12 all’area Com<strong>un</strong>icazione;<br />

R1.9, R1.10, R1.13 all’area Sistema ed Ambiente.<br />

Nel primo ciclo <strong>di</strong> sviluppo del software è stato ristretto il numero <strong>di</strong> f<strong>un</strong>zionalità da<br />

supportare e il relativo modello concettuale. In particolare ci si occupa ora del progetto<br />

delle aree tematiche Sistema Binoculare e Ricerca (fatta eccezione per il solo concetto<br />

<strong>di</strong> Robot). In questo modo l’insieme dei concetti <strong>di</strong> interesse si restringe a quello<br />

presentato nella tabella seguente. Le relazioni tra concetti rimangono le stesse per il<br />

sottoinsieme considerato.<br />

115


Ricercatore<br />

(frequenza<br />

desiderata,<br />

frequenza<br />

reale)<br />

Sistema<br />

Binoculare<br />

(posizionament<br />

o reciproco dei<br />

sistemi <strong>di</strong><br />

riferimento)<br />

Telecamera<br />

(corrispondenze<br />

p<strong>un</strong>ti-pixel,<br />

Ximmagine,<br />

Yimmagine)<br />

Frame Grabber<br />

(parametri <strong>di</strong><br />

acquisizione)<br />

Feature<br />

(tempo della<br />

osservazione)<br />

ImmagineRGB<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB)<br />

ImmagineRGB<br />

Ricostruita<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB,<br />

sensibilita)<br />

ImmagineGrey<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità grey)<br />

ImmagineGrey<br />

Ricostruita<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità grey,<br />

sensibilita)<br />

Immagine<br />

Segmentata<br />

(Ximmagine,<br />

Yimmagine,<br />

matrice<br />

intensità RGB,<br />

matrice<br />

segmenti,<br />

sensibilita)<br />

Ostacolo<br />

(posizione,<br />

velocità)<br />

Area<br />

Camminabile<br />

(matrice<br />

camminabilità)<br />

116


5.4. <strong>Progetto</strong> del modulo visivo<br />

Come visto, più che le <strong>di</strong>namiche <strong>di</strong> interazione del modulo <strong>di</strong> visione con l’esterno,<br />

risulta utile stu<strong>di</strong>are le <strong>di</strong>namiche interne al modulo stesso, cioè gli eventi interni e gli<br />

eventi temporali. Allo scopo <strong>di</strong> analizzare queste <strong>di</strong>namiche il sistema è stato sud<strong>di</strong>viso<br />

in quattro sottosistemi (o packages) che rispecchiano la sud<strong>di</strong>visione in aree tematiche<br />

dei concetti analizzati nella fase precedente e ne realizzano le f<strong>un</strong>zionalità connesse:<br />

− Coor<strong>di</strong>namento generale (da Sistema ed ambiente), che coor<strong>di</strong>na le operazioni del<br />

modulo: <strong>un</strong>a sorta <strong>di</strong> controller ciclico che richiede elaborazioni, com<strong>un</strong>icazioni,<br />

aggiorna la conoscenza del mondo esterno.<br />

− Com<strong>un</strong>icazione (da Com<strong>un</strong>icazione), genera, spe<strong>di</strong>sce e riceve i messaggi sullo stato<br />

mondo esterno.<br />

− Ricerca features (da Ricerca), che app<strong>un</strong>to si occupa dell’analisi e interpretazione<br />

delle immagini.<br />

− Sistema binoculare (da Sistema Binoculare), gestisce le due telecamere e il loro<br />

accoppiamento.<br />

Nella tabella seguente vengono rappresentate le <strong>di</strong>pendenze e la visibilità tra <strong>di</strong>versi<br />

packages.<br />

Package Relazione Package visto e usato<br />

Coor<strong>di</strong>namento generale Usa Ricerca features<br />

Coor<strong>di</strong>namento generale Usa Com<strong>un</strong>icazione<br />

Ricerca features Usa Sistema Binoculare<br />

Il modello concettuale creato è stato concretizzato in classi associate a specifici<br />

packages. Tra parentesi sono in<strong>di</strong>cati (se <strong>di</strong>versi) i nomi dei concetti <strong>di</strong> origine.<br />

117


Coor<strong>di</strong>namento Com<strong>un</strong>icazione Ricerca Features Sistema Binoculare<br />

Gen.<br />

Modulo Visivo Com<strong>un</strong>icatore Gestore Di Ricerca Sistema Binoculare<br />

(Sistema <strong>di</strong> visione) Visivo<br />

(Com<strong>un</strong>icatore)<br />

(Ricercatore)<br />

Mondo Esterno Messaggio Feature Telecamera<br />

Immagine Frame Grabber<br />

Segmentata<br />

Ostacolo<br />

ImmagineRGB<br />

Robot<br />

ImmagineRGB<br />

Ricostruita<br />

Area Camminabile ImmagineGrey<br />

ImmagineGrey<br />

Ricostruita<br />

Il concetto Agente Esterno è rimasto escluso da questa sud<strong>di</strong>visione perché è<br />

considerato agente esterno al sistema: riceve i risultati dell’elaborazione e segue i suoi<br />

processi specifici.<br />

Inoltre, tutto ciò che è legato ad <strong>un</strong>a specifica applicazione del sistema appartiene al<br />

package <strong>di</strong> Ricerca Features. Questo permette <strong>di</strong> ottenere alta coesione e, isolando tra<br />

loro le <strong>di</strong>fferenti f<strong>un</strong>zionalità del sistema, in<strong>di</strong>pendenza <strong>di</strong> molti packages dal dominio<br />

specifico.<br />

Conviene inoltre che per ogni package si definisca <strong>un</strong> “facade controller“ che svolga<br />

anche compiti <strong>di</strong> interfaccia verso gli altri packages (per ridurne l’accoppiamento). In<br />

particolare avremo:<br />

118


Package<br />

Coor<strong>di</strong>namento Generale<br />

Com<strong>un</strong>icazione<br />

Ricerca Features<br />

Sistema Binoculare<br />

Facade Controller<br />

Modulo Visivo<br />

Com<strong>un</strong>icatore Visivo<br />

Gestore Di Ricerca<br />

Sistema Binoculare<br />

In fase <strong>di</strong> progetto ci si è quin<strong>di</strong> limitati a prendere in considerazione solo i packages<br />

Sistema Binoculare e Ricerca Features (con l’esclusione della classe Robot).<br />

Ve<strong>di</strong>amone il <strong>di</strong>agramma delle classi (senza attributi né meto<strong>di</strong>) in figura 5.1.<br />

feature<br />

1 uses<br />

1<br />

gestoreDiRicerca<br />

sistemaBinoculare frameGrabber<br />

1<br />

1<br />

genera<br />

0..* uses<br />

0..*<br />

1<br />

1<br />

uses<br />

1..*<br />

immagineGRAY immagineSegmentata<br />

1<br />

1<br />

uses<br />

uses<br />

1<br />

2<br />

uses<br />

telecamera<br />

1<br />

acquisisce<br />

1<br />

gestisce<br />

1<br />

1..*<br />

2<br />

immagineRGB<br />

1<br />

1<br />

uses<br />

immagineGRAYRicostruita<br />

immagineRGBRicostruita<br />

uses<br />

vettore<br />

1..*<br />

uses<br />

11<br />

1<br />

matrice<br />

1<br />

Figura 5.1<br />

Sono state aggi<strong>un</strong>te, rispetto alle classi derivate dal modello concettuale due nuove<br />

classi parametriche (Matrice e Vettore) utilizzate per la gestione app<strong>un</strong>to <strong>di</strong> matrici e<br />

vettori <strong>di</strong> dati (si veda a riguardo il paragrafo 2.4.2.).<br />

119


Analizziamo ora i ruoli nel sistema da sviluppare delle varie classi, attribuendo ad<br />

ogn<strong>un</strong>a <strong>di</strong> esse dei compiti specifici e delle responsabilità. Per far questo conviene<br />

descrivere i processi elaborativi dettagliando sulla <strong>di</strong>stribuzione delle azioni ai <strong>di</strong>versi<br />

packages (tramite tabelle che descrivono le loro interazioni e i processi che in essi<br />

hanno luogo) prima, e tra le singole classi (tramite collaboration <strong>di</strong>agrams) poi.<br />

Possiamo identificare sostanzialmente due processi elaborativi:<br />

− <strong>un</strong> processo ciclico <strong>di</strong> acquisizione ed elaborazione delle immagini, nel quale si<br />

svolgono tutte le principali f<strong>un</strong>zionalità della parte <strong>di</strong> interesse del sistema;<br />

− <strong>un</strong> processo <strong>di</strong> start up, nel quale viene inizializzato il sistema e create tutte le classi<br />

necessarie.<br />

Ve<strong>di</strong>amo <strong>un</strong>a tabella delle interazioni per il processo ciclico.<br />

Ambiente Esterno Ricerca Features Sistema Binoculare<br />

Ciclicamente: viene<br />

richiesto dall’esterno<br />

l’inizio del processo.<br />

1) Chiede a SB <strong>di</strong> acquisire<br />

nuove immagini.<br />

Acquisisce nuove immagini<br />

(R1.2)<br />

2) Chiede a SB <strong>di</strong> generare le<br />

relative immaginiRGB con<br />

Inversione prospettica delle<br />

immagini (R1.4)<br />

inversione prospettica.<br />

Riceve informazioni<br />

sugli degli ostacoli<br />

3) Opera le routines <strong>di</strong> analisi<br />

delle immagini definite e<br />

restituisce il risultato (R1.6,<br />

R1.7, R1.8)<br />

120


Ve<strong>di</strong>amo poi il processo <strong>di</strong> start up.<br />

Ambiente Esterno Ricerca Features Sistema Binoculare<br />

Utente: avvia il sistema<br />

creando <strong>un</strong>a classe<br />

Gestore <strong>di</strong> Ricerca<br />

1) Crea e inizializza le classi<br />

<strong>di</strong> SB<br />

3) Richiede a SB <strong>di</strong> fornire<br />

l’accesso alle strutture dati<br />

per la visione stereo e alle<br />

immagini acquisite e<br />

rettificate<br />

2) Crea gli oggetti Telecamera<br />

e li inizializza (R1.3). Questi<br />

creano e inizializzano i relativi<br />

Frame Grabbers (R1.1) e le<br />

relative immagini infine<br />

inizializza le strutture per la<br />

visione stereo (R1.5)<br />

Fornisce i parametri richiesti<br />

In <strong>un</strong> caso specifico si è rotto il principio <strong>di</strong> Facade Controller (introdotto per mantenere<br />

le classi <strong>di</strong> <strong>di</strong>versi packages <strong>di</strong>saccoppiate): Gestore Di Ricerca “vede” le Immagini<br />

RGB e le Immagini RGB Ricostruite generate da Sistema Binoculare, nonché le sue<br />

strutture dati per la visione stereo. Questo risulta essere necessario allo scopo <strong>di</strong><br />

velocizzare l’accesso alle immagini, e la loro elaborazione (dato l’elevato numero <strong>di</strong><br />

accessi alle immagini richiesto).<br />

Passiamo ora ad <strong>un</strong>a più precisa definizione delle classi implementate in <strong>un</strong>a tabella<br />

rappresentante i loro principali attributi e i loro principali meto<strong>di</strong> (sostitutiva del system<br />

class <strong>di</strong>agram completo per maggiore visibilità).<br />

121


Classe Attributi Meto<strong>di</strong><br />

Gestore Di<br />

Ricercatore<br />

− ost:=ricercaOstacoli():<br />

Vettore;<br />

− serie <strong>di</strong> meto<strong>di</strong> specifici per<br />

l’elaborazione delle immagini<br />

Feature Pos: Posizione; − st:=serializzaFeature(): String;<br />

SistemaBinoculare<br />

Telecamera<br />

FrameGrabber<br />

SpazioVisivoCom<strong>un</strong>e:<br />

Matrice <br />

- che in<strong>di</strong>ca gli<br />

accoppiamenti dei pixel<br />

delle due immagini per il<br />

confronto.<br />

Ximmagine, Yimmagine:<br />

Intero;<br />

matrice_inversione:<br />

Matrice <br />

Ximmagine, Yimmagine:<br />

Intero;<br />

“Parametri <strong>di</strong><br />

− imm:=sistemaBinoculare():<br />

”riferimento spazio visivo com<strong>un</strong>e e<br />

immagini”;<br />

− in<strong>di</strong>viduaSpettroVisivoCom<strong>un</strong>e();<br />

− AcquisisciRettificando();<br />

− Acquisisci();<br />

− rettifica();<br />

− imma:=telecamera(nome_invers:<br />

String):”riferimento immagini”;<br />

− cancellaImmagini();<br />

− im:=acquisizioneVeloce(): “vettore<br />

immagine”;<br />

− leggiImmagineAcquisita(im:”vettore<br />

immagine”);<br />

− leggiImmagineAcquisita<br />

Rettificando(im:”vettore<br />

immagine”);<br />

− rettifica();<br />

− leggiImmagineDaFile();<br />

− salvaImmaginiSuFile();<br />

− frameGrabber(Ximmagine,<br />

Yimmagine: Floating,”parametri ci<br />

acquisizione”);<br />

122


ImmagineRGB<br />

ImmagineRGB<br />

Ricostruita<br />

acquisizione”<br />

Ximmagine, Yimmagine:<br />

Intero;<br />

matrice_intensita:<br />

Matrice <br />

Sensibilità: Floating;<br />

− im:=acquisisci(): ”vettore<br />

immagine”;<br />

− immagineRGB(Ximmagine,<br />

Yimmagine: Intero);<br />

− cancella();<br />

− ricrea();<br />

− riempi(im: ”vettore immagine”);<br />

− leggiImmagineDaFile();<br />

− salvaImmagineSuFile();<br />

− <strong>un</strong>a serie <strong>di</strong> meto<strong>di</strong> <strong>di</strong> analisi delle<br />

immagini (filtri, soglie,<br />

trasformazioni istogramma, edge<br />

detection, eccetera)<br />

− overlo<strong>di</strong>ng dell’operatore “()” per<br />

l’accesso alla matrice_intensità<br />

− immagineRicostruita(Ximmagine,<br />

Yimmagine: Intero; sensibilita:<br />

Floating);<br />

ImmagineGrey<br />

ImmagineGrey<br />

Ricostruita<br />

Ximmagine, Yimmagine:<br />

Intero;<br />

matrice_intensita:<br />

Matrice <br />

Sensibilità: Floating;<br />

− immagineRGB(Ximmagine,<br />

Yimmagine: Intero);<br />

− cancella();<br />

− ricrea();<br />

− riempi(im: ”vettore immagine”);<br />

− overlo<strong>di</strong>ng dell’operatore “()” per<br />

l’accesso alla matrice_intensità<br />

− serie <strong>di</strong> meto<strong>di</strong> <strong>di</strong> analisi delle<br />

immagini in scala <strong>di</strong> grigio<br />

− immagineRicostruita(Ximmagine,<br />

Yimmagine: Intero; sensibilita:<br />

123


Immagine<br />

Segmentata<br />

Ostacolo<br />

Area Camminabile<br />

Matrice_segmenti:<br />

Matrice <br />

PosizioneOstacolo:<br />

Posizione;<br />

Matrice_camminabilità:<br />

Matrice <br />

Floating);<br />

− implementazione della<br />

serializzazione <strong>di</strong> Feature<br />

− implementazione della<br />

serializzazione <strong>di</strong> Feature<br />

124


5.5. Sviluppi futuri<br />

Nello svolgimento della tesi è stata sviluppata solo <strong>un</strong>a parte delle f<strong>un</strong>zionalità<br />

progettate. Prossimi passi del progetto saranno quin<strong>di</strong> il completamento del modulo<br />

visivo e la sua integrazione in <strong>un</strong> sistema più ampio per la gestione <strong>di</strong> <strong>un</strong> completo robot<br />

mobile autonomo. Si dovranno affrontare tematiche <strong>di</strong> <strong>di</strong>versa natura, a partire da<br />

f<strong>un</strong>zionalità <strong>di</strong> decisione, per gi<strong>un</strong>gere a f<strong>un</strong>zionalità <strong>di</strong> basso livello per il controllo dei<br />

motori del robot. Infine saranno centrali le f<strong>un</strong>zionalità <strong>di</strong> com<strong>un</strong>icazione tra tutte<br />

queste componenti del sistema. Il passo finale sarà l’installazione <strong>di</strong> HOPS e del<br />

software realizzato su <strong>un</strong> robot mobile. Una delle prime applicazioni nelle quali si<br />

prevede <strong>di</strong> impiegare il sistema è la competizione RoboCup.<br />

Riguardo al sistema <strong>di</strong> com<strong>un</strong>icazione, nel progetto sviluppato, si è proposto <strong>un</strong> modello<br />

basato sull’impiego dell’interfaccia messaggio: ogni informazione che può essere<br />

com<strong>un</strong>icata tra modulo e modulo viene descritta da <strong>un</strong>a classe che implementa questa<br />

interfaccia e propone dei meto<strong>di</strong> <strong>di</strong> serializzazione e spe<strong>di</strong>zione dell’oggetto stesso<br />

impiegati dal modulo sorgente e <strong>di</strong> rigenerazione dal modulo destinatario. Centrale<br />

risulterà essere qui la possibilità <strong>di</strong> rappresentare in maniera schematica l’informazione<br />

da com<strong>un</strong>icare e alleggerire quin<strong>di</strong> il carico del sistema <strong>di</strong> com<strong>un</strong>icazione.<br />

125


Conclusioni<br />

In questa tesi è stato presentato il lavoro svolto nella realizzazione e nell’impiego <strong>di</strong> <strong>un</strong><br />

sensore visivo denominato HOPS (Hybrid Omni<strong>di</strong>rectional/Pin-hole Sensor), composto<br />

da <strong>un</strong> cata<strong>di</strong>ottro per la visione omni<strong>di</strong>rezionale e <strong>un</strong>a telecamera CCD tra<strong>di</strong>zionale, per<br />

associare ai vantaggi <strong>di</strong> <strong>un</strong>a visione foveale sulla regione frontale al sistema, quelli <strong>di</strong><br />

<strong>un</strong>’ampia visione periferica fornita dal cata<strong>di</strong>ottro. I cata<strong>di</strong>ottri sono <strong>un</strong> tipo <strong>di</strong> sensore<br />

attualmente impiegato proficuamente nei settori più <strong>di</strong>versi: si pensi all’acquisizione <strong>di</strong><br />

modelli per la realtà virtuale, alla teleconferenza, alla sorveglianza o all’autolocalizzazione.<br />

Il sensore è stato pensato per l’impiego in robot mobili autonomi: HOPS è applicabile a<br />

problemi <strong>di</strong> auto-localizzazione in ambienti semistrutturati, nella ricerca ad ampio<br />

raggio <strong>di</strong> oggetti <strong>di</strong> interesse, nell’analisi <strong>di</strong> percorsi, e in tutte quelle applicazioni che<br />

richiedono <strong>un</strong>’analisi congi<strong>un</strong>ta periferica e foveale.<br />

Il lavoro svolto nell’ambito dell’analisi delle immagini si è concentrato nella<br />

calibrazione del sensore visivo e nella realizzazione, tramite il modello della prospettiva<br />

inversa, della f<strong>un</strong>zionalità <strong>di</strong> in<strong>di</strong>viduazione <strong>di</strong> ostacoli presenti nel campo visivo<br />

com<strong>un</strong>e alle due telecamere. Questo lavoro ha dato dei buoni risultati sia in termini <strong>di</strong><br />

affidabilità che <strong>di</strong> flessibilità al cambiamento dell’ambiente <strong>di</strong> lavoro: il test del sistema<br />

è stato effettuato in <strong>di</strong>versi ambienti indoor, tra i quali in particolare quello del campo<br />

utilizzato per la competizione Robocup (per la quale si prevede <strong>un</strong>a futura applicazione<br />

del sistema in sviluppo). Parte integrante del lavoro svolto è anche quella <strong>di</strong> progetto e<br />

realizzazione <strong>di</strong> <strong>un</strong> modulo <strong>di</strong> gestione della visione che si adatti facilmente all’impiego<br />

in <strong>un</strong> sistema più ampio per il controllo <strong>di</strong> robot mobili autonomi.<br />

126


Gli sviluppi futuri si concentreranno prevalentemente in due <strong>di</strong>rezioni: quella della<br />

realizzazione <strong>di</strong> <strong>un</strong> set <strong>di</strong> f<strong>un</strong>zionalità visive completo che sfrutti tutte le potenzialità <strong>di</strong><br />

HOPS e prenda le sue basi da quelle già sviluppate, e la realizzazione <strong>di</strong> <strong>un</strong> sistema <strong>di</strong><br />

più alto livello per la gestione <strong>di</strong> robot mobili autonomi che utilizzi il modulo visivo<br />

realizzato come sorgente sensoriale.<br />

127


Bibliografia<br />

Adorni G., Cagnoni S., Mordonini M. An efficient perspective effect removal technique<br />

for scene interpretation. Proc. Asian Conference on Computer Vision, pagg. 601-605.<br />

2000a.<br />

Adorni G., Cagnoni S., Mordonini M. Cellular automata based inverse perspective<br />

transform as a tool for indoor robot navigation. LNCS. AI*IA99:Advances in Artificial<br />

Intelligence, n.1792, pagg. 345-355. Springer. 2000b.<br />

Adorni G., Massone L., San<strong>di</strong>ni G. Reasoning about iconic data in artificial vision.<br />

Proc. SPIE Computer Vision for Robot, vol.595. 1985.<br />

Adorni G., Massone L., San<strong>di</strong>ni G., Immovilli M. From early processing to conceptual<br />

reasoning: an attempt to fill the gap. Proc. Of the Tenth International Joint Conference<br />

on Artificial Intelligence IJCAI87, vol.2, pagg. 775-778. 1987.<br />

Arkin R.C. Behaviour Based Robotics. MIT Press.1998.<br />

Asada M., Suzuki S., Takahashi-Y Y., Uchibe E., Nakamura M., Mishima C., Ishizuka<br />

H., Kato T. TRACKIES: RoboCup-97 Middle-Size League World Cochampion. AI-<br />

Magazine, vol.19, no.3, pagg. 71-78, 1998.<br />

Bajcsy R. Active Perception. Proc. IEEE, vol. 76, no. 8, pagg. 996-1005.Agosto 1988.<br />

Baker S., Nayar S.K. A theory of cata<strong>di</strong>optric image formation. Proc. Sesta Conferenza<br />

Internazionale sulla Computer Vision, pagg.35-42. Bombay, Gennaio 1998.<br />

Ballard D.H., Brown C.M. Computer Vision. Prentice-Hall, Englewood Cliffs,1982.<br />

Bertozzi M., Broggi A., Fascioli A. Stereo inverse perspective map<strong>pin</strong>g: theory and<br />

application. Image and Vision Computing, vol.16, no.8, pagg.585-590. Giugno 1998.<br />

128


Bertozzi M., Broggi A. Real Time Lane and Obstacle Detection on the GOLD system.<br />

Proc. IEEE Intelligent Vehicles ’96, pagg. 213-218. Tokyo, Japan. 1996.<br />

Bohrer S., Lutgendorf A., Mempel M. Using inverse perspective map<strong>pin</strong>g as a basis for<br />

two concurrent obstacle avoidance schemes. Artificial Neural Networks, Procee<strong>di</strong>ngs of<br />

the 1991 International Conference, ICANN-91, pagg. 1233-1236. Amsterdam,<br />

Netherlands. 1991.<br />

Bohrer S., Zielke T., Freiburg V. An integrated obstacle detection framework for<br />

intelligent cruise control on motorways. Proc. Intelligent Vehicles ’95 Sym, pagg. 276-<br />

281. New York, 1995.<br />

Bonarini A.,Aliverti P.,Lucioni M. An omni<strong>di</strong>rectional vision system for fast tracking for<br />

mobile robots. IEEE Transactions on Instrumentation and Measurement, 49(3), 509-<br />

512. 2000.<br />

Brady M. Artificial Intelligence and Robotics. Artificial Intelligence and Robotics, vol.<br />

26, pagg. 79-121. 1985.<br />

Brauckmann M.E., Goerick C., Gross J., Zielke T. Towards all aro<strong>un</strong>d automatic visual<br />

obstacle sensing for cars. Proc. Intelligent Vehicles ’94 Symp, pagg. 79-84.New York,<br />

NY, USA. 1994.<br />

Brooks R. New Approaches to Robotics. Science, vol. 253, pagg. 1227-1232. September<br />

1991.<br />

Christensen H.I., Kirkeby N.O., Kristensen N., Knudsen L., Granum E. Model-driven<br />

vision for indoor navigation. Robotics and Autonomous Systems, vol.12, no.3-4, pagg.<br />

199-207. Aprile 1994.<br />

Clérentin A., Delahoche L., Pegard C., Brassart-Gracsy E. A localization method based<br />

on two omni<strong>di</strong>rectional perception systems cooperation. Proc. 2000 ICRA. Millennium<br />

Conference. Vol.2, pagg. 1219-1224. 2000.<br />

129


Cornell S., Porrill J., Mayhew J.E.W. Gro<strong>un</strong>d plane obstacle detection <strong>un</strong>der variable<br />

camera geometry using a pre<strong>di</strong>ctive stereo matcher. BMVC92, Proc. British Machine<br />

Vision Conference, pagg. 549-559. Springer-Verlag, Berlin. 1992.<br />

Drocourt C., Delahoche L., Pegard C., Cauchois C. Localization method based on<br />

omni<strong>di</strong>rectional stereoscopic vision and dead-reckoning. Proc. IEEE/RSJ Int. Conf. on<br />

Intelligent Robots and Systems, pagg. 960-965. 1999.<br />

Faugeras O. Three Dimensional Computer Vision: A Geometric Viewpoint. The MIT<br />

Press, Cambridge, MA. 1993.<br />

Gang-Yi-Jiant, Tae Y.C. Lane and obstacle detection based on fast inverse perspective<br />

map<strong>pin</strong>g algorithm. Proc. IEEE International Conference on Systems, Man and<br />

Cybernetics, vol.5, pagg. 2969-2974. 2000.<br />

Gonzalez R.C., Woods R.E. Digital Image processing. Ad<strong>di</strong>son Westley. 1992.<br />

Hicks R.A., Bajcsy R. Reflective Surfaces as Computational Sensors. Proc. 2nd<br />

Workshop on Perception for Mobile Agents, pagg. 82-86. 1999.<br />

Jacobs D.W. The use of grou<strong>pin</strong>g in visual object recognition. MIT Artificial<br />

Intelligence Laboratory, Technical Report 1023. 1988.<br />

Klaus B., Horn P. Robot Vision. The MIT Press. Cambridge, Massachusetts. 1986.<br />

Larman C. Applying UML and Patterns. An introduction to Object-Oriented Analysis<br />

and Design. Prentice Hall. 1998.<br />

Lee C. W., Beom H. R., Choe H. S. An obstacle detection method for mobile robots<br />

using axial stereo. Automatic control, World Congress 1993, Proc. 12 TH Triennial World<br />

Congress of the International Federation of Automatic Control, vol.3, applications I.<br />

Pergamon, Oxford, UK, pagg. 897-902. 1994.<br />

Mallot H.A., Bulthoff H.H., Little J.J., Bohrer S. Inverse Perspective map<strong>pin</strong>g simplifies<br />

optical flow computation and obstacle detection. Biological Cybernetics, 64:177-185.<br />

1991a.<br />

130


Mallot H.A., Zielke T., Storjohann K., von Seelen W. Topographic map<strong>pin</strong>g for stereo<br />

and motion processing. The International Society for Optical Engineering, vol.1382,<br />

pagg. 397-408. 1991b.<br />

Mansouri A., Malowany A., Levine M. Line Detection in Digital Pictures: A Hypothesis<br />

Pre<strong>di</strong>ction / Verification Para<strong>di</strong>gm, vol.40, pagg.95-114. 1987.<br />

Marchese, Sorrenti D. Omni-<strong>di</strong>rectional vision with a multi-part mirror. 4th Int.<br />

Workshop on RoboCup, pagg. 289-298. 2000.<br />

Marques C., Lima P. A localization method for a soccer robot using a vision-based<br />

omni-<strong>di</strong>rectional sensor. Proc. of EuroRoboCup Workshop, Amsterdam, The<br />

Netherlands, J<strong>un</strong>e 2000, <strong>di</strong>sponibile solo in formato elettronico in<br />

http://lci.isr.ist.utl.pt/projects/mrob/socrob<br />

Marr D. Vision: A computational Investigation into the Human Representation and<br />

Processing of Visual Information. W. H. Freeman, New York. 1982.<br />

Morgenthaler D.G., Hennessy S., DeMenthon D. Range-video fusion and comparision<br />

of inverse perspective algorithms in static images. IEEE Transactions on Systems, Man<br />

and Cybernetics, vol.20, n.6, pagg. 1301-1312. Dicembre 1990.<br />

Nayar S.K. Omni<strong>di</strong>rectional Vision. In Robotics Research. 8 th International Symposium,<br />

pagp. 195-202. 1998.<br />

Onoguchi K., Takeda N., Watanabe M. Planar projection stereopsis for road extraction.<br />

IEICE Trans. on Information and Systems, vol.E81-D, no.9. pagg. 1006-1018. 1998.<br />

Santos V. J., San<strong>di</strong>ni G. Uncalibrated obstacle detection using normal flow. Machine<br />

Vision and Applications, vol.9, no.3, pagg. 130-137. 1996.<br />

Shimasaki M. The inverse of perspective projection. Trans. of the Institute of<br />

Electronics and Comm<strong>un</strong>ication Engineers of Japan, Section E, English, vol.E64, no.6,<br />

pagg. 406-413. Giugno 1991<br />

131


Storjohann K., Mallot H.A., Zielke T., von Seelen W. Visual obstacle detection for<br />

automatically guided vehicles. Proc. 1990 IEEE International Conference on Robotics<br />

and Automation, IEEE Comput. Soc. Press, Los Alamitos. 1993.<br />

Svoboda T., Pajdla T. Panoramic cameras for 3D computation. Proc. Czech Pattern<br />

Recognition Workshop, pagg. 63-70. 2000.<br />

Tenenbaum J.M., Barrow H.G. Experiments in Interpretation-Guided Segmentation.<br />

Artificial Intelligence, vol.8, n.3, pagg. 241-274. 1977.<br />

Tsai R.Y. A Versatile Camera Calibration Technique for High-Accuracy 3D Machine<br />

Vision Metrology Using Off-the-Shelf TV Cameras and Lenses. IEEE Journal of<br />

Robotics and Automation, vol. RA-3, No.4, pagg. 323-344. Agosto 1997.<br />

Tzai R.Y. An efficient and accurate camera calibration technique for 3-D machine<br />

vision. Computer Vision and Pattern Recongnition, pagg. . 1996.<br />

Ullman S. Visual Cognition. Ed. S. Pinker, MIT Press, Cambridge, MA. 1985.<br />

Yachida M. Omni<strong>di</strong>rectional sensing and combined sensing. Proc. 1998 IEEE and ATR<br />

Workshop on Computer Vision for Virtual Reality Based Human Comm<strong>un</strong>ications,<br />

IEEE Computer Soc. Press, Los Alamitos. 1998<br />

Zhang J., Knoll A., Schwert V. Situated neuro-fuzzy control for vision-based robot<br />

localisation. Robotics and Autonomous Systems, vol. 28, pagg. 71-82. 1999.<br />

Zielke T., Storjohann K., Mallot H.A., von Seelen W. Adapting computer vision systems<br />

to the visual environment: topographic map<strong>pin</strong>g. Computer Vision – Proc. ECCV90,<br />

First European Conference on Computer Vision, pagg. 613-615. Springer-Verlag,<br />

Berlin, West Germany. 1990.<br />

132

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!