Prima
della SfM
Dai
primi algoritmi di ricostruzione fotogrammetrica, alla SfM il passo è
stato notevole, specie in termini di riduzione della “fatica umana”
per la collimazione dei punti.
La
fotogrammetria aerea e quella terrestre erano basate sul concetto di
stereoscopia. Le foto prese da un aereo venivano considerate due a
due, ricostruendo, con dei punti noti sul terreno, il modello
stereoscopico, che veniva guardato con uno “stereorestitutore” da
un foto-interprete, che tramite un pantografo disegnava le curve di
livello, spostando una marca visiva sul modello ottico del terreno.
Successivamente,
si è passati da un modello stereoscopico ad un modello prospettico,
che permetteva di collimare anche immagini liberamente prese nello
spazio.
Dai
primi esperimenti prospettici, che sostanzialmente si limitavano a
ricostruire il “triangolo delle fughe” e forme scatolari, alla
“Multiple View Geometry” (R.Harley e A.Zisserman), si è andato
sempre perfezionando un nuovo metodo di rilevamento tridimensionale,
che ha portato alla SfM.
Se
avete voglia di (tentare di) capire quali sono le implicazioni
matematiche (nascoste) dietro gli algoritmi della geometria
multipolare, potete guardare il divertente (ed istruttivo) filmato
(musicale) di questa pagina:
Anche
interessante è questo documento, che descrive la storia (ed il
futuro :) della restituzione tridimensionale:
Implementazioni
della SfM
PhotoTour
PhotoTour
La
prima implementazione della tecnica SfM è stata sviluppata nel
laboratorio da Noah Snavely e altri (Steve Seitz, Kevin Chiu, Andy
Hou del “CSE Graphics and Imaging Lab (GRAIL)” dell'Università
di Washington; Richard Szeliski - Interactive Visual Media Group ,
Microsoft Research).
Il
progetto, finanziato da Microsoft, permetteva di posizionare
spazialmente le foto turistiche di monumenti scattate dagli utenti,
liberamente disponibili in rete.
http://research.microsoft.com/en-us/um/redmond/groups/ivm/PhotoTours/
Successivamente,
lo stesso Noah Snavely ha reso disponibile il codice sorgente di
“Bundler”, nel sito
“PhotoTour”:
Bundler
ricostruisce la posizione delle fotocamere e la geometria 3D, in
maniera incrementale, incrociando piccoli gruppi di immagini per
volta, usando una versione modificata del pacchetto “Sparse Bundle
Adjustment” (SBA) di Lourakis e Argyros,
http://www.ics.forth.gr/~lourakis/sba/
Bundler
è un porting in linguaggio C++ delle funzioni disponibili fino ad
allora soltanto in fortran o in matlab. L'utilizzo del C++
permetteva di far uscire la tecnica SfM dai laboratori e dallo
sperimentale, rendendola utilizzabile ed integrabile per un uso
professionale.
Un
esempio di applicazione di Bundler è stato il progetto “Building
Rome in a Day”, in cui si è dimostrato come, ottenendo da Flickr
le immagini legate al termine “Rome”, si riesce a ricostruire la
forma 3D dei monumenti.
Nel
sito http://grail.cs.washington.edu/projects/rome/
vengono mostrati esempi applicati della tecnica SfM tramite
Bundler:
Fontana
di Trevi:
Basilica
di San Pietro:
Roma
centro:
Troviamo
anche altri esempi, relativi a Venezia
Canal
Grande di Venezia:
Piazza
S.Marco di Venezia:
Il
risultato del processamento tramite Bundler è costituito da una
nuvola di punti 3D, con le posizioni dei punti di vista e con i
rispettivi assetti della fotocamera.
Python Photogrammetry Toolbox
Operativamente
parlando, Bundler è piuttosto ostico da utilizzare, essendo un
eseguibile da chiamare con alcuni parametri, poco mnemonici.
Fortunatamente,
vengono in aiuto alcune interfacce grafiche di supporto.
Una
di queste interfacce è “Python Photogrammetry Toolbox”, che usa
l'implementazione “osm-bundler” di Pierre Moulon.
Questo
toolbox, chiamato brevemente “PPT” è essenzialmente un pannello,
suddiviso in varie schede, ognuna relativa ad una fase di lavorazione
del gruppo di foto.
La
prima operazione è quella della selezione del percorso sul disco
(“path”) contenente le immagini fotografiche in formato JPG.
Ognuna
delle immagini ha al suo interno un gruppo di informazioni, dette
“Exif”, sul tipo di fotocamera, la focale, l'uso di flash, ecc.
“PPT”
utilizza queste informazioni, specialmente quella della focale usata
nello scatto, per effettuare i calcoli geometrici.
Una
informazione anche necessaria, ma purtroppo non presente nell'exif è
quella della grandezza del sensore digitale, detto CCD, della
macchina.
Per
questo “PPT” mantiene un archivio di parametri caratteristici
delle fotocamere che ha incontrato fino a quel momento.
Come
prima operazione, quindi, occorre controllare se la camera che si sta
utilizzando è “conosciuta” dal sistema. Per fare questo, si
utilizza la scheda “Check Camera Database”, indicando dove si
trovano le immagini.
Se
sconosciuta, sulla finestra del terminale comparirà la richiesta del
valore della larghezza in millimetri del sensore.
Questo
valore andrà ricercato in internet, consultando le varie banche dati
tecniche delle fotocamere.
Il
database di PPT è costituito da una tabella, dove ad ogni riga
corrisponde un determinato modello di macchina fotografica.
Il
valore di “ccd_width”, espresso in millimetri, viene utilizzato
dal sistema automatico di collimazione, insieme alla focale letta
dall'immagine, per calcolare la forma del fotogramma.
Se
il valore del ccd è noto, si può effettuare la prima fase della
collimazione, tramite “Run Bundler”.
Il
programma crea una directory temporanea, il cui path viene riportato
sul terminale, e andrà a scrivere una serie di file, che vedremo nella prossima parte di questo articolo.
BobMaX
Nessun commento:
Posta un commento