Sistemi di visione per la navigazione autonoma Relatore: ch.mo prof. Ruggero FREZZA Laureando: Andrea ROSSETTI Padova, 11 aprile 2005 Il problema della visione stereo (Ohta-Kanade, 1986) • Vogliamo realizzare un algoritmo di visione stereo real-time, per valutare le distanze di oggetti inquadrati da due telecamere • Feature: useremo le intensità dei pixel, danno output densi e hanno un campo di applicazione ampio (es.: interni-esterni) 2 Relazione disparità-distanza • Se le telecamere hanno piani focali complanari e allineati, posso trovare la distanza in base alla disparità con un’opportuna triangolazione • Distanza: inv. prop. alla disparità bf Z d • Risoluzione: prop. al quadrato della distanza 2 Z Z d bf Z f = focale d = disparità b = baseline 3 Procedura di rettificazione • Problema: non sempre posso disporre di piani focali così allineati W R2 M11 M M M22 CC22 • Si riproiettano le immagini su piani focali complanari allineati, con una rotazione dei R1 piani attorno ai centri focali C1 • Funzione disponibile nella libreria OpenCV 4 Mappe di disparità • L’output del programma consiste in un immagine in toni di grigio: maggiore la disparità, maggiore l’intensità luminosa • Quindi oggetti più vicini = toni di grigio più chiari • Dalla mappa di disparità è immediato risalire alle distanze con la relazione disparità-distanza Cam.1 Cam.2 5 Disparità con metodi locali • Utilizzo la funzione SSD per confrontare due zone rettangolari nell’immagine sinistra e destra 2 [ I ( j d , i ) I ( j , i )] L R ( i , j )W ( x , y ) • Per ogni punto (x,y) scelgo il valore di disparità dmin che minimizza SSD(x,y,d) • SSD in programmazione dinamica: il tempo di calcolo diventa indipendente dall’area della finestra • Tempo totale di esecuzione: O(righe • colonne • max.livelli) 6 • Cerco la sequenza di matching tra feature che massimizza la probabilità di matching dell’intera scanline; tengo conto di eventuali occlusioni (feature visibili in 1 sola imm.) • Equivalente ad un problema di cammino a costo minimo (Dijkstra) Scanline destra Disparità con metodi globali Scanline sinistra • Superiorità rispetto ai metodi locali Originale Met.locali Met.globali 7 Metodi globali: vincoli • Alcune combinazioni di matching corrispondono a soluzioni fisicamente impossibili: le scartiamo imponendo dei vincoli • Vincolo di unicità: uno stesso pixel non può appartenere a due matching diversi • Vincolo di ordinamento: scelti due matching (l1,r1) e (l2,r2), se l1<l2 allora anche r1<r2 e viceversa Metodi globali: tempo di esecuzione O(righe • colonne • max.livelli) pari a quello ottenibile con metodi locali 8 Metodi globali: miglioramenti • Uso della SSD anche nell’algoritmo globale • Vincolo di stabilizzazione: a un’occlusione destra non può seguire un’occlusione sinistra, e viceversa (almeno un pixel di matching nel mezzo) • Termine a priori: aggiungiamo alla funzione di costo una probabilità gaussiana centrata sul valore di disparità al frame precedente; funzionamento in feedback 9 Filtraggio di Kalman • Vogliamo attenuare la rumorosità delle misure di disparità • Per ogni pixel dell’output uso un filtro di Kalman con modello dinamico molto semplice: Dt 1 Dt • Matrici di covarianza Q ed R: vanno regolate a un valore di compromesso tra buona attenuazione del rumore ed eccessiva presenza di “scie” in output • Ottimizzazione con OpenCV: le operazioni matematiche per il filtraggio vengono eseguite in blocco su tutti i pixel con funzioni altamente ottimizzate 10 Risultati sperimentali PC P4 2GHz RAM 512MB Firewire 1280x1024 256 toni di grigio 11 Risultati sperimentali Telec.destra Telec.sinistra Distanza 12 Sviluppi futuri • Integrazione con i software per il controllo e il path planning • Modelli più avanzati per il Filtro di Kalman • Uso di immagini a colori • Ottimizzazione con istruzioni SIMD e parallelizzazione per un miglior frame rate •Website: http://andrear.altervista.org/tesi 13