Cenni storici
La fotogrammetria, letteralmente "misurare con la luce" (dal greco), è una tecnica di rilevamento che consente l'acquisizione 3D ovvero le caratteristiche geometriche di un oggetto attraverso il processamento congiunto di 2 o più immagini che lo ritraggono da posizioni differenti.
Questa tecnica vede le sue basi fondanti nella geometria descrittiva e in particolare sulle leggi della prospettiva, note fin dal Rinascimento grazie agli studi del Brunelleschi e di Leonardo da Vinci tra gli altri: le basi matematiche su cui si fonda la fotogrammetria furono poste nel 1759 dal matematico e fisico Johann Heinrich Lambert, nella sua opera Perspectiva liber.
I primi esempi noti di utilizzo di questa tecnica risalgono al 1858, quando il giovane architetto Albrecht Meydenbauer, utilizzò delle fotografie per ottenere informazioni metriche della cattedrale di Wetzlar, "aggirando" in tal modo il rischio di perdere la vita per eseguire misure dirette. Nel 1859 una relazione del colonnello Aimè Laussedat di fronte alla Commissione dell'Accademia delle Scienze di Parigi, spiegò come fosse possibile ottenere coordinate a terra da una coppia di immagini fotografiche dall'alto, mediante intersezione spaziale dei raggi. Nel 1919 Umberto Nistri effettua per l’Ufficio dell’Agro romano il rilievo fotogrammetrico di un tratto delle rive del Tevere, con capisaldi sistemati e rilevati a terra: è la nascita dell'aerofotogrammetria italiana.
Sotto il profilo dell'acquisizione delle immagini, le prime tracce per la formazione elementare di immagini fotografiche le troviamo nel trattato sistematico di ottica del matematico arabo Alhazer, uscita attorno all'anno 1000 e tradotta in latino nel 1270 col titolo di Opticae thesaurus, laddove si può leggere la descrizione di ciò che a tutti gli effetti è una camera stenopeica. Il grande sviluppo delle macchine fotografiche appartiene naturalmente al XIX secolo, mentre negli anni '90 del XX secolo iniziò l'era della fotogrammetria digitale.
Fotogrammetria o Computer Vision?
Prima di iniziare qualsiasi discorso di elaborazione, è bene subito chiarire una differenza tecnica e scientifica, poco nota: quando il progetto di acquisizione 3D è finalizzato all'ottenimento di informazioni metriche precise e accurate, si può parlare di fotogrammetria. Quando invece è finalizzato alla semplice visualizzazione, ovvero non vengono apportate le necessarie correzioni metriche, è più corretto parlare di Computer Vision, o visione artificiale.
Infatti entrambe le tecniche mirano a riprodurre l'ambiente reale in 3D partendo da immagini 2D, e per ottenere questo possono utilizzare gli stessi software: ma la prima crea un modello metricamente accurato, la seconda un modello approssimato.
Specificando meglio, la Computer Vision si basa su un processo di fatto completamente automatico, dove l'intervento umano è praticamente nullo: si veda a tal proposito il sistema Autopilot sviluppato da Tesla per le sue macchine. Mentre la fotogrammetria richiede sempre e comunque una certa dose di intervento da parte di un operatore.
HOW TO: aerofotogrammetria con drone e Agisoft Photoscan. Elaborazione (parte 2)
HOW TO: aerofotogrammetria con drone e Agisoft Photoscan. Il modello 3D (parte 3)
Il matching automatico
Ciò di cui ci accingiamo a parlare è quel settore della tecnica fotogrammetrica che si occupa della correlazione automatica delle immagini (image matching): lo sviluppo degli algoritmi per la correlazione di immagini ha visto nel Least Squares Matching (Gruen 1985) il metodo più efficace per gli algoritmi area-based, esteso poi a più immagini simultaneamente e chiamato Multi-Photo Geometrical Constraints (MPGC) Least Squares Matching (Gruen e Baltsavias 1988), poi ripreso e ulteriormente sviluppato anche per le immagini terrestri convergenti (Remondino 2008).
Tra gli algoritmi features-based il più noto è lo Scale-invariant feature transform (SIFT, Brevetto US 6,711,293) sviluppato da David Lowe nel 1999. Lo stesso software che stiamo per descrivere, ovvero Agisoft Photoscan, si basa su un principio simile al SIFT, ma utilizzando differenti algoritmi di processamento rispetto alla pipeline di SIFT (Bundler+PMVS2+CMVS).
Bisogna sottolineare come in ogni caso, la correlazione automatica delle immagini presenti ancora alcuni aspetti problematici e irrisolti come la presenza di aree monocolore o pattern geometrici, oggetti in movimento (ad es. pedoni e macchine), gli artefatti radiometrici (ad es. purple fringing e aberrazioni cromatiche), la presenza di oggetti trasparenti o a specchio o riflettenti (ad es. l'acqua), l'occlusione di alcuni punti. Tali problemi sono maggiormente evidenti nella fotogrammetria terrestre, laddove nell'aerofotogrammetria si presentano più limitati.
Aerofotogrammetria step 1: pianificare il volo
All'inizio del post abbiamo scritto che la fotogrammetria è l'arte di misurare con le immagini. Dunque, lo step 1 è l'acquisizione delle immagini. Poiché parliamo di aerofotogrammetria da drone, ovvero fotografia da remoto, il primo problema da affrontare è la pianificazione della missione di volo.
Sorvoliamo su tutti gli aspetti legati alle autorizzazioni al volo con APR, che s'intendono possedute a questa fase del lavoro. Parliamo invece delle due tipologie di progetto fondamentali:
- Heightfield, ovvero un'immagine usata in computer grafica che contiene informazioni relative all'elevazione della superficie
- Arbitrary 3D, un modello 3D vero e proprio, dettagliato e particolareggiato dell'ambiente reale
Nel primo caso, la pianificazione del volo dovrà prevedere una posizione della camera a 90°, ovvero nadirale (rivolta verso il basso); nel secondo caso si programmerà un volo con camera obliqua, statisticamente tra 45° e 60° di inclinazione. Nulla vieta che si possano programmare missioni miste, ad esempio quando si vuole riprodurre la presenza di un capannone al centro di un campo agricolo. Il campo verrà ripreso in modalità nadirale, il capannone in modalità obliqua. Altro esempio è quello di una chiesa: tetto in modalità nadirale, pareti in modalità obliqua. La complessità di un tale edificio impone un maggior numero di missioni, che vanno dalla missione circolare attorno al campanile, a missioni verticali lungo le pareti dell'edificio.
Affinché l'image matching sia portato a termine, si consiglia una sovrapposizione di immagini orizzontale del 60-80%, laterale di almeno il 70%: questo si rende necessario poiché nel caso del processamento automatico di immagini, 3 punti omologhi appartenenti allo stesso oggetto devono essere visibili su 3 immagini differenti, meglio se 5. Con applicazioni di volo automatico sarà più semplice ottenere questo risultato, nel caso del volo manuale bisogna ricordarsi in particolare quest'ultimo parametro e ricordarsi dove si è volato: naturalmente in queste condizioni meglio abbondare nel numero di fotografie, si potrà fare una selezione a posteriori, in fase di elaborazione.
Altezza del volo
È fondamentale anche scegliere correttamente l'altezza del volo o la distanza dall'oggetto: ogni fotocamera, ovvero ogni coppia sensore+obiettivo, è in grado di distinguere una determinata dimensione di un particolare in base alla distanza dal soggetto. Per calcolare questo parametro si applica una semplice formula, che restituisce il cosiddetto GSD, ovvero il Ground Sampling Distance: quanta porzione di terreno è in grado di discriminare una camera se posta a 40 metri di distanza? In questo caso conta molto la dimensione del sensore e il numero di pixel, che definiscono la sua densità di campionamento: un pixel piccolo sarà in grado di leggere maggiormente il dettaglio, d'altronde un pixel piccolo non sarà in grado di catturare la luce come i pixel più grandi (a parità di dimensione sensore). In rete esistono diversi tool gratuiti che semplificano questo calcolo: ciò che dovrete sapere sono le dimensioni in mm del sensore, il numero di pixel e la distanza finale. Un DJI Phantom 3 Pro lanciato a 40 metri d'altezza, catturerà un GSD di poco superiore a 1 cm, ovvero non sarà in grado di discriminare al suolo particolari più piccoli di 1 cm: se avete bisogno di registrare questi dati, sarà necessario abbassare l'altezza di volo. Un DJI Spark alla medesima altezza, potrà discriminare particolari solo se più grandi di 1,35 cm. Il parametro del GSD naturalmente avrà effetto anche sul dettaglio texture, che viene ricostruita a partire dalle fotografie.
Aerofotogrammetria step 2: acquisizione di coordinate a terra
Abbiamo detto in precedenza che la differenza tra fotogrammetria e Computer Vision non consiste nel software usato o nel set di immagini processate, ma se il nostro progetto ha finalità di precisione metrica o meno.
Poiché la fotogrammetria è una tecnica a luce passiva, la dimensione della scena ripresa non può essere stabilita a priori, come avviene con le tecniche a luce attiva (stazione totale, laser scanner, etc.), ma viene solo approssimata.
Affinché il nostro progetto rientri nei parametri di precisione e accuratezza metrica, dobbiamo introdurre una fase di rilievo di coordinate sul campo. Perché questa fase precede l'acquisizione delle immagini? Perché tutti i punti che decideremo di usare per la correzione metrica, che siano marker a terra o spigoli notabili di un edificio, dovranno poi essere perfettamente visibili e riconoscibili nelle fotografie.
L'utilizzo di strumentazione professionale, sotto questo profilo, risulta decisivo: tanto migliore sarà la precisione strumentale, tanto migliore sarà la precisione metrica del progetto, anche al netto degli errori di posizionamento dei marker all'interno del software. Generalmente i due strumenti che conviene utilizzare sono la stazione totale e il GNSS (Global Navigation Satellite System) di tipo differenziale, lo strumento in grado di geolocalizzare un punto attraverso i satelliti. Nel primo caso, si può stimare una precisione anche entro i 5 mm, sia orizzontale che verticale, nel secondo una precisione in modalità solo rover di 1-3 cm in orizzontale, 3-5 cm in verticale, a meno che non venga usata la modalità statica, che migliora la precisione. Senza entrare troppo nel dettaglio, aggiungiamo anche che la prima tecnologia restituisce coordinate in un sistema locale, la seconda fornisce coordinate geografiche, che oltre a fornire adeguate informazioni metriche, aggiunge al progetto anche le informazioni geografiche necessarie alla generazione di una immagine di tipo GeoTIFF.
La materializzazione sul terreno dei punti da convertire in marker, anche chiamati GCP (Ground Control Point) avviene generalmente con dei semplici quadrati in B/N o B/R a triangoli contrapposti, che individuano un punto al centro del quadrato stesso. La dimensione di queste tavole deve essere calcolata in funzione della risoluzione del sensore e della distanza del medesimo dal soggetto: tendenzialmente, riprese aerofotogrammetriche richiedono la materializzazione a terra di tavole di almeno 40 cm, se non anche 50 cm di lato.
La disposizione dei GCP attorno al modello deve perseguire un criterio di intelligenza: se sto rilevando un quadrato, disporrò 4 punti agli angoli e un paio di punti al centro. Se sto rilevando un fabbricato, disporrò una serie di punti attorno all'edificio. È importante in questa fase avere un numero sufficiente di GCP (dipendente dalla dimensione del modello) disposti randomicamente all'interno dell'intera area di rilievo, quindi come scritto non tutti in un angolo o in un lato del modello, ma in tutti gli angoli e in tutti i lati. Vedremo nella fase di correzione metrica che effetti determina una corretta disposizione dei GCP sulla precisione metrica del nostro rilievo aerofotogrammetrico.
Scopri il nostro servizio di noleggio stazione totale in tutta Italia
Aerofotogrammetria step 3: acquisizione di immagini
Programmato il volo, prima di partire è necessario verificare le impostazioni della camera: alcune app per il volo automatico, come Pix4D Capture, non consentono questa fase, limitandosi a impostare la camera con parametri standard e formato jpeg. Ma altre app come DJI GS Pro (solo iPad e solo droni DJI) consentono il controllo di camera. In precedenza sono stati citati gli errori radiometrici come uno dei fattori limitanti di un progetto aerofotogrammetrico basato su image matching automatico: il sistema migliore per correggerli è scattare nel cosiddetto formato RAW, che consente una grande potenza di post-elaborazione in grado di rendere lo scatto quasi perfetto per fini fotogrammetrici. Anche in questo caso, alcune limitazioni vengono dalla tecnologia (limitandoci a droni DJI RtF), laddove lo scatto in RAW è consentito su droni della serie Mavic e Phantom, ma non ad esempio sullo Spark, il più diffuso drone trecentino in Italia. La focale in genere è per lo più fissa, ma è possibile variare alcuni parametri di scatto al fine di renderli conformi alla luce ambientale.
Lo scatto in RAW consente anche la profilazione colore della fotocamera, laddove sia richiesta una texturizzazione fedele dell'oggetto digitale. Qualora si utilizzino macchine fotografiche applicate alla gimbal (ad esempio il caso di una Sony Alpha7 sotto un Matrice o un S900, o la Yuneec CG04 basata su tecnologia Panasonic nel caso del Typhoon H920 Plus), è sempre bene verificare una corretta lunghezza focale in proporzione alla distanza di scatto, con il calcolo del GSD sopra specificato.
Bisogna sempre ricordare che per portare a termine correttamente questa fase è necessario avere cognizioni fotografiche approfondite, che vi consentiranno di conoscere il vostro strumento e adattarlo perfettamente alle vostre esigenze. D'altronde, anche se la finalità degli scatti è l'elaborazione in una pipeline fotogrammetrica, ciò non toglie che sempre di fotografie si tratta.
Aerofotogrammetria step 4: elaborazione delle immagini
Siamo ancora nella fase preliminare del nostro progetto aerofotogrammetrico, ma nella fase fondamentale del lavoro: l'elaborazione delle immagini, dove andremo ad apportare tutte le correzioni radiometriche necessarie a rendere la nostra immagine migliore per l'image matching.
Fattore assolutamente fondamentale, in questa fase del lavoro non bisognerà mai modificare la dimensione dell'immagine o la distorsione dell'immagine. Gli algoritmi di image-matching sfruttano proprio questi dati, contenuti nell'EXIF, per riconoscere la camera e apportare le correzioni secondo il proprio database o secondo le informazioni fornite dall'utente nel processo di pre-calibrazione.
Le correzioni di base, legate al purple fringing (scarsamente presente nelle fotografie dall'alto), alle aberrazioni cromatiche, alla vignettatura del sensore, al profilo colore, correggono l'immagine senza toccare questi parametri e generalmente tali correzioni vengono applicate automaticamente dai software di elaborazione immagini, come Adobe Lightroom e simili.
Tutto questo si ottiene molto meglio, senza degradare l'immagine, qualora l'originale sia nel cd formato RAW: il JPEG consente interventi più limitati, ma ugualmente importanti.
Ci sono invece due tecniche di miglioramento delle immagini (enfatizzazione) che sono invece "manuali": si tratta del miglioramento del contrasto e del miglioramento della luminosità. Questi parametri agiscono direttamente il primo sui valori radiometrici dell'immagine, il secondo sui valori DN presenti nell'istogramma. È importante che questi valori siano trattati in maniera lineare, attuando spostamenti costanti e contemporanei dei livelli di densità. Se questo provoca una "chiusura delle ombre", è bene aprirle leggermente per aumentare il dettaglio in quell'area; attenzione anche a eventuali effetti sulla saturazione del colore. Bisogna ricordare che in questa fase ciò che interessa ottenere non è una foto da copertina, ma una foto buona per l'image matching fotogrammetrico. A volte una fotografia flat, poco contrastata e leggermente piatta, ma con una corretta definizione radiometrica dei particolari, risulta migliore di una fotografia eccessivamente contrastata, che aiuta il software nel riconoscimento delle feature ma al tempo stesso degrada la texture finale. Questa fase è decisiva affinché il processamento sia corretto dall'inizio alla fine del progetto.
© Paolo Allodoli 2018. Chiesa di San Biagio a Lendinara: DJI Spark rif. ENAC 18238
Una funzione molto interessante di Photoscan, è il valore image quality, che vedremo più oltre. Offre la possibilità di determinare quanto buone sono le immagini per il calcolo, restituendo un valore da 0 (pessimo) a 1 (eccellente). L'utente può determinare una soglia di qualità, ad esempio 0,5: tutte le immagini che non dovessero raggiungere questo valore, verranno automaticamente scartate dal software. Molto utile ad esempio per tagliare via senza sforzo immagini sfuocate, povere di contenuto radiometrico. Bisogna solo fare attenzione a non inficiare la ridondanza di dato: se notate che vi sono troppe foto sotto questo valore, dovrete abbassarlo, ma avrete comunque la coscienza che qualcosa è stato sbagliato in fase di acquisizione.
Aerofotogrammetria step 5: processamento di immagini
Finalmente il nostro set di dati è pronto per l'analisi fotogrammetrica. Ai fini di questa serie di tutorial, utilizzeremo il software Agisoft Photoscan, di tipo commerciale.
Scarichiamo la versione demo dal sito: essa consente l'uso illimitato del software in tutte le sue funzionalità, tranne quelle di esportazione e salvataggio. Esiste anche la versione trial, che dura 30 giorni ma che consente la modalità full, ideale per grandi progetti che richiedono molte ore di elaborazione, in vista del potenziale acquisto del software. Ricordiamo che per l'elaborazione di progetto aerofotogrammetrici è necessario lavorare con la versione Professional.
Photoscan, come ogni altro software di elaborazione, richiede un PC performante, o meglio una Workstation per funzionare al meglio: i requisiti minimi per completare correttamente progetti che possono arrivare a richiedere anche 1000 immagini sono 32-64GB di RAM, una CPU Intel almeno quad-core (la serie Kaby Lake prevede oltre 4Ghz di base di potenza), e una GPU OpenCL o CUDA compatibile, consigliata almeno una nVidia GeForce GTX 1060.
Scopri la nostra Workstation low-budget per il calcolo fotogrammetrico
Installiamo il software e avviamolo: l'ultima versione disponibile al momento di scrivere questo articolo è la 1.4.1, che ha finalmente aggiunto la traduzione italiana.
Nella parte superiore dell'interfaccia troviamo il menu e la barra degli strumenti. A sinistra troviamo il pannello del Progetto e la scheda Georeferenze; in basso la Console; al centro ad occupare la porzione più grande il riquadro per la visualizzazione del Modello, nativamente impostata con visualizzazione in Prospettiva a 30°: sarà sufficiente premere il tasto 5 sul pad numerico della tastiera per attivare la visualizzazione Ortografica.
La voce Processi del menù prevede già la sequenza corretta per portare a termine il nostro progetto: dunque clicchiamo su Aggiungi foto e rechiamoci sul nostro hard disk alla ricerca del set di immagini da elaborare.
Vedremo più avanti come rendere semiautomatiche alcune o tutte le operazioni previste grazie alla funzione batch Processa in sequenza.
Importate le immagini, il programma crea automaticamente il cd Chunk 1. Ogni progetto può avere numerosi chunk, ovvero parti del medesimo che possono essere elaborate in maniera separata e poi unite successivamente, ad es. nel caso non si posseggano PC particolarmente performanti (tipico caso dei portatili).
In Strumenti --> Calibrazione fotocamera, dobbiamo verificare che siano stati riconosciuti correttamente i dati EXIF delle immagini: tendenzialmente in progetti processati secondo questa pipeline, ma in generale per la fotogrammetria, è bene ovvero è meglio che tutte le immagini provengano dalla stessa sorgente (ovvero la stessa coppia sensore-obiettivo) e che questa abbia la medesima lunghezza focale per tutti gli scatti. All'interno di questo pannello possiamo anche caricare la pre-calibrazione del sensore, operazione facilmente eseguibile (che vedremo in un futuro tutorial) e che di certo aiuterà il software a migliorare la gestione generale del progetto. Altrimenti possiamo lasciare che ogni volta il programma risolva le equazioni di collinearità calibrando automaticamente la camera con i parametri di scena. In questa finestra verifichiamo anche che che la fotocamera tipo sia stata riconosciuta correttamente: Photoscan, oltre che con le immagini rettangolari (Fotogramma tipo) è infatti in grado di lavorare anche con immagini Fisheye (tipo GoPro), Sferiche (le panografie) e Cilindriche (i panorami a 360°).
Per oggi siamo giunti alla conclusione di questa puntata. La prossima volta inizieremo il processamento vero e proprio delle immagini, lavorando sui parametri previsti.
Ricorda che lavoriamo al fianco dei professionisti per collaborare con loro nella perfetta riuscita dei loro progetti: se sei alle prime armi, vuoi migliorare la resa dei tuoi elaborati o semplicemente sfruttare la nostra conoscenza nel campo per i tuoi progetti, non esitare a contattarci con il form sottostante.