1 / 29

Structure from motion

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

nonnie
Download Presentation

Structure from motion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structure from motion Corso Visione e percezione a.a.2008/2009 Prof.ssa Maria Fiora Pirri Ardizzone Studenti: - Brunetti Mario - Mancarella Alessandro - Pavone Giuseppe

  2. Contenuti • Presentazione del problema • Sift & Correlazione • Matrice fondamentale • Calibrazione • Triangolazione • Bundle adjustment • Metric upgrade • Approcci alla ricostruzione densa

  3. Presentazione problema • Structure from motion • Ricavare la struttura di una scena a partire da una sequenza di immagini

  4. 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

  5. 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

  6. 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

  7. Esempi di SIFT

  8. 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

  9. Esempi di correlazione

  10. 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

  11. 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

  12. Esempi di inliers

  13. 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

  14. Esempi di calibrazione

  15. Matrici proiettive • Si è scelto di decomporre la matrice fondamentale (tramite svd) per ricavare gli epipoli necessari al calcolo della coppia di matrici proiettive canoniche

  16. 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

  17. Esempi di triangolazione

  18. 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

  19. Unificazione delle Triangolazioni da coppie di viste

  20. 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

  21. 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

  22. Esempi di bundle adjustment

  23. Upgrade metrica • Anche in questo caso sono stati considerati diversi metodi: • Stratificato • Diretto

  24. 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

  25. 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

  26. Esempi di upgrade metrico

  27. 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

  28. 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

  29. Grazie per l’attenzione …

More Related