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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!