Siamo arrivati alla terza puntata del nostro tutorial tecnico sull'aerofotogrammetria da drone. In questi primi appuntamenti stiamo lavorando con il software Agisoft Photoscan. Nei prossimi appuntamenti scopriremo il software Pix4D Mapper.
Nelle due precedenti puntate abbiamo trattato i temi dalla pianificazione di volo fino all'allineamento delle immagini, inserimento marker e correzione metrica del rilievo, affinché si possa parlare di vero rilievo aerofotogrammetrico e non di Computer Vision.
Ricordiamo che questo tutorial è organizzato sul set di fotografie gentilmente concesse da © Paolo Allodoli 2018, relative alla Chiesa di San Biagio a Lendinara e scattate con un DJI Spark (rif. ENAC 18238).
HOW TO: aerofotogrammetria con drone e Agisoft Photoscan. Introduzione (parte 1)
HOW TO: aerofotogrammetria con drone e Agisoft Photoscan. Elaborazione (parte 2)
Aerofotogrammetria step 8: controllo area di lavoro
Terminata la fase di allineamento e aggiunta marker, possiamo finalmente passare alla generazione del modello 3D vero e proprio. Per limitare il calcolo alla sola area di nostro interesse, al fine di ottimizzare tempi e risorse, dobbiamo per prima cosa ridimensionare l'area di lavoro: di default, l'area viene impostata dal software selezionando sulla nuvola di punti sparsa quella che contiene il maggior numero di punti vicini, lasciando fuori soltanto quelli sparsi ai bordi della nuvola. Premiamo il tasto 7 sul pad numerico per impostare la vista top, il tasto 5 sul pad numerico per impostare la vista ortografica, e selezioniamo il comando Ridimensiona area. Oppure da menu Modello --> Trasforma area --> Ridimensiona area: questo comando attiva agli angoli del nostro box dei pallini blu, che è possibile trascinare dove vogliamo limitare il calcolo. Siccome il box è tridimensionale, gli spigoli sono 8 pertanto anche i pallini blu saranno 8: clicchiamo sul pallino blu con il tasto sinistro e teniamo premuto per trascinarlo dove vogliamo. Poiché il box di selezione dovrà sempre mantenere un aspetto parallelepipedo, selezionare un angolo vuol dire selezionare anche quello equivalente allo spigolo soprastante/sottostante, e spostarlo vuol dire spostare anche gli spigoli ortogonali alla direzione di spostamento. Ripetiamo la stessa operazione premendo il tasto 1 sul pad numerico per attivare la vista frontale.
Poiché il GPS del nostro UAV ha salvato negli EXIF delle immagini le proprietà di latitudine e longitudine, il nostro modello è scalato e orientato con buona approssimazione: non è pertanto necessario agire sulla rotazione e sullo spostamento dell'area, che sono comunque gli altri due comandi che si possono usare per "piegare" le dimensioni dell'area di lavoro alle nostre necessità.
Aerofotogrammetria step 9: generazione nuvola densa
Impostata correttamente l'area di lavoro, siamo finalmente pronti per il processo di ricostruzione 3D. Attiviamo il comando da menu Processi --> Genera nuvola densa: si apre una finestra dove selezionare i parametri di calcolo.
La Qualità Generale serve per determinare quanto densa dovrà essere la nuvola di punti finale: i parametri, come per l'image matching, vanno da minima ad altissima. Si tenga presente che questo parametro è limitato dalla qualità con cui è stata prodotta la nuvola di punti sparsa, quindi quanti punti il software ha effettivamente individuato su ogni singola immagine: è impossibile pensare di ottenere una qualità altissima da un image matching di livello basso. Si può però saltare uno step, ad esempio con un image matching medio ottenere una dense cloud alta. Si tenga presente che più si alza questo parametro più aumentano esponenzialmente i tempi di calcolo. Va considerato inoltre che a detta degli stessi tecnici di Agisoft, maggiore è l'overlap tra le immagini (ovvero la porzione di fotografie che inquadra la stessa area) più lungo sarà il processo di filtraggio della profondità che è alla base della generazione della nuvola densa.
Come in precedenza, la scelta tra qualità media e qualità alta va fatta in base alla scena, ovvero quanti piccoli particolari che dunque richiedono un'analisi fine sono da ricostruire. In genere nell'aerofotogrammetria da drone non ci sono molti piccoli particolari, in quanto il rilievo è "affetto" da un GSD relativamente alto, tendenzialmente superiore al cm. Se vogliamo ricostruire la statua sulla guglia di una chiesa, potremo aumentare a qualità altissima il calcolo, ma se abbiamo volato a 50 metri di distanza ci sarà poco da fare: meglio pianificare un volo intorno alla statua a distanza ravvicinata (10 metri) e poi impostare una qualità media: il risultato sarà comunque superiore.
La seconda opzione riguarda i parametri avanzati del filtro di profondità: ne troviamo quattro, da disabilitato ad aggressivo. Non dobbiamo mai disabilitare il filtro, mentre le altre 3 opzioni agiranno sullo smussamento degli spigoli, quindi uno smussamento aggressivo tenderà ad appiattire molto le curve, uno leggero sarà più gentile. Tale impostazione va scelta in base a quanti particolari vanno ricostruiti e alla loro dimensione: per una semplice architettura, un filtro aggressivo aiuterà a ricostruire facciate non bozzate, mentre nel caso della modellazione organica (ad es. statue o decorazioni architettoniche) sarà più indicato un filtro leggero per conservare i particolari.
Infine selezioniamo anche calcola colore dei punti se non vogliamo vedere una dense cloud in B/N.
Naturalmente nella scelta dei parametri di calcolo la linea guida è sempre l'output: avremmo bisogno di massima precisione e accuratezza nel caso di modello per reverse engineering o modelli 3D da cui ottenere riproduzioni per stampa tridimensionale, oppure modelli di tipo organico dove la riproduzione delle curve deve essere puntuale (e questa operazione necessita di tanti punti da trasformare in tanti poligoni). In questo caso si dovrà scegliere un workflow di qualità alta o in qualche caso anche altissima.
Ma se ad esempio ci interessa un output verso visualizzatori online tipo Sketchfab, la riproduzione per mondi virtuali, o la generazione di ortofoto per capitolati d'appalto, impegnare la nostra workstation per ore e giorni a calcolare decine di milioni di punti è solo un dispendio di risorse e tempo, perché ciò che richiede l'output è soltanto un modello metricamente preciso e accurato. Nella maggior parte di queste situazioni un workflow di qualità media risulta sufficiente, solo in qualche caso si dovrà scegliere una qualità alta. Le caratteristiche dell'oggetto verranno comunque mantenute anche con una forte discretizzazione finale.
Come potete vedere dall'immagine soprastante, di per sé la nuvola di punti è già un prodotto "finale": è la ricostruzione 3D strutturata di un oggetto o una scena, e può essere esportata e lavorata con specifici software di trattamento, demandando a loro l'analisi o la poligonalizzazione stessa. Per citarne alcuni, si va da software free come Cloud Compare o l'italiano MeshLab, fino a software commerciali come Geomagic. Vedremo in un futuro appuntamento come classificare la nuvola di punti, un'operazione che Photoscan può gestire e che consente eccezionali possibilità di analisi professionali.
Ma la nuvola densa è anche la base per elaborare la mesh 3D: vediamo come.
Aerofotogrammetria step 10: generazione mesh 3D
Una mesh poligonale è una "maglia" composta da vertici, spigoli e facce che materializzano delle celle poligonali. Le tipologie di mesh più usate in computer grafica sono le mesh triangolari e le mesh quadrilaterali, ovvero mesh in cui le celle sono rispettivamente di 3 lati o di 4 lati. Nello specifico tecnico ognuno di questi elementi, sia esso triangolo o quadrilatero, non è una semplice forma geometrica, ma quello che in gergo si chiama tupla, ovvero un elemento che contiene un database relazionale che associa ad ogni elemento una serie di attributi: ogni quadrato per farla breve si compone di 4 vertici, 4 spigoli e 1 faccia, e il database della tupla contiene le informazioni che spiegano come questi elementi sono connessi tra loro per formare il quadrilatero. Ogni faccia è poi individuata da un vettore che ne imposta la normale, ovvero il lato della faccia che determina cosa è dentro e cosa è fuori la mesh. Per nostra fortuna, non dobbiamo mettere in pratica questa teoria, perché un software come Photoscan nel generare la mesh si occupa già di tutte le questioni topologiche e algoritmiche per determinare la struttura dati della mesh.
Dunque, da menu Processi --> Genera maglia 3D: si aprirà la finestra con le opzioni che andiamo a vedere.
- Tipo di superficie: nel primo appuntamento abbiamo visto che la selezione è tra Arbitraria (per ricostruire modelli 3D, o solo altezze (heighfield, per modelli 2.5D, ovvero i terreni). Sceglieremo la prima.
- Dati in ingresso: sceglieremo naturalmente la nuvola densa, ovvero la nuvola che contiene più informazioni
- Conteggio facce: possiamo dire a Photoscan di discretizzare il modello risultante secondo parametri predefiniti, oppure decidere noi quanti poligoni dovrà avere il nostro modello. Naturalmente il numero di poligoni ricostruibili dipende dalla quantità di punti che il software ha processato durante la costruzione della nuvola densa. La discretizzazione può anche essere compiuta a posteriori, o con un comando apposito di Photoscan, o nei software terzi già citati
- Interpolazione (in avanzate): determina il modo nel quale il software deve trattare i "buchi": Disabilitata, i buchi rimarranno tali (saranno ricostruite le facce solo dove esistono punti nella dense cloud); con Abilitata le aree vuote verranno interpolate facendo si che ad ogni punto della cloud corrisponda un cerchio di un certo raggio, se tale cerchio interseca altri punti viene ricostruito il poligono altrimenti rimane il "buco"; con Estrapolata il software chiude tutti i buchi presenti nella cloud potremmo dire in maniera indiscriminata: questo parametro va usato con attenzione e a patto di rimuovere successivamente la geometria extra che verrà generata
- Calcola i colori dei vertici: come sopra
Scelte le nostre opzioni, premiamo su ok e lanciamo il calcolo, attendendone la fine. I tempi saranno più o meno lunghi a seconda delle performance della vostra workstation.
Pulire la mesh 3D da poligoni indesiderati
La funzione genera maglia 3D tende a generare un modello poligonale sovrastrutturato, soprattutto con l'opzione interpolazione abilitata: vi ritroverete insomma con gruppi di poligoni sparsi, disconnessi dal modello, o comunque una serie di facce non volute. Tali elementi possono essere facilmente rimossi con gli strumenti di selezione della toolbar, ma non sempre è possibile selezionare correttamente le facce non volute, discriminandole da quelle volute. Per cancellare ciò che non serve, al fine di costruire una texture corretta, ci viene in aiuto un tool che dalla versione 1.4 di Photoscan troviamo in menu Modello --> Selezione graduale: questo tool si occupa di analizzare il modello, individuare secondo una determinata soglia i componenti sconnessi e selezionarli per voi. Sarà molto semplice a quel punto cancellarli da menu Modifica --> Cancella selezione.
Aerofotogrammetria step 11: costruire la texture
La maglia 3D colorata non sempre è un prodotto finale bello da vedere: evidenzia particolari indesiderati, e non mostra quelli desiderati. Per ovviare a questo problema, alla mesh poligonale è possibile associare una texture che aumenta esponenzialmente la quantità di particolari visibili su ogni faccia.
Questa operazione si porta a termine con il comando menu Processi --> Genera texture: le sue impostazioni di default sono sufficienti nella stragrande maggioranza dei casi. Una modalità di mappatura generica ben si adatta a modelli 3D, la modalità di fusione a mosaico va preferita per la generazione di ortofoto e la dimensione e il numero di texture dipendono dalla quantità di poligoni del modello (4096 o 8192 x1 sono le scelte più comuni). Se abbiamo detto al software di interpolare i buchi, selezioneremo in avanzate il riempimento buchi anche per la texture, mentre possiamo soprassedere sul filtro rimozione artefatti luminosi, in quanto questo filtro è comodo solo per set di immagini che presentano una varietà estrema di luminosità tra loro.
Va specificato che a volte la modalità di fusione a mosaico potrebbe fallire, ma va comunque sempre processata per prima in quanto rispetto alla modalità media non va a generare un mix di dettagli tra foto adiacenti, ma per ogni overlap sceglierà la fotografia più appropriata, ovvero quella che presenta il pixel collocato alla distanza minima del centro dell'immagine (cosa che si traduce in una potenziale migliore nitidezza).
Lanciamo il comando premendo ok e attendiamo la fine del calcolo.
Aerofotogrammetria step 12: esportare il modello 3D
Completata la generazione della texture, abbiamo terminato il nostro lavoro. Non ci resta che esportarlo, per renderlo disponibile in visualizzatori esterni e consegnarlo al cliente o caricarlo online.
Questa operazione è molto semplice e si attiva da menu File --> Esporta --> Esporta modello: il software vi consente di scegliere tra numerosi formati disponibili, compreso il PDF3D, o un'esportazione diretta verso tool online come Sketchfab. Il formato più comune per l'esportazione di mesh 3D con texture è sicuramente il formato OBJ, e anche qui i parametri di default si prestano ad essere sufficienti nella maggior parte delle situazioni.
Riepilogo
Siamo giunti al termine del nostro tutorial su aerofotogrammetria e Agisoft Photoscan: in questo primo HOW TO abbiamo visto come passare dalla pianificazione del volo all'esportazione di un modello 3D metricamente corretto e texturizzato. Vedremo in futuro, in tutorial più tecnici, come trattare la nuvola di punti e il modello 3D per fini più professionali, dal DTM alla classificazione della point cloud fino alla generazione di ortofoto per ambienti CAD.
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.
Nel prossimo HOW TO passeremo a lavorare con Pix4D Mapper, in seguito Zephyr Aerial, e alla fine del percorso vedremo come lavorare con le nuvole di punti per applicazioni professionali.