POLITECNICO DI MILANO Facoltà di Ingegneria Industriale Corso di Laurea in Ingegneria Meccanica SVILUPPO E QUALIFICAZIONE DI UN SISTEMA DI VISIONE PER LA RICOSTRUZIONE TRIDIMENSIONALE DI OGGETTI Relatore: Prof. Emanuele Zappa Tesi di Laurea di: Stefano DALL’OLIO Matr. 739594 Anno Accademico 2009 – 2010 Alla mia famiglia e a Federica. Ringraziamenti Desidero innanzitutto ringraziare il Prof. Emanuele Zappa per i preziosi aiuti datomi nello svolgimento di questa mia tesi e per l'incredibile, sottolineo incredibile, disponibilità dimostratami. Inoltre, ringrazio sentitamente il Ing. Diego Scaccabarozzi che è stato sempre bendisposto a risolvere i miei dubbi di materia ingegneristica e il Ing. Guido Micheli per i consigli fornitomi per alcune scelte universitarie, nonché il Prof. Marco Bocciolone per l'impegno che mette nell'aiutare gli studenti a risolvere situazioni complicate rendendo il regolamento universitario più flessibile e il Sig. Morselli per la cordialità fuori dal comune nell'accogliere le richieste degli universitari. Inoltre, vorrei esprimere la mia sincera gratitudine ai miei compagni di corso senza cui sarebbe stato impensabile superare le mille peripezie affrontate durante il periodo universitario. Marco, Ema, Nicola, Rugge, Dami, Dario, Liuk, Max, Elia, Joele, con cui ho diviso i primi tre anni universitari presso la sede di Bovisa sia nello studio che nei momenti di svago. Non c'è stato mai un momento in cui il loro supporto mi sia mancato. In particolare li ringrazio per i momenti indimenticabili passati insieme. Le battaglie infinite per dimostrare la supremazia in videogame come COD o kart, oppure gli interminabili minuti di tensione prima di un esame e gli interminabili consigli informatici di Ema o gli scambi di idee non sempre troppo pacifici durante la realizzazione dei progetti che tutti insieme ci siamo trovati a realizzare. Come non citare la 2 ore in bicicletta a Villastanza: ultimi giri... Marco deve sbucare da dietro la curva a momenti per passarmi la bicicletta e fare il cambio... possiamo ancora giocarci la vittoria ma... passano 5 minuti ed arriva tutto scorticato perché è scivolato!!! Oppure la ruota di Ema finita contro la parete di un aula del Politecnico. Gli "insulti" amichevoli volati durante le discussioni di Marco e Rugge oppure le risate fatte alle spalle di Rugge sulla sua situazione sentimentale. La pallina di carta di alluminio che finisce in testa a un professore mentre Marco si immedesima in un battitore di baseball. L'avventura in camper con Marco alla festa di Ema a Verona e il risveglio con una bella multa sulla macchina. Non posso non menzionare anche Teo e Gavi con cui ho affrontato l'avventura del cambio di sede e in particolare quest'ultimo mi è stato da fondamentale aiuto negli ultimi mesi in cui mi sono ritrovato da solo a seguire e sostenere gli ultimi esami. E poi ringrazio i miei amici di una vita: Brugna e Zane con cui mi sono sempre svagato alla sera e nelle vacanze, nello specifico Brugna per i racconti di fatti accadutogli che, anche se già noti, non smettono mai di farmi ridere e Zane per le sciate insieme e i fantomatici progetti da imprenditore che fanno sognare. Ringraziamenti Ho desiderio di ringraziare con affetto i miei genitori per il sostegno ed il grande aiuto che mi hanno dato ed in particolare per essermi stati vicino in ogni momento durante il periodo universitario, mia sorella Nicoletta per avermi aiutato con l'italiano della tesi e insieme a mia sorella Valentina e ad il suo ragazzo Matteo per il supporto che mi hanno offerto in momenti difficili. Infine voglio dare un grandissimo abbraccio alla mia ragazza Federica che mi ha sopportato nei numerosi momenti di nervosismo che si sono presentati ad esempio prima degli esami e mi ha sempre regalato un sorriso e un affetto tale da farmi superare tutto! Un ringraziamento anche ai suoi famigliari Carla, Sandro e Giacomo che mi hanno sempre accolto in casa loro con la cordialità che rende tutto più facile. Pag. 2 Indice Indice ..................................................................................................................................... 3 Indice delle figure ................................................................................................................ 5 Indice delle tabelle ............................................................................................................. 11 1. Sommario ........................................................................................... 13 2. Introduzione ...................................................................................... 15 3. Stato dell’arte ..................................................................................... 19 3.1 Rettificazione ........................................................................................................ 21 4. Situazione iniziale .............................................................................25 5. Acquisizione delle immagini ............................................................27 6. Calibrazione .......................................................................................29 6.1 Parametri intrinseci.............................................................................................. 30 6.2 Parametri estrinseci ............................................................................................. 32 7. Elaborazione delle immagini ............................................................35 8. Relazione tra gli scostamenti e la distanza dell’oggetto ..................37 9. Punti notevoli nelle immagini...........................................................39 9.1 Algoritmo di Harris ............................................................................................. 40 9.2 Susan ...................................................................................................................... 45 10. Ricerca delle corrispondenze ............................................................47 10.1 Immissione delle distanze iniziali ................................................................... 48 11. Miglioramento dei risultati ............................................................... 51 11.1 Analisi zone uniformi ....................................................................................... 53 11.2 Proiezione e stampo.......................................................................................... 58 11.3 Ricerca su tre canali RGB ................................................................................ 60 11.4 Miglioramento dei dettagli ............................................................................... 65 11.5 Raffinamento delle corrispondenze ............................................................... 69 11.6 Eliminazione outlier ............................................................................................ 78 11.6.1 Distanza dalle rette epipolari ..................................................................... 78 11.6.2 Ransac ........................................................................................................... 86 11.7 Eliminazione manuale degli outlier .................................................................. 89 11.8 Ricerca di punti isolati ...................................................................................... 91 11.9 Applicazione in serie dei miglioramenti ........................................................ 93 12. Confronti ............................................................................................97 12.1 Confronto con il caso rettificato .................................................................... 97 12.2 Confronto con i metodi di ricostruzione esistenti .................................... 101 12.2.1 Ricostruzione realizzata con il metodo qui proposto......................... 104 12.2.2 Confronto con un algoritmo denso elementare .................................. 106 12.2.3 Confronto con l’algoritmo ADCensus ................................................. 109 12.3 Confronto con il software commerciale PhotoModeler Scanner..................... 111 13. Esempi di ricostruzione .................................................................. 115 Indice 13.1 Faccia ................................................................................................................. 115 13.2 Bassorilievo ....................................................................................................... 119 13.3 Mano .................................................................................................................. 120 13.4 Interruttore ....................................................................................................... 121 13.5 Scarpa................................................................................................................. 122 13.6 Bambola ............................................................................................................ 123 14. Misurazioni effettuate sul 3D .......................................................... 125 14.1 Verifica geometrica ......................................................................................... 125 14.2 Verifica sulla misura ........................................................................................ 128 15. Realizzazione di un 3D da più viste................................................ 133 16. Software ............................................................................................ 143 17. Note di sviluppo sul software.......................................................... 147 18. Conclusioni e sviluppi futuri ........................................................... 151 Bibliografia........................................................................................................................ 155 Pag. 4 Indice delle figure Figura 3.1 Ricerca delle corrispondenze degli algoritmi denso. In particolare ricerca in immagini rettificate e quindi con rette epipolari orizzontali parallele. .............................. 19 Figura 3.2 Rappresentazione grafica dell'operazione di rettifica. ..................................................... 22 Figura 3.3 Partendo dall'alto una coppia di fotografie stereo non rettificata e affianco alcune rette epipoalari evidenziate (convergenti) corrispondenti ai punti rappresentati con una croce. Sotto le stesse immagini dopo la rettifica e in evidenza le rette epipolari divenute parallele. ........................................................................ 24 Figura 4.1 Processo di elaborazione. ..................................................................................................... 25 Figura 5.1 Fujifilm REAL 3D W1. ........................................................................................................ 27 Figura 6.1 Esempi di fotografie utilizzate per la calibrazione. .......................................................... 29 Figura 6.2 Disposizione delle scacchiere rispetto all'obiettivo di sinistra. ...................................... 30 Figura 6.3 Rappresentazione della distorsione per l'obiettivo di sinistra e quello di destra (sono evidenziate le curve a isodistorsione con riportato lo scostamento in px). ..................................................................................................................... 31 Figura 6.4 Rappresentazione della posizione relativa tra i due obiettivi. ........................................ 32 Figura 6.5 Posizionamento delle scacchiere rispetto ad entrambi gli obiettivi. ............................. 33 Figura 7.1 Rappresentazione digitale delle immagini. ......................................................................... 35 Figura 8.1 Area dove si posiziona l'oggetto al variare della posizione del punto corrispondente nelle immagini. ................................................................................................ 37 Figura 8.2 Variazione della distanza di un oggetto al variare dello scostamento del punto corrispondente nell'immagine. ...................................................................................... 38 Figura 9.1 Immagine di esempio utilizzata per la scelta dell'algoritmo di identificazione corner. ................................................................................................................ 39 Figura 9.2 Gradiente in orizzontale e in verticale ricavato dall'immagine di esempio. ................ 40 Figura 9.3 Prodotto tra le derivate Ix2 in direzione orizzontale prima e dopo il filtraggio gaussiano...................................................................................................................... 41 Figura 9.4 Prodotto tra le derivate Iy2 in direzione verticale prima e dopo il filtraggio gaussiano. ...................................................................................................................................... 41 Figura 9.5 Prodotto incrociato le derivate Ix·Iy in direzione orizzontale e verticale. .................. 42 Figura 9.6 Rappresentazione grafica del cim ottenuto mediante la formula di Harris (k=0.03, 0.04, 0.05). .................................................................................................................... 42 Figura 9.7 Rappresentazione di come variano gli autovalori in presenza di diverse discontinuità geometriche.......................................................................................................... 43 Figura 9.8 Rappresentazione del cim ottenuto utilizzando la formula di Noble........................... 43 Figura 9.9 Rappresentazione dei possibili casi di posizionamento del'area Usan. ........................ 46 Figura 10.1 Rappresentazione degli scostamenti al variare della distanza dell'oggetto (rappresentata dalle frecce arancioni). ..................................................................................... 49 Figura 11.1 Coppia di fotografie della parete utilizzate per mostrare i risultati dei vari metodi di miglioramento. .......................................................................................................... 51 Indice delle figure Figura 11.2 Ricostruzione della parete senza alcun metodo migliorativo (vista frontale). ........................................................................................................................................52 Figura 11.3 Ricostruzione della parete senza alcun metodo migliorativo (vista laterale). .........................................................................................................................................52 Figura 11.4. Immagine con elevata uniformità. Zoom sull'area della guancia analizzata in seguito. ......................................................................................................................................53 Figura 11.5 Ricostruzione 3D della zona guancia (vista dall'alto). ...................................................54 Figura 11.6 Ricostruzione 3D della zona guancia (vista frontale) . ..................................................54 Figura 11.7 Gradiente Orizzontale (w = 41). .......................................................................................55 Figura 11.8 Zone uniformi (in bianco) con finestra di 11 pixel........................................................56 Figura 11.9 Zone uniformi (in bianco) con finestra di 21 pixel........................................................57 Figura 11.10 Zone uniformi (in bianco) con finestra di 41 pixel. ....................................................57 Figura 11.11 Porzione del pattern random. ..........................................................................................58 Figura 11.12 Porzione del pattern composto da lettere. ....................................................................58 Figura 11.13 Pattern realizzato a mano. ................................................................................................59 Figura 11.14 Proiettore portatile 3M MPro-120. .................................................................................59 Figura 11.15 Impronta di scarpa su sabbia. ..........................................................................................60 Figura 11.16 Pattern di proiezione RGB. .............................................................................................61 Figura 11.17 Fotografia alla parete con pattern RGB. .......................................................................61 Figura 11.18 Ricostruzione della parete usando esclusivamente l'immagine in scala di grigi (vista frontale). ....................................................................................................................63 Figura 11.19 Ricostruzione della parete usando esclusivamente l'immagine in scala di grigi (vista laterale),......................................................................................................................63 Figura 11.20 Ricostruzione della parete analizzando oltre all’immagine in scala di grigi anche separatamente i tre piani di colore (vista frontale). ...................................................64 Figura 11.21 Ricostruzione della parete analizzando oltre all’immagine in scala di grigi anche separatamente i tre piani di colore (vista laterale), .....................................................64 Figura 11.22 Immagine originale e immagine filtrata con un filtro passa basso. ...........................65 Figura 11.23 Immagine filtrata con un filtro passa alto e immagine risultante con i dettagli evidenziati. ......................................................................................................................66 Figura 11.24 Ricerca delle corrispondenze sull'immagine originale senza aumento dei dettagli. ..........................................................................................................................................66 Figura 11.25 Ricerca delle corrispondenze sull'immagine filtrata.....................................................67 Figura 11.26 Ricostruzione della parete (vista frontale) senza filtraggio. ........................................68 Figura 11.27 Ricostruzione della parete (vista frontale) utilizzando il filtraggio per migliorare la visibilità dei particolari. .......................................................................................68 Figura 11.28 Finestre ricavate dall'immagine di destra e di sinistra. ................................................69 Figura 11.29 Crosscorrelazione normalizzata. Si nota il massimo decentrato in rosso scuro. .............................................................................................................................................70 Figura 11.30 Coppia di match, in particolare nell'immagine di destra è visibile il vecchio punto (blu) e il nuovo (rosso). ...................................................................................70 Figura 11.31 Ricostruzione della parete (vista in sezione) senza l'utilizzo del raffinamento. ................................................................................................................................71 Pag. 6 Indice delle figure Figura 11.32 Ricostruzione della parete (vista in sezione) con l'utilizzo del raffinamento................................................................................................................................. 72 Figura 11.33 Istogramma delle distanze dei punti tridimensionali dal piano di regressione (analisi della parete). .............................................................................................. 73 Figura 11.34 Particolare dell’istogramma che rappresenta la distanza dei punti tridimensionali dal piano di regressione (analisi della parete). ............................................ 73 Figura 11.35 Boxplot delle distanze dai piani di regressione della parete. ...................................... 74 Figura 11.36 Particolare dei boxplot delle distanze dai piani di regressione della parete. ............................................................................................................................................ 74 Figura 11.37 Rappresentazione degli errori di ricostruzione della parete (in evidenza una delle curve periodiche). ...................................................................................................... 75 Figura 11.38 Scostamenti lungo l'asse X e Y dell'immagine intorno alla distanza dall'obiettivo di 0.64 m della parete. In direzione X aumentando la disparità di un pixel tra le corrispondenze la distanza dall’obiettivo aumenta di 1.3mm, mentre in Y la variazione di distanza è trascurabile. ............................................................. 76 Figura 11.39 Rappresentazione degli errori di ricostruzione della parete utilizzando la correzione subpixel paraboloide. ............................................................................................. 77 Figura 11.40 Distanza d(j) tra il punto j-esimo e la retta epipolare. ................................................. 79 Figura 11.41 Vettore distanze d(j) dei punti dalla retta epipolare nel caso della parete. .............. 80 Figura 11.42 Distanza dalla retta epipolare con evidenziati in rosso le coppie di punti considerate inlier con una soglia ricavata dal percentile 90% (nel caso della parete). ........................................................................................................................................... 81 Figura 11.43 Istogramma delle distanze dalle rette epipolari delle corrispondenze ricavate dalla parete. .................................................................................................................... 81 Figura 11.44 Boxplot delle distanze dalle rette epipolari ottenuto analizzando la parete. Il secondo grafico è il particolare del primo e del quarto quartile. ....................... 82 Figura 11.45 Ricostruzione della parete (vista in sezione) considerando il percentile al 100%. Quindi senza eliminazione di outlier. ........................................................................... 83 Figura 11.46 Ricostruzione della parete (vista in sezione) con un percentile del 90% della distanza dalle rette epipolari. ........................................................................................... 83 Figura 11.47 Ricostruzione della parete (vista in sezione) con un percentile del 80% della distanza dalle rette epipolari. ........................................................................................... 84 Figura 11.48 Ricostruzione della parete (vista frontale) con un percentile del 90% della distanza dalle rette epiplari. .............................................................................................. 85 Figura 11.49 Ricostruzione della parete (vista frontale) con un percentile del 80% della distanza dalle rette epipolari. ........................................................................................... 85 Figura 11.50 Rette epipolari per le tre matrici fondamentali ricavate. ............................................. 87 Figura 11.51 Boxplot di confronto tra i metodi sopracitati basato sulle distanze dei punti dal piano di regressione. .................................................................................................. 89 Figura 11.52 Ricostruzione 3D della parete (vista in sezione) senza l'eliminazione manuale degli outlier..................................................................................................................... 90 Figura 11.53 Ricostruzione 3D della parete (vista in sezione) dopo l'eliminazione manuale degli outlier..................................................................................................................... 90 Pag. 7 Indice delle figure Figura 11.54 Ricostruzione della parete (vista in sezione) senza l'eliminazione dei punti isolati. ..................................................................................................................................91 Figura 11.55 Ricostruzione della parete (vista in sezione) dopo l'eliminazione dei punti isolati (percentile 90). .......................................................................................................91 Figura 11.56 Ricostruzione della parete (vista in sezione) dopo l'eliminazione dei punti isolati considerando gruppi di al massimo 6 punti (percentile 90). .........................92 Figura 11.57 Schema dell'algoritmo di ricostruzione considerando tutti i metodi di miglioramento proposti. ............................................................................................................93 Figura 11.58 Ricostruzione finale della parete applicando tutti i metodi di miglioramento. .............................................................................................................................95 Figura 11.59 Istogramma degli scostamenti dai punti reali della parete. .........................................95 Figura 11.60 Rappresentazione grafica degli scostamenti rispetto alla parete reale. .....................96 Figura 12.1 Fotografie della parete rettificate con evidenziate due delle rette epipolari orizzontali. ....................................................................................................................................97 Figura 12.2 Ricostruzione della parete utilizzando le fotografie precedentemente rettificate. ......................................................................................................................................98 Figura 12.3 Istogramma degli scostamenti dai punti reali della parete. ...........................................99 Figura 12.4 Rappresentazione grafica degli scostamenti rispetto alla parete reale (caso non rettificato). ......................................................................................................................... 100 Figura 12.5 Rappresentazione grafica degli scostamenti rispetto alla parete reale (caso rettificato)................................................................................................................................... 100 Figura 12.6 Coppia di immagini Tsukuba (Middlebury dataset).......................................................... 101 Figura 12.7 Particolare dello sfondo (in giallo alcune zone a colore uniforme mentre in rosso il pattern ripetitivo). .................................................................................................. 101 Figura 12.8 Dettaglio della maschera e dei coni. .............................................................................. 102 Figura 12.9 In bianco le zone a colore uniforme che rendono difficile la ricerca delle corrispondenze. ........................................................................................................................ 103 Figura 12.10 Dettaglio di una occlusione presente tra i coni. ........................................................ 103 Figura 12.11 Ricostruzione prospettica ricavata con il metodo proposto. Per meglio rappresentare gli oggetti si sono ingranditi i punti che li compongono creando un effetto di sgretolamento sui bordi. .................................................................. 104 Figura 12.12 Ricostruzione della profondità dei vari oggetti sulle immagini di partenza (a sinistra valori corretti ricavati ricostruendo la scena con 8 immagini scattate da più viste e di conseguenza con un numero ridotto di occlusioni, mentre a destra profondità ottenute con il metodo proposto con sole due immagini). .................................................................................................................. 105 Figura 12.13 Mesh della scena ricavata dalla nuvola di punti ottenuta con il metodo proposto (a sinistra calcolata con Matlab, a destra tramite il software Geomagic Studio v.12). ................................................................................................................................ 106 Figura 12.14 Ricostruzione usando la funzione costo SAD. ......................................................... 107 Figura 12.15 Ricostruzione usando la funzione costo SSD. .......................................................... 107 Figura 12.16 Ricostruzione usando la funzione costo NCC. ......................................................... 108 Figura 12.17 Differenza di ricostruzione tra i due metodi.............................................................. 109 Figura 12.18 Confronto tra il metodo proposto (a destra) e l'algoritmo ADCensus. .............. 110 Pag. 8 Indice delle figure Figura 12.19 Coppia di immagini per il confronto con il software commerciale........................111 Figura 12.20 Ricostruzione dell'impronta con il metodo proposto. ..............................................112 Figura 12.21 Due viste della mesh con applicata la texture ricavate utilizzando il metodo proposto. .....................................................................................................................112 Figura 12.22 Ricostruzione dell'impronta utilizzando il software PhotoModeler.......................113 Figura 12.23 Due viste della mesh con applicata la texture ricavate utilizzando il software PhotoModeler. ..........................................................................................................114 Figura 13.1 Fotografia sinistra e destra della faccia...........................................................................115 Figura 13.2 Nuvola di punti ricavata dalla coppia di immagini della faccia..................................116 Figura 13.3 Nuvola di punti ricavata dalla coppia di immagini della faccia in scala di grigi per evidenziare i dettagli. ................................................................................................117 Figura 13.4 Mesh della faccia..................................................................................................................118 Figura 13.5 Ricostruzione del bassorilievo. ........................................................................................119 Figura 13.6 Nuvola di punti del bassorilievo. ....................................................................................119 Figura 13.7 Ricostruzione della mano. ................................................................................................120 Figura 13.8 Nuvola di punti della mano. ............................................................................................120 Figura 13.9 Ricostruzione dell'interruttore. ........................................................................................121 Figura 13.10 Nuvola di punti dell'interruttore. ..................................................................................121 Figura 13.11 Ricostruzione della scarpa. .............................................................................................122 Figura 13.12 Nuvola di punti della scarpa. .........................................................................................122 Figura 13.13 Ricostruzione della bambola..........................................................................................123 Figura 13.14 Nuvola di punti della bambola. .....................................................................................123 Figura 14.1 Errore di planarità relativo alla ricostruzione di una parete. ......................................125 Figura 14.2 Scatola per la verifica geometrica. ...................................................................................126 Figura 14.3 Ricostruzione della scatola. ..............................................................................................126 Figura 14.4 Piani ricavi dalle due facce inferiori della scatola. ........................................................127 Figura 14.5 Metro per la verifica delle misure....................................................................................128 Figura 14.6 Ricostruzione tridimensionale del metro.......................................................................128 Figura 14.7 Particolare delle zone non ricostruite nelle due fotografie (vista frontale). ............129 Figura 14.8 Vista frontale della ricostruzione del metro con sovrapposta la texture ricavata dalla fotografia originale............................................................................................129 Figura 14.9 Vista frontale ristretta (eliminando le zone intermedie tra i centimetri) della ricostruzione con evidenziati i centimetri. ..................................................................130 Figura 14.10 Andamento delle distanze lungo il metro. ..................................................................131 Figura 14.11 Boxplot delle distanze tra i centimetri reali e quelli ricostruiti. (sopra considerando anche l’outlier tra l’inizio del metro e il primo centimetro). ......................131 Figura 15.1 Pattern asimmetrico per ricavare i parametri di rototraslazione tra le inquadrature dell'oggetto. ........................................................................................................133 Figura 15.2 Fotografia del pattern con evidenziate le ellissi trovate e in verde i pallini ritenuti corretti. ..........................................................................................................................134 Figura 15.3 Orientamento stimato delle ottiche della fotocamera stereoscopica. In blu è rappresentato l’asse Z perpendicolare al piano del sensore, in rosso e verde rispettivamente gli assi X e Y delle immagini. .....................................................................135 Figura 15.4 Immagine sinistra e destra di due piatti sovrapposti. ..................................................138 Pag. 9 Indice delle figure Figura 15.5 Ricostruzione dei piatti utilizzando una sola coppia di immagini. ........................... 138 Figura 15.6 Vista posteriore dei piatti (coppia di immagini stereo). ............................................. 139 Figura 15.7 Riconoscimento automatico del pattern a pallini nelle due immagini di sinistra delle due viste. ............................................................................................................. 139 Figura 15.8 Orientazione stimata della fotocamera durante i due scatti (riferita all’obiettivo di sinistra). ........................................................................................................... 140 Figura 15.9 Ricostruzione della scena sovrapponendo le due nuvole di punti ricavate dalle due viste semplicemente mediante rototraslazione della seconda sulla prima. .......................................................................................................................................... 140 Figura 15.10 Ricostruzione completa dei due piatti sovrapponendo le nuvole di punti dalle due viste mediante rototraslazione e successivamente raffinando il risultato con l'ICP. ................................................................................................................... 141 Figura 15.11 Ricostruzione della scena utilizzando due viste distinte. ......................................... 142 Figura 16.1 Schermata iniziale del programma. ................................................................................ 143 Figura 16.2 Schermata secondaria del programma con i parametri di analisi. ............................ 145 Pag. 10 Indice delle tabelle Tabella 5.1 Specifiche della macchina fotografica Fujifilm REAL 3D W1. ................................... 28 Tabella 6.1 Parametri intrinseci di ciascun obiettivo. ......................................................................... 31 Tabella 8.1 Errore di ricostruzione al variare della lontananza dell'oggetto. .................................. 38 Tabella 9.1 Corner identificati con l’algoritmo di Harris al variare della dimensione dell'area considerata e del valore di soglia di esclusione. ..................................................... 44 Tabella 9.2 Corner identificati con l’algoritmo di Susan al variare del valore di soglia di esclusione. ................................................................................................................................ 46 Tabella 10.1 Esempio di identificazione delle corrispondenze. I massimi per riga sono colorati, in particolare in giallo le corrispondenze accettate e in arancione quella rifiutata. ........................................................................................................... 48 Tabella 11.1 Confronto dei risultati analizzando le immagini solamente in scala di grigio o anche nei tre colori fondamentali separatamente................................................... 62 Tabella 11.2 Confronto dei risultati ottenuti dall'analisi della parete prima e il filtraggio dell'immagine per aumentarne i dettagli. ............................................................... 67 Tabella 11.3 Valori statistici ottenuti dagli errori di distanza rispetto al piano di regressione della parete. ............................................................................................................. 75 Tabella 11.4 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo il raffinamento delle corrispondenze. ......................................................................................... 77 Tabella 11.5 Media e deviazione standard della distanza dei punti dalle rette epipolari nell’analisi della parete. ............................................................................................................... 82 Tabella 11.6 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione degli outlier in base alla distanza dalle rette epipolari. .................................. 84 Tabella 11.7 Tabella di confronto dei risultati ottnuti dalle fotografie della parete con e senza l'eliminazione degli outlier con il metodo Ransac 7 e 8. ........................................... 88 Tabella 11.8 Confronto tra il metodo Ransac e quello di eliminazione degli outlier basato sulla distanza dalle rette epipolari (analisi della parete). Media e deviazione standard sono da intendersi relativi alla ricostruzione 3D della parete confrontata con il piano di regressione....................................................................... 88 Tabella 11.9 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione manuale degli outlier. .......................................................................................... 90 Tabella 11.10 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione degli outlier ricercando i punti isolati. ............................................................. 92 Tabella 11.11 Elenco delle operazioni eseguite applicando in serie i miglioramenti alle immagini della parete.................................................................................................................. 94 Tabella 11.12 Dati statistici ottenuti dagli scostamenti dai punti reali della parete. ...................... 96 Tabella 12.1 Nuovi parametri intrinseci ed estrinseci dopo la rettificazione delle immagini. ...................................................................................................................................... 98 Tabella 12.2 Confronto dei risultati ottenuti dall'analisi della parete utilizzando le fotografie originali e rettificandole. .......................................................................................... 99 Tabella 12.3 Parametri dell'algoritmo proposto ottenuti analizzando la scena............................105 Indice delle tabelle Tabella 13.1 Parametri dell'algoritmo proposto ottenuti analizzando la faccia. ......................... 116 Tabella 14.1 Coefficienti delle normali ai piani che rappresentano i due lati della scatola. ........................................................................................................................................ 127 Tabella 14.2 Misurazioni effettuate sul 3D. ....................................................................................... 130 Pag. 12 Capitolo 1 1. Sommario Lo scopo di questo lavoro di tesi è lo sviluppo e la qualificazione di un sistema di visione per la ricostruzione di oggetti utilizzando come supporto esclusivamente due fotografie di quest’ultimo. Analizzando i metodi esistenti di ricostruzione si è optato per una soluzione basata sull’identificazione dei punti notevoli nelle fotografie che sono stati poi utilizzati come base per la ricerca delle corrispondenze tra le due immagini. Una volta compiuta la calibrazione del sistema di acquisizione e sviluppato il metodo di triangolazione delle corrispondenze trovate si sono ricavati i primi risultati come nuvole di punti 3D. Quindi sono stati implementati vari algoritmi che hanno permesso di migliorare notevolmente i risultati garantendo comunque una tempistica di calcolo ragionevole. Da questi algoritmi è stato sviluppato un programma chiamato RECON3D che, insieme ad una macchina fotografica digitale e ad un mini-proiettore a batteria, costituisce un sistema di ricostruzione tridimensionale portatile, di facile utilizzo e che non necessita di ulteriori calibrazioni. Inoltre sono stati confrontati i risultati con gli algoritmi presenti in letteratura, con uno dei migliori algoritmi di ricostruzione esistenti e con un software commerciale, nonché sono stati verificati geometricamente e dimensionalmente i modelli tridimensionali ottenuti dimostrando come l’accuratezza e la robustezza dei risultati siano tali da permetterne un utilizzo anche ingegneristico. Grazie alla flessibilità del programma RECON3D è stato anche possibile modificarlo in modo da renderlo capace di analizzare anche più coppie di fotografie scattate intorno all’oggetto così da realizzarne un modello 3D più completo. The purpose of this thesis is the development and qualification of a vision system for the tridimensional reconstruction of objects using only two photographs. Analyzing the existing methods of reconstruction, I opted for a solution based on the identification in the images of the significant points that were used as the basis for the search of correspondences between the two images. Indice delle tabelle After the calibration of the acquisition system and after the development of the triangulation method based on the correspondences, the first results were obtained as 3D point clouds. So I have implemented several algorithms that have improved the results while still providing a reasonable timeframe for the calculation. From these algorithms I have developed a program called RECON3D, which, along with a digital camera and a mini-projector battery powered, is a portable, easy to use three-dimensional reconstruction system and it doesn't require additional calibrations. In addition, the results were compared with the algorithms found in the literature, with one of the best reconstruction algorithms and with an existing commercial software. Moreover the obtained reconstructions have been tested geometrically and dimensionally showing how the accuracy and robustness of the obtained results are such that permit to use RECON3D in engineering environment. Due to the flexibility of the program RECON3D, it was possible to modify the software to make it able to analyze even more pairs of photographs taken around the object and so to achieve a more complete 3D model. Pag. 14 Capitolo 2 2. Introduzione In questa tesi viene affrontata la problematica della ricostruzione tridimensionale di oggetti. Attualmente esistono molte tecniche di ricostruzione che utilizzano apparecchiature costose quali scanner laser, sensori a ultrasuoni o infrarossi. Al fine di ottenere un metodo di ricostruzione mediante un sistema poco costoso si è indagato il campo della computer-vision che necessita principalmente soltanto di immagini e quindi di una semplice macchina fotografica. Cercando in letteratura si sono presentati molti metodi di ricostruzione che possono essere suddivisi in tre categorie [1]. La prima riguarda l'analisi fotometrica [15] che consiste nell’analizzare le varie immagini scattate ad un oggetto illuminato da diverse fonti. Conoscendo la posizione della luce rispetto alla fotocamera e analizzando come cambia l'intensità luminosa tra le fotografie, si ottiene la superfice dell'oggetto. La principale limitazione di questo approccio è che restituisce solo le derivate delle superfici e non la sua posizione assoluta rispetto all'obiettivo. La seconda categoria racchiude gli algoritmi basati sul principio che quanto un oggetto è lontano dal punto di messa a fuoco, tanto i suo bordi risultano meno nitidi [16]. Analizzando quindi la sfocatura è possibile ricavare la distanza dell'oggetto dalla fotocamera. Ovviamente analizzando la sfocatura i dettagli vengono persi. L’ultima categoria, sulla quale ci si é voluti concentrare, è la visione stereoscopica. [19]. Questa emula la visione binoculare dell'uomo e degli animali. Il cervello, analizzando le immagini dei due occhi, è in grado di ricavare le informazioni di profondità e quindi di ricostruire l'ambiente tridimensionale che circonda il soggetto stesso. Allo stesso modo gli algoritmi di stereoscopia, riconoscendo nelle due fotografie lo stesso punto e valutando di quanto cambia la sua posizione, ne ricavano la distanza dall'obiettivo. Applicando lo stesso procedimento a tutti i punti dell'immagine si ricrea la profondità dell'intera scena. La prima difficoltà che si affronta con un approccio stereoscopico riguarda la calibrazione del sistema di acquisizione. A questo proposito si è fotografata da due punti di vista differenti una scacchiera [23] di modo da ottenere sia i parametri propri dell'obiettivo (parametri intrinseci [24]), sia la posizione relativa tra i due scatti. Per evitare di ripetere la calibrazione ad ogni acquisizione si è optato per l'utilizzo di una Capitolo 2 macchina fotografica già dotata di due obiettivi leggermente convergenti. Così facendo gli stessi parametri ricavati valgono per ogni acquisizione. Ma è nella ricerca dei punti corrispondenti tra le due immagini, il matching, che si riscontrano le maggiori difficoltà. Questa può essere dovuta ad esempio alla presenza di zone di colore uniforme, oppure a parti di oggetti visibili in una vista e nascoste nell'altra, oppure a riflessi della luce che nascondo particolari. Esistono vari metodi per effettuare il matching, ad esempio alcuni confrontano le aree ricavate intorno ad ogni pixel delle due immagini [7], algoritmi più complessi permettono anche di adattare la finestra di ricerca [8][9] a seconda della similarità con punti vicini, altri ancora identificano prima dei punti significativi in una fotografia e li ricercano poi nell'altra. Tutti i metodi trovati però necessitano che le immagini siano rettificate, ovvero deformate in modo che la ricerca delle corrispondenze sia ridotta ad un'analisi per righe. Questa deformazione, chiamata rettificazione[17], implica necessariamente una perdita di informazioni e si è quindi deciso di evitarla. Dato che si era interessati all'analisi di immagini di grandi dimensioni e alla robustezza della ricostruzione, si è approfondito l'argomento di identificazione di particolari geometrici, quali i corner, e si di questo si è basata la fase di ricerca delle corrispondenze. In particolare per velocizzare la fase di calcolo non ci si è limitati alla ricerca dei punti notevoli nell'altra immagine ma si sono confrontati direttamente i punti notevoli di entrambe le immagini. Conoscendo i parametri di calibrazione si è ulteriormente ridotta la ricerca dato che i punti tra le fotografie sono legati dal vincolo epipolare. Inoltre, dopo aver analizzato l’incertezza sulla ricostruzione in funzione della distanza degli oggetti dagli obiettivi, ci si è limitato a ricercare le corrispondenze in un range specifico di disparità. Si è implementato un algoritmo di raffinamento delle corrispondenze dal momento che i punti identificati dal corner detection scelto [28] potevano non essere perfettamente centrati sulla geometria. Per incrementare il numero di corrispondenze si sono studiati vari metodi tra cui la proiezione di un pattern RGB (composto da forme nei tre colori fondamentali) e la tecnica dello stampo in sabbia. Le fotografie sono state quindi filtrate in modo da rendere i dettagli ancora più evidenti. Quindi sono state identificate le corrispondenze errate ed eliminate con vari metodi quali il Ransac [35][36] e la distanza dalle rette epipolari [21]. Pag. 16 Introduzione Dalle corrispondenze, tenendo anche conto delle distorsioni dovute alle ottiche degli obiettivi, si è ricavata la nuvola dei punti che compongono la superfice dell'oggetto. Mediante l'identificazione dei punti isolati si sono ulteriormente raffinati i risultati. Tutti questi passi verranno descritti dettagliatamente nei capitoli seguenti con lo scopo di dimostrarne l'accuratezza e correttezza mediante l'analisi di oggetti reali, in particolare si è trattata ampiamente l'analisi di una parete che per la sua semplicità geometrica ha permesso una rapida visualizzazione dei miglioramenti e un'analisi statistica tale da giustificare le scelte effettuate. Verrà inoltre riportato un confronto del metodo sviluppato con gli algoritmi basilari presenti in letteratura, con il migliore degli algoritmi di ricostruzione stereoscopica AdCensus [38] e con i risultati ottenuti con il software commerciale PhotoModeller Studio, nonché un confronto con una ricostruzione partendo da immagini rettificate per confermare le ipotesi effettuate su questo metodo. Queste comparazioni dimostrano quanto le ricostruzioni ottenibili con il programma sviluppato fossero veritiere, ragione per cui verranno riportate delle semplici analisi di natura geometrica e misuristica effettuate sui risultati. Per ultimo verrà riportato un ulteriore sviluppo applicato al programma per permettere la ricostruzione di oggetti scattando più immagini intorno ad essi. In questo modo è possibile realizzare un modello più completo. Gli ultimi capitoli sono dedicati a descrivere il programma dal punto di vista sia dell’utilizzatore e quindi la sua interfaccia grafica ed i parametri che è possibile modificare, sia di un possibile sviluppatore che abbia bisogno di conoscere il funzionamento delle principali parti che compongono il RECON3D. Pag. 17 Capitolo 3 3. Stato dell’arte Gli algoritmi moderni mirati alla ricostruzione tridimensionale che utilizzano come supporto la fotografia, si possono riunire in 4 categorie di analisi [1][2]; i. ii. iii. iv. riconoscimento di particolari e features analisi completa delle immagini (denso) analisi della sfuocatura fotometrici La prima categoria si occupa di riconoscere alcuni particolari facilmente distinguibili nelle immagini come ad esempio spigoli e vertici [3]. Ricavate le geometrie in entrambe le immagini, si cercano le corrispondenze tra di esse e se ne ricava il 3D basandosi sulla disparità tra le coordinate dei punti. Il problema maggiore di questi algoritmi si verifica quando voglio analizzare oggetti di colore uniforme su cui non è possibile identificare discontinuità classificabili come entità geometriche. Per ovviare a questo problema è possibile proiettare sull’oggetto un pattern oppure direttamente spruzzare sulle superfici uniformi delle macchie random. Questo argomento specifico è stato approfondito nel capitolo 11.2 Proiezione e stampo. Figura 3.1 Ricerca delle corrispondenze degli algoritmi denso. In particolare ricerca in immagini rettificate e quindi con rette epipolari orizzontali parallele. Capitolo 3 Al contrario gli algoritmi denso analizzano le immagini pixel per pixel [4]. Cercano per ogni pixel di un immagine il corrispondente nell’altra fotografia considerando un’area intorno ad esso, come in Figura 3.1. L’area, chiamata finestra, può essere fissa ovvero con il pixel considerato vincolato alla posizione centrale, oppure movibile [5][6]. Può variare la sua dimensione [7] e non avere forma quadrata ma adattarsi all’immagine ed evitare le ambiguità dovute a zone di colore uniforme[8][9]. L’adattamento può avvenire sfruttando la segmentazione delle immagini. Questa si occupa di riunire i pixel vicini dello stesso colore in modo da utilizzare le aree trovate come finestre di osservazione univoche [10][11]. Questo per permettere di trovare con maggiore robustezza il pixel corrispondente. Chiamando T la finestra di riferimento nell’immagine di sinistra di dimensioni m,n e costruita intorno al pixel i,j e Id l’immagine di destra, il pixel corrispondente viene trovato massimizzando una funzione costo [12][13] che può essere: a. Somma delle differenze assolute (SAD). ∑ ∑| ( ) ( )| ) ( )) b. Somma delle differenze quadrate (SSD) ∑ ∑( ( c. Cross correlazione normalizzata (NCC) ∑ (√∑ ∑ ∑ ( ( ) ) ) (√∑ ( ) ∑ ( ) ) Altri algoritmi si basano sull’ipotesi che un punto di un oggetto, allontanandosi dal punto di messa a fuoco, perda di nitidezza. Di conseguenza ricavando quanto è sfuocato l’oggetto e a che distanza è la messa a fuoco è possibile recuperarne la sagoma tridimensionale [14]. La ricostruzione fotometrica consiste nel ricavare, da più di tre scatti di un oggetto dalla stessa vista ma muovendo la sorgente luminosa che illumina la scena, i Pag. 20 Stato dell’arte cambiamenti di intensità in ogni punto e quindi determinare la mappa delle derivate (Conditio sine qua non é la conoscenza della posizione esatta della sorgente luminosa) [15]. Sempre con la stessa tecnica è possibile ricostruire semplicemente le forme degli oggetti a partire dall’analisi delle ombre [16]. Tutti questi metodi possiedono, tuttavia, degli svantaggi. Il riconoscimento di particolari geometrici, come già sottolineato, non può avvenire se l’oggetto è di colore uniforme. Lo stesso vale per gli algoritmi denso che però nel particolare caso di quelli a finestra variabile possono aumentare l’area di interesse fino a giungere ad una corrispondenza corretta. Al tempo stesso però l’analisi di tutti i pixel comporta un tempo computazionale molto elevato. L’analisi di sfuocatura difficilmente porta a buoni risultati perché all’aumentare della distanza dal fuoco la ricostruzione perde di accuratezza. Infine l’algoritmo fotometrico anche se risulta il più veloce e nel complesso accurato, richiede almeno 3 immagini scattate in 3 istanti temporali distinti. Inoltre questo metodo restituisce solo la derivata delle superfici senza dare informazioni su salti di piani. Infatti l’algoritmo fotometrico non sa distinguere oggetti separati come unitá indipendenti ma li considera un unico oggetto. Le tecniche di ricostruzione 3D più utilizzate sono gli algoritmi denso e quelli di analisi dei particolari geometrici e presentano come prima fase la rettifica delle immagini. La rettificazione è un processo di trasformazione usato per proiettare le due fotografie su un unico piano. Questa tecnica è comunemente utilizzata nella ricostruzione stereo per semplificare la ricerca dei punti corrispondenti tra le immagini [17][18]. 3.1 Rettificazione Considerando P0 e P0’ le matrici proiezione delle due fotocamere, ruotando queste ultime intorno ai rispettivi centri ottici si vogliono ricavare due nuove matrici proiezione Pn e Pn’ in modo che i piani focali così ottenuti risultino complanari [19]. In questo caso gli epipoli si dispongono all’infinito e in conseguenza le rette epipolari risulteranno parallele [20][21][22]. Questo porta un notevole vantaggio alla successiva fase di matching, infatti la ricerca delle corrispondenze si trasforma da un problema bidimensionale (ovvero spostandosi sia verticalmente che orizzontalmente nell’immagine) ad una ricerca per riga quindi monodimensionale. Pag. 21 Capitolo 3 Per ottenere le rette epipolari orizzontali il nuovo asse X delle immagini così ruotate deve essere parallelo alla linea di base passante per i centri ottici. Inoltre si vuole che le coordinate verticali delle immagini siano le stesse così da avere una corrispondenza riga-riga tra le due fotografie. E’ necessaria quindi una approssimazione, ovvero considerare per entrambi gli scatti gli stessi parametri intrinseci della macchina fotografica (si mantiene libera solo la coordinata orizzontale dei centri ottici).Per parametri intrinseci si intendono le costanti che descrivono le caratteristiche di ciascun obiettivo. Perciò viene considerata la stessa lunghezza focale e i piani delle immagini risultano oltre che paralleli tra loro e rispetto alla linea di base, anche complanari. Figura 3.2 Rappresentazione grafica dell'operazione di rettifica. Le immagini così modificate sono equivalenti a due fotografie scattate solamente traslando orizzontalmente la macchina fotografica (Figura 3.2). Di conseguenza anche le matrici di proiezioni risultano le stesse a meno di uno spostamento orizzontale dei centri ottici. Le nuove matrici proiezione Pn e Pn’ risultano quindi dalle matrici di partenza P0 e P0’: [ | Pag. 22 ̃] [ | ̃] ( 3.1 ) Stato dell’arte Dove la matrice dei parametri intrinseci K è la stessa per entrambe le camere. I centri ottici ̃ e ̃ differiscono solo per una traslazione orizzontale. La matrice di R rappresenta la rotazione e può essere rappresentata come ( 3.2 ) [ ] Dove e sono rispettivamente gli assi Xn, Yn e Zn del sistema di riferimento della fotocamera. Si può quindi ricavare la matrice R semplicemente imponendo come condizioni iniziali che: i. l’asse Xn sia parallelo alla linea di base (̃ ‖̃ ii. ̃) ( 3.3 ) ̃‖ l’asse Yn risulti ortogonale a Xn e ad un versore arbitrario k, considerato uguale al vettore unitario Z0 della fotocamera in posizione iniziale così da rendere Yn ortogonale all’asse Z0 ( 3.4 ) iii. l’asse Z0 sia ortogonale a XnYn ( 3.5 ) Conoscendo quindi le nuove matrici di proiezione Pn e Pn’ si possono riorganizzare i pixel delle immagini per ottenere le immagini rettificate. Infatti per ogni punto reale M, il corrispondente pixel m0 nell’immagine non rettificata è dato dalla relazione (a meno di un fattore di scala) ( 3.6 ) Mentre nell’immagine rettificata corrisponde al pixel di coordinate mn ( 3.7 ) Pag. 23 Capitolo 3 Il risultato è visibile in Figura 3.3. Figura 3.3 Partendo dall'alto una coppia di fotografie stereo non rettificata e affianco alcune rette epipoalari evidenziate (convergenti) corrispondenti ai punti rappresentati con una croce. Sotto le stesse immagini dopo la rettifica e in evidenza le rette epipolari divenute parallele. Questo riposizionamento dei singoli pixel da un lato velocizza e migliora la ricerca delle corrispondenze tra le immagini che ora avviene solamente in orizzontale, dall’altro può creare delle condizioni di ambiguità portando l’algoritmo a situazioni erronee nel successivo matching. Infatti rettificando le immagini i pixel vengono spostati e riposizionati. Questo provoca zone vuote che devono essere invece riempite interpolando i valori dei punti vicini. E’ possibile che un pixel non capiti esattamente in una cella della matrice immagine e che quindi il suo valore di intensità debba essere pesato tra le celle circostanti. Tutte queste approssimazioni possono dare poi luogo a false corrispondenze e a successive difficoltà nella ricerca delle corrispondenze, motivo per cui si é deciso di evitare la rettificazione consapevole che questo potesse portare a successive difficoltà nella ricerca delle corrispondenze. Pag. 24 Capitolo 4 4. Situazione iniziale Analizzando i vari metodi descritti precedentemente nel capitolo 3 “Stato dell’arte” si è scelta una sequenza iniziale di operazioni (Figura 4.1). Dopo la calibrazione, come si è già detto, si è scartata la fase di rettifica delle immagini e si è optato per l’utilizzo di un algoritmo di identificazione di tipo features; questo per assicurare alla ricostruzione una migliore robustezza e un tempo di calcolo ragionevole poichè l’analisi pixel per pixel delle immagini catturate (ovvero fotografie a 10Mpx) sarebbe stata impensabile. Si è passati quindi alla fase di triangolazione e di post-elaborazione. Figura 4.1 Processo di elaborazione. Capitolo 5 5. Acquisizione delle immagini Per acquisire le immagini si è scelto l’utilizzo della fotocamera Fujifilm FinePix 3D W1. E’ dotata di due obiettivi che catturano simultaneamente le due fotografie. Il vantaggio nell’utilizzare un sistema come questo è che una volta calibrato e conseguentemente ricavati tutti i parametri estrinseci tra i due sensori CCD questi rimangono costanti. Al contrario utilizzando due webcam o due macchine fotografiche separate, a meno di non tenerle fisse nella stessa posizione relativa, la calibrazione sarebbe dovuta essere ripetuta ad ogni acquisizione. Figura 5.1 Fujifilm REAL 3D W1. La macchina fotografica utilizzata (Figura 5.1) scatta le due fotografie ma non realizza alcun modello 3D. Semplicemente, tramite il suo schermo LCD lenticolare, permette all’utente di visualizzare l’immagine in tre dimensioni mostrando separatamente ai due occhi la fotografia corrispondente. I due obiettivi sono dotati di sensori CCD da 10Mpx distanti 77mm. La coppia di immagini sono salvate come un unico file .MPO e successivamente nuovamente separate utilizzando il software STEREO PHOTO MAKER. Le due fotografie quindi sono state importate all’interno dell’ambiente di sviluppo del software di calcolo numerico MATLAB. Capitolo 5 Tabella 5.1 Specifiche della macchina fotografica Fujifilm REAL 3D W1. Modello FinePix REAL 3D W1 Numero effettivo di pixel 10.0 millioni pixel Sensore CCD 1/2.5-inch CCD x2 Dimensioni delle immagini L: 4:3 3,648 x 2,736 / L: 3:2 3,648 x 2,432 / M: 4:3 2,592 x 1,944 / S: 4:3 2,048 x 1,536 pixel / S: 16:9 1,920 x 1,080 pixel Lenti Fujinon 3x Zoom ottico, F3.7(W) - F4.2(T) Lunghezza focale f=6.3 - 18.9mm, equivalente a 35.0 - 105.0mm di una fotocamera da 35mm Apertura Wide: F3.7 / F5 / F8, Telephoto: F4.2 / F5.6 / F9 Sensitivity Auto / Equivalent to 100 / 200 / 400 / 800 / 1600 (Standard Output Sensitivity) Velocità dell’otturatore Night: 1/8sec. - 1/500sec. Night (Tripod): 3sec. - 1/500sec. Manual: 1/2sec. - 1/1000sec. AUTO: 1/4sec. - 1/1000sec. Bilanciamento del bianco Pag. 28 Automatico Predefinito: Fine, Shade, Fluorescent light (Daylight), Fluorescent light (Warm white), Fluorescent light (Cool white), Incandescent light, Underwater lighting Capitolo 6 6. Calibrazione Utilizzando il Matlab Calibration Toolbox (ovvero un toolbox di calibrazione) [23] sono stati stimati i parametri principali della macchina fotografica stereoscopica. Esistono in letteratura diverse tecniche per effettuare la calibrazione di un sistema stereoscopico. Tipicamente però questa operazione viene eseguita con tecniche basate sull’utilizzo di pattern geometrici [2] dei quali sono note con precisione le caratteristiche (dimensione e posizione delle features presenti nel pattern, etc.). In questo caso specifico la calibrazione è avvenuta stampando e fotografando una scacchiera (Figura 6.1) di cui si conosceva la dimensione esatta dei quadretti, inclinata in vario modo. Il toolbox ha identificato la posizione dei vertici dei quadretti da cui ha ottenuto l’angolazione della scacchiera ad ogni scatto. Successivamente ne ha ricavato i coefficienti intrinseci ed estrinseci della macchina fotografica. Più immagini vengono scattate e più il risultato della calibrazione risulta corretto e con un’approssimazione inferiore. Per calibrare la macchina fotografica stereoscopica si è visto che utilizzando 34 fotografie si giungeva a convergenza. Figura 6.1 Esempi di fotografie utilizzate per la calibrazione. Capitolo 6 6.1 Parametri intrinseci Sono i parametri di ciascun oculare della macchina fotografica [24][25]. Comprendono: i. ii. iii. iv. Centro ottico (punto principale) C : corrisponde al punto in cui un raggio luminoso, attraversandolo, non subisce alcuna deviazione e risulta quindi perpendicolare al sensore. Lunghezza focale fc: è la distanza tra il centro ottico dell’obiettivo e il sensore alla quale viene messa a fuoco l’immagine di un punto posto all’infinito. Aberrazioni kc: sono le distorsioni che si verificano a causa del fatto che le lenti che compongono l’ottica sono curve. Coefficiente di inclinazione α: indica l’angolo tra l’asse x e y dei pixel che compongono il sensore. Figura 6.2 Disposizione delle scacchiere rispetto all'obiettivo di sinistra. I valori ottenuti dalla calibrazione dei due obiettivi separatamente sono riportati in Tabella 6.1 divisi per i due obiettivi.. Pag. 30 Calibrazione Tabella 6.1 Parametri intrinseci di ciascun obiettivo. Obiettivo sinistra Obiettivo destra Centro Ottico: C_sinistra[px] = [1823.5 Centro Ottico: C_destra[px] = [1823.5 1367.5] 1367.5] Lunghezza focale: f_sinistra[px] = [4254.7 Lunghezza focale: f_destra[px] = [4297.1 4321.5] 4362.9] Distorsione: kc_sinistra = [-0.1054 0.11 - Distorsione: kc_destra = [-0.0792 0.0179 0.0018 -0.0035 0] 0.0026 -0.0038 0] Inclinazione: α_sinistra = [ 0.00000 ] => Inclinazione: α_destra = [ 0.00000 ] => angolo 90° angolo 90° La focale delle due ottiche risulta molto simile e il coefficiente di inclinazione pari a 0 comporta che i pixel che compongono l’obiettivo siano perfettamente quadrati. La distorsione è rappresentata graficamente in Figura 6.3. Figura 6.3 Rappresentazione della distorsione per l'obiettivo di sinistra e quello di destra (sono evidenziate le curve a isodistorsione con riportato lo scostamento in px). Le frecce blu indicano lo scostamento effettivo di un pixel dovuto alla distorsione della lente. Per entrambe le lenti lo scostamento massimo è di 45 pixel. La fotocamera ha un sensore di ½.5”che è largo 5.76mm e alto 4.29mm. Se le foto hanno una risoluzione di 3648px X 2736px risulta quindi che la distanza focale in millimetri sia: Pag. 31 Capitolo 6 ( 6.1 ) ( 6.2 ) Le distanze focali sono da ritenersi corrette perché rientrano nei limiti riportati dal datasheet della macchina fotografica (f=6.3 - 18.9mm). 6.2 Parametri estrinseci Combinando le fotografie utilizzate per la calibrazione distinta tra le due camera (Figura 6.5), si sono ricavati i parametri estrinseci di queste [24][25]. Questi indicano la posizione relativa tra i due obiettivi e sono la matrice di rotazione e il vettore traslazione. Rotazione: Traslazione [m]: [ ] [ ] ( 6.3 ) ( 6.4 ) E’ da notare che la rotazione avviene quasi esclusivamente lungo l’asse verticale, indice che gli obiettivi sono leggermente convergenti (Figura 6.4), mentre la traslazione è principalmente in orizzontale e corrisponde a 77mm. Entrambi i risultati sono stati verificati sia empiricamente scattando delle fotografie di riferimento, sia controllando i dati tecnici della macchina fotografica. Figura 6.4 Rappresentazione della posizione relativa tra i due obiettivi. Pag. 32 Calibrazione Figura 6.5 Posizionamento delle scacchiere rispetto ad entrambi gli obiettivi. Pag. 33 Capitolo 7 7. Elaborazione delle immagini Le immagini vengono visualizzate da MATLAB come matrici tridimensionali di valori delle cui celle rappresentano il livello di intensità dei colori fondamentali di ciascun pixel (Figura 7.1). Figura 7.1 Rappresentazione digitale delle immagini. Una volta importate le immagini inizia la fase di pre-processing dove si richiede all’utente l’inserimento dei parametri di analisi. MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica che comprende anche l'omonimo linguaggio di programmazione creato dalla MathWorks. MATLAB consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi, creare interfacce utente ed interfacciarsi con altri programmi. Nonostante sia specializzato nel calcolo numerico, un toolbox permette a MATLAB l’importazione e l’elaborazione di immagini. MATLAB è usato da milioni di persone nell'industria e nelle università. Capitolo 8 8. Relazione tra gli scostamenti e la distanza dell’oggetto Si possono fare alcune considerazioni riguardo allo scostamento di un punto (pixel nel sistema di coordinate immagine) tra le due immagini. Si consideri un oggetto reale e si immagini che questo risulti nell’immagine di sinistra in corrispondenza del centro ottico. Ora se si varia la distanza dell’oggetto dalla camera di sinistra ortogonalmente al sensore, il pixel relativo non subirà alcun spostamento (Figura 8.1). Al contrario il pixel corrispondente nell’immagine di destra si scosterà in verticale ed in orizzontale proporzionalmente alla distanza dell’oggetto. Figura 8.1 Area dove si posiziona l'oggetto al variare della posizione del punto corrispondente nelle immagini. In Figura 8.2 è rappresentata questa relazione basandosi sui parametri di calibrazione ricavati precedentemente. Si può notare che se gli scostamenti sono nulli, ovvero se anche nell’immagine di destra il pixel si trova in corrispondenza del centro ottico, l’oggetto si trova ad una distanza di 2000mm. La validità di questo valore è confermato dal datasheet della macchina fotografica (Tabella 5.1) sotto la voce punto di convergenza. Inoltre risulta evidente che all’aumentare dello scostamento orizzontale in X la distanza dell’oggetto aumenta esponenzialmente (lo scostamento Y verticale è legato allo scostamento in X dato che le immagini non sono rettificate e quindi le rette epipolari non sono parallele). Questo comporta che se nella fase di ricerca delle corrispondenze l’algoritmo ha una deviazione standard dalla posizione esatta del pixel corrispondente di 3 pixel per oggetti vicini (circa 1000 mm di distanza dall’obiettivo) significa un errore di circa 15mm mentre per un oggetto a 2000mm Capitolo 8 l’errore sarà di quasi 70mm. La percentuale dell’errore sulla distanza aumenta dal 1.2% al 3.23% (Tabella 8.1). Per contenere il più possibile l’errore sulla stima della profondità entro i 10 mm si è deciso di utilizzare questa fotocamera per oggetti entro gli 800mm di distanza. Questa ipotesi è normalmente assunta dagli algoritmi moderni. Nel caso si volessero analizzare oggetti più lontani sarebbe necessario un sistema composto da due telecamere disposte ad una distanza relativa maggiore. Tabella 8.1 Errore di ricostruzione al variare della lontananza dell'oggetto. Distanza dall’obiettivo [mm] 1002 2009 5173 10028 Range di distanza rilevata [mm] (considerando 3 pixel di dev. std.) 990÷1014 1946÷2076 4777÷5640 8825÷12290 Range di errore % media di errore [mm] sulla distanza 12<x<12 63<x<67 396<x<467 1203<x<2262 4 4 x 10 x 10 9 9 8 8 7 7 6 6 Distanza dal sensore [mm] Distanza dal sensore [mm] ±1.197 ±3.23 ±8.34 ±17.27 5 4 3 2 5 4 3 2 X: 0 X: 0 Y: 0 1 Y: 0 1 Z: 2000 0 -100 -50 0 50 Scostamento in X [px] Z: 2000 100 0 -100 -50 0 Figura 8.2 Variazione della distanza di un oggetto al variare dello scostamento del punto corrispondente nell'immagine. Pag. 38 50 Scostamento in Y [px] 100 Capitolo 9 9. Punti notevoli nelle immagini Le immagini analizzate sono di grandi dimensione (la risoluzione è pari a 3648x2736 pixel). Per questo un algoritmo del tipo area-based che confrontasse ogni area ritagliata dall’immagine di destra con ogni area nell’immagine di sinistra sarebbe stato impensabile con tempi di calcolo notevoli. Per questo è stata preferita una soluzione features-based. In particolare si è deciso di analizzare le immagini mettendo in evidenza i corner che le compongono e che risultano facilmente identificabili in entrambe le immagini. Nella letteratura ci sono molti sistemi di identificazione dei corner. I più utilizzati sono [26]: i. Algoritmo di HARRIS. ii. Algoritmo di SUSAN. Sui più moderni articoli di ricostruzione stereoscopica si fa riferimento anche all’algoritmo SIFT (Scale-invariant feature transform) [40] che permette di rilevare e descrivere caratteristiche, o feature, locali in immagini. Dato che può essere utilizzato per riconoscere lo stesso oggetti tra più fotografie, è stato testato per verificare se potesse essere utilizzato per la ricerca delle corrispondenze. I risultati si sono rivelati molto buoni ma il numero di punti di riconoscimento dell’oggetto erano così pochi che è stato deciso di scartarlo dato che non avrebbe permesso una ricostruzione superficiale sufficientemente densa di punti. Per mostrare le differenze tra questi metodi si è utilizzata come immagine di partenza quella visibile in Figura 9.1. Figura 9.1 Immagine di esempio utilizzata per la scelta dell'algoritmo di identificazione corner. Capitolo 9 9.1 Algoritmo di Harris Innanzitutto Harris [27][28] calcola il gradiente dell’immagine in direzione orizzontale e in direzione verticale utilizzando l’operatore di Prewitt. Questo utilizza 2 kernels 3×3 che vengono convoluti con l’immagine originale I per calcolare con approssimazione le derivate. [ [ ( 9.1 ) ] ] ( 9.2 ) Figura 9.2 Gradiente in orizzontale e in verticale ricavato dall'immagine di esempio. Quindi si calcolano i prodotti delle derivate Ix2, Iy2 e il prodotto incrociato Ix·Iy sui quali viene applicato un filtro gaussiano per ridurre l’eventuale rumore presente (Figura 9.3, Figura 9.4 e Figura 9.5). Pag. 40 Punti notevoli nelle immagini Figura 9.3 Prodotto tra le derivate Ix2 in direzione orizzontale prima e dopo il filtraggio gaussiano. Figura 9.4 Prodotto tra le derivate Iy2 in direzione verticale prima e dopo il filtraggio gaussiano. Pag. 41 Capitolo 9 Figura 9.5 Prodotto incrociato le derivate Ix·Iy in direzione orizzontale e verticale. Si procede quindi all’estrazione dei corner. Questa può avvenire utilizzando due formule distinte. La prima è quella originale di Harris. Prevede l’inserimento di un parametro k che comunemente viene assunto uguale a 0.04 (Figura 9.6). ( Dove ( ) ( ( 9.3 ) ) ) è il determinate della matrice * +. Il rapporto tra gli autovalori λ1 e λ2 della matrice M varia in funzione della presenza di un bordo orizzontale o verticale o di un corner (Figura 9.7). Figura 9.6 Rappresentazione grafica del cim ottenuto mediante la formula di Harris (k=0.03, 0.04, 0.05). Pag. 42 Punti notevoli nelle immagini Figura 9.7 Rappresentazione di come variano gli autovalori in presenza di diverse discontinuità geometriche. Noble[27] invece riferisce la formula seguente che permette di trovare un numero maggiore di corner senza dover configurare alcun parametro a priori (eps indica la precisione della macchina su cui si esegue il programma) (Figura 9.8). ( 9.4 ) Figura 9.8 Rappresentazione del cim ottenuto utilizzando la formula di Noble. Pag. 43 Capitolo 9 Quindi viene impostato il raggio della regione considerata per la soppressione dei non massimi. In pratica un pixel che non risulta un massimo locale della regione non viene considerato candidato a corner e viene scartato. Si imposta anche il valore di soglia che stabilisce il limite per scartare un candidato corner o per ritenerlo tale (Tabella 9.1). Tabella 9.1 Corner identificati con l’algoritmo di Harris al variare della dimensione dell'area considerata e del valore di soglia di esclusione. Soglia = 1000 Soglia = 2500 Raggio = 5 pixel Raggio = 3 pixel Raggio = 1 pixel Soglia = 500 Ovviamente tenere un raggio ed una soglia bassa garantisce un alto numero di corner ma con il rischio di ritenere corner pixel leggermente diversi da quelli intorno a causa del rumore. Al fine di garantire una certa robustezza (un numero eccessivo di punti può portare ad ambiguità nella successiva ricerca di corrispondenze) in questa fase di ricerca si è scelto un valore di raggio pari a 3 pixel e di soglia pari a 1300 pixel. Si è Pag. 44 Punti notevoli nelle immagini comunque previsto la possibilità di settare i valori di raggio e soglia tra le variabili di input del programma. Così facendo è possibile utilizzare al massimo delle potenzialità l’algoritmo di Harris nel caso l’oggetto da ricostruire sia particolarmente ricco di dettagli e le fotografie siano di buona qualità con un ridotto rumore presente. 9.2 Susan L’algoritmo di identificazione di corner Smallest Univalue Segment Assimilating Nucleus [30] si basa sul fatto che ogni pixel dell’immagine ha associata un area circostante di simile luminosità. L’algoritmo posiziona una maschera circolare intorno ad un pixel e compara la luminosità dei pixel intorno con quella del pixel centrale (chiamato nucleus della maschera). L’area composta dai pixel a simile luminosità viene chiamata Usan area. Considerando M la maschera intorno al pixel centrale m0 e chiamando m i pixel intorno a quest’ultimo tali che , l’operazione di confronto della luminosità può essere riscritta come: ( ( ) ( ) ( ( 9.5 ) )) Dove t è il raggio della maschera. Si sommano quindi il numero dei pixel a simile luminosità così da definire l’area Usan. ( ) ( 9.6 ) ∑ ( ) Si compara quindi n(M) con il valore di soglia geometrico g che normalmente viene impostato a metà del massimo valore che n può assumere (nmax/2). Se si è in presenza di un corner la Usan area sarà meno della metà della maschera (Figura 9.9). ( ) { ( ) ( ) ( 9.7 ) Si ripete la stessa procedura considerando tutti gli altri pixel dell’immagine come nucleus. Pag. 45 Capitolo 9 Nucleus della maschera Maschera Pixel nella maschera con la stessa luminosità del nucleus (Usan area) Figura 9.9 Rappresentazione dei possibili casi di posizionamento del'area Usan. In Tabella 9.2 si vede chiaramente come all’aumentare della soglia di esclusione dei corner i risultati si ripuliscano dai falsi corner dovuti al rumore (ad esempio sulla parete di sfondo). Al tempo stesso però con una soglia pari a 10, quando ormai non vi sono più outlier, il numero dei corner trovati è nettamente inferiore a quelli restituiti dall’algoritmo di Harris. Questo algoritmo restituisce buoni risultati in presenza di rumore dato che, utilizzando un valore di soglia sufficientemente alto, non lavora sulle derivate dell’immagine e quindi non necessita di alcun filtro. Al tempo stesso questa sua caratteristica non gli fa ricavare corner dove vi sono dettagli ad alta frequenza ma solo dove sono presenti dei salti netti di intensità del colore. Per questo restituisce meno corner rispetto all’algoritmo di Harris. Tabella 9.2 Corner identificati con l’algoritmo di Susan al variare del valore di soglia di esclusione. Soglia = 2 Pag. 46 Soglia = 5 Soglia = 10 Capitolo 10 10. Ricerca delle corrispondenze Una volta trovati separatamente i punti notevoli nelle due immagini (corner) con il metodo descritto precedentemente si procede all’identificazione delle corrispondenze. Come spiegato precedentemente l’algoritmo di matching compara i punti ricavati con il corner detection nelle due immagini (p1 per al fotografia di sinistra e p2 per quella di destra) e verifica quali siano quelli corrispondenti. Innanzitutto il programma scarta i punti notevoli troppo vicini al bordo delle immagini intorno ai quali è quindi impossibile costruire la finestra di correlazione. Per ciascuno dei punti rimasti per entrambe le immagini si costruisce quindi la finestra di osservazione w. Considerando poi la finestra w1 costruita su un punto dell’immagine di sinistra e la finestra w2 di un punto di quella di destra che però sia a una distanza compresa tra dmin e dmax (distanza minima e massima di analisi immessa dall’utente a inizio programma) si effettua la correlazione. La finestra w1 e w2 viene normalizzata. [ ] [ ‖[ ] ]‖ ( 10.1 ) [ ] [ ‖[ ] ]‖ ( 10.2 ) La funzione di correlazione usata è ∑[ ] [ ] ( 10.3 ) Viene quindi costruita una matrice in cui le colonne si riferiscono ai punti notevoli dell’immagine di destra, mentre le righe riguardano i punti dell’immagine di sinistra. Nelle celle vengono inseriti i valori di correlazione cor rispettivamente alla colonna e alla riga considerata. Capitolo 10 Tabella 10.1 Esempio di identificazione delle corrispondenze. I massimi per riga sono colorati, in particolare in giallo le corrispondenze accettate e in arancione quella rifiutata. P1destra P2destra P3destra P4destra P5destra P1sinistra 0 1 3 2 0 P2sinistra 0 0 2 6 3 P3sinistra 0 0 0 7 4 Il massimo per righe della matrice corrisponde alla correlazione del punto a sinistra rispetto ai punti dell’immagine di destra (evidenziati in Tabella 10.1 come celle colorate). Per eliminare i possibili outlier si considerano anche i massimi per colonne ovvero le corrispondenze dei punti dell’immagine di destra rispetto a quelli di sinistra. Se i massimi per colonne e per righe corrispondono allora la coppia di punti a cui si riferiscono è assunta come corrispondenza (celle colorate in giallo), altrimenti la coppia viene scartata (cella in arancione). 10.1 Immissione delle distanze iniziali Per migliorare i risultati restituiti dall’algoritmo di ricerca delle corrispondenze all’avvio del programma si richiede all’utente di cliccare sul punto più vicino e su quello più lontano rispetto agli obiettivi (in entrambe le fotografie). Entrambe le richieste saranno utili alla successiva fase di ricerca delle corrispondenze. Infatti ridurre l’area di ricerca permette di ridurre le possibili false corrispondenze e al tempo stesso velocizzare il matching. Allo stesso modo indicare la minima e la massima profondità dell’oggetto permette di ricavare dai parametri di calibrazione il minimo e il massimo scostamento tra i pixel corrispettivi tra le due immagini (minima e massima disparità) e quindi migliorare la qualità dell’algoritmo e infine contenere gli errori nella stima della profondità dell’oggetto. Più nello specifico chiamando SX e DX i vettori delle coordinate dell’oggetto più vicino all’obiettivo per la coppia di immagini originali (non ritagliate) e allo stesso modo dx e sx per l’oggetto più lontano, è possibile ricavare gli spostamenti effettivi minimi e massimi delle corrispondenze nelle zone delle immagini considerate. E’ stato di conseguenza necessario tenere conto della convergenza degli obiettivi. Pag. 48 Ricerca delle corrispondenze Si è immaginato di volere trovare la distanza di un oggetto disposto in corrispondenza del centro ottico della camera di sinistra (Figura 8.2). Per distanze molto ridotte e fino all’intersezione con la retta perpendicolare al sensore di destra passante per il centro ottico lo scostamento nell’immagine di destra è positivo. In corrispondenza del centro ottico di destra la disparità è nulla. Inoltre all’aumentare ulteriormente della distanza la disparità assume un valore negativo con andamento esponenziale. Se quindi l’oggetto lontano e quello vicino si trovano entrambi oltre il punto X (Figura 10.1) o entrambi prima del punto X, la distanza minima e massima di ricerca risulta il valore minimo e massimo degli scostamenti in valore assoluto. Altrimenti se ci si trova con un range di profondità a cavallo del punto X la distanza minima di ricerca è nulla mentre quella massima equivale alla disparità massimo in modulo. L’area di ricerca risulta quindi definita dal valore minimo e massimo di disparità incrementato della dimensione della finestra di ricerca ritagliata intorno ai corner. X Centro ottico di sinistra Fotografia sinistra Centro ottico di destra Fotografia destra Figura 10.1 Rappresentazione degli scostamenti al variare della distanza dell'oggetto (rappresentata dalle frecce arancioni). Pag. 49 Capitolo 11 11. Miglioramento dei risultati Dai primi risultati ottenuti (Figura 11.2 e Figura 11.3) si è notato molto rumore difficilmente eliminabile con qualche algoritmo successivo alla ricostruzione 3D. Si sono quindi studiati dei metodi per ridurre gli outlier direttamente nelle fasi di processo. I metodi riportati di seguito sono stati verificati, applicandoli all’analisi della coppia di fotografie che ritraggono una semplice parete (Figura 11.17). In questo modo è stato possibile verificare facilmente sia visivamente (osservando i risultati della ricostruzione tridimensionale) sia matematicamente (analizzando gli scostamenti dal piano di regressione che simboleggiava la parete reale) quale fosse l’effettivo vantaggio nell’utilizzo di questi algoritmi. Per i primi due metodi (11.1 Analisi zone uniformi e 11.2 Proiezione e stampo) sono state riportate le assunzioni e alcuni esempi di casi particolari per meglio esemplificare il fenomeno. Per i successivi algoritmi di miglioramento sono riportate le ipotesi iniziali, l’implementazione e i risultati ottenuti, applicandoli all’analisi della parete (Figura 11.1, Figura 11.2 e Figura 11.3) riportando anche i dati senza la loro applicazione per un rapido confronto. Alla fine di questo capitolo si è provato ad utilizzare tutti i metodi qui descritti in serie alle fotografie della parete e ne sono stati riportati i risultati complessivi. Figura 11.1 Coppia di fotografie della parete utilizzate per mostrare i risultati dei vari metodi di miglioramento. Capitolo 11 Figura 11.2 Ricostruzione della parete senza alcun metodo migliorativo (vista frontale). Figura 11.3 Ricostruzione della parete senza alcun metodo migliorativo (vista laterale). Pag. 52 Miglioramento dei risultati 11.1 Analisi zone uniformi Per aiutare l’utilizzatore a comprendere se il programma possa dare buoni risultati con le fotografie utilizzate e con la dimensione della finestra w scelta, si effettua una analisi delle zone uniformi Il problema principale di un algoritmo basato sull’identificazione di corner è la presenza di aree nelle immagini senza alcuna discontinuità. Figura 11.4. Immagine con elevata uniformità. Zoom sull'area della guancia analizzata in seguito. In Figura 11.4 si nota bene come la ricerca di corner sulla guancia possa portare pochissimi riferimenti e comunque la scelta delle corrispondenze tra i corner trovati sarebbe comunque molto difficile. Questo perché le finestre che si ricaverebbero intorno ai corner sarebbero pressochè uniformi e dello stesso colore e quindi la funzione di correlazione cor restituirebbe valori molto simili. La matrice di correlazione risulterebbe quindi composta da valori non chiaramente distinti e la ricerca del massimo porterebbe ad un match errato. Di seguito è mostrato il 3D ottenuto dalla zona della guancia (Figura 11.5 e Figura 11.6). Come si era ipotizzato risultano: i. Pochi punti dati dalla difficoltà di trovare dei corner Pag. 53 Capitolo 11 ii. Molti outlier causati dalla difficoltà nella correlazione (outlier distanti anche 17mm rispetto alla loro corretta posizione). Figura 11.5 Ricostruzione 3D della zona guancia (vista dall'alto). Figura 11.6 Ricostruzione 3D della zona guancia (vista frontale) . Pag. 54 Miglioramento dei risultati Per aiutare l’utente a visualizzare le zone ad elevata uniformità si è utilizzata una funzione basata sul gradiente di intensità. Si calcola dapprima il gradiente orizzontale. Per fare questo si calcola la differenza diff tra due pixel dell’immagine successivi (orizzontalmente) per ciascun canale RGB k. ( ) ( ) ( ) ( 11.1 ) Si fa la media delle differenze quadrate sui tre canali RGB. ∑ ( ) ( 11.2 ) Il valore così ottenuto si inserisce nella cella (i,j+1) della matrice gradiente orizzontale gradOriz (ha dimensioni uguali all’immagine considerata.). Se gradOriz(i,j)<gradOriz(i,j+1), ovvero se l’intensità aumenta spostandoci verso destra, allora si ricopia anche nella cella (i,j) il valore sum. In Figura 11.7 è mostrato il gradiente orizzontale (matrice gradOriz) ricavato dall’immagine precedente. Si nota chiaramente che dove vi è un salto di intensità dei colori il gradiente è più chiaro (ad esempio sui contorni della faccia), mentre dove il colore nell’immagine di partenza era più uniforme, risulta una zona scura anch’essa uniforme. Figura 11.7 Gradiente Orizzontale (w = 41). Pag. 55 Capitolo 11 Si considera quindi la dimensione w della finistra con cui, secondo l’utente, è corretto effettuare il matching. Per ogni cella della finestra gradOriz si ritaglia una finestra wxw e si calcola la media quadrata dei valori al suo interno. Se questa è minore di un predeterminato valore di soglia, alla cella intorno a cui è stata costruita la finestra viene assegnato il valore 255 (ovvero il colore bianco) altrimenti il colore nero (valore 0). Con questo metodo è facile vedere come al crescere delle dimensioni della finestra di osservazione le zone non uniformi (bianche) aumentano di dimensione (Figura 11.8, Figura 11.9 e Figura 11.10), per cui nella fase di matching le aree considerate attorno ai corner saranno sufficientemente grandi da evitare ambiguità. Questa rappresentazione delle zone uniformi aiuta a comprendere quale dimensione della finestra per il matching sia più adatto per la ricostruzione dell’oggetto. E’ importante sottolineare che un valore eccessivo di w comporta alti tempi di calcolo. Dalle analisi effettuate si è visto che finestre di 41x41 pixel risultano il miglior compromesso tra accuratezza e tempi di processo. Figura 11.8 Zone uniformi (in bianco) con finestra di 11 pixel. Pag. 56 Miglioramento dei risultati Figura 11.9 Zone uniformi (in bianco) con finestra di 21 pixel. Figura 11.10 Zone uniformi (in bianco) con finestra di 41 pixel. Pag. 57 Capitolo 11 11.2 Proiezione e stampo Nel caso l’oggetto sia di colore particolarmente uniforme o l’aumento delle dimensioni della finestra provochi un tempo di calcolo eccessivo nella fase di matching, è possibile proiettare sull’oggetto un pattern così da eliminare le omogeneità di colore [31][32]. Si sono sperimentati differenti tipi di pattern: i. Pattern random ricavato da una superficie spruzzata con una bomboletta spray (Figura 11.11). Nelle prove è risultato poco denso e quindi il numero di punti restituiti è esiguo. Inoltre nei casi in cui l’oggetto aveva un’estensione di profondità elevata e quindi la ricerca delle corrispondenze doveva essere fatta in un’area molto grande, si sono presentati problemi di ambiguità dati dalla ridotta varietà di forma dei puntini. Figura 11.11 Porzione del pattern random. ii. Pattern composto da caratteri disposti casualmente (Figura 11.12). Non ha dato buoni risultati perché la distanza tra le lettere crea spazi senza corrispondenze nella ricostruzione. Inoltre la dimensione delle lettere non ha permesso la proiezione sull’oggetto riducendo la dimensione del pattern (per cercare di rendere più fitta la nuvola dei corner) dato che si riduce ad un pattern uniforme. Figura 11.12 Porzione del pattern composto da lettere. Pag. 58 Miglioramento dei risultati iii. Pattern realizzato a mano (Figura 11.13). Si è rivelato il migliore con un grande numero di corrispondenze trovate, poche ambiguità nei match e la particolarità di poter essere proiettato sull’oggetto sia molto ingrandito che ridotto. Figura 11.13 Pattern realizzato a mano. Per rendere il sistema portatile si è utilizzato il proiettore portatile 3M MPro-120 (Figura 11.13). Figura 11.14 Proiettore portatile 3M MPro-120. I principali vantaggi di questo proiettore sono la ridotta dimensione e l’alimentazione a batteria dato che il fascio luminoso è generato da un Led con un consumo molto basso. Ovviamente l’intensità luminosa prodotta è proporzionale alle dimensioni e quindi il 3M MPro risulta utilizzabile solo in ambienti quasi bui. Una alternativa alla proiezione è l’utilizzo di terriccio sul quale viene premuto l’oggetto come in Figura 11.15. Il vantaggio principale è che il terriccio per sua natura è composto da più materiali a colori diversi. Questa sua caratteristica equivale Pag. 59 Capitolo 11 all’utilizzare un pattern random e quindi facilita le corrispondenze. Estratto l’oggetto dalla terra si fotografa l’impronta lasciata e si procede nell’analisi. Le ricostruzioni sono accurate e non necessitano di un ambiente scuro (cfr. Proiezione) ma si perdono i dettagli più piccoli dato che la terra non riesce a riprodurre gli spigoli vivi e le piccole cavità. Inoltre è necessario avere a disposizione del terriccio che può non essere così facile in determinate situazioni. Figura 11.15 Impronta di scarpa su sabbia. 11.3 Ricerca su tre canali RGB Inizialmente le immagini erano state convertite in scala di grigi (perdendo quindi informazioni sui colori) prima di essere analizzate. Per aumentare il numero di corrispondenze si è deciso di considerarle scomposte nei singoli canali di colore (RGB). Si sono quindi cercati i corner e le corrispondenze per ciascun canale separatamente. In realtà le corrispondenze trovate in questo modo sono poche di più ma sicuramente non in numero tale da giustificare un tempo di calcolo 3 volte maggiore (dato che l’analisi viene ripetuta per ciascun canale RGB). Utilizzare invece il pattern di proiezione traslato di qualche pixel rispetto all’orizzontale sui tre piani RGB (Figura 11.16) e analizzare le fotografie acquisite separatamente per i tre colori ha permesso un notevole aumento della quantità dei punti identificati. Infatti con questa soluzione è possibile con una unica fotografia ottenere l’equivalente di tre acquisizioni spostando il proiettore (con pattern in scala di grigi). Pag. 60 Miglioramento dei risultati Figura 11.16 Pattern di proiezione RGB. Figura 11.17 Fotografia alla parete con pattern RGB. Pag. 61 Capitolo 11 In Tabella 11.1 sono riportati i risultati utilizzando le fotografie di una parete (Figura 11.17) con proiettato il pattern RGB e analizzando le fotografie dapprima trasformate in scala di grigi e poi utilizzando sia la scala di grigi che i tre colori separatamente. Dalle analisi si è visto che analizzare i colori separatamente ha portato comunque ad un numero di corrispondenze ripetute maggiore, per cui si sono evidenziate le percentuali e il numero di match unici. Le corrispondenze ripetute nell’analisi in scala di grigi risultano dal fatto che, come spiegato precedentemente nel capitolo 10, la ricerca di corrispondenze è stata ridotta entro un range di disparità che corrisponde ad una fascia dell’immagine in cui cercare il match. Queste fasce, realizzate per ogni punto fornito dal corner detector, si sovrappongo e possono quindi dare luogo a corrispondenze ripetute. Tabella 11.1 Confronto dei risultati analizzando le immagini solamente in scala di grigio o anche nei tre colori fondamentali separatamente. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Scala di grigi 24538 18913 77.08 2222 88.25 152 Scala di grigi + RGB 99477 59222 59.53 7165 87.90 623 Si nota che il numero di punti ricavati aumenta di 4 volte (grigio, rosso, verde e blu) ma anche i tempi di calcolo e il numero di outlier(che però restano proporzionali al numero di corrispondenze). Nel secondo caso appare anche un 40% circa di match ripetuti. Nonostante l’aumento degli outlier, dalle figure successive (Figura 11.18, Figura 11.19, Figura 11.20 e Figura 11.21) è chiaramente visibile che l’aumento degli inlier rende la nuvola di punti dell’oggetto molto più densa e quindi permette una ricostruzione più dettagliata. Pag. 62 Miglioramento dei risultati Figura 11.18 Ricostruzione della parete usando esclusivamente l'immagine in scala di grigi (vista frontale). Figura 11.19 Ricostruzione della parete usando esclusivamente l'immagine in scala di grigi (vista laterale), Pag. 63 Capitolo 11 Figura 11.20 Ricostruzione della parete analizzando oltre all’immagine in scala di grigi anche separatamente i tre piani di colore (vista frontale). Figura 11.21 Ricostruzione della parete analizzando oltre all’immagine in scala di grigi anche separatamente i tre piani di colore (vista laterale), Pag. 64 Miglioramento dei risultati 11.4 Miglioramento dei dettagli È stato poi utilizzato anche un algoritmo per aumentare i dettagli nelle immagini acquisite. In questo modo è possibile mettere maggiormente in evidenza le discontinuità nelle fotografie aumentando così il numero di riferimenti riscontrati dall’identificatore di corner. Questa funzione è basata sul filtrare le immagini [33]. Si effettua un filtro mediano dell’immagine considerando per ogni pixel un’area wxw intorno e mediando i valori al suo interno. Si ottiene così un’immagine con meno dettagli (filtro passa basso) come in Figura 11.22b. Figura 11.22 Immagine originale e immagine filtrata con un filtro passa basso. Si sottrae quindi dall’immagine originale quella appena filtrata e il risultato è una rappresentazione dei soli dettagli ad alta frequenza (filtro passa alto) visibili in Figura 11.23a. Infine si somma quest’ultima con l’immagine iniziale così da aumentare la percezione dei dettagli (Figura 11.23b). Utilizzando questo miglioramento è stato possibile aumentare il numero di corner trovati e migliorare la qualità delle corrispondenze rendendo più sicura la correlazione. Pag. 65 Capitolo 11 Figura 11.23 Immagine filtrata con un filtro passa alto e immagine risultante con i dettagli evidenziati. Riprendendo l’immagine della faccia e in particolare la zona della guancia (Figura 11.4), è facile osservare che il numero di match aumenta notevolmente nel caso dell’immagine filtrata (Figura 11.25) rispetto a quella originale(Figura 11.24). Figura 11.24 Ricerca delle corrispondenze sull'immagine originale senza aumento dei dettagli. Pag. 66 Miglioramento dei risultati Figura 11.25 Ricerca delle corrispondenze sull'immagine filtrata. In Figura 11.26 e in Figura 11.27 si vede chiaramente come dalla ricostruzione della parete con questo algoritmo il numero di match unici aumenti (da 18913 a 21688 in Tabella 11.2) Tabella 11.2 Confronto dei risultati ottenuti dall'analisi della parete prima e il filtraggio dell'immagine per aumentarne i dettagli. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Senza filtraggio 24538 18913 77.08 2222 88.25 0 Filtrato 28170 21688 76.98 2638 87.83 12 Pag. 67 Capitolo 11 Figura 11.26 Ricostruzione della parete (vista frontale) senza filtraggio. Figura 11.27 Ricostruzione della parete (vista frontale) utilizzando il filtraggio per migliorare la visibilità dei particolari. Pag. 68 Miglioramento dei risultati 11.5 Raffinamento delle corrispondenze Come riportato precedentemente l’algoritmo di matching ricerca le coppie con indice di correlazione maggiore esclusivamente tra i corner trovati da Harris. In realtà i corner trovati possono risultare non perfettamente centrati e differire di qualche pixel. Questo non riduce l’affidabilità nella ricerca delle corrispondenze ma nella successiva triangolazione può portare a ricavare profondità errate anche di qualche centimetro (8 Relazione tra gli scostamenti e la distanza dell’oggetto). Si è quindi deciso di migliorare il posizionamento nelle immagini dei punti di corrispondenza. Considerata la prima coppia di corner trovati si ritiene principale il punto sull’immagine di sinistra e si ritaglia intorno ad esso un’area w x w (Figura 11.28a). Intorno al corrispettivo punto sulla fotografia di destra si ritaglia una finestra 2w x 2w (Figura 11.28b). Figura 11.28 Finestre ricavate dall'immagine di destra e di sinistra. Si è quindi effettuata la cross-correlazione normalizzata tra le due finestre e si è trovata una matrice con il massimo leggermente spostato in alto e a sinistra visibile in Figura 11.29. Pag. 69 Capitolo 11 Figura 11.29 Crosscorrelazione normalizzata. Si nota il massimo decentrato in rosso scuro. Si è quindi ricavato il valore di scostamento del massimo della crosscorrelazione dal centro e si è di conseguenza spostato il punto di match dell’immagine di destra della stessa quantità. In Figura 11.30 è rappresentato il punto nell’immagine di sinistra tenuto fisso e nell’immagine di destra il vecchio punto in rosso e il nuovo in blu. È subito visibile come il nuovo punto abbia un posizionamento più preciso. Figura 11.30 Coppia di match, in particolare nell'immagine di destra è visibile il vecchio punto (blu) e il nuovo (rosso). Pag. 70 Miglioramento dei risultati La stessa procedura viene effettuata usando come riferimento i punti, restituiti dalla correlazione e non riposizionati, dell’immagine di destra. Il risultato finale quindi è un numero di corrispondenze doppio rispetto a quello ottenuto dal semplice matching. Nella Figura 11.31 è mostrata la ricostruzione 3D di una parete vista in sezione. Si nota chiaramente che il 3D senza raffinamento presenta una maggior dispersione dei punti che compongono l’oggetto, cioè la parete al posto che essere rappresentata come una lama presenta uno spessore di circa 2mm. Figura 11.31 Ricostruzione della parete (vista in sezione) senza l'utilizzo del raffinamento. Utilizzando il raffinamento lo spessore della parete si riduce a circa 0.5mm (Figura 11.32). Inoltre gli outlier si allontano ulteriormente dall’oggetto. Questo rende più facile la loro eliminazione con i metodi descritti successivamente ritrovandosi isolati rispetto alla nuvola dei punti che compone l’oggetto. Pag. 71 Capitolo 11 Figura 11.32 Ricostruzione della parete (vista in sezione) con l'utilizzo del raffinamento. Con la regressione è possibile approssimare i punti trovati con un piano. L’istogramma delle distanze dei punti rispetto al piano (Figura 11.33 e Figura 11.34) mostra come per entrambi i casi la distribuzione dei punti sia gaussiana e quindi non dovuta a errori sistematici dovuti a inesattezze nel codice dell’algoritmo. Utilizzando il raffinamento i punti si concentrano a distanze inferiori, questo è indice di una buona approssimazione del piano che simboleggia la parete reale. Nei boxplot in Figura 11.35e in Figura 11.36 si vede chiaramente come i punti nel caso raffinato abbiano una dispersione intorno allo zero molto ridotta, al contrario gli outlier risultano più distanti e più facilmente eliminabili. Pag. 72 Miglioramento dei risultati Figura 11.33 Istogramma delle distanze dei punti tridimensionali dal piano di regressione (analisi della parete). Figura 11.34 Particolare dell’istogramma che rappresenta la distanza dei punti tridimensionali dal piano di regressione (analisi della parete). Pag. 73 Capitolo 11 Figura 11.35 Boxplot delle distanze dai piani di regressione della parete. Figura 11.36 Particolare dei boxplot delle distanze dai piani di regressione della parete. Pag. 74 Miglioramento dei risultati In Tabella 11.3 sono visualizzate la media e la deviazione standard nei due casi a riprova delle affermazioni fatte precedentemente sui boxplot. Tabella 11.3 Valori statistici ottenuti dagli errori di distanza rispetto al piano di regressione della parete. Media [m] Deviazione standard [m] Senza raffinamento 3.68e-16 7.6e-3 Raffinato -1.96e-16 8.7e-3 In successive analisi, applicando gli algoritmi descritti in questo capitolo in serie alle immagini della parete e rappresentando gli errori di stima dei punti tridimensionali rispetto al piano di regressione che rappresenta la parete reale (Figura 11.37) si è notata la presenza di una componente periodica sotto forma di un onda circolare. Le onde hanno un’altezza di ±0.7 mm. Figura 11.37 Rappresentazione degli errori di ricostruzione della parete (in evidenza una delle curve periodiche). Pag. 75 Capitolo 11 Si è ipotizzato che queste onde fossero dovute allo scarto di pixel ovvero al vincolo nella ricerca delle corrispondenze di considerare pixel interi. Sono stati analizzati gli errori dovuti allo scarto di pixel tenendo come distanza di riferimento dall’obiettivo i 640 mm della parete nella parte centrale utilizzando i grafici in Figura 11.38. Se si sbaglia una corrispondenza di un pixel in direzione X si commette un errore nella stima della distanza di 1.3 mm mentre in direzione Y l’errore è trascurabile (0.1 mm dato che considerando la direzione verticale i due obiettivi sono pressoché paralleli). La crosscorrelazione nel raffinamento restituisce una posizione più corretta della corrispondenza in pixel interi. Di conseguenza l’errore massimo di posizione della corrispondenza risulta pari a ± 0.5px ovvero in direzione X di 1.3 mm·0.5=0.65 mm che corrisponde alla mezza altezza dell’onda. Si è introdotta quindi nell’individuazione del massimo di cross-correlazione l’analisi del subpixel. Questa è stata fatta interpolando con un paraboloide i pixel intorno al valore massimo e considerando la posizione della corrispondenza non più il pixel intero di massimo ma il massimo della superficie interpolata. In Figura 11.39 è visibile il risultato in cui si nota che le onde periodiche sono scomparse e l’errore di ricostruzione si è ridotto da ±3.85mm a ±3.45mm. Figura 11.38 Scostamenti lungo l'asse X e Y dell'immagine intorno alla distanza dall'obiettivo di 0.64 m della parete. In direzione X aumentando la disparità di un pixel tra le corrispondenze la distanza dall’obiettivo aumenta di 1.3mm, mentre in Y la variazione di distanza è trascurabile. Pag. 76 Miglioramento dei risultati Figura 11.39 Rappresentazione degli errori di ricostruzione della parete utilizzando la correzione subpixel paraboloide. In Tabella 11.4 sono riportati i confronti tra i risultati ottenuti nel caso raffinato e quello non raffinato ottenuti dalla fotografia della parete. Tabella 11.4 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo il raffinamento delle corrispondenze. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Senza raffinamento 24538 18913 77.08 2222 88.25 0 Raffinato (subpixel) 49076 37468 76.34 5131 86.31 448 Pag. 77 Capitolo 11 11.6 Eliminazione outlier Per eliminare gli outlier direttamente dalle corrispondenze ottenute con la fase di matching si sono provati due algoritmi: i. ii. Distanza dalle rette epipolari Ransac [35][36] 11.6.1 Distanza dalle rette epipolari Questo algoritmo si basa sulla matrice fondamentale ottenuta dai parametri di calibrazione [34]. La matrice fondamentale si ricava come dalla matrice di rotazione, di traslazione e dalla matrice di calibrazione dei parametri intrinseci delle due camere. [ ( 11.3 ) ] { ( 11.4 ) } Da cui si ricava la matrice di traslazione. ( ) [ ( ) ( ) ( 11.5 ) ( ) ( )] [ ] ( ) Le matrici dei parametri intrinseci per le due fotocamere sono: ⌈ ⌈ ⌉ ⌉ La matrice fondamentale si ottiene come: Pag. 78 ( 11.6 ) ( 11.7 ) Miglioramento dei risultati ( ) ( ) [ ] ( 11.8 ) I coefficienti della retta epipolare sull’immagine di destra si ottengono moltiplicando le coordinate di un punto nell’immagine di sinistra per la matrice fondamentale e corrispondono al luogo dei punti corrispondenti al punto considerato al variare della distanza dalla telecamera. ( 11.9 ) Si calcola la distanza tra la retta epipolare e il punto corrispondente considerato nell’immagine di destra. |∑ √ | ( ) a quello ( 11.10 ) ( ) Se si esegue le operazioni per tutte le j-esime coppie di corrispondenze si ottiene un vettore distanza d(j) (Figura 11.40). Figura 11.40 Distanza d(j) tra il punto j-esimo e la retta epipolare. Pag. 79 Capitolo 11 Tramite un valore di soglia si decide la distanza dalla retta epipolare oltre la quale il punto è da considerarsi un outlier. Ad esempio in Figura 11.41 è mostrato il grafico delle distanze d(j) riferite alla parete precedentemente analizzata nel paragrafo 11.3 Ricerca su tre canali RGB. Figura 11.41 Vettore distanze d(j) dei punti dalla retta epipolare nel caso della parete. Per avere delle distanze dalle rette epipolari non influenzate dalla distorsione delle lenti è necessario riposizionare i punti tenendo conto dei parametri di distorsione radiale e tangenziale ricavati dalla calibrazione. Il valore di soglia si è ottenuto con il metodo dei percentili, in particolare con varie analisi si sono ottenuti dei buoni risultati considerando soglia la distanza entro cui sono disposti il 90% dei punti L’analisi dei percentili restituisce un valore limite per il caso esaminato della parete di 14.17 pixel. Nella Figura 11.42 sono mostrati in rosso gli inlier. Si può facilmente notare che i 10% dei punti considerati quindi outlier risultano distanti dalla nuvola degli inlier e quindi il risultato è da considerarsi corretto. In Figura 11.43 è rappresentato l’istogramma delle distanze che ha forma gaussiana per cui si può ritenere che le distanze siano dovuti ad errori di stima casuali. Pag. 80 Miglioramento dei risultati Figura 11.42 Distanza dalla retta epipolare con evidenziati in rosso le coppie di punti considerate inlier con una soglia ricavata dal percentile 90% (nel caso della parete). Figura 11.43 Istogramma delle distanze dalle rette epipolari delle corrispondenze ricavate dalla parete. Pag. 81 Capitolo 11 La lontananza degli outlier dagli inlier è facilmente visibile nel boxplot in Figura 11.44, mentre in Tabella 11.5 sono riportati i corrispondenti valori di media e deviazione standard. Figura 11.44 Boxplot delle distanze dalle rette epipolari ottenuto analizzando la parete. Il secondo grafico è il particolare del primo e del quarto quartile. Tabella 11.5 Media e deviazione standard della distanza dei punti dalle rette epipolari nell’analisi della parete. Distanza dei punti dalle rette epipolari Media [px] Deviazione standard [px] 0.32 7.98 Di seguito è riportato la ricostruzione della parete utilizzando questa tecnica. Si può notare che il contributo degli outlier è diminuito considerevolmente(Figura 11.45, Figura 11.46 e Figura 11.48). Sono riportati anche i risultati ottenuti considerando un percentile di 80% (Figura 11.47 e Figura 11.49). Pag. 82 Miglioramento dei risultati Figura 11.45 Ricostruzione della parete (vista in sezione) considerando il percentile al 100%. Quindi senza eliminazione di outlier. Figura 11.46 Ricostruzione della parete (vista in sezione) con un percentile del 90% della distanza dalle rette epipolari. Pag. 83 Capitolo 11 Figura 11.47 Ricostruzione della parete (vista in sezione) con un percentile del 80% della distanza dalle rette epipolari. Tabella 11.6 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione degli outlier in base alla distanza dalle rette epipolari. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Senza riduzione degli outlier 24538 18913 77.08 2222 88.25 0 Ridotto (90%) 22085 16903 76.53 1733 89.74 55 Ridotto (80%) 19630 15059 76.71 1533 89.82 55 Dalla Tabella 11.6 al diminuire del percentile aumenta la percentuale di match corretti, infatti, come si può vedere nella Figura 11.48 e nella Figura 11.49, il numero di outlier si riduce mentre la nuvola dei punti che costituisce l’oggetto rimane pressoché invariata. Tuttavia si può notare che utilizzando il percentile 80 l’algoritmo comincia a eliminare anche alcuni punti corretti (angolo in basso a sinistra e in alto a destra) e quindi sarebbe controproducente ridurre ulteriormente il percentile considerato. Pag. 84 Miglioramento dei risultati Figura 11.48 Ricostruzione della parete (vista frontale) con un percentile del 90% della distanza dalle rette epiplari. Figura 11.49 Ricostruzione della parete (vista frontale) con un percentile del 80% della distanza dalle rette epipolari. Pag. 85 Capitolo 11 11.6.2 Ransac Per eliminare le corrispondenze errate si è implementato anche l’algoritmo Ransac (RANdom SAmple Consensus) [35][36]. Si tratta di un metodo iterativo per la stima dei parametri di un modello matematico a partire da un insieme di dati contenente outlier. E’ un algoritmo non deterministico nel senso che produce un risultato corretto solo con una data probabilità, che aumenta al crescere delle iterazioni consentite. L’algoritmo è stato pubblicato per la prima volta da Fischer e Bolles nel 1981 [35] e risulta realizzato come segue. Dato un problema di adeguamento dei dati ad un parametro x si stima questo parametro assumendo che: i. ii. iii. iv. v. Il parametro considerato sia la matrice fondamentale F che permette di ottenere il luogo dei punti in un’immagine corrispondenti ad un punto nell’altra immagine. In particolare il luogo dei punti è una retta (retta epipolare) lungo la quale la corrispondenza si sposta al variare della distanza dalla fotocamera. Il parametro possa essere stimato da N dati. Sono presenti in totale M dati. La probabilità che i dati selezionati a caso dai dati totali permettano una stima accurata del parametro è pg. La probabilità che l’algoritmo restituisca una stima errata del parametro è pfail. Quindi l’algoritmo procede elaborando le seguenti azioni: i. ii. iii. iv. Seleziona N dati a caso dagli M dati totali. Stima il parametro x. Stima quanti dati (di M) siano concordi con il parametro stimato utilizzando una tolleranza impostata dall’utente. K è il numero di inlier. Se K è sufficientemente grande si accetta il risultato e si termina l’esecuzione, altrimenti si ripetono i passaggi precedenti scegliendo altri N dati per L volte. Se si considera: i. ii. iii. iv. pfail = probabilità di L fallimenti consecutivi nella stima del parametro. pfail = (probabilità che un tentativo di stima sia errato)L pfail = (1- probabilità che un tentativo di stima sia corretto)L pfail = (1-(probabilità che un dato casuale sia un inlier)N)L v. pfail = ( vi. L può essere stimato come Pag. 86 ( ) ) ( ( ) ( ) ) Miglioramento dei risultati Sono stati provati due differenti approcci a questo algoritmo, ovvero Ransac considerando N=7 e N=8 utilizzando le corrispondenze trovate precedentemente corrette dalla aberrazione. La matrice fondamentale così ottenuta nei due casi è: [ [ ] ] ( 11.11 ) ( 11.12 ) Si può notare che le due matrici differiscono un poco tra di loro e rispetto alla matrice ricavata dai parametri di calibrazione F (vedi 11.6.1 Distanza dalle rette epipolari). Graficando le rette epipolari (Figura 11.50) per le tre matrici fondamentali ottenute, si ha che la F7 e la F8 non sono corrette infatti risultano estremamente inclinate. Questo implicherebbe che le due camere fossero ruotate notevolmente l’una rispetto all’altra. Cosa che invece dai parametri di calibrazione non risulta. Figura 11.50 Rette epipolari per le tre matrici fondamentali ricavate. Si è comunque applicato questo algoritmo all’analisi delle fotografie della parete. In Tabella 11.7 sono riportati i risultati ottenuti senza alcuna eliminazione degli outlier e con il Ransac 7 e 8. Pag. 87 Capitolo 11 Tabella 11.7 Tabella di confronto dei risultati ottnuti dalle fotografie della parete con e senza l'eliminazione degli outlier con il metodo Ransac 7 e 8. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Senza riduzione outlier 24538 18913 77.08 2222 88.25 0 Ransac 7 22069 16886 76.51 1826 89.13 15 Ransac 8 24227 18622 76.86 1965 89.44 17 Nonostante la non correttezza delle matrici fondamentali ricavate con il Ransac 7 e 8, entrambi gli algoritmi restituiscono dei buoni risultati. Utilizzando il metodo a 8 punti la percentuale di corrispondenze corrette è maggiore e anche il numero di match unici a scapito di un irrilevante aumento dei tempi di calcolo. Si sono quindi paragonati i due algoritmi Ransac al metodo delle distanze dalle rette epipolari (percentile 80 e 90) in Tabella 11.8. Per far questo si sono ricavati gli scostamenti dei punti dal piano di regressione che rappresenta la parete. Tabella 11.8 Confronto tra il metodo Ransac e quello di eliminazione degli outlier basato sulla distanza dalle rette epipolari (analisi della parete). Media e deviazione standard sono da intendersi relativi alla ricostruzione 3D della parete confrontata con il piano di regressione. Media [m] Deviazione standard [m] Ransac 7 6.43e-16 4.6e-3 Ransac 8 7.78e-16 4.7e-3 Distanza dei punti dalle rette epipolari 90% -5.33e-16 3.9e-3 Distanza dei punti dalle rette epipolari 80% 0.10e-16 3.8e-3 Pag. 88 Miglioramento dei risultati Gli algoritmi basati sulla distanza dalle rette epipolari anche se implicano dei tempi di calcolo maggiori, restituiscono dei risultati con deviazioni standard minori, indice di una migliore eliminazione degli outlier, oltre a una maggiore percentuale di match corretti. Inoltre, come è possibile osservare in Figura 11.55 utilizzando il metodo della distanza dalle rette epipolari gli outlier, ovvero i punti lontani dalla nuvola della parete sono molto più separati dagli altri e questo permette una più facile eliminazione con i metodi descritti in seguito. Figura 11.51 Boxplot di confronto tra i metodi sopracitati basato sulle distanze dei punti dal piano di regressione. 11.7 Eliminazione manuale degli outlier Per migliorare ulteriormente i risultati, una volta mostrata la ricostruzione viene chiesto all’utente quale intervallo di lontananza rispetto alla fotocamera considerare. Di conseguenza vengono eliminati tutti i valori che risultano oltre a questi limiti. In Figura 11.53 e in Tabella 11.9 sono visualizzati i risultati di questa tecnica. Ovviamente il numero di outlier diminuisce lasciando intatto il numero di corrispondenze corrette. Questa fase richiede un minimo costo computazionale e, nonostante la sua semplicità, rende le successive ricerche degli outlier molto più efficaci. Pag. 89 Capitolo 11 Figura 11.52 Ricostruzione 3D della parete (vista in sezione) senza l'eliminazione manuale degli outlier. Figura 11.53 Ricostruzione 3D della parete (vista in sezione) dopo l'eliminazione manuale degli outlier. Tabella 11.9 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione manuale degli outlier. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Senza eliminazione 24538 18913 77.08 2222 88.25 0 Eliminato 24148 18546 76.80 1854 90 (5) utente Pag. 90 Miglioramento dei risultati 11.8 Ricerca di punti isolati Ipotizzando che gli outlier si trovino ad avere intorno ad essi dei punti più distanti rispetto alla distanza media della nuvola di inlier, si è proceduto alla loro identificazione ed eliminazione. Per mostrare la correttezza di questa ipotesi si è applicato l’algoritmo di eliminazione dei punti isolati alla ricostruzione della parete (Figura 11.55). Il valore di soglia per definire la distanza massima degli inlier si è ottenuto come precedentemente per mezzo del percentile 90%. Figura 11.54 Ricostruzione della parete (vista in sezione) senza l'eliminazione dei punti isolati. Figura 11.55 Ricostruzione della parete (vista in sezione) dopo l'eliminazione dei punti isolati (percentile 90). Pag. 91 Capitolo 11 Dato che però, come è visibile in Figura 11.55, è possibile che gli outlier si trovino in gruppo, allora la distanza dal punto più vicino sarebbe simile alla media delle distanze tra gli inlier. Perciò si è previsto una variabile che rappresenti il numero massimo di punti da considerare per verificare la distanza minima del gruppo di inlier rispetto ai punti adiacenti. Questa aggiunta all’algoritmo ha permesso l’eliminazione quasi completa degli outlier come è visibile in Figura 11.56. Figura 11.56 Ricostruzione della parete (vista in sezione) dopo l'eliminazione dei punti isolati considerando gruppi di al massimo 6 punti (percentile 90). Tabella 11.10 Confronto dei risultati ottenuti dall'analisi della parete prima e dopo l'eliminazione degli outlier ricercando i punti isolati. N° di match totale N° di match unici % di match unici N° di i errati % match corretti Tempo operazione [s] Senza eliminazione punti isolati 24538 18913 77.08 2222 88.25 0 Punti isolati eliminati 22388 16783 74.96 132 99.21 93 Pag. 92 Miglioramento dei risultati 11.9 Applicazione in serie dei miglioramenti Riprendendo le fotografie della parete e applicando i miglioramenti in serie (Figura 11.57) il risultato è molto buono (Figura 11.58). La deviazione massima dei punti è di 3.8mm (Figura 11.60). Se si considera che la parete è a 64mm significa che l’errore massimo è il 6.25% della distanza dell’oggetto. I tempi di calcolo sono alti (Tabella 11.11) ma questo è dovuto per lo più al fatto che come linguaggio di programmazione si è scelto il Matlab. In molte funzioni (come ad esempio nella ricerca di punti isolati) si cicla su tutte le corrispondenze prese singolarmente più volte. In Matlab questo implica lunghi tempi di processo. Identificazione zone a colore uniforme Proiezione oppure stampo Miglioramento dei dettagli Ricerca su tre canali RGB Raffinamento delle corrispondenze Eliminazione degli outlier (rette epipolari o Ransac) Eliminazione corrispondenze ripetute Eliminazione manuale Eliminazione punti isolati Figura 11.57 Schema dell'algoritmo di ricostruzione considerando tutti i metodi di miglioramento proposti. Il raffinamento aumenta il numero di outlier ma rende la nuvola dell’oggetto più densa e al tempo stesso riduce di molto la deviazione degli scostamenti dei punti dall’oggetto reale. Pag. 93 Capitolo 11 In Figura 11.60 si nota come gli errori aumentino allontanandosi dalla zona centrale dell’immagine. Questo perché nonostante sia stata corretta l’aberrazione delle lenti la distorsione è stata stimata durante la calibrazione con una certa incertezza che ha portato a questo errore. Tabella 11.11 Elenco delle operazioni eseguite applicando in serie i miglioramenti alle immagini della parete. N° di match totale N° di match unici % di match unici N° di match errati % match corretti Tempo operazione [s] Miglioramento dei dettagli - - - - - 93 Ricerca in scala di grigi e sui tre canali RGB 112735 68329 60.61 8375 87.74 845 Raffinamento 206222 143512 69.59 17160 88.04 2496 Eliminazione outlier 90% 185598 128142 69.04 13014 89.84 1102 Triangolazione Rimozione punti doppi nel 3D 128142 - - 13014 89.84 1 Eliminazione manuale 127919 - - 12792 90 (5) Punti 90% 115127 - - 0 100 1726 isolati 6268 Pag. 94 Miglioramento dei risultati Figura 11.58 Ricostruzione finale della applicando tutti i metodi di miglioramento. parete Figura 11.59 Istogramma degli scostamenti dai punti reali della parete. Pag. 95 Capitolo 11 Tabella 11.12 Dati statistici ottenuti dagli scostamenti dai punti reali della parete. Errore di ricostruzione rispetto alla parete reale Media [m] Deviazione standard [m] 0.36e-16 9.6e-4 Figura 11.60 Rappresentazione grafica degli scostamenti rispetto alla parete reale. Pag. 96 Capitolo 12 12. Confronti In questo capitolo si è confrontato l’algoritmo studiato con quelli esistenti. In particolare si sono considerate nuovamente le immagini della parete e si sono analizzate dopo averle rettificate per verificare se l’ipotesi fatta inizialmente sulla non piena correttezza dell’applicazione della rettificazione, fosse corretta. Sono quindi stati riportati i dati per un confronto con l’algoritmo proposto. Utilizzando poi i dati presenti in un particolare database si è confrontato il metodo studiato con i risultati restituiti dagli algoritmi denso standard e dal miglior algoritmo oggi esistente. Infine si è verificato quale fosse l’accuratezza della ricostruzione in relazione ad un software di ricostruzione commerciale e con un esempio pratico. 12.1 Confronto con il caso rettificato Si è considerata la stessa coppia di immagini della parete e si sono rettificate eliminando anche le distorsioni delle lenti. Si sono così ottenute due fotografie in cui la corrispondenza tra i corner si sarebbe dovuta cercare esclusivamente lungo l’orizzontale (essendo ora le rette epipolari orizzontali come in Figura 12.1). Figura 12.1 Fotografie della parete rettificate con evidenziate due delle rette epipolari orizzontali. Rettificando le immagini cambiano di conseguenza tutti i parametri intrinseci ed estrinseci. In particolare in Tabella 12.1 la focale diventa uguale per entrambi gli obiettivi, le rotazioni si annullano e resta solo la traslazione lungo l’asse X (orizzontale). Capitolo 12 Tabella 12.1 Nuovi parametri intrinseci ed estrinseci dopo la rettificazione delle immagini. Obiettivo di sinistra Obiettivo di destra Centro Ottico: C_sinistra[px] = [1893.6 Centro Ottico: C_destra[px] = [2.0891 1368.8] 1368.8] Lunghezza focale: f_sinistra[px] = Lunghezza focale: f_destra[px] = [4195 [4195 4195] 4195] Distorsione: kc_sinistra = [0 0 0 0 0] Distorsione: kc_destra = [0 0 0 0 0] Inclinazione: α_sinistra = [ 0.00000 ] Inclinazione: α_destra = [ 0.00000 ] => => angolo 90° angolo 90° Rotazione: Traslazione [m]: [ ] [ ] In Figura 12.2 è rappresentata la ricostruzione della parete utilizzando le immagini rettificate. La ricostruzione risulta buona come si può dedurre dal parallelismo delle zone colorate che rappresentano una distanza costante dall’obiettivo. Figura 12.2 Ricostruzione della parete utilizzando le fotografie precedentemente rettificate. Pag. 98 Esempi di ricostruzione L’istogramma degli scostamenti dei punti ricostruiti rispetto alla parete reale (Figura 12.3) è confrontabile a quello ricavato dal caso non rettificato (Figura 11.59) sia per larghezza della curva, sia per numero di punti nelle classi. Figura 12.3 Istogramma degli scostamenti dai punti reali della parete. Tabella 12.2 Confronto dei risultati ottenuti dall'analisi della parete utilizzando le fotografie originali e rettificandole. N° di match Non rettificato 115127 Rettificato 110728 Errore massimo e minimo [m] 3.92e-3 -3.52e-3 3.68e-3 -3.86e-3 Media dell’errore [m] Deviazione standard dell’errore [m] 0.3652e-16 9.6037e-4 -0.15625e-16 9.7673e-4 La deviazione standard dell’errore rispetto alla parete reale mostra che utilizzando le immagini non rettificate il risultato è di poco migliore (Tabella 12.2). Al tempo stesso si hanno un maggior numero di corrispondenze e si evitano i tempi dovuti alla rettificazione delle immagini. Anche nel caso rettificato la non perfetta stima e successiva correzione dell’aberrazione porta un maggiore errore sulle zone estreme dell’immagine (Figura 12.5). Pag. 99 Capitolo 12 Figura 12.4 Rappresentazione grafica degli scostamenti rispetto alla parete reale (caso non rettificato). Figura 12.5 Rappresentazione grafica degli scostamenti rispetto alla parete reale (caso rettificato). Pag. 100 Esempi di ricostruzione 12.2 Confronto con i metodi di ricostruzione esistenti Nel Middlebury dataset [37] sono presenti alcune coppie di immagini che ritraggono vari oggetti. Queste vengono usualmente utilizzate dai programmatori per testare i loro algoritmi. Le immagini scelte (Figura 12.6) sono già corrette di eventuali distorsioni e sono rettificate. Questo perché come scritto nel capitolo “Stato dell’arte” gli algoritmi moderni si basano appunto sull’analisi di immagini rettificate. Figura 12.6 Coppia di immagini Tsukuba (Middlebury dataset). Dapprima si è ottenuta una ricostruzione utilizzando le tre principali funzioni costo (cfr. paragrafo “Stato dell’arte”). Si sono quindi confrontati i risultati ottenuti con il migliore dei metodi moderni testati con questo dataset, ovvero l’ADCensus [38]. Le due fotografie hanno alcune caratteristiche che ne rendono difficile la ricostruzione. Innanzitutto lo sfondo presenta sulla sinistra zone di colore uniforme molto marcate mentre sulla destra la griglia di legno che costituisce un pattern ripetitivo e può facilmente dar luogo a errori (Figura 12.7). Figura 12.7 Particolare dello sfondo (in giallo alcune zone a colore uniforme mentre in rosso il pattern ripetitivo). Pag. 101 Capitolo 12 La maschera è l’oggetto con più caratteristiche riconoscibili quindi è più facile da ricostruire correttamente (Figura 12.8-a). Figura 12.8 Dettaglio della maschera e dei coni. I coni in Figura 12.8-b, anche se sono disposti su un tavolo di colore chiaro che facilita il riconoscimento dei contorni, risultano difficili da ricostruire dato che le macchie sulla loro superficie non sono sufficienti a rendere univoche le corrispondenze. La tazza sulla destra presenta anche essa delle macchie che rendono più robusta la ricostruzione ma le astine che contiene sono di colore uniforme e molto sottili. In Figura 12.9 è riportata la mappa delle zone uniformi che compongono le immagini e che quindi rendono difficili le corrispondenze. Nella scena sono disposti 19 oggetti su piani diversi. Questo porta a una notevole presenza di occlusioni ovvero a zone visibili da un obiettivo e non dall’altro. Ad esempio in Figura 12.10 è mostrato come la punta di un cono in primo piano vada a nascondere due parti differenti di un altro cono a seconda del punto di vista da cui è scattata la fotografia. Di conseguenza la parte centrale del logo parzialmente nascosto non può essere ricostruita perché non si può trovare la corrispondenza tra le due immagini e nel 3D darà luogo ad una occlusione. Lo stesso discorso vale per tutti gli altri oggetti disposti su più piani. Pag. 102 Esempi di ricostruzione Figura 12.9 In bianco le zone a colore uniforme che rendono difficile la ricerca delle corrispondenze. Figura 12.10 Dettaglio di una occlusione presente tra i coni. Pag. 103 Capitolo 12 12.2.1 Ricostruzione realizzata con il metodo qui proposto Utilizzano tutti gli accorgimenti descritti nel Capitolo 11 si è ricostruita la scena relativa alle immagini (Figura 12.11). Purtroppo le immagini (1800x1500 px) presenti nel dataset non hanno una risoluzione sufficiente a mostrare le reali capacità del programma ma comunque permettono una buona stima dei dettagli principali. Figura 12.11 Ricostruzione prospettica ricavata con il metodo proposto. Per meglio rappresentare gli oggetti si sono ingranditi i punti che li compongono creando un effetto di sgretolamento sui bordi. Dai risultati in Figura 12.11 si riconoscono facilmente le forme degli oggetti che compongono le due fotografie. Da notare come i vari piani di profondità siano stati ricostruiti correttamente e come il numero di pixel errati sia veramente ridotto. In Figura 12.12 sono rappresentati i valori di profondità dei vari oggetti direttamente sulle immagini di partenza così da poterli confrontare con i valori reali (disponibili el database). Pag. 104 Esempi di ricostruzione Figura 12.12 Ricostruzione della profondità dei vari oggetti sulle immagini di partenza (a sinistra valori corretti ricavati ricostruendo la scena con 8 immagini scattate da più viste e di conseguenza con un numero ridotto di occlusioni, mentre a destra profondità ottenute con il metodo proposto con sole due immagini). Dato che l’algoritmo analizza solo le zone dove sono identificabili delle discontinuità di colore, in questo caso dove la risoluzione delle fotografie è ridotta non è capace di creare una nuvola di punti sufficientemente fitta da evidenziare i dettagli più fini. Questa caratteristica dell’algoritmo proposto porta anche a non avere abbastanza corrispondenze per ricostruire i bordi degli oggetti in modo ottimale. In Tabella 12.3 sono riportatati il numero di corrispondenze trovate e il tempo impiegato. Tabella 12.3 Parametri dell'algoritmo proposto ottenuti analizzando la scena. Corrispondenze trovate 163920 Tempo impiegato (s) 5341 Pag. 105 Capitolo 12 Creando una mesh (Figura 12.13) a partire dalla nuvola di punti ricavata è possibile visualizzare un numero maggiore di dettagli. D’altra parte si evidenzia come la mesh vada a rovinare i contorni degli oggetti nel tentativo di compensare le zone occluse. La mesh permette di osservare con più chiarezza i particolari trovati come ad esempio la maschera o il manico della tazza. Figura 12.13 Mesh della scena ricavata dalla nuvola di punti ottenuta con il metodo proposto (a sinistra calcolata con Matlab, a destra tramite il software Geomagic Studio v.12). 12.2.2 Confronto con un algoritmo denso elementare Per elementare si è inteso un algoritmo basato sul confronto delle finestre ricavate introno a tutti i pixel utilizzando come algoritmo di ricerca delle corrispondenze quelli base ovvero SAD, SSD e NCC [12][13]. La ricostruzione tridimensionale utilizzando questo tipo di approccio risulta semplificata dal fatto che le immagini sono rettificate e quindi le rette epipolari sono disposte orizzontalmente parallele tra loro. Dato che questi algoritmi sono scritti usando Matlab è stato possibile fare un confronto dei tempi di calcolo rispetto all’algoritmo proposto (Tempo 5341s). i. Somma delle differenze assolute (SAD) (Tempo 9325s) ∑ ∑| ( Pag. 106 ) ( )| ( 12.1 ) Esempi di ricostruzione Figura 12.14 Ricostruzione usando la funzione costo SAD. ii. Somma delle differenze quadrate (SSD) (Tempo 10081s) ∑ ∑( ( ) ( )) ( 12.2 ) Figura 12.15 Ricostruzione usando la funzione costo SSD. Pag. 107 Capitolo 12 iii. Cross-correlazione normalizzata (NCC) (Tempo 11929s) ∑ (√∑ ∑ ∑ ( ( ) ) ) (√∑ ( ) ∑ ( ) ) ( 12.3 ) Figura 12.16 Ricostruzione usando la funzione costo NCC. Utilizzando gli algoritmi classici di ricostruzione stereo si nota chiaramente che il rumore è elevato soprattutto nel caso del NCC. Inoltre si presentano notevoli difficoltà nella ricerca delle corrispondenze delle sfondo dove vi è sulla sinistra la zona a colore uniforme mentre sulla destra la grata che costituisce un pattern ripetitivo. Infine i tempi di calcolo sono notevoli, anche di un ordine di grandezza maggiore rispetto all’algoritmo proposto, senza contare il tempo necessario a rettificare le immagini che per il metodo presentato risulta nullo. Per migliorare i risultati sarebbe necessario filtrarli (come per altro molti algoritmi richiedono) in modo così da ridurre il rumore. Al contrario il programma studiato esclude qualunque fase di filtraggio effettuata dopo la ricostruzione per evitare modifiche errate delle corrispondenze trovate. Infine i risultati ricavati con gli algoritmi classici non considerano il fatto che gli obiettivi siano pinhole e che quindi le ricostruzioni debbano essere prospettiche cosa che invece il RECON3D tiene presente (Figura 12.11). Nel paragrafo successivo è riportato un piccolo approfondimento su questa differenza. Pag. 108 Esempi di ricostruzione 12.2.3 Confronto con l’algoritmo ADCensus Di seguito è riportato il confronto tra i risultati ottenuti con l’algoritmo proposto in questa tesi e il migliore tra gli algoritmi di ricostruzione stereo ovvero l’ADCensus [38]. Purtoppo di questo algoritmo non si ha conoscenza di che tipo di analisi utilizzi dato che non vi è materiale bibliografico relativo ad esso. La principale differenza è che il metodo ADCensus non tiene conto che i due obiettivi abbiano un cono di visione ma considera le immagini catturate con un sensore largo quanto la scena. Infatti la tazza nella ricostruzione mediante ADCensus risulta spostata a destra rispetto alla maschera mentre nella realtà è davanti alla maschera, come correttamente ricostruito con il nostro algoritmo. Di conseguenza l’ADCensus ritiene gli oggetti in primo piano, che nell’immagine risultano delle stesse dimensione di quelli dietro, tali anche nella ricostruzione. Al contrario il RECON3D tiene conto delle differenze di altezze in funzione della lontananza dall’obiettivo. Per comparare i risultati si è comunque rappresentata la ricostruzione con il programma proposto sull’immagine di destra, come si era fatto precedentemente per confrontare i risultati dei metodi classici. MASCHERA TAZZA SENSORE Metodo proposto ADCensus Figura 12.17 Differenza di ricostruzione tra i due metodi. Pag. 109 Capitolo 12 L’algoritmo ADCensus risulta più accurato nella ricostruzione dei dettagli (Figura 12.18) ma questo deriva solo dal fatto che analizza tutti i pixel (2536114) mentre il nuovo algoritmo considera solo i punti di discontinuità (163920) e quindi non riesce a ricostruire totalmente le superfici. Come spiegato nella fase introduttiva si è optato per un’analisi non pixel per pixel ma basata su regioni di discontinuità per permettere di lavorare con immagini ben più grandi di quelle utilizzate nella comparazione Middelbury. Di conseguenza i risultati risentono di questa scelta. Inoltre il metodo proposto è realizzato per lavorare su immagini non rettificate e cerca le corrispondenze anche spostandosi verticalmente a differenza dell’ADCensus che analizza scostamenti solo orizzontali, per cui può portare ad un numero maggiore di corrispondenze errate successivamente eliminate con le tecniche descritte ma che comunque riducono di densità la nuvola di punti trovati. Da notare che il metodo proposto restituisce correttamente le occlusioni (in nero nella Figura 12.18), mentre l’ADCensus non le mostra. Questo perché probabilmente l’algoritmo in una successiva elaborazione interpola i risultati per riempire le zone occluse Nel programma proposto si è evitata questa soluzione per non dar luogo a false ricostruzioni. Un’altra possibilità è che, a differenza delle modalità di analisi riportate come vincolanti nel dataset Midelbury (che obbliga all’uso di sole 2 immagini per ricostruzione), i risultati riferiti all’ADCensus sono da attribuirsi ad analisi effettuate sulle 8 fotografie scattate alla scena da altrettanti punti di vista. Questo spiegherebbe il fatto della ricostruzione corretta delle occlusioni, ma al tempo stesso mostrerebbe come il programma proposto abbia una qualità di ricostruzione già molto elevata con solo 2 immagini. Figura 12.18 Confronto tra il metodo proposto (a destra) e l'algoritmo ADCensus. Pag. 110 Esempi di ricostruzione 12.3 Confronto con il software commerciale PhotoModeler Scanner Il software commerciale PhotoModeler Scanner è un programma che ricava la scena in tredimensioni a partire da 2 fotografie. Questo programma richiede l’immissione dei parametri di calibrazione degli obiettivi, quindi la coppia di immagini scattate. Per potere fare un confronto con questo software al massimo delle sue potenzialità si sono utilizzate due immagini del suo tutorial (Figura 12.19). Le immagini rappresentano una impronta in un terreno sabbioso. La principale difficoltà risulta nel fatto che nonostante il terriccio componga una texture random, i granelli sono così fini che è possibile che la correlazione porti a risultati sbagliati. Anche in questo caso le immagini non sono della dimensione per cui l’algoritmo proposto è stato pensato, ma sono più piccole (2848 x 2136 px). Figura 12.19 Coppia di immagini per il confronto con il software commerciale. Prima di iniziare l’analisi di qualsiasi coppia di immagini il programma commerciale richiede i parametri intrinseci dei due obiettivi. Questi possono essere inseriti manualmente o ricavati con una procedura di calibrazione simile a quella effettuata per l’algoritmo proposto. I parametri intrinseci servono per la fase di rettifica e eliminazione delle distorsioni che anche qui, come negli algoritmi già nominati, è richiesta per l’analisi. E’ da notare la presenza di 4 bande di carta intorno all’impronta. Questo perché PhotoModeler le utilizza per ricavare i riferimenti base tra le due immagini e i parametri estrinseci. Per far questo l’utente è obbligato adattando alcuni parametri a fare Pag. 111 Capitolo 12 riconoscere al software questi particolari pattern, il loro orientamento e la loro posizione. Figura 12.20 Ricostruzione dell'impronta con il metodo proposto. Figura 12.21 Due viste della mesh con applicata la texture ricavate utilizzando il metodo proposto. Pag. 112 Esempi di ricostruzione Il programma quindi richiede la zona da analizzare, in questo caso l’impronta, e la dimensione della mesh da utilizzare. In Figura 12.20 e in Figura 12.21 è riportata la ricostruzione dell’impronta con l’algoritmo proposto. In particolare la prima immagine è stata ottenuta applicando una mesh alla nuvola di punti per facilitare la visualizzazione dei dettagli (dato che la mesh interpola i punti ricostruiti si sono persi gli spigoli vivi) mentre nella seconda immagine si è applicata direttamente la fotografia di partenza così da ottenere un modello più realistico. Il metodo proposto ricostruisce correttamente la forma e le dimensioni dell’impronta. Elimina automaticamente qualsiasi outlier e restituisce anche il modello tridimensionale con la mesh applicata. Di seguito (Figura 12.22 e Figura 12.23) sono riportati i risultati ottenuti con il software commerciale. Come si vede alcuni particolari sono ricavati con maggiore accuratezza anche se PhotoModeler fa una post-elaborazione dei punti basata sulla colorazione delle fotografie di partenza. Questo, come già precedentemente detto, è stato evitato nel metodo realizzato per evitare qualsiasi falso risultato. Si può quindi dire che il risultato ottenuto con il software commerciale è comparabile a quello proposto ma necessita di tutta la fase di preparazione (stampa dei pattern, posizionamento, identificazione, orientamento e rettifica delle immagini) che il metodo sviluppato non richiede. Figura 12.22 Ricostruzione dell'impronta utilizzando il software PhotoModeler. Pag. 113 Capitolo 12 Figura 12.23 Due viste della mesh con applicata la texture ricavate utilizzando il software PhotoModeler. Pag. 114 Capitolo 13 13. Esempi di ricostruzione Di seguito sono riportati altri esempi di ricostruzione effettuati applicando il programma sviluppato RECON3D. Sono riportate le nuvole di punti dell’oggetto sia a colori per meglio mostrare le distanze dall’obiettivo, sia in scala di grigi per una migliore rappresentazione della profondità dei dettagli. 13.1 Faccia Per provare le effettive prestazioni dell’algoritmo proposto si è optato per la ricostruzione di una faccia. Dato che il colore della faccia è uniforme si è deciso di proiettare su di essa un pattern a colori RGB per facilitare le corrispondenze (Figura 13.1). Le immagini sono state scattate con una risoluzione di 10Mpx (3648 x 2736 px). Figura 13.1 Fotografia sinistra e destra della faccia. Dalla ricostruzione in Figura 13.2 e in Figura 13.3 si notano le occlusioni in corrispondenza del collo e della parte destra del naso. La ricostruzione presenta pochissimi outlier per lo più nella zona dei capelli dovuti al fatto che la proiezione sui capelli non è risultata chiara e ben definita. La nuvola di punti è molto densa grazie all’aver analizzato le immagini oltre che in scala di grigi anche per ciascun canale rgb. Capitolo 13 Dato che il numero di corrispondenze trovate è elevato, anche il tempo di analisi si è rilevato notevole come si può leggere in Tabella 13.1. Tabella 13.1 Parametri dell'algoritmo proposto ottenuti analizzando la faccia. Corrispondenze trovate 94580 Tempo impiegato (s) 8813 Figura 13.2 Nuvola di punti ricavata dalla coppia di immagini della faccia. Pag. 116 Esempi di ricostruzione Figura 13.3 Nuvola di punti ricavata dalla coppia di immagini della faccia in scala di grigi per evidenziare i dettagli. Si è utilizzato un software esterno (Geomagic Studio v.12) per creare una superficie a partire dai punti ricavati tramite l’algoritmo proposto. La ricostruzione risulta ricca di particolari (Figura 13.4). Si notano ad esempio le cavità nasali, le labbra, i lineamenti sulla fronte e intorno alla bocca. Questo esempio mostra come con semplicemente due fotografie scattate contemporaneamente sia possibile ottenere le superfici che compongono l’oggetto. Pag. 117 Capitolo 13 Figura 13.4 Mesh della faccia. Pag. 118 Esempi di ricostruzione 13.2 Bassorilievo Figura 13.5 Ricostruzione del bassorilievo. La nuvola dei punti non presenta praticamente nessun outlier interno al bassorilievo. I dettagli sono tutti ricostruiti a partire dalle balze della gonna fino ai due lacci della cintura subito sopra. Avendo usato un pattern a pallini il numero di punti non è elevato ma comunque sufficiente a ottenere le superfici. In corrispondenza delle braccia al centro della ricostruzione si possono osservare chiaramente le zone scure dovute alle occlusioni. Figura 13.6 Nuvola di punti del bassorilievo. Pag. 119 Capitolo 13 13.3 Mano Figura 13.7 Ricostruzione della mano. La superfice della mano è ricostruita per intero. Si notano anche le pieghe dovute alla posizione semi raccolta delle dita. Il contorno della mano è frastagliato dato che i bordi non sono netti ma arrotondati e quindi su di essi il pattern si allunga perdendo di definizione e luminosità non permettendo così una buona ricostruzione. Anche lo sfondo è stato ricostruito. Il numero di outlier è esiguo esterno alla mano. Figura 13.8 Nuvola di punti della mano. Pag. 120 Esempi di ricostruzione 13.4 Interruttore Figura 13.9 Ricostruzione dell'interruttore. Nella ricostruzione si nota il foro della presa telefonica (a sinistra) e l’interruttore inclinato sulla destra. Anche il santino soprastante la placchetta è stato ricostruito insieme ad un piccolo bassorilievo nonostante il suo spessore fosse di solo mezzo millimetro. Figura 13.10 Nuvola di punti dell'interruttore. Pag. 121 Capitolo 13 13.5 Scarpa Figura 13.11 Ricostruzione della scarpa. Dalla nuvola di punti si nota come anche i lacci siano stati ricostruiti e pure il logo della marca nonostante fosse di colore scuro. La parte inferiore della suola essendo scura non ha permesso la sua ricostruzione risultando al programma omogenea e priva di punti notevoli identificabili. Figura 13.12 Nuvola di punti della scarpa. Pag. 122 Esempi di ricostruzione 13.6 Bambola Figura 13.13 Ricostruzione della bambola. L’elevata distanza tra i punti ricostruiti deriva dal fatto che la bambola è alta solo 10cm e il proiettore non poteva essere posizionato così vicino da ridurre la dimensione del pattern. Si notano comunque le concavità in corrispondenza degli occhi e la ricostruzione della convessità della gonna anche sui bordi dove diventa tangente alla vista. Figura 13.14 Nuvola di punti della bambola. Pag. 123 Capitolo 14 14. Misurazioni effettuate sul 3D Verificata l’accuratezza del metodo proposto confrontandolo con altri algoritmi e software, si è voluto analizzare quanto fosse precisa la ricostruzione in termine di misurazioni e geometrie. Per far questo si sono analizzati alcuni campioni. 14.1 Verifica geometrica Nel paragrafo “Errore. L'origine riferimento non è stata trovata.” è stata analizzata la ricostruzione di una parete. Come è possibile osservare nella Figura 14.1 l’errore di planarità aumenta spostandosi verso gli estremi dell’immagine. Questo è dovuto per lo più a una non ottimale stima dei parametri di aberrazione delle lenti e di conseguenza a una correzione delle distorsioni non precisa. Comunque gli scostamenti dovuti alla non perfetta planarità nella ricostruzione risultano di ± 3.8 mm per una superficie larga 350 mm e ad una distanza di 655 mm dall’obiettivo. Quindi tutto sommato un errore di planarità accettabile. Figura 14.1 Errore di planarità relativo alla ricostruzione di una parete. Capitolo 15 Si è quindi voluto testare quanto fosse accurato l’algoritmo nella ricostruzione di figure geometriche. Per questo si è fotografata una scatola una volta verificato che l’angolo tra i suoi lati fosse effettivamente di 90°. In realtà misurandolo si è notato che la scatola era leggermente romboidale e che quindi l’angolo era di 89° con una incertezza di ±0.5° dovuta allo strumento di misura utilizzato. Figura 14.2 Scatola per la verifica geometrica. Figura 14.3 Ricostruzione della scatola. Pag. 126 Misurazioni effettuate sul 3D La ricostruzione ottenuta presenta qualche outlier (Figura 14.3) nelle zone che compongono lo sfondo. La parte superiore della scatola è risultata la più difficile da ricostruire dato che a causa dell’eccessiva inclinazione rispetto alla proiezione il pattern risulta estremamente allungato, sfuocato e di conseguenza meno nitido. L’algoritmo ha quindi restituito meno punti ma comunque corretti. Per valutare se effettivamente le due facce inferiori della scatola fossero state ricostruite con un angolo di 89° si è importata la nuvola di punti ricavata nel software Geomagic Studio v.12. Qui si sono approssimati le due superfici con due piani in Figura 14.4. Da questi due piani sono state ricavate le normali visibili in Tabella 14.1. Figura 14.4 Piani ricavi dalle due facce inferiori della scatola. Tabella 14.1 Coefficienti delle normali ai piani che rappresentano i due lati della scatola. Normale al piano Piano di SINISTRA Piano di DESTRA 0.647, -0.763, 0.004 -0.755, -0.654, 0.046 Di conseguenza conoscendo le normali ai due piani è possibile calcolare l’angolo θ tra di loro. Pag. 127 Capitolo 15 ( 14.1 ) | | | | Dato che l’incertezza sulla misurazione manuale è stata di ±0.5° si può dire che l’algoritmo restituisce correttamente anche le geometrie. 14.2 Verifica sulla misura Per effettuare questa analisi si è fotografato un metro (Figura 14.5). Si è quindi ottenuto il 3D e applicato su di esso la texture per avere dei riferimenti reali. Figura 14.5 Metro per la verifica delle misure. Dalla ricostruzione in Figura 14.6 si osserva che la ricostruzione ottenuta presenta quasi nessun outlier. Infatti il metro è stato ricostruito con una accuratezza sulla profondità di ± 0.5 mm. Nella vista frontale della ricostruzione (Figura 14.7) si nota come le zone di colore uniforme tra i numeri della scala millimetrata non siano state ricostruite. Questo era stato già messo in evidenza nella pre-analisi delle zone uniformi. Figura 14.6 Ricostruzione tridimensionale del metro. Pag. 128 Misurazioni effettuate sul 3D Figura 14.7 Particolare delle zone non ricostruite nelle due fotografie (vista frontale). In Figura 14.8 si può osservare che anche lungo la scala millimetrata (che rappresenterebbe un pattern ripetitivo) la ricostruzione è risultata efficace. Questo grazie alla flessibilità dell’algoritmo proposto che permette di modificare la dimensione della finestra di osservazione permettendo di creare zone di corrispondenza univoche. Ricentrando la ricostruzione del metro in modo da farlo partire ad X=0 è stato possibile verificare le misurazioni. Come si può vedere in Figura 14.9 i centimetri della fotografia corrispondono a quelli ricostruiti con una buona approssimazione. Si è quindi svolta un’ulteriore analisi. Figura 14.8 Vista frontale della ricostruzione del metro con sovrapposta la texture ricavata dalla fotografia originale. Pag. 129 Capitolo 15 Figura 14.9 Vista frontale ristretta (eliminando le zone intermedie tra i centimetri) della ricostruzione con evidenziati i centimetri. Si sono ricavati i punti nel 3D corrispondenti ad ogni centimetro in particolare dal centimetro 0 al 10 (in Tabella 14.2). Conoscendo quindi le coordinate xyz dei punti si sono ricavate le distanze relative. √( ) ( ) ( ( 14.2 ) ) Tabella 14.2 Misurazioni effettuate sul 3D. Centimetro X [m] Y [m] Z [m] Distanza dal centimetro precedente [mm] 0 1 2 3 4 5 6 7 8 9 10 0 0.0095 0.0197 0.0296 0.0399 0.0499 0.0600 0.0701 0.0799 0.0901 0.0999 0.0058 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0061 0.0061 0.2576 0.2579 0.258 0.258 0.2584 0.2583 0.2586 0.2588 0.2587 0.2587 0.2589 9.49 10.20 9.96 10.26 10.00 10.14 10.02 9.89 10.02 9.89 Pag. 130 Misurazioni effettuate sul 3D Distanza tra i punti [m] Distanze 0.0103 0.0102 0.0101 0.01 0.0099 0.0098 0.0097 0.0096 0.0095 0.0094 1 2 3 4 5 6 7 8 9 10 Centimetri sul metro Figura 14.10 Andamento delle distanze lungo il metro. Dal grafico in Figura 14.10 l’algoritmo ricostruisce le distanze con una buona precisione, infatti le grandezze variano con una deviazione standard di 0.13 mm e una media di 10.02 mm (Figura 14.11). La distanza tra l’inizio del metro e il primo centimetro è da considerarsi un outlier dato che la cima del metro è risultata rovinata e poco accurata a causa dell’applicazione di un cappuccio protettivo di metallo che sfalsa la misura. Si può quindi affermare che le misurazioni effettuate con questo algoritmo riportano risultati più che accettabili. Figura 14.11 Boxplot delle distanze tra i centimetri reali e quelli ricostruiti. (sopra considerando anche l’outlier tra l’inizio del metro e il primo centimetro). Pag. 131 Capitolo 15 15. Realizzazione di un 3D da più viste Utilizzando solamente una coppia di fotografie è possibile realizzare la ricostruzione dell’oggetto esclusivamente per i punti visti da entrambi gli obiettivi. Al contrario scattando delle coppie di fotografie da più punti di vista intorno all’oggetto è possibile ricostruire il 3D dell’oggetto per un angolo di visuale maggiore. Il problema consiste nello stimare le posizioni relative tra i vari scatti. Una possibilità sarebbe di ruotare l’oggetto di fronte alla macchina fotografica e annotarne gli angoli di spostamento. Questo ad esempio per oggetti grandi non può essere effettuato e inoltre richiede un’attrezzatura (tavola girevole e strumenti di misura) non facilmente trasportabili o reperibili. Alternativamente si può posizionare vicino all’oggetto la scacchiera usata per la calibrazione e spostare la camera intorno all’oggetto. Il problema è che il tool di calibrazione utile a ricavare i parametri di rototraslazione necessita che tutti i vertici dei quadratini che compongono la scacchiera siano visibili. Muovendo la fotocamera è possibile che parti della scacchiera vengono coperte dall’oggetto fotografato. Si è quindi scelto di utilizzare un pattern asimmetrico composto da pallini (Figura 15.1) che permettesse di ricavare i parametri di rotazione e traslazione relative tra le inquadrature senza la necessità che il pattern sia totalmente visibile. Figura 15.1 Pattern asimmetrico per ricavare i parametri di rototraslazione tra le inquadrature dell'oggetto. Capitolo 15 Considerando una fotografia attraverso un algoritmo di ricerca delle ellissi e quindi dei relativi centri si ricava la mappatura del pattern nelle immagini (Figura 15.2). Questo è ottenuto binarizzando la fotografia e successivamente analizzando le zone nere. È possibile che vengano riconosciuti parte del pattern anche altri oggetti nella foto. L’algoritmo di omografia compara i pallini trovati al modello piano del pattern (precedentemente fornito al programma) e restituisce l’orientamento del pattern nell’immagine scartando i pallini errati. In particolare in Figura 15.2 alcune zone dello sfondo di legno sono state riconosciute come ellissi ma comunque poi scartate, mentre i pallini centrali del pattern, resi più chiari dal riflesso della luce, sono stati tralasciati ma successivamente stimati basandosi sugli altri pallini. Figura 15.2 Fotografia del pattern con evidenziate le ellissi trovate e in verde i pallini ritenuti corretti. Conoscendo quindi la disposizione del pattern è possibile ricavare l’orientamento della fotocamera rispetto al riferimento di fotocamera perfettamente perpendicolare al pattern. Pag. 134 Realizzazione di un 3D da più viste Applicando lo stesso metodo anche alle altre immagini si ottengono le matrici di rotazione e di traslazione di ogni scatto. Per verificare la correttezza del metodo si è fotografato il pattern con la macchina fotografica stereoscopica di cui si conoscono già le matrici di rototraslazione tra le ottiche. Al programma sono stati quindi passati i parametri intrinseci ricavati dalla calibrazione per correggere le immagini dalle distorsioni dovute agli obiettivi. Lo scopo di questa analisi è stato quello di confrontare le rototraslazioni calibrate con la scacchiera con quelle ricavate dal pattern a pallini. Figura 15.3 Orientamento stimato delle ottiche della fotocamera stereoscopica. In blu è rappresentato l’asse Z perpendicolare al piano del sensore, in rosso e verde rispettivamente gli assi X e Y delle immagini. I parametri stimati rispetto al sistema di riferimento posto nell’origine, rappresentati in Figura 15.3, risultano: Pag. 135 Capitolo 15 OBIETTIVO DI SINISTRA [ Rotazione assoluta: ] [ Traslazione assoluta [m]: ( 15.1 ) ( 15.2 ) ] OBIETTIVO DI DESTRA [ Rotazione assoluta: Traslazione assoluta [m]: ( 15.3 ) ] [ ( 15.4 ) ] Si sono quindi ricavate le rototraslazioni relative tra le ottiche: i. Rotazione relativa: i. Traslazione relativa [m]: [ ] [ ( 15.5 ) ( 15.6 ) ] Di seguito sono riportati i valori corretti di rototraslazione ricavati con la calibrazione con scacchiera (6.2 Parametri estrinseci). Rotazione: Traslazione [m]: [ ] [ ] ( 15.7 ) ( 15.8 ) I valori sono comparabili con quelli ottenuti dalla calibrazione stereoscopica anche se non perfettamente uguali. Pag. 136 Realizzazione di un 3D da più viste Si è quindi sperimentato il pattern a pallini per ricavare il 3D di un oggetto utilizzando più viste. Fotografato l’oggetto più volte e ricavate le rototraslazioni tra gli scatti dell’obiettivo di destra si ottiene una mappatura completa delle pose delle immagini. Questo permette di rototraslare i punti tridimensionali ottenuti dalla ricostruzione e riposizionarli rispetto al primo scatto. Compiendo alcune prove si è però notato che il leggero scarto tra i valori reali di rototraslazione e quelli ricavati con il pattern a pallini non permettono una sovrapposizione delle nuvole di punti ricavata da più viste in modo soddisfacente. Per ovviare alla bassa accuratezza delle matrici di trasformazione ricavate si è utilizzato l’algoritmo ICP (Iterative Closest Point) [29]. Questo metodo permette di ricavare la rototraslazione relativa tra due nuvole di punti minimizzando le distanze tra i punti che le compongono. Questo avviene con un processo iterativo composto dai seguenti passaggi: i. ii. iii. iv. Associazione dei punti tra le nuvole utilizzando un criterio di vicinanza Stimare i parametri di trasformazione per mezzo di una funzione di costo ai minimi quadrati Trasformare i punti applicando i parametri di trasformazione appena ricavati Iterare il processo dal primo passaggio fino a che non si giunge a convergenza. Affinchè il metodo ICP porti buoni risultati è necessario che le nuvole di punti all’inizio dell’analisi siano già abbastanza vicine. Per questo la rototraslazione delle nuvole effettuata per mezzo del pattern a pallini si integra perfettamente all’algoritmo ICP predisponendo le due nuvole per la successiva sovrapposizione. Di seguito è riportato un esempio di applicazione di questo metodo usando come immagini di partenza una coppia di fotografie di due piatti sovrapposti (Figura 15.4). Lo scopo di questa ricostruzione era di ottenere il 3D dei due piatti con sufficienti particolari da permettere poi ad esempio il confronto delle dimensioni tra i due piatti. Pag. 137 Capitolo 15 Figura 15.4 Immagine sinistra e destra di due piatti sovrapposti. Dalla ricostruzione tridimensionale (Figura 15.5) usando solamente la coppia di fotografie in Figura 15.4 si nota che il piatto in secondo piano è quasi totalmente nascosto dal primo non permettendo quindi di ricavarne sufficienti dettagli. Inoltre anche il piatto in primo piano è rappresentato da una nuvola non omogenea con ampie zone senza punti, in particolare in corrispondenza dei riflessi della luce. Figura 15.5 Ricostruzione dei piatti utilizzando una sola coppia di immagini. Pag. 138 Realizzazione di un 3D da più viste Si è quindi scattata un’altra coppia di fotografie prese dalla vista opposta in Figura 15.6. Figura 15.6 Vista posteriore dei piatti (coppia di immagini stereo). Mediante l’auto calibrazione basata sul pattern a pallini posto affianco ai piatti si sono ricavati i parametri di rototraslazione relativi tra le due coppie di scatti. In Figura 15.7 sono evidenziati con delle ellissi verdi i pallini riconosciuti automaticamente dall’algoritmo mentre in rosso i pallini nascosti dai piatti ma comunque di cui è stata stimata la posizione. Dal riconoscimento del pattern si è stimata la posizione della fotocamera durante i due scatti (Figura 15.8). Figura 15.7 Riconoscimento automatico del pattern a pallini nelle due immagini di sinistra delle due viste. Pag. 139 Capitolo 15 Figura 15.8 Orientazione stimata della fotocamera durante i due scatti (riferita all’obiettivo di sinistra). Si è quindi ricavato il 3D dalla seconda coppia di fotografie e rototraslando i punti per mezzo delle matrici di trasformazione stimate con il pattern si sono sovrapposte le nuvole di punti della prima vista e della seconda. Come si può osservare in Figura 15.9 anche se l’orientamento delle nuvole è corretto, queste non si sovrappongono lasciando uno spazio tra di esse. Si è quindi utilizzato l’algoritmo ICP per raffinare il posizionamento. Figura 15.9 Ricostruzione della scena sovrapponendo le due nuvole di punti ricavate dalle due viste semplicemente mediante rototraslazione della seconda sulla prima. Pag. 140 Realizzazione di un 3D da più viste L’algoritmo ICP ha riportato le nuvole nella corretta posizione iterando in questo caso 12 volte. Il tempo necessario per questa operazione è stato di soli 37 secondi grazie al fatto che le nuvole di punti erano già molto vicine. Il risultato è visibile in Figura 15.10. Con questo metodo è stato possibile ricostruire in parte anche il piatto in secondo piano (Figura 15.11) e migliorare i dettagli di quello in primo piano. Ovviamente è possibile utilizzare altre viste per migliorare ulteriormente i risultati arricchendoli di dettagli. Figura 15.10 Ricostruzione completa dei due piatti sovrapponendo le nuvole di punti dalle due viste mediante rototraslazione e successivamente raffinando il risultato con l'ICP. Pag. 141 Capitolo 15 Figura 15.11 Ricostruzione della scena utilizzando due viste distinte. Pag. 142 Capitolo 16 16. Software Il programma RECON3D è dotato di un’interfaccia grafica chiara. All’avvio viene visualizzata la schermata in Figura 16.1 che mostra sulla colonna di sinistra i 3 pulsanti per la calibrazione (intrinseca ed estrinseca) mentre sulla destra le 4 opzioni di analisi. i. ii. iii. iv. Standard (two images): consiste nella ricostruzione di oggetti partendo da un’unica coppia di fotografie. Multi pairs of images (same view point): ricava la ricostruzione di un oggetto da più coppie di immagini scattate sempre dalla stessa posizione. Questa opzione risulta utile se si vuole avere una nuvola di punti molto densa e quindi si proietta sull’oggetto un pattern che viene progressivamente spostato ad ogni successivo scatto. Multi pairs of images (different view points): è la ricostruzione tridimensionale ottenuta scattando più coppie di immagini cambiando di posizione. Questa opzione è preferibile nel caso si voglia realizzare un 3D completo dell’oggetto ruotandogli anche attorno. Le posizioni relative tra gli scatti possono essere ricavate posizionando sulla scena la stessa scacchiera usata per la calibrazione e seguendo una procedura simile. Auto multi pairs of images (different view points): è l’equivalente del punto precedente mate ricavando le posizioni relative tra gli scatti automaticamente con il pattern a pallini illustrato nel Capitolo 0. Figura 16.1 Schermata iniziale del programma. Scelta la modalità di analisi appare la schermata con i parametri (Figura 16.2). i. ii. iii. Pairs of images: numero di coppie di fotografie da analizzare. Corners threshold: valore di soglia per l’identificazione dei corner. Match window: dimensione della finestra costruita intorno ai corner e utilizzata per la ricerca delle corrispondenza (deve avere valore dispari). Capitolo 16 iv. v. vi. vii. viii. ix. x. xi. xii. xiii. xiv. xv. Corners radius: distanza minima tra corner adiacenti. Outliers threshold: percentuale di corrispondenze ritenute inlier nell’analisi delle distanze dalle rette epipolari. Distance threshold: percentuale di corrispondenze ritenute inlier nell’analisi dei punti isolati. Distance iterations: numero di punti adiacenti da considerare nell’analisi dei punti isolati. Real pattern dimension [m]: dimensione nominale del pattern nel caso si voglia utilizzare la calibrazione estrinseca mediante analisi del pattern automatica. Harris: menu a tendina che permette l’utilizzo di identificazione corner di Harris o Susan. Correlation: menu a tendina per la scelta di utilizzare come algorimto di ricerca delle corrispondenze quello implimentato in questa tesi o la SIFT. Distance from epipolar lines: menu a tendina che permette la scelta dell’algoritmo di eliminazione outlier tra il Ransac 7,Ransac 8 ola distanza dalle rette epipolari. RGBmode: per attivare la ricerca sui tre canali rgb separatamente oltre a quella in scala di grigi. Display corner: permette durante la ricerca delle corrispondenze di vedere effettivamente quali corner il programma prende in considerazione. Rectified images: si spunta nel caso le immagini siano rettificate e di conseguenza implica una modifica dei parametri estrinseci e di distorsione. Auto calibration: nel caso si voglia utilizzare la calibrazione automatica con il pattern a pallini. Una volta impostati tutti i parametri cliccando su “Start Recostruction” e identificate le immagini da analizzare il programma inizia la ricostruzione e restituisce oltre al numero di corrispondenze trovate e al tempo impiegato varie figure raffiguranti la nuvola di punti, la mesh applicata su di essa, un 3D realistico con applicata la texture dell’oggetto e altri grafici per monitorare il progresso dell’analisi. Pag. 144 Software Figura 16.2 Schermata secondaria del programma con i parametri di analisi. Pag. 145 Capitolo 17 17. Note di sviluppo sul software Il programma sviluppato si trova all’interno della cartella RECON3D sul DVD. Le sottocartelle sono: i. Calibration: contiene i toolbox di calibrazione. In particolare nella cartella CALIBRAZIONE FINEPIX3D sono contenute le immagini originarie scattate con la scacchiera di calibrazione (ORIGINAL). Dato che la stima del centro ottico non è robusta si sono analizzate le scacchiere lasciando libero il centro ottico cc e imponendolo al centro dell’immagine. Le cartelle GIUSTI e CORRETTI corrispondono a queste due situazioni. In particolare imponendo il cc=0 i risultati sono notevolmente migliorati. Nelle sottocartelle L e R sono divise le immagini per l’obiettivo di destra (R) e quello di sinistra (L) e sono anche salvati i file di calibrazione rispettivi Calib_Result dei parametri intrinseci. Questi sono quindi stati copiati (modificando i nomi) nella cartella STEREO e quindi analizzati per ricavare i parametri estrinseci della macchina fotografica nel file Calib_Result_Stereo. Nella cartella RECTIFIED è presente il file con i parametri estrinseci ed intrinseci relativi alla calibrazione nel caso si siano rettificate e immagini. ii. Function: contiene le funzioni implementate per il programma di ricostruzione stereo. In fondo al capitolo è riportato uno schema di funzionamento. iii. Pattern: al suo interno vi sono tutti i file relativi ai pattern di proiezione utilizzati e ai pattern di calibrazione (scacchiera e pallini). In particolare si ricorda di stampare i pattern di calibrazione mantenedo le dimensioni originali e non riadattandoli ai fogli di stampa, altrimenti è necessario reimpostare le dimensioni reali nel programma. iv. stphmkre421all: contiene il programma necessario a scomporre i file MPO prodotti dalla macchina fotografica in immagine di sinistra e destra. E’ sufficiente trascinare i file MPO nella schermata del programma e poi salvare come Save Left/Right Images. Capitolo 17 v. Varie: cartella che comprende molte funzioni scaricate e richiamate dal programma di ricostruzione. In particolare si ricordano: - vi. vii. Allfns: contiene alcune funzioni molto utili per graficare e verificare i parametri della fotocamera e le rototraslazioni. AutoPatternCalib: programma di stima automatica delle rototraslazioni utilizzando il pattern a pallini. -ICP-finite: per riallineare nuvole di punti distinte. Susan_c_program: susan corner detection (non funziona su matlab 64bit). Trismooth: levigatura di mesh. Recon3D_gui: file di avvio dell’interfaccia grafica del programma. Calib_Results_left e _stereo: parametri della fotocamera. Il programma si avvia avviando il file recon3d_gui. Questo permette la visualizzazione dell’interfaccia grafica in Figura 16.1. Si ricorda che avviando il programma in questa maniera non sarà possibile interrompere l’analisi senza perdere tutti i dati fin a quel punto analizzati. Per questo si consiglia, almeno nelle prime fasi di debug, per avere un miglior controllo del processo di modificare le variabili all’interno del file Functions/recon3D. Il file recon3D è il main file del programma. La prima parte DATA è riservata alle variabili di analisi. Il COMPLETE DATA è riservato al completamento dei dati con i parametri di calibrazione a seconda che le immagini siano rettificate o no e che si stia utilizzando una autocalibrazione nel caso della ricostruzione con più viste. I dati di inizializzazione sono: i. thresh: valore di soglia di per il corner detection Harris. ii. threshF: valore di soglia (percentuale) per l’eliminazione degli outlier nell’analisi Ransac o nell’analisi della distanza dalle rette epipolari. iii. threshDist: valore di soglia (percentuale) per l’eliminazione dei punti isolati. iv. iterDist: numero di punti che compongono un gruppo isolato dalla nuvola di punti. v. nonmaxrad: raggio di soppressione dei non massimi per l’algorimto di Harris. vi. w: finestra di ricerca delle corrispondenze (dispari). vii. displ: variabile booleana per mostrare o no i punti identificati da Harris. viii. correl: tipo di correlazione da utilizzare: -1 correlazione normalizzata -2 correlazione utilizzando fase monogenica -3 sift ix. cornerDect: identifica quale tipo di corner detection utilizzare: Pag. 148 Note di sviluppo sul software x. xi. xii. xiii. xiv. xv. xvi. xvii. xviii. xix. -1 Harris -2 Susan prevDmax: tipo di pre-analisi -0 preAnalysis -1 rangeDisparity -2 inputDist rgbMode: variabile booleana che identifica se analizzare l’immagine solo in scala di grigi o anche nei tre colori fondamentali distinti. Ransac: identifica se usare l’algoritmo Ransac per eliminare gli outlier o la distanza dalle rette epipolari. rectified: variabile booleana che indica se si utilizzano immagini rettificare. autoCaliib: variabile booleana che indica se si utilizza l pattern a pallini per l’auto calibrazione delle viste. imNum: numero di coppie di immagini da analizzare. multiAuto: variabile booleana che indica se si utilizza l’autocalibrazione di più punti. imPos: variabile booleana che indica se si usa più di una vista. dimReal: dimensione reale del pattern a pallini misurata tra due dei segmenti tracciati sul pattern a sinistra. scaleFactor: nel caso si vogliano scalare le immagini. Il PROCESS si occupa dell’analisi vera e propria: i. ii. iii. iv. v. vi. vii. viii. ix. x. xi. xii. xiii. xiv. xv. imRead: lettura delle immagini. textureLessRegion: analisi delle zone uniformi. enchanceImg: miglioramento dei dettagli. imReduce: coordinate delle zona da analizzare nelle due immagini. showWindow: rappresenta la finestra di ricerca di dimensioni w sovrapposta all’immagine. preAnalysis e rangeDisparity: funzioni che ricavano dalle immagini in automatico l’oggetto più vicino e quello più lontano (non ottimizzate). inputDist: inserimento manuale del punto più vicino e più lontano. curveTriang: analisi del possibile errore di ricostruzione in funzione della distanza dell’oggetto dall’obiettivo. redDist: stabilisce il range di ricerca (disparità) tra i punti delle immagini. imCorrelationMOD: ricerca delle corrispondenze. refineInliers: raffinamento delle corrispondenze. equalizeRGB: tentativo di equalizzazione dei colori (non implementato). imReduceRGB: come imReduce ma su un piano di colore. dispPutative: mostra le corrispondenze sull’immagine di sinistra. findOutliers: scarta le corrispondenze errate basandosi sulla distanza dalle rette epipolari. Pag. 149 Capitolo 17 xvi. xvii. xviii. xix. xx. xxi. findFund: ricava la matrice fondamentale dalle corrispondenze utilizzando l’algoritmo Ransac e elimina le corrispondenze errate basandosi sulla matrice fondamentale trovata. triangulation: triangola le corrispondenze e mostra la prima ricostruzione 3D. multiCalibOR: ricava i parametri di rototraslazione da più viste utilizzando la scacchiera. multiRecon3D: ricostruisce il 3D dell’oggetto da più viste. posRecon3D: ricostruisce il 3D dell’oggetto da più scatti dalla stessa vista magari spostando il pattern proiettato sull’oggetto. multiRecon3Dauto: ricostruisce il 3D dell’oggetto utilizzando più viste e il pattern a pallini per l’auto calibrazione. Il POST PROCESSING si occupa dell’elaborare i risultati per ottenere dei migliori risultati: i. outliersZ: eliminazione manuale degli outlier. ii. distOutliers: eliminazione degli outlier basata sulla vicinanza tra i punti. iii. savePoints: salva la nuvola di punti 3D come file .txt che presenta un elenco dei punti nelle loro coordinate xyz e come file .obj leggibile da quasi tutti i software fem. iv. pointsCloud: mostra la nuvola 3D definitiva. v. disparity: mostra la mappa di disparità anche nel sistema di riferimento dell’immagine. vi. warping: restituisce l’immagine di sinistra deformata pronta ad essere applicata alla nuvola 3D. vii. surfaceWarp: applica l’immagine di sinistra deformata alla nuvola di punti e la mostra. viii. pointsCloudColor: mostra la nuvola dei punti tridimensionale colorando ciascun punto con il colore corrispondente ricavato dall’immagine iniziale. ix. Delaunay e TriRep: funzioni necessarie alla creazione della mesh a prtire dalla nuvola di punti. Pag. 150 Capitolo 18 18. Conclusioni e sviluppi futuri Visti i risultati ottenuti si può affermare che questo programma sia una valida soluzione per la ricostruzione tridimensionale di oggetti. Senza dubbio uno dei vantaggi maggiori è la portabilità dell’apparato di acquisizione. Infatti questo consta esclusivamente della macchina fotografica stereoscopica ed eventualmente anche del proiettore portatile o di qualunque altro sistema che permetta di ridurre l’omogeneità nel colore di un oggetto (per esempio una bomboletta spray, o, come visto nel paragrafo 11.2 Proiezione e stampo, uno quantitativo di terra). Inoltre risulta di notevole importanza il fatto che il proiettore possa essere orientato indipendentemente dalla macchina fotografica e che il setup di quest’ultima sia nullo, dato che la calibrazione viene fatta una volta soltanto e risulta valida per qualsiasi oggetto fotografato. Un altro fattore a favore di questo metodo è il fatto che le due fotografie vengono scattate in contemporanea e quindi non è necessario che l’oggetto sia fermo. I tempi di calcolo si aggirano intorno all’ora. Restando comunque ragionevoli ma senza dubbio potranno essere ridotti riscrivendo alcune funzioni che richiedono di ciclare per molte volte in altri linguaggi di programmazione, come ad esempio il C. Si è visto anche che con i metodi di miglioramento utilizzati il programma genera ricostruzioni tridimensionali praticamente prive di outlier. Inoltre l’accuratezza di ricostruzione si è mostrata molto elevata garantendo un’incertezza di meno di un millimetro per un oggetto posto a 650mm dalla macchina fotografica (riferito alla ricostruzione della parete) o di addirittura una deviazione standard di meno di 0.15mm nel caso dell’analisi del metro posto a 260mm dagli obiettivi. La scelta di utilizzare un algoritmo basato sul rilevamento dei corner ha limitato la ricostruzione a fotografie ricche di particolari o altrimenti ha obbligato all’utilizzo di metodi alternativi per aumentare artificialmente questa caratteristica (proiettore,…) ma al tempo stesso ha permesso l’analisi di immagini di grande dimensioni senza richiedere un apparato hardware oltre ai normali computer oggi in commercio. Nella fase di confronto dei risultati si è visto come: Capitolo 18 i. Rispetto all’analisi di immagini rettificate, RECON3D riporta risultati leggermente migliori e al tempo stesso evita la fase di rettifica e il tempo che sarebbe necessario a completarla. ii. Rispetto agli algoritmi denso classici i risultati sono notevolmente migliori e i tempi di calcolo anche di un ordine di grandezza minore. iii. Rispetto al migliore degli algoritmi moderni di ricostruzione (ADCensus) i risultati sono di qualità leggermente inferiore, soprattutto sui bordi degli oggetti) ma si è visto che questo è dovuto a vari fattori quali: - bassa risoluzione delle immagini di confronto che ha ridotto il numero di corner rilevati e conseguentemente la densità della nuvola di ricostruzione. - probabile post elaborazione dei risultati degli algoritmi moderni o utilizzo di più coppie di immagini per lo stesso oggetto, per cui risultano ricostruite da questi zone che nelle due fotografie analizzate risultano occluse. Al tempo stesso però il RECON3D è capace di ricostruire gli oggetti prospetticamente mentre l’ADCensus non tiene conto del fatto che gli obiettivi siano pinhole. iv. Rispetto al software commerciale l’accuratezza dei dettagli è comparabile ma PhotoModeler Scanner richiede la rettifica delle immagini, un setup particolare prima dello scatto con il posizionamento di particolari pattern nella scena in posizioni predefinite che rendono il suo uso macchinoso. Infine RECON3D grazie alla sua modulabilità permette di ricostruire gli oggetti non solo frontalmente ma anche scattando ulteriori fotografie intorno all’oggetto. L’unico requisito per avere una ricostruzione completa è quello di posizionare nella scena un pattern a pallini, anche parzialmente coperto, per consentire al programma di ricavare in modo automatico le posizioni della macchina fotografica al momento degli scatti. Infine è stato dimostrato che le ricostruzione sono accurate sia da un punto di vista geometrico che dimensionale permettendo l’utilizzo di RECON3D anche in ambito ingegneristico. Un’idea che è stata in parte sviluppata ma non è qui riportata data la sua non compiutezza è stata quella di combinare l’accuratezza di ricostruzione dei dettagli della fotometria con la precisione dimensionale di questo programma in modo da adagiare le superfici ricche di particolari (della fotometria) sui punti chiave a distanza corretta ricavati con RECON3D. Questo potrebbe essere uno degli sviluppi futuri di questa tecnica che senza dubbio può facilitare l’ingegneria in vari ambiti; ad esempio nel CAD la modifica di componenti esistenti potrebbe essere realizzata senza doverli misurare e ridisegnare ma semplicemente fotografandoli e importando all’interno del Pag. 152 Note di sviluppo sul software software di progettazione la ricostruzione virtuale ottenuta. Anche l’analisi di vibrazioni o di carico di parti meccaniche per mezzo di un software FEM potrebbe avvenire semplicemente caricando la mesh che RECON3D fornisce. Un passo verso queste possibilità è già stato fatto integrando nelle modalità di salvataggio della nuvola di punti tridimensionale il formato .obj ovvero uno dei formati più utilizzati di interscambio dati tra i software di grafica 3D. Pag. 153 Bibliografia [1] S. Mattoccia, Stereo Vision: Algorithms and Applications, DEIS - Università di Bologna, 2009 [2] E. Trucco e A. Verri, Introductory Techniques for 3-D Computer Vision, Prentice Hall, 1998 [3] C. J. Taylor, Surface reconstruction from feature based stereo, Computer Vision, Proceedings, Ninth IEEE International Conference on, pagg.184-190, vol. 1, 2003 [4] D. Scharstein and R. Szeliski. A taxonomy and evaluation of dense two-frame stereo correspondence algorithms, IJCV, pagg. 7–42, 2002. [5] O. Veksler, Fast variable window for stereo correspondence using integral images, Proc. Conf. on Computer Vision and Pattern Recognition, CVPR 2003 [6] Y. Boykov, O. Veksler e R. Zabih, A variable window approach to early vision, IEEE Trans. PAMI 20(12), pagg. 1283–1294, 1998 [7] S. Chan, Y. Wong e J. Daniel, Dense stereo correspondence based on recursive adaptive size multi-windowing, Proc. Image and Vision Computing New Zealand, vol. 1, pagg. 256– 260, IVCNZ, 2003 [8] Y. Xu, D. Wang, T. Feng e H. Shum, Stereo computation using radial adaptive windows, Proc. Int. Conf. on Pattern Recognition, vol. 3, pagg. 595–598, ICPR, 2002 [9] C. Demoulin e M. Van Droogenbroeck, A method based on multiple adaptive windows to improve the determination of disparity maps, Proc. IEEE Workshop on Circuit, Systems and Signal Processing, pagg. 615–618, 2005 [10] M. Gerrits e P. Bekaert, Local Stereo Matching with Segmentation-based Outlier Rejection, Proc. Canadian Conf. on Computer and Robot Vision, pagg. 66-66, CRV, 2006 [11] F. Tombari, S. Mattoccia e L. Di Stefano, Segmentation-based adaptive support for accurate stereo correspondence, PSIVT, 2007 [12] F. Tombari, S. Mattoccia, L. Di Stefano e E. Addimanda, Classification and evaluation of cost aggregation methods for stereo correspondence, IEEE International Conference on Computer Vision and Pattern Recognition, CVPR, 2008 Bbliografia [13] D. Scharstein e R. Szeliski, A taxonomy and evaluation of dense two-frame stereo correspondence algorithms, International Journal of Computer Vision, vol. 47(1/2/3), pagg. 7-42, 2002. [14] P. Favaro, e S. Soatto, S., A variational approach to scene reconstruction and image segmentation from motion-blur cues, Computer Vision and Pattern Recognition, IEEE Computer Society Conference on , pagg. 631-637, vol. 1, CVPR, 2004 [15] R. J. Woodham, Photometric method for determining surface orientation from multiple images, Optical Engineerings, pagg. 139-144, vol. 19, 1980 [16] B. K. P. Horn, Obtaining shape from shading information, B. K. P. Horn and M. J. Brooks, eds., Shape from Shading, pagg. 121–171, MIT Press, 1989 [17] W. Wu, Rectification of Stereoscopic Video for Planar Catadioptric Stereo Systems, Circuits and Systems for Video Technology, IEEE Transactions, pagg. 686-698, vol. 17, arg. 6, 2007 [18] C. Loop e Z. Zhang, Computing rectifying homographies for stereo vision, Computer Vision and Pattern Recognition, 1999 [19] S. Mattoccia, Introduzione alla Visione Stereo, Università di Bologna, 2009 [20] R. Hartley e A. Zisserman, Multiple View Geometry in computer vision, Cambridge University Press, 2000 [21] G. Xú e Z. Zhang, Epipolar geometry in stereo, motion, and object recognition: a unified approach, Kluwer Academic Publishers, 1996 [22] O. Faugeras e Q. T. Luong, The geometry of multiple Images, The Mit Press, Cambridge, 1993 [23] J. Y. Bouguet, Camera Calibration http://www.vision.caltech.edu/bouguetj/calib_doc/ Toolbox for Matlab, [24] Z. Zhang, Flexible Camera Calibration by Viewing a Plane from Unknown Orientations, Seventh International Conference on Computer Vision, vol. 1, ICCV, 1999 [25] R. Hartley e A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, pagg. 155–157, 2003 [26] P. Tissaimayagam e D.Suter, Assessing the performance of corner detectors for point feature tracking applications, Image and Vision Computing, pagg. 663-679, vol. 22, arg. 8, 2004 Pag. 156 Bibliografia [27] A. Masiero, Lezione sull'Harris corner detector, Dipartimento di Ingegneria dell’Informazione, Università di Padova, 2007 [28] Harris, C. e M. Stephens, A combined corner and edge detector, Fourth Alvey Vision Conference, pagg.147-151, 1988 [29] J. P. Costella, A superior edge detection gradient operator, Ashwood, 2010 [30] S. Smith e M. Brady, SUSAN-A New approach to low level image processing, Internal Journal of Computer Vision, pagg. 45-78, vol. 23, arg. 1, 1997 [31] D. Scharstein e R. Szeliski, High-accuracy stereo depth maps using structured light, IEEE Conference on Computer Vision and Pattern Recognition, vol. 1, pagg. 195-202, CVPR, 2003 [32] Li Zhang, Brian Curless e Steven M. Seitz, Spacetime Stereo: Shape Recovery for Dynamic Scenes, IEEE Computer Society Conference on Computer Vision and Pattern Recognition,pagg. 367-374, CVPR, 2003 [33] A. Ansar, A. Castano e L. Matthies, Enhanced real-time stereo using bilateral filtering, IEEE Conference on Computer Vision and Pattern Recognition, 2004 [34] R.I.Hartley e A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, 2000 [35] M. A. Fischler e R. C. Bolles, Random Sample Consensus: a Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography, Comm. of the ACM 24, pagg. 381–395, 1981 [36] D. Nistér, Preemptive RANSAC for live structure and motion estimation, Machine Vision and Applications, Springer Berlin / Heidelberg, pagg. 321-329, vol. 16, arg. 5, 2005 [37] D. Scharstein e R. http://vision.middlebury.edu/stereo/eval/ Szeliski, Middlebury Dataset, [38] Anonymous. (n.d.), Accurate and efficient stereo matching with AD-census measure, crossbased regions and multi-step refinement, CVPR, 2011 [39] K. S. Arun, T. S. Huang e S.D. Blostein, Last square fitting of two 3-D point sets, IEEE Trans. Patt. Anal. Machine Intell., pagg. 698-700, vol. 5, 1987 [40] D. Lowe, Object recognition from local scale-invariant features, International Conference on Computer Vision, pagg. 1150-1157, 1999 Pag. 157