2010-12-19

Ricostruire L'Aquila

Tra le città italiane di Building Maker, Google ha recentemente inserito L'Aquila.
Come si vede nell'immagine che segue, l'area coperta dalle immagini aeree è quella del centro della città colpita dal disastroso terremoto del 6 aprile del 2009 e purtroppo ancora drammaticamente disabitata.


I punti blu che vediamo sull'immagine sono quelli dei modelli 3D già realizzati dagli utenti di Building Maker e di SketchUp.


Si tratterà di un'opera certosina, che ricorda quella degli amanuensi, e che porterà alla realizzazione di un modello virtuale della città, che speriamo possa servire a creare un circolo virtuoso per quanto riguarda la vera città dell'Aquila, perché possa tornare realmente a volare.


Rimbocchiamoci le maniche, e contribuiamo a ricostruire anche se solo virtualmente la città, perché sia visibile in tutto il mondo lo splendore ed il dramma delle cose che abbiamo perduto ... per adesso.




BobMaX


Link interessanti :

L'Aquila 3D: http://www.comefacciamo.com/index.php
http://barnabygunning.com/comefacciamo/aq3d/index.php

Video :

2010-10-02

Building Maker: Poligono generico

Una delle funzioni piu' interessanti di Building Maker e' quella che permette di disegnare forme di estrusione da un poligono di base di forma qualsiasi, a partire da un triangolo, a cui e' possibile aggiungere vertici in qualunque (o quasi) momento.
In Canoma questo veniva chiamato TSW o TranslationSweep, che poteva essere verticale o orizzontale.
In Building Maker ritroviamo, migliorato, questo elemento, che prende il nome di "Freeform block".
Possiamo ammirare le sue possibilita' nella modellazione fotogrammetrica urbana nel seguente filmato, che riguarda un edificio posto nell'isola di Murano, a Venezia:


2010-09-04

"And then, it came Building Maker"

La storia, più o meno, si svolse così.

Un gruppo di programmatori olandesi ( i migliori ) , laureati in "Computer Science" all'università di Tecnologia di Delft, ( in realtà si trattava solo di un paio ) , giunsero negli Stati Uniti, dopo aver fondato una società in Olanda.
Portarono in USA un'idea, che continuarono a coltivare anche dopo aver lavorato per le più importanti aziende di software della California.
Il loro sogno di costruire programmi innovativi continuò all'interno di una azienda veramente fuori dal coro, che costruiva interfacce grafiche mai viste prima, e che si chiamava "MetaCreations". Frutto di questa società, fondata da un mitico e mistico artista del software, erano programmi come Poser, per la creazione di personaggi umani, come Bryce, per la simulazione territoriale, come Photo Soap ( ! ) per l'editing di immagini fotografiche, che simulava la camera oscura del fotografo e che era inscatolato come in un pacchetto di detersivo. Nulla, di queste interfacce, ricordava il Macintosh, o quella sua copia che era allora Windows. Non c'erano finestre, funzioni di copia e incolla, non c'erano menu a tendina, non c'era la funzione salva. Tutto, in queste meravigliose interfacce utente ricordava, invece, uno strumento reale, intuitivo e immediato, con una grafica 3D che sembrava uscire dallo schermo.
Tra questi programmi, ultimo ma non per importanza, c'era Canoma.
Era qui che i nostri ( o meglio il nostro ) Olandese volante aveva messo l'impegno e l'anima.
Si trattava di un programma che faceva l'impossibile. Rendeva tridimensionale l'immagine piatta di un quadro. Faceva sì che si potesse entrare all'interno di un affresco e girare tra i personaggi di una battaglia, o vedere cosa c'era dietro una porta che lasciava intuire un'altra stanza.
Questa meraviglia tecnologica era stata tentata varie volte. Pochi anni prima, in Italia, era stata "restituita" alla tridimensionalità reale un famoso affresco di Leonardo, e si era potuto capire come era fatta la stanza in cui era avvenuta l'ultima cena, almeno nell'immaginazione dell'artista. Questo pero' era avvenuto con costoso software, con costose macchine, con maestosi tempi di elaborazione, con lunghe preparazioni dei tecnici.
Non tutto questo con Canoma.
I tempi di elaborazione erano diventati pochi secondi; la preparazione avveniva in tempo reale. I punti di collimazione venivano presi "gettando" nell'immagine degli oggetti di riferimento, che si deformavano prospetticamente, andando a collocarsi sui punti che l'operatore andava via via a fissare.
L'oggetto, insomma, andava ad assumere progressivamente la forma reale da quel punto di vista, cambiando altezza, profondità e lunghezza, finché non diventava alta, profonda e lunga come l'oggetto reale che veniva rappresentato nel quadro.
Per anni, Canoma è stato usato per restituire alla realtà attuale la forma dei paesaggi, della vita e dei personaggi del passato. Il Canaletto e molti prospettivisti del passato hanno potuto raccontare dove vivevano e cosa vedevano al di fuori dei loro quadri, grazie a Canoma.

Abbiamo visto come era Canoma, come era la sua interfaccia utente: un quadro nero, in cui viene rappresentata limmagine;
una "palette" in basso con una serie di oggetti possibili, come il cubo, il cilindro, la scala, il portale ad arco, il tavolo, e poi un oggetto generico a triangolo, verticale o orizzontale, che permette di deformarsi per assumere qualunque forma per estrusione. Quest'ultimo oggetto veniva chiamato TSW, ovvero TraslationSweep.
E con il TranslationSweep, o Solido di Estrusione, si poteva creare qualunque cosa creata dall'uomo.
Edifici, muretti, sculture, fontane, quasi tutto poteva essere ricostruito con il TranslationSweep.
Cominciarono ad apparire così le prime animazioni di ambienti urbani "texturizzate" tramite Canoma.
Infatti, un'altra strabiliante possibilità realizzabile con una semplicità disarmante, era l'animazione del punto di vista all'interno dell'ambiente ricostruito.
Si poteva camminare accanto alla ragazza che suonava il pianoforte, oppure passare tra i tavoli di un bistrot parigino, oppure navigare tra le navi antiche di una città del passato, restituita dalla sua mappa ingiallita dal tempo.

Questa meraviglia tecnologica e di fantasia che era Canoma visse qualche anno, dal 1996 al 2001, all'incirca.
Poi, venne acquistato da Adobe, che " ci lavoro' " su per qualche anno, tirando fuori un prodotto, chiamato Athmosphere, in cui compariva qua e là un'icona, qua e là una funzione, qualcosa di Canoma.

Poi il nulla. Per anni.

Finché un giorno di novembre del 2009 la fantastica notizia che aspettavamo da anni, e che sapevamo sarebbe stata annunciata.

Abbiamo di nuovo Canoma. Ora si chiama "Building Maker", e' di Google e, come tutte le cose di Google, è gratuita e si può usare via web.

Ma c'è, se possibile, oggi qualcosa di ancora più straordinario: BuildingMaker e' adesso integrato in un altro meraviglioso programma, che ci ricorda l'incredibile semplicità d'uso delle interfacce MetaCreation, che è SketchUp, nella sua nuova versione, la 8, appena rilasciata.

Buon lavoro a tutti con SketchUp 8 e con BuildingMaker.

Buona modellazione di città, antiche e nuove.


Forse la storia non è andata così nei particolari che ho raccontato. Ma ci piace immaginarla così.


BobMaX


Link:

Building-maker

SketchUp 8 - Building Maker

2010-08-21

Algoritmi di Restituzione Prospettica


"Algoritmi di Restituzione Prospettica"
BobMaX - Luglio 2004

KEYWORDS: CAD-based Photogrammetry, Camera Matching

ABSTRACT
Il presente documento descrive l’evoluzione dei sistemi fotogrammetrici, da semplici produttori di cartografia vettoriale a modellatori tridimensionali e l’evoluzione degli algoritmi di calcolo prospettico per la restituzione metrica da singola foto.

1 INTRODUZIONE
L'idea di usare la fotografia a scopo di rilievo viene storicamente attribuita al francese Laussedat, nel 1850. Soltanto nei primi anni del 1900, tuttavia, vi sono state le prime applicazioni pratiche in cartografia, con l'avvento della fotogrammetria aerea. Dal 1946, dopo la fine della seconda guerra e dei segreti militari, sono iniziati i primi corsi universitari all' Istituto di Fotogrammetria e Remote Sensing in Finlandia. Il passaggio dai metodi ottico-meccanici di restituzione a quelli digitali sono avvenuti dopo il 1980. Da questa data, la fotogrammetria ha seguito l'evoluzione dei sistemi grafici computerizzati.
Negli ultimi anni i programmi CAD sono evoluti da semplice tool per il disegno 2d a sistemi complessi per la gestione della qualità del progetto. Le funzioni necessarie al disegno di organismi architettonici possono essere usate ora all'interno di programmi di restituzione fotogrammetrica, chiudendo un cerchio intorno alle necessità di modellizzazione dell'esistente.



Fig. 1 Classica Restituzione Fotogrammetrica Aerea










Fig. 2 Moderna Restituzione Tridimensionale Urbana














Fig. 3 Rilevamento Tridimensionale Laser









Ad oggi, le moderne tecniche di misurazione Laser, da terra o da piattaforma aerea, vengono integrate alla più tradizionale fotogrammetria monoscopica, riuscendo ad ottenere una "fotografia solida" di complessi organismi urbani.



Fig. 4 Restituzione Urbana tramite "Canoma"












2 La Fotogrammetria "CAD-based"

Prima di descrivere le tendenze della Fotogrammetria "CAD-based", è utile definire questi termini.


2.1 Definizioni

La sigla CAD sta per Computer Aided Design, ovvero Disegno Assistito da Computer. Il CAD è divenuto sinonimo di programma di gestione, manipolazione e visualizzazione di dati tridimensionali.
Dall'altro lato, tradizionalmente, la fotogrammetria si concentra sulla misurazione accurata di coordinate 3d, a partire da coppie di foto, terrestri o aeree, di organismi architettonici, o territoriali.
Generalmente, la fotogrammetria si è limitata alla restituzione, a partire da zero, dei contorni delle gronde degli edifici, o in genere alla proiezione in pianta dei manufatti architettonici, ad un livello di dettaglio cartografico.
Una caratteristica dei programmi di fotogrammetria tradizionali è quasi sempre stata la partenza dal nulla, cioè il ridisegno della geometria senza l'uso di cartografia esistente, quasi a sottolineare una forte scientificità di metodo.
Le funzioni grafiche presenti in un software di disegno fotogrammetrico, in genere si sono limitate fino a poco tempo fa al disegno di primitive grafiche bidimensionali su piani paralleli all'orizzontale.


Fig. 5 Cartografia vettoriale












3 Evoluzione della Fotogrammetria

Con l'avvento della fotogrammetria del vicino o "close-range" si sono applicate le tecniche di ripresa stereoscopica a facciate di edifici o interni, ottenendo, tuttavia, sempre rappresentazioni vettoriali degli spigoli significativi degli organismi ripresi.
Dal punto di vista matematico, la fotogrammetria stereoscopica usa sistemi di equazioni lineari per risolvere l'orientamento reciproco dei fotogrammi, note le coordinate di coppie di punti sulle prese fotografiche. Una volta orientati i fotogrammi e costruito il cosiddetto "modello stereoscopico", il programma si limita a restituire coordinate tridimensionali di punti collimati sulle due immagini tramite l'intersezione dei raggi visivi partenti dai due centri di presa [1].
Questo sistema di rilevamento, sebbene caratterizzato da notevole rigorosità, è tuttavia contraddistinto dagli elevati costi di gestione, legati alla necessità di effettuare riprese doppie, e da notevoli difficoltà di ripresa.
Inoltre, l'obbligo di riprese stereoscopiche ne limita l'uso al presente, e alla non utilizzabilità del patrimonio storico di immagini di repertorio, o illustrazioni e dipinti, per la ricostruzione di modelli di beni architettonici perduti, o perduti in parte.


3.1 Il Software "Facade"

Dal 1996 in poi si è assistito ad una evoluzione della fotogrammetria, a partire dalle esperienze di Paul Debevec, dell'Università di Berkeley, in California. La sua tesi in dottorato "Modeling and Rendering Architecture from Photographs" [2], è divenuto il testo di riferimento nella nuova tendenza della fotogrammetria. Il suo software "Facade" permette di calcolare i parametri prospettici da geometrie note e di restituire il modello tridimensionale con resa fotografica dell'esistente.





Campanile.tiff
Fig. 6 Dal video "Campanile Movie" di Paul Debevec

Il risultato del procedimento di Debevec è un modello 3D "vestito" con i materiali desunti dalle foto.
Pur rimanendo un software sperimentale, nato all'interno di una ricerca universitaria , "Facade" è riuscito ad imporre una metodologia operativa e una tipologia di dati innovativa nel campo della fotogrammetria.


3.2 Costruzione della topologia del modello

Il punto di forza di "Facade" sta nel fatto che il modello che si va costruendo non è soltanto lineare, cioè costituito dalle linee rappresentanti i bordi dell'edificio, ma è determinato da oggetti base, quali parallelepipedo, piramide, tronco di piramide e altro, che possono essere legati da vincoli topologici, come adiacenza, sovrapposizione, centratura.
Questa "filosofia" di base rende molto più intuitivo la costruzione del modello, partendo da immagini prospettiche.



FacadeBuild01.tiff
Fig. 7 Collimazione del modello 3D sulle foto


FacadeBuild1.tiff
Fig. 8 Proiezione delle texture sul modello

In "Facade" i singoli componenti che compongono l'edificio si muovono insieme, solidali l'uno all'altro, quando si deve compiere l'operazione di associare i punti oggetto con quelli dell'immagine.
Parametri come l'altezza reale di un componente dell'oggetto verranno calcolati successivamente dal programma, risolvendo l'insieme dei vincoli.




FacadeScreenShotLow.tiff
Fig. 9 Schermata principale del Software "Facade" di Debevec


3.3 Il Software "Canoma"

Sulla stessa linea metodologica tracciata da "Facade", una serie di programmi sono stati sviluppati.
Il primo software commerciale a basso costo basato sulla fotogrammetria CAD-based è "Canoma", del 1998, creato da Robert Seidl e Tilman Reinhardt [3].
"Canoma" è caratterizzato da una notevole intuitività, per quanto riguarda l'interfaccia grafica, e da una forte interattività.
L'utente ha a disposizione una palette di primitive grafiche tridimensionali che possono essere posizionate sulla foto, e quindi ruotate e deformate come dimensioni base, fino a corrispondere visivamente all'immagine. Una volta "fissato" l'oggetto, il programma calcola i parametri prospettici, tramite un innovativo algoritmo che verrà descritto più avanti.

CanomaModel.tif
Fig. 10 Il Software "Canoma" di Robert Seidl e Tilman Reinhardt

Inserendo altre primitive grafiche, l'utente può definire il tipo di legame esistente con l'oggetto precedente, oppure un altro da lui scelto. Possono essere quindi sovrapposti, affiancati ed incollati i componenti visibili di un edificio.
Il catalogo degli oggetti grafici include il parallelepipedo, il piano orizzontale, quello verticale, il solido di estrusione, verticale o orizzontale, l'oggetto scalinata, l'arco, il cilindro ed addirittura il tavolo.
Una volta composto l'insieme di oggetti, inserendo i puti di collimazione, può essere richiamata la procedura finale che effettuata l'elaborazione del modello.
Oltre al calcolo del punto di vista e della dimensione degli oggetti, "Canoma" estrae dall'immagine fotografica, per ogni faccia dell'oggetto, la porzione corrispondente, e ne effettua il raddrizzamento ortogonale, creando i materiali che verranno visualizzati sul modello 3D finale.
Una volta ottenuto il modello, può essere inserita una seconda immagine, presa da un altro punto di vista, per ripetere il procedimento di collimazione, ed ottenere la copertura dell'oggetto con altri materiali, invisibili dalla prima foto. Per ottenere questo, l'operatore, semplicemente, deve ruotare l'oggetto fino a farlo corrispondere sommariamente a come appare dal nuovo punto di vista. Dopo questa operazione, deve inserire nuovi punti di collimazione. Per una registrazione più precisa, è possibile ingrandire la foto, fino a visualizzare i singoli pixel.
Quando anche la seconda foto risulta collimata, si può ripetere il calcolo, renderizzando di nuovo il modello.
La procedura può essere ripetuta con altre foto, anche a dettaglio maggiore, fino alla copertura totale del modello.

SPietroCanomaLow.tiff
Fig 11 Immagine del fronte di S.Pietro in Montorio a Roma

Nel caso in cui un corpo interposto, quale una alberatura, risultasse creare coni d'ombra sulle texture, queste possono essere corrette individualmente, con una funzione di correzione pittorica, chiamata automaticamente da "Canoma", servendosi del programma preferito dall'operatore.
Corrette, nel caso, tutte le texture, il modello tridimensionale può essere salvato, nei formati standard previsti, verso i programmi CAD.
Tra i vari formati grafici è previsto il VRML97, divenuto oggi il file di interscambio di dati tridimensionali tra i più diffusi.
Un'altra possibilità, meno scientifica, prevista da "Canoma", è quella di permettere il salvataggio di una sequenza di punti di vista a scelta dell'operatore, per realizzare una animazione di percorso intorno o attraverso gli oggetti realizzati.
"Canoma" rappresenta oggi un esempio di un ottimo ed innovativo software fotogrammetrico, il cui sviluppo è terminato, e non è più distribuito.
Un limite di "Canoma" è stato, finora, la mancata possibilità di caricare la geometria di modelli tridimensionali provenienti da altri programmi.
Il presente articolo nasce dallo scambio di eMail tra lo scrivente e Robert Seidl, uno degli autori di "Canoma", riguardante la realizzazione di un modulo di conversione degli oggetti tridimensionali da un programma CAD al formato nativo di Canoma. Tale collaborazione ha prodotto il software ExportToCanoma [14], attualmente distribuito gratuitamente tramite il sito exporttcanoma.blogspot.com.

CanomaSiteLow.tiff
Fig. 12 Il Software ExportToCanoma


3.4 Altri programmi di Fotogrammetria CAD-based

Ad oggi, il numero di programmi a basso costo di restituzione tridimensionale da foto è in crescente aumento.

PhotoModeler.pict
Fig. 13 Il Software "PhotoModeler" di Eos Systems


PhotoModeler Pro della Eos Systems permette di usare primitive grafiche di tipo CAD, per disegnare i contorni architettonici direttamente al di sopra delle foto, usate come sfondo.

Un altro programma usato nel campo della fotogrammetria CAD-based è ImageModeler, della RealViz, che produce anche MatchMover, un programma che applica l'algoritmo di calcolo su sequenze video.

ImageModelerLow.tiff
Fig. 14 Il Software "ImageModeler" della RealViz

Il Software "Marina" usa la modellazione parametrica di poliedri per lala restituzione anche da antiche stampe, vecchie foto non calibrate o, addirittura, da schizzi progettuali.

MarinaLow.tiff
Fig. 15 Il Software "Marina" dell' École des Mines de Nantes

Recentemente, è stato realizzato un programma gratuito, dell'Università di Hannover, in Germania, chiamato VoodooCameraTracker, che collima automaticamente sequenze di foto, ed esporta i punti tridimensionali trovati e i parametri della camera.

VoodooBuild1Low.tiff
Fig. 16 Il Software Voodoo Camera Tracker dell'Università di Hannover

Si può facilmente dedurre una tendenza in atto che costituisce una ulteriore evoluzione della fotogrammetria: il calcolo dei parametri prospettici a partire non solo da sequenze di foto statiche, ma da sequenze video. In questo modo si ottengono i parametri del movimento allo scopo, tra gli altri, di favorire il montaggio di oggetti sintetizzati al calcolatore all'interno di riprese cinematografiche del reale.
Una interessante osservazione da fare riguarda i punti di controllo, detti "Tie Points", che questa generazione di programmi ottengono per collimazione automatica, tramite pattern matching, ovvero riconoscimento statistico della conformazione delle maschere di pixel da un fotogramma all'altro. Un primo vantaggio dell'uso di sequenze video è che l'elevato numero di fotogrammi porta come conseguenza positiva una minore differenza tra le immagini, e quindi un più facile riconoscimento dei punti, che risultano solo "slittati" di modeste quantità.
Ma il secondo vantaggio è che l'elevato numero di Tie Points forma una nuvola di punti nello spazio che già di per sé costituisce una sorta di "rilievo" dell'oggetto, risultando simile ad un rilievo laser, anche se meno dettagliato.


4 Descrizione Matematica della Restituzione Prospettica

Il processo di formazione dell'immagine deve essere modellato in maniera rigorosamente matematica. Il più generale modello di camera è quello conosciuto come proiezione centrale. Un punto 3D è proiettato sul piano immagine dalle linee dei raggi visivi. Il corrispondente punto immagine è l'intersezione del piano immagine con i raggi visivi partenti dal centro ottico ed il punto 3D.

ProspettografoLow.tiff


4.1 La trasformazione di Helmert

Partendo da un classico metodo di trasformazione, cercheremo di seguire l’evoluzione degli algoritmi di calcolo dei parametri della Restituzione Prospettica.
Secondo quanto sostenuto da Beinat [8]: "Nelle discipline del rilievo, il modello per eccellenza, è la trasformazione di similitudine rappresentata dalla formulazione di Helmert." In essa, il calcolo della deformazione di due forme ritenute simili, in partenza, è ottenuto tramite la minimizzazione della somma dei quadrati delle distanze tra i punti omologhi delle due figure, quella iniziale e quella finale. In sostanza, con un metodo di iterazione ai minimi quadrati, si ottiene la matrice di rototraslazione che porta da una figura A ad una figura B.
In sostanza si ottengono: Fattore di Scala S, Traslazione T, Matrice di Rotazione R, ed i valori di scarto tra i punti omologhi. Questa tecnica viene comunemente usata nelle trasformazioni di coordinate tra diversi sistemi geografici.
Il primo passo nell’implementazione dell’algoritmo di Helmert e’ quello di sovrapporre le due figure piane costituite dai punti di Origine e quelli di Destinazione basandosi sui loro baricentri. Vengono, quindi, calcolati i coefficienti della matrice di rototraslazione.
La trasformazione di Helmert, comunque, può determinare una deformazione dell'ortogonalità degli assi e non può essere usata nel caso della restituzione prospettica.


4.2 La definizione degli angoli di rotazione
Una attenzione particolare va posta nella espressione della matrice di rotazione, in quanto non esiste un metodo unico per definire gli angoli, ma questi dipendono dalla priorità che si sceglie negli assi che fungono da "cardine". Possiamo, infatti definire prima una rotazione intorno ad X, poi una intorno a Y e poi una intorno a Z; ma possiamo anche definire, invece, prima una rotazione intorno a Z, poi una intorno a X e poi di nuovo una intorno a Z . In totale, possono essere definiti 24 tipi diversi di rotazione, intorno a tutti e tre, o intorno soltanto a due assi, di cui uno ripetuto nella permutazione; in "GraphicsGems" [9] sono definiti tutti i tipi di rotazione possibile. Una di queste rappresentazioni è di particolare importanza ed assume il nome di "angoli di Eulero". A seconda della disciplina in cui viene applicata, la rotazione intorno ad un certo asse può prendere un nome diverso; in generale, chiameremo Rollio la rotazione intorno all'asse Y; chiameremo Beccheggio la rotazione intorno all'asse X; Imbardata o Sbandamento sarà la rotazione intorno all'asse Z.
Tuttavia, la rappresentazione tramite gli angoli di Eulero, anche se intuitiva, risulta essere di difficile utilizzo. E' infatti molto più utile la rappresentazione tramite una matrice contenente i valori di Seno e Coseno degli angoli.
Sempre secondo Beinat, "Oggigiorno per di più è invalsa la tendenza a considerare le matrici di rotazione direttamente nella loro forma naturale, rappresentata dalle componenti esplicite, proprio come è gestita nella memoria del calcolatore. Raramente c'è la necessità di 'estrarre' il valore degli angoli di Eulero celati nel valore delle componenti di una matrice."


4.3 La soluzione dei Punti di Fuga

PuntiFuga1.tiff

Una prima implementazione del programma di restituzione fotogrammetrica è basata sulle leggi prospettiche della geometria descrittiva. Tale approccio lega l’algoritmo alla restituzione di oggetti scatolari, e figure ad angoli retti.
In sostanza, vengono calcolati i punti di fuga delle rette a cui appartengono gli spigoli di una rettangolo rappresentato nell’immagine, e tramite i primi due punti di fuga viene calcolato il terzo, determinato attraverso il centro dell’immagine, che è geometricamente l’ortocentro del triangolo delle fughe. Una volta determinato il triangolo delle fughe, viene calcolata la focale, ovvero la scala, dell’immagine.
Si passa quindi a restituire i punti del rettangolo, con una semplice proporzione tra triangoli simili.
Questo procedimento restituisce il rettangolo in una scala determinata da una distanza dal punto di vista fissata ad 1. A questo punto si può scalare il rettangolo, imponendo la misura reale di un suo lato. Si calcola il rapporto di scala ed il fattore 1 viene sostituito da questo nuovo valore. Continuando ad inserire le coordinate immagine dei punti ed indicando il piano a cui esso appartiene, ovvero i punti di fuga, il programma calcola le coordinate del punto nello spazio, legandolo al punto precedente.
Nel caso in cui il poligono che si sta ricostruendo è un rettangolo, parallelo agli assi, possono essere restituiti automaticamente anche tutti i punti immagine contenuti in esso, tramite un algoritmo basato sulla omologia e su una suddivisione dicotomica.
Infatti, si impone, sul rettangolo reale, una griglia determinata da un valore di copertura ritenuto accettabile e si divide il rettangolo a metà. Si continua la suddivisione, sempre a metà, della sua parte in alto a sinistra. Quando questo procedimento raggiunge il valore di risoluzione imposto, si calcola la stessa griglia sul poligono immagine corrispondente al rettangolo, suddividendo il poligono a sua volta a metà, però proiettando le rette secanti verso i punti di fuga. Si ottiene così la griglia prospettica, in cui i punti corrispondono a quelli della griglia del rettangolo reale. A questo punto si leggono dall’immagine i punti, in termine di valori colore, e trasferiscono questi valori verso i corrispondenti punti del rettangolo reale, archiviandoli in un file immagine, legato al rettangolo.
Come già sottolineato, questo algoritmo restituisce solo oggetti scatolari o riconducibili a parallelepipedi. La parte principale di questo algoritmo è riportata nella Appendice B.


4.4 L' Algoritmo Ricostruttivo di "Facade"

Nel programma "Facade", realizzato da Paul Debevec nel Computer Science Division della University of California a Berkeley [2], viene usato un algoritmo di ottimizzazione dei parametri del modello e le posizioni della camera per rendere il modello conforme agli spigoli osservati nelle immagini.
L'algoritmo usa anche una procedura di stima iniziale a due tempi, che calcola automaticamente una stima delle posizioni della camera e i parametri del modello, stima che sia vicina alla soluzione corretta; questo rende la ottimizzazione non lineare fuori del minimo locale e facilita una convergenza.


4.4.1 La Funzione Obiettivo

L'algoritmo ricostruttivo di "Facade" lavora minimizzando una funzione obiettivo O che somma le disparità tra gli spigoli proiettati del modello e gli spigoli marcati nelle immagini, O = ∑Err , dove Err rappresenta la disparità calcolata per ogni spigolo.
Così, i parametri incogniti del modello e le posizioni della camera sono calcolati minimizzando O rispetto a queste variabili.


5 Verso la soluzione SVD

Stima dell’omografia Immagine -> Oggetto [13].
Nel caso di una fotocamera non calibrata, una stima accurata dell’omografia tra i piani dell’immagine e dell’oggetto può essere raggiunta attraverso una serie di punti conosciuti corrispondenti immagine-oggetto.

FromSingleImageLow.tiff

Da ogni coppia di punti corrispondenti immagine-oggetto possiamo estrarre due equazioni che sono lineari negli elementi della matrice H. Essi sono:

h11x + h12y + h13 = h31xX + h32yX + h33X
h21x + h22y + h23 = h31xY + h32yY + h33Y

Per n corrispondenze otteniamo un sistema di 2n equazioni in otto incognite. Se n=4 si ottiene una soluzione esatta. Altrimenti, se n>4, la matrice è sovra-determinata, e H è stimato da uno schema di minimizzazione.
La soluzione è ottenuta usando il metodo della Singular Value Decomposition (SVD).
Questo metodo minimizza un errore algebrico che non ha un significato geometrico. E’ buona pratica impiegare questo metodo per ottenere una buona soluzione iniziale e, successivamente eseguire una minimizzazione non-lineare per rifinire la soluzione tramite la riduzione di un più significativo errore geometrico.

Descrizione del metodo SVD:

Ogni matrice a m x n (m >=n) può essere scritta come prodotto di una matrice u m x n “column-orthogonal”, una matrice diagonale n x n con elementi positivi o zero, e la trasposta di una matrice ortogonale v n x n.

Cioè:
A = u W vt
dove:

svd_e02.gif
e:
svd_e03.gif

Gli elementi della diagonale della matrice W sono i Singular Values della matrice A e numeri non negativi.


REFERENCES:

[1] V.Franco – M.Lo Brutto “Elementi di Fotogrammetria Digitale” Università degli Studi di Palermo - Dispenza del corso di Topografia- Maggio 2003
[2] P. E. Debevec. “Modeling and Rendering Architecture from Photographs”. PhD thesis, University of California at Berkeley, Computer Science Division, Berkeley CA, 1996. http://www.debevec.org/Thesis.
[3] R.Seidl, T.Reinhardt, “Canoma User Guide” – MetaCreations 1998
[4] C. Bräuer-Burchardt , K. Voss - Digital Image Processing Group, Friedrich-Schiller-University - “Facade Reconstruction of Destroyed Buildings Using Historical Photographs”, 2000
[5] R.Cantoni, G.Vassena, C.Lanzi “FROM THE SURVEY TO THE 3D ANIMATION: THE SANTA MARIA IN SOLARIO CHAPEL IN BRESCIA” - University of Brescia, Civil Engineering Dep. – 2000
[6] Frank A. van den Heuvel -“RECONSTRUCTION FROM A SINGLE ARCHITECTURAL IMAGE FROM THE MEYDENBAUER ARCHIVES” - Delft University of Technology, Department of Geodesy Delft – 2001
[7] V. Gergely - “CAMERA MATCHING IN COMPUTER GRAPHICS” - Master’s Thesis Budapest University of Technology and Economics - 2003
[8] A. Beinat - "Tecniche di Analisi Procustiana e Trasformazioni di Datum in Topografia e Fotogrammetria" - Tesi di Dottorato Politecnico di Milano, 2000
[9] K. Shoemake, "Graphics Gems IV", Academic Press, 1994
[10] U.Neumann et al.- “Approaches to Large-Scale Urban Modeling” – University of Southern California, 2003
[11] J.E. Eaton, “GNU Octave Reference Manual” - Network Theory Ltd. , 1997
[12] S. Huot , Ch. Colin - “MARINA: 3D Reconstruction from Images using Formal Projective Geometry”- Department of Computer Science. École des Mines de Nantes France
[13] A. Criminisi - “Accurate Visual Metrology from Single and Multiple Uncalibrated Images” SPIN Springer's Computer Science - April 30, 2001
[14] R. Angeletti - "ExportToCanoma" - http://exporttocanoma.blogspot.com - Marzo 2004
[15] R. de Rubertis - "Il Disegno Elettronico" - Edizioni Kappa - 1979
[16] R. de Rubertis - "Computer Graphics - Ricerche ed Applicazioni del Laboratorio di Disegno Automatico" - Facoltà di Architettura 1985

2010-08-12

Restituzione Prospettica - 1 parte

Quello che segue è uno scritto inedito, risalente ormai al lontano anno 1987, riguardante un programma per l'elaborazione dei calcoli, tramite computer, della restituzione prospettica, detta oggi anche prospettiva inversa, o "reverse perspective". Il computer in questione era un Apple Macintosh, uno di quelli a forma di telefono, con il display piccolo e a toni di grigio, ed il linguaggio di programmazione era il Basic 2.0 Microsoft ( ! ).
Torniamo indietro nel tempo (23 anni) e leggiamo come "restituire una prospettiva" con il metodo dei "punti di fuga".









"Restituzione Prospettica" - Roberto Angeletti 26 marzo 1987

Il problema della restituzione prospettica potrebbe essere visto come l'inverso della prospettiva. In sostanza si presuppone che, avendo un'immagine riproducente in proiezione centrale un qualsiasi oggetto, sia essa un disegno prospettico o una fotografia, si possano da questa estrapolare in qualche modo le distanze reali o e proporzioni della realtà tridimensionale dell'oggetto stesso. Ma ciò che appare ovvio, risulta non esserlo ad una analisi più accurata; infatti, è una pura ipotesi che una sola immagine contenga le informazioni necessarie e sufficienti per riprodurre nella sua spazialità l'oggetto rappresentato.
Ciò che il nostro cervello immagina come oggetto reale, e la forma che gli attribuisce, è soltanto frutto di una serie di confronti con modelli, o "shape", archiviati in memoria; osservando l'immagine della fig. 1, noi la confrontiamo con i milioni di informazioni visive che abbiamo nella mente e, trovata quella più simile, decidiamo che la serie di segni che vediamo "somigliano" ad un parallelepipedo che proietta ombra su due superfici affiancate ad esso. Questa chiave di lettura diventa subìto una convinzione così forte che, anche rovesciando il disegno, molti continueranno a vedere come volume ciò che sta sulla sinistra, anche se le informazioni dell'ombra dovrebbero suggerire diversamente.
L'ormai famoso esperimento della camera distorta di Ames e le illustrazioni di M.C. Escher ci dimostrano fuori di ogni dubbio, se mai ce ne fosse uno, che da un'immagine prospettica si può restituire anche l'oggetto che non è, o, addirittura, si può non comprendere la forma dell'oggetto. Conviene, quindi, scomporre il problema in maniera analitica.
Una "immagine" può essere definita come il luogo geometrico delle intersezioni tra il piano proiettivo e le rette passanti per l'occhio e gli elementi dell'oggetto.
Ad una sola immagine corrispondo infiniti oggetti di infinite forme. Scelta una forma, rimangono sempre infiniti oggetti, questa volta tutti simili tra di loro, con cioè, stesse proporzioni ma diverse grandezze. L'oggetto rappresentato può essere, infatti, piccolo e vicinissimo, o enormemente grande e lontanissimo. Dunque, per riottenere, con un metodo grafico o uno analitico, da una immagine le coordinate spaziali dell'oggetto, è assolutamente necessario conoscere alcune "condizioni", che potremmo chiamare "qualità" dell'oggetto stesso. Per essere più espliciti, dobbiamo aver approssimato l'oggetto ad un parallelepipedo o ad una serie di parallelepipedi, di cui conosciamo, se non la vera misura degli spigoli, per lo meno la giacitura reciproca delle facce.

Per tornare all'esempio della fig. 1, le cose che presupponiamo vere dell'oggetto sono:
1) si tratta di un parallelepipedo che proietta un'ombra su due porzioni di pano disposte ad elle.
2) il parallelepipedo e l'elemento formato dalle due porzioni di piano hanno rette comuni.

Vogliamo e possiamo, a questo punto, conoscere le dimensioni dell'oggetto. Trattandosi di un'assonometria, è immediato intuire un sistema che ci permetta di "misurare" l'oggetto dell'immagine; basta un righello per renderci conto che la faccia verticale disposta verso di noi ha il lato orizzontale lungo 1/3 dell'altro lato. Con un confronto ci accorgiamo subito che il piano verticale dell'elemento ad elle è identico alla faccia anteriore del parallelepipedo. Per quanto riguarda la faccia che ha ombra propria, le cose potrebbero essere più complesse, ma presupponendo che si tratti di una assonometria isometrica, scopriamo che la faccia laterale è identica alle altre, pur se nella deformazione assonometria. Una cosa analoga accade per le facce laterali, che scopriamo essere due quadrati.
Fin qui tutto è evidente. Ma cosa accadrebbe se, invece di una assonometria, avessimo una prospettiva a quadro genericamente inclinato ? In questo caso non potremmo dare per implicita la giacitura del piano di proiezione rispetto all'oggetto, ma vi dovremmo in qualche modo risalire.

Vediamo la fig. 2 : l'oggetto è qui rappresentato in una prospettiva accidentale a quadro inclinato,con tre punti di fuga. E' ben noto che per punto di fuga si intende il luogo geometrico ove convergono tutte le rette passanti per spigoli paralleli dell'oggetto. Essenzialmente, ci interessano i segnanti orientati verso destra, verso avanti e verso l'alto, e, quindi, rifacendoci ad un sistema cartesiano levogiro, useremo la dicitura "fughe di x, di y, di z".

Un metodo analitico per trovare i punti di fuga può essere quello di sviluppare un sistema di equazioni delle rette a cui appartengono due dei segnanti che concorrono ad una stessa fuga, usando le coordinate dei punti di inizio e fine dei segmenti.

Restituzione Prospettica - 2 parte





Quello che segue è un sottoprogramma, scritto in BASIC 2.0 su Macintosh, per il calcolo del punto di intersezione tra due rette:





Nella fig. 2, i segmenti EI e GH concorrono alla fuga x; i segmenti FI e GL alla y; FH e EL alla z. Trovato il triangolo delle fughe, converrà controllarne l'esattezza, calcolandone l'ortocentro, che costituisce il piede dell'asse ottico, semiretta partente dall'occhio e normale al piano di proiezione (fig. 3).

Il sottoprogramma che segue calcola l'ortocentro di un triangolo:





La distanza tra il centro del fotogramma, P, e l'ortocentro trovato dovrebbe risultare nulla, essendo i due punti coincidenti; la misura della distanza tra i due, quindi, ci dà di quanto sbanda l'orientamento del sistema trovato da quello reale, ovvero la percentuale d'errore esistente.

Come accade con i metodi grafici, anche con procedimenti analitici la restituzione prospettica non risulta essere esente da coefficienti di errore, che possono essere determinati dalla imprecisione nella lettura delle coordinate sulla lastra o dalla approssimazione nei calcoli. Vari metodi possono essere usati per compensare gli errori o per annullarne gli effetti. Per quanto riguarda la ricerca delle fughe e l'errore dell'ortocentro, il metodo di compensazione adottato si basa sulla verifica del piano orizzontale; se esso risulta inclinato oltre una certa soglia, si può forzarne l'orizzontalità, spostando uno dei tre punti di fuga, secondo un criterio di scelta arbitrario dell'operatore.

Il sottoprogramma seguente, dati due punti di fuga, calcola le coordinate della terza fuga, basandosi sul punto P centro del fotogramma.




Questo sistema, ce può sembrare carente da un punto di vista teorico, risulta essere potente nella pratica, in quanto dà la possibilità di trovare un punto di fuga per il quale non esistano sufficienti elementi geometrici desumibili dall'immagine. Ciò avviene molto di sovente: basti pensare a fotografie di facciate di edifici, riprese in condizioni prospettiche sfavorevoli, come, ad esempio, all'interno di strade molto strette; in questo caso non si ha più la possibilità di eliminare l'effetto delle cosiddette "linee cadenti" con metodi ottici, come raddrizzatori, obiettivi basculanti e altro. Calcolando, invece, la fuga delle rette normali al piano del prospetto che ci interessa, possiamo operare analiticamente su di esso, scavalcando molti dei problemi legati all'ottica fotografica.
La distanza tra l'occhio ed il piano di proiezione può essere ricavata utilizzando le due misure B e C, prese in valore assoluto. Dalla geometria sappiamo che il quadrato costruito sull'altezza di un triangolo rettangolo ha la stessa area del rettangolo che ha per lati le proiezioni dei cateti sull'ipotenusa, cioè:


2
D = C * B