copertina2

A pochi giorni dal rilascio delle applicazioni Hyperlapse da parte di Microsoft, viene presentata un’altra ricerca in un ambito similare, anche stavolta in grado di farci strabuzzare gli occhi.

Il team ha mostrato di essere in grado di creare video in time-lapse usando come sorgente le foto disponibili pubblicamente su Internet. Sono state collezionate 86 milioni di fotografie (tutte con geotag, data di scatto e disponibili sotto licenza Creative Common) dai siti Picasa e Panoramio ed usate per ricercare soggetti comuni. Questi siti collezionano foto da molti anni, contengono quindi il materiale necessario per poter create time-lapse raffiguranti anche 10 anni in pochi secondi.

Creando time-lapse che presentano in pochi secondi l’evoluzione avvenuta in diversi anni è possibile avere un punto di vista completamente inedito di ciò che stiamo vedendo: non è cosa da tutti i giorni poter vedere rapidamente lo scioglimento di un ghiacciaio o il modo in cui una cascata trova nuove strade nel corso degli anni.

Prima di analizzare più nel dettaglio il funzionamento di questo sistema è bene vedere il video, rilasciato dal team di sviluppo, con una grande collezione di time-lapse realizzati con questa tecnica.

Questo magnifico risultato è stato ottenuto in tre principali macro fasi:

  1. Raggruppare le foto degli stessi soggetti
  2. Stabilizzare la geometria
  3. Stabilizzare visivamente il filmato finale

Nonostante la descrizione possa far sembrare il tutto “fin troppo semplice”, ognuna di queste fasi nasconde molte difficoltà. Senza addentrarci in complesse formule e calcoli, diamo una descrizione di come lavorano effettivamente, ricordandoci che il risultato è un programma in grado di eseguire autonomamente queste operazioni – senza intervento umano. Ci teniamo a sottolineare che questo è il frutto del lavoro di sole tre persone (divise fra Google e l’università di Washington), ma che per raggiungere lo scopo si sono affidati ai risultati di molte altre ricerche, senza le quali questo risultato non sarebbe mai stato possibile; in particolare si sono basati su 5 ricerche esterne, anche se le citazioni esterne sono 31.

Raggruppare le foto degli stessi soggetti

Nel mondo esistono soggetti che attirano l’attenzione o si prestano particolarmente per le foto. Anche se ogni persona gli scatterà una foto da una posizione apparentemente casuale, avendo una base di dati composta da moltissime foto è possibile trovarne alcune scattate con un’angolazione simile. Un primo raggruppamento è stato fatto tramite il geotag (o geo locazione) registrato nelle foto, per poi essere analizzate e posizionate in uno spazio tridimensionale in grado di ricreare il modello 3D dell’ambiente.

Fra quelle foto vengono trovate le viste più popolari, cercando dettagli comuni (definiti nel gergo Feature) e creando quindi dei gruppi per ogni vista.

Ogni gruppo rappresenta un potenziale soggetto per il time-lapse, quindi si cerca l’area con più Feature in comune fra le foto che lo compongono. Per ogni modello 3D vengono prese come viste le 20 aree con più Feature in comune, che saranno quindi candidate ad un possibile time-lapse.

Si cerca poi di allargare il numero di foto che ritraggono un’area, andando ad inglobare nel gruppo anche le foto scattate con un’angolazione leggermente diversa. Tale angolazione è uno dei parametri da impostare, con un valore alto si avranno tante foto con angolazioni molto diverse, al contrario con un angolo stretto avremo poche foto anche se sicuramente ottime per il nostro scopo. Per ottenere i risultati proposti nel video è stato utilizzato il valore di 10 gradi.

Vengono infine rimossi tutti i gruppi che sono composti da meno di 300 foto, in quanto il filmato finale non verrebbe sufficientemente fluido o lungo.

L’immagine qui sotto mostra l’esempio del ghiacciaio di Briksdalsbreen, dove ad ogni puntino corrisponde il punto dal quale è stata scattata la foto. I 9411 punti verdi rappresentano le foto usate, la stella blu la foto di riferimento, i rossi sono composti di sole foto scartate.

articolo1

Stabilizzare la geometria

Se i soggetti delle foto fossero stati dei semplici piani sarebbe stato facile aggiustare tutte le foto in modo da avere una sola inquadratura comune a tutti, chi è pratico di Photoshop sa che potrebbe fare l’operazione in appena qualche secondo. Avendo però soggetti molto variegati e foto scattate da posizioni anche molto diverse fra loro, si creano errori di parallasse: anche forzando, stirando e aggiustando le foto si avrebbe un effetto innaturale nel risultato finale. Se ad esempio scattiamo due foto ad un soggetto con stessa angolazione ma con distanza diversa, anche ritagliando le immagini otterremo foto con prospettive diverse, difficilmente usabili per creare un’animazione fluida.

Per evitare questo problema si calcola la Mappa di profondità dell’immagine usata come riferimento. Tale mappa consiste nello stimare per ogni punto della foto di riferimento quanto sia effettivamente lontano. Visto che la mappa è calcolata partendo da foto che sono scattate in momenti diversi, non vengono considerati quegli oggetti che non compaiono nelle altre foto, come eventuali persone o altri soggetti non sempre presenti.

Normalmente questo genere di operazione viene fatta tramite metodi definiti stereo, che confrontano l’immagine in analisi con quella di riferimento, ma in questo caso non può funzionare, visto che il soggetto nella foto di riferimento cambia nel tempo, rendendo incoerente il confronto. Vengono quindi confrontate le immagini temporalmente vicine, riuscendo quindi a generare una mappa di profondità piuttosto accurata comune a tutte le foto. L’immagine mostra due esempi del risultato ottenuto, facendo saltare all’occhio il fatto che, nella mappa di profondità per la foto dei palazzi, sia stato correttamente escluso il palazzo che viene costruito durante il time-lapse.

articolo2

Si può considerare la mappa appena creata come un modello tridimensionale dove “applicare” le foto che, anche se scattate da punti ed angolazioni diverse, non mostreranno più errori di parallasse.

L’immagine sottostante mostra a sinistra il risultato ottenuto facendo la media delle immagini, al centro la media delle immagini semplicemente aggiustate, a destra la media delle immagini riadattate con la mappa di profondità

articolo3

Stabilizzazione visiva del filmato finale

Se creassimo il video adesso avremmo la giusta inquadratura, ma ogni fotogramma si presenterebbe con una temperatura di colore differente. Questo perché le foto sono scattate in momenti della giornata diversi, con macchine fotografiche diverse, impostazioni diverse e condizioni meteo di ogni genere. Questa ultima fase si occupa di trovare una tonalità di colore univoca fra tutte le foto e di creare una transazione fluida fra una foto e la successiva.

Per raggiungere quest’obiettivo, il primo approccio è stato quello di far visualizzare ogni foto per un tempo piuttosto lungo, che andando a dissolversi con molte foto successive fa scomparire l’effetto di flickering dovuto all’alternarsi di foto con colori differenti. Purtroppo però il risultato contiene sfocature troppo evidenti con conseguente perdita di dettaglio dell’immagine.

È stato quindi usato un approccio di regolarizzazione temporale, dove per ogni pixel si cerca di trovare il colore che avrà nel tempo, andando a regolarizzare i colori che assume nella sequenza. L’operazione è squisitamente matematica e si compie utilizzando una funzione che determina la quantità di perdita di informazione ed un’altra che determina quanto il pixel vada sfocato nel tempo.

Sono state provate varie implementazioni di queste due funzioni, trovando la soluzione ideale nell’alternare più di un’implementazione per funzione a seconda se deve raffigurare qualcosa che cambi nel tempo o meno.

Riepilogando

Grazie a questo nuovo metodo è stato possibile creare incredibili time-lapse in grado di mostrare l’evoluzione del paesaggio nel corso degli anni, per farlo è stato necessario:

  • Acquisire 86 milioni di immagini
  • Trovare 120 mila differenti aree geografiche
  • Calcolare 755 mila ricostruzioni 3D
  • Trovare 10728 time-lapse distribuiti in 2942 aree, tutti composti di almeno 300 foto e con un margine di rotazione delle foto di origine di 10 gradi

Siete programmatori ed interessati a riprodurre questo esperimento in casa vostra? Perfetto! Gli sviluppatori di questo metodo hanno scritto che rilasceranno a breve codice ed ulteriori risultati. Ora non resta che procurarsi 86 milioni di foto geotaggate ed un’enorme potenza computazionale per fare il lavoro sporco.

Articolo di Windows Blog Italia
Fonte | Washington University