290 likes | 715 Views
Structure from motion. Corso Visione e percezione a.a.2008/2009 Prof.ssa Maria Fiora Pirri Ardizzone Studenti: - Brunetti Mario - Mancarella Alessandro - Pavone Giuseppe. Contenuti. Presentazione del problema Sift & Correlazione Matrice fondamentale Calibrazione Triangolazione
E N D
Structure from motion Corso Visione e percezione a.a.2008/2009 Prof.ssa Maria Fiora Pirri Ardizzone Studenti: - Brunetti Mario - Mancarella Alessandro - Pavone Giuseppe
Contenuti • Presentazione del problema • Sift & Correlazione • Matrice fondamentale • Calibrazione • Triangolazione • Bundle adjustment • Metric upgrade • Approcci alla ricostruzione densa
Presentazione problema • Structure from motion • Ricavare la struttura di una scena a partire da una sequenza di immagini
Fasi di progettazione • Decomposizione in sottoproblemi • Trattazione teorica • Implementazione in Matlab • Implementazione di differenti metodi • Scelta del metodo con il miglior risultato • Testing su 4 differenti set: • Morpheus • Soggetto semplice (parallelepipedo) • Composizione di soggetti semplici • Soggetto complesso
Harris: computazionalmente facili da trovare Poca robustezza Numero di falsi match elevato SIFT: maggiore robustezza a rotazione,traslazione, scalatura e variazioni di luminosità Con l’implemetazione di Lowe in C (interfacciata in Matlab) migliora la complessità di calcolo SIFT vs Harris Necessità di trovare dei punti da correlare nelle varie immagini
Estrazione features • Costruzione scale-space • Costruzione DoG • Localizzazione elementi estremali • Localizzazione feature points • Filtraggio punti a basso contrasto • Scelta della risposta lungo gli edge • Orientazione • Costruzione descrittori
Correlazione • Effettuata su coppie di immagini • Per ogni punto si ricerca il suo omologo nell’altra immagine • Si ricerca l’omologo solo entro un certo raggio dalle coordinate del primo • Si minimizza l’SSD su una finestra di date dimensioni (15) • Vengono accettate solo le coppie di punti che sono vicendevolmente correlati
Stima della matrice fondamentale • Permette di correlare ogni punto di un immagine con la retta epipolare dell’altra • Utilizzo di RANSAC per migliorare la qualità delle correlazioni • Algoritmo 8-punti normalizzato per la stima della matrice F • La normalizzazione permette che le rette epipolari si incontrino in un unico punto • Migliore stima rispetto all’algoritmo 7 punti, minore complessità rispetto al gold standard
RANSAC+Alg. 8 punti norm. • Scelta di 8 coppie di punti correlati (x-x’) • Normalizzazione • Calcolo della F tramite stima ai minimi quadrati a soddisfare x*F*x’=0 • Denormalizzazione • Ricerca degli inliers riferiti agli 8 punti selezionati, valutando la distanza di Sampson • Valutazione della percentuale di inliers trovati, se insufficiente ritorna al punto 1 • Trovati gli inliers, ri-esecuzione dell’algoritmo 8-punti per stimare F su un maggior numero di punti
Calibrazione • Si è fatto ricorso al Calibration Toolbox • Uso del pattern scacchiera • Set di foto da diverse angolazioni • Estrazione dei parametri intrinseci ad eccezione delle dimensioni del pixel della camera mx my • Costruzione della matrice di calibrazione K
Matrici proiettive • Si è scelto di decomporre la matrice fondamentale (tramite svd) per ricavare gli epipoli necessari al calcolo della coppia di matrici proiettive canoniche
Triangolazione • Metodo di triangolazione lineare applicato ad ogni coppia di punti correlati, si risolve un sistema di equazioni (se sovradeterminato si ricorre alla stima ai minimi quadrati) estratto dalle relazioni x=PX • Ai fini di una migliore ricostruzione si è deciso di utilizzare l’Optimal Triangulation Method, come descritto da H&Z, correggendo i match trovati sulle viste forzandoli sui vincoli epipolari x*F*x’=0
Unificazione delle triangolazioni da coppie di viste • Sono state provate diverse tecniche, basate sulla decomposizione delle P=K[R T]=KR[I| -C]: • Rototraslare le successive matrici di proiezione prima di calcolare i punti mondo, per ottenere i punti riferiti alle coordinate della prima camera • Per ogni coppia, creare una matrice [R T; 0 0 0 1] dalla P corrente e premoltiplicarla per i punti mondo trovati in modo da riferirli tutti alle coordinate della camera corrente, alla fine del ciclo, tutti i punti sono riferiti alle coordinate dell’ultima camera • Nessuno dei metodi restituisce risultati ottimi, ad ogni modo quelli migliori sono stati con il secondo metodo
Bundle adjustment • Dall’equazione x=PX, riproiettiamo i punti mondo sui rispettivi piani immagine • Minimizziamo la distanza tra i punti immagine originali e quelli riproiettati, modificando i valori dei punti mondo e delle matrici, basandoci anche sulla matrice di calibrazione • Le nuove P e i nuovi X vengono ricavati tramite lsqnonlin, funzione di matlab che esegue la stima ai minimi quadrati non lineare a minimizzare una data funzione di costo • Il metodo è iterativo, alla fine di ogni iterazione si aggiornano prima le P e poi le X, effettuando 2 stime, considerandole singolarmente come variabili, e si riproiettano le x, per 5 volte
Bundle adjustment • P3i --- i-esimo punto 3d • Pj --- matrice di proiezione della j-esima coppia • P2j,i --- punto 2d riferito a P3i nell’immagine j 3D point P3i 2D image point P2j,i Reprojected point Pj* P3i
Upgrade metrica • Anche in questo caso sono stati considerati diversi metodi: • Stratificato • Diretto
Stratificato • Si ricava il piano all’infinito calcolando (manualmente) 3 vanishing points da 3 coppie di linee che sappiamo essere nel mondo parallele tramite la funzione houghlines chiamata sull’immagine. Con il piano all’infinito che passa per i punti trovati è possibile costruire una trasformazione che porta da una ricostruzione prospettica ad una affine Haff=[I 0; Pinf] • Successivamente, sotto ipotesi di pixel camera quadrati e skew nullo,si ricava la conica ω all’infinito trovando 3 punti che soddisfano vincoli: • v1’*ω*v2=0 • l= ω*v • Con la conica si ricava la matrice Hm=[A^-1 0; 0 1] dove A soddisfa AAt=(Mt* ω*M)^-1 • Hm*Haff*Xp=Xm è la trasformazione da prospettiva a metrica
Diretto • Il metodo stratificato restituisce risultati poco accettabili • È stata tentata un’altra strada, che esula dal programma del corso: dual quadric. • La quadrica è una struttura che contiene l’informazione sul piano all’infinito e sulla conica all’infinito • Da essa è possibile ricavare una trasformazione omografica che porta i punti da una ricostruzione proiettiva a metrica
Ricostruzione densa • Sono state create alcune funzioni che permettono di effettuare una ricostruzione densa • Rettificazione delle immagini • Mappa di disparità per trovare correlazioni per ogni punto • Triangolazione densa • Le altre funzioni sono identiche alla ricostruzione sparsa • A causa dei cattivi risultati della rettificazione non è stato possibile effettuare il testing
Bibliografia • H&Z – Multiple View Geometry • Script matlab disponibili dal sito di H&Z • Script disponibili dal sito di Peter Kovesi • Funzione di upgrade metrico quadric linear definito da Kosecka • Funzioni di supporto al bundle adjustment definite da Fusiello