In questo articolo si parla di fotogrammetria con Photoscan, dei punti di vincolo e dell’ottimizzazione degli allineamenti delle immagini.
Prosegue con la puntata numero cinque la rubrica scritta dall’Ing. Paolo Rossi sulla fotogrammetria moderna con il software Agisoft Photoscan.
Trovi i link a tutti gli articoli pubblicati sino ad ora in fondo alla pagina.
I PUNTI DI VINCOLO
I punti di vincolo, anche chiamati Ground Control Points (GCP), sono punti identificabili nelle immagini e dei quali sono note (perché misurate) le coordinate.
Questi punti hanno molte analogie con i PFA (Punti Fotogrammetrici di Appoggio) della fotogrammetria tradizionale.
La loro funzione è di restituire un modello scalato e georeferenziato.
Costituiscono anche un mezzo per vincolare il modello in fase di ricostruzione, riducendo le distorsioni indotte dalla concatenazione delle immagini.
IL RILIEVO
Il rilievo delle coordinate dei GCP è effettuato contestualmente al volo con il drone.
Prima del volo si posizionano i target nell’area di interesse.
Il centro dei target dovrà essere visibile ed identificabile nelle immagini acquisite (dimensioni target legate alla quota di volo e fotocamera utilizzata).
La posizione del punto (posizione del centro del target) è spesso misurata con tecniche topografiche classiche come GNSS o stazione totale.
Alla domanda “ quanti target devo mettere..?” non esiste una risposta con validità generale e certa!
Qui entrano in gioco l’esperienza di chi fa il rilievo e una buona dose di buon senso.
I fattori che influenzano la scelta sono:
- estensione dell’area
- quota di volo
- fotocamera
- caratteristiche dell’area
- complessità geometria della superficie (sia in termini planimetrici che altimetrici)
- accuratezze che si vogliono ottenere
Una regola generale è che tali vincoli siano omogeneamente distribuiti in tutta l’area di interesse.
Vincoliamo le zone del bordo e posizioniamo alcuni punti al centro; se l’area presenta marcati dislivelli occorre posizionare punti alle diverse quote.
Qualche considerazione riguardo il numero dei vincoli
Se pensiamo ad un’operazione di georeferenziazione classica (roto-traslazione con variazione di scala), ci sono 7 parametri incogniti e servono le coordinate 3D di almeno 3 punti per avere una soluzione (meglio se 4 così si compensa).
Con le SfM valgono queste stesse osservazioni.
Se poi pensiamo ad un’area “tipo” quadrata, posizioneremo un target per ogni vertice più uno al centro, quindi 5 target totali.
Direi che 5-6 target è il minimo.
Aumentando si incrementano anche le accuratezze ottenibili..
Sopra una certa soglia i miglioramenti non sono più così marcati.
I MARKER IN PHOTOSCAN
In PhotoScan i punti di vincolo sono inseriti come marker.
Il processo di identificazione del target nelle immagini è chiamato collimazione.
Di solito la collimazione è fatta dopo l’allineamento, perché l’identificazione del target in immagini già posizionate è più veloce.
-
Creare un nuovo marker, nel reference pane, alla finestra marker usare tasto destro del mouse.
-
Posizionare marker nella prima immagine, identificato il target, cliccare col tasto destro e posizionare il marker corrispondente.
-
Rifinire il posizionamento, in un qualsiasi momento il marker può essere selezionato e spostato nella posizione più opportuna. Il colore verde della bandiera indica “posizione manualmente rifinita dall’utente”.
-
Posizionare marker nella seconda immagine, in una qualsaisi altra immagine dove è presente il target noterete una linea tratteggiata bianco-rosso che indica la retta su cui si trova il target cercato. Questa retta nasce dalla geometria epipolare, tecnica che permette di ridurre ad una retta lo spazio per la ricerca di corrispondenze tra immagini allineate.
-
Posizionamento marker in ulteriori immagini, una volta collimato il target nella seconda immagine vedrete comparire bandiere grigie in tutte le immagini in cui il target è inquadrato. Bandiera grigia significa che il target è identificato automaticamente e che la collimazione non è usata per fini di processing. Io di solito vado a rifinire manualmente la posizione del target in tutte le immagini (mi aiuto con gli strumenti di filtraggio immagini). Rifinisco la posizione (bandiera grigia diventa verde) nel maggior numero possibile di immagini per vincolare al meglio il dataset, tralascio quelle in cui il centro del target non è ben visibile o si trova sul bordo immagine.
-
Export markers, terminata la fase di collimazione di tutti i markers è possibile salvarne la posizione in un file (.xml) ed esportarlo in modo da poterlo importare in altri progetti (vedi comando tools-export-export markers).
-
Inserimento coordinate, nel reference pane è possibile digitare le coordinate del punto e relativa accuratezza. In alternativa si possono importare i valori da un file txt opportunamente editato (import…).
SCALE BARS
In PhotoScan puoi lavorare anche con le Scale Bar.
Se non hai a disposizione le coordinate dei punti, ma solo delle distanze, puoi usare quest’ultime per vincolare il modello ed ottenere un prodotto scalato ma non georeferenziato. L’inserimento delle scale bar è simile a quello dei marker, infatti la scale bar non è altro che una distanza tra due marker (sul manuale trovi tutte le info a riguardo).
CODED TARGETS
Se lavori sempre con PhotoScan potresti essere interessato a provare i coded targets, sono target con una geometria particolare che il software è in grado di riconoscere automaticamente.
Questa scelta evita la collimazione manuale nelle immagini, quindi velocizza i tempi richiesti per il processing e migliora la precisione nell’identificazione del centro del target.
Io non li ho mai usati (lo farò presto!) ma ti condivido alcune riflessioni:
-
Benefici in termini di tempo e precisioni;
-
L’automatica identificazione ne permette l’utilizzo anche come punti di legame in fase di allineamento (I step);
-
Se il sistema di codifica non viene visualizzato correttamente e PhotoScan non riconosce il target la collimazione diventa molto difficoltosa (non ci sono numeri che possiamo riconoscere!). Questo potrebbe accadere se la risoluzione della camera è insufficiente, ci sono aberrazioni cromatiche o blurring.
Anche il manuale, infatti, suggerisce l’utilizzo di coded targets in progetti di close range photogrammetry perché a maggiori distanze il target dovrebbe essere molto grande.
OTTIMIZZAZIONE
L’ottimizzazione degli allineamenti viene svolta sulla base dei dati “spuntati” all’interno del reference pane.
Si possono usare le info sulla posa dei fotogrammi e le coordinate dei marker.
Il manuale consiglia in questa fase di usare i soli marker, perché più accurati rispetto ai dati rilevati dai sistemi di posizionamento a bordo del drone.
L’ottimizzazione si lancia dal menu tools – optimize cameras, ed impiega alcuni minuti.
I parametri da ottimizzare sono scelti automaticamente al software in base al tipo di fotocamera utilizzata ed ai risultati della fase di allineamento (ad esempio: se p1 e p2 sono simili a 0, non si ottimizzano p3 e p4).
Al termine della riottimizzaione non sono creati nuovi output, ma “aggiornamenti” dei risultati già ottenuti.
Nel reference pane sono indicati gli errori sui marker inseriti (differenza tra coordinate inserite e stimate), la nuvola sparsa è georeferenziata, la posa e i parametri di calibrazione delle fotocamere sono aggiornati.
Nella finestra tools- camera calibration si possono vedere i nuovi grafici delle distorsioni e residui e i nuovi valori dei parametri adjusted.
EDITING DELLA NUVOLA SPARSA
Un’altra operazione utile da effettuare in fase di ottimizzazione degli allineamenti è l’editing della nuvola sparsa.
I punti che costituiscono questa prima ricostruzione della geometria sono stati scelti automaticamente dal software (possiamo settare dei limiti massimi in fase di allineamento, ma niente di più..).
Può essere utile eliminare alcuni di questi punti per migliorare gli allineamenti di tutto il dataset.
Il comando gradual selction permette di fare quest editing (lo trovi all’interno del menu edit, o model se hai una versione recente).
Vediamo i parametri che possono essere interrogati:
-
errore di riproiezione, i punti con alti valori sono stati mal localizzati nella fase di matching e spesso indicano matches errati;
-
incertezza della ricostruzione, alti valori indicano punti ricostruiti da immagini molto vicine tra loro e con baseline corta;
-
image count, questo valore indica il numero di immagini in cui il punto è inquadrato (i punti inquadrati in due sole immagini potrebbero non essere stati ben ricostruiti);
-
accuratezza della riproiezione, seleziona punti non ben localizzati a causa della scala a cui sono stati identificati.
Quello che faccio io, dopo aver ottimizzato gli allineamenti con i vincoli, è usare questi strumenti di editing e riottimizzare.
Utilizzo l’image count per eliminare i punti inquadrati in solo due immagini (è più probabile che questi siano effetti da errore), effettuo la riottimizzazione, poi seleziono i punti con alti valori di errori di riproiezione (errore di riproiezione), li elimino e rieffettuo l’ottimizzazione.
Lavoro solo con questi due filtri perché ho notato che anche gli altri valori si “sistemano” di conseguenza.
Uso valori di errore di riproiezione intorno al pixel (o di poco inferiori).
Questa è solo una indicazione perché la scelta deve essere legata alle accuratezze ricercate e alle dimensioni del pixel a terra.
Leggendo il forum di PhotoScan ho trovato alcune indicazioni secondo cui non bisogna eliminare più del 10-15% dei punti della nuvola sparsa, altrimenti si rischia una eccessiva riduzione ed un peggioramento dei risultati.
Con la costruzione della nuvola sparsa termina quel “pacchetto” di software chiamato SfM, che, come indica l’acronimo, ricostruisce la geometria dell’oggetto dal “movimento”. Abbiamo ottenuto infatti la nuvola sparsa, che descrive l’oggetto, e la posa delle prese fotografiche.
Nella fase di creazione della nuvola densa si utilizzano questi allineamenti per definire la posizione 3D pixel by pixel con gli algoritmi di Dense Image Matching.
Alla prossima!
Grazie a Paolo per il suo contributo che spero possa esserti utile.
Per dubbi o domande lo spazio per i commenti qui sotto è a tua disposizione!
A presto!
Paolo Corradeghini
Paolo Rossi, ingegnere e PhD in Ingegneria Industriale e del Territorio presso l’Ateneo di Modena e Reggio Emilia, attualmente lavora presso il Laboratorio di Geomatica del Dipartimento di Ingegneria “Enzo Ferrari”, dove si occupa di ricostruzione 3D da immagini.
Laboratorio di Geomatica
Dipartimento di ingegneria Enzo Ferrari, Università degli studi di Modena e Reggio Emilia
Via Pietro Vivarelli 10, Modena
Tel: 059 2056297
Cell: 3457054511
Email: paolo.rossi at unimore.it
Profilo Linkedin
Ho pubblicato un video sul canale You Tube dove parlo proprio dei punti di vincolo e dell’ottimizzazione degli allineamenti:
Lasciami un commento!
9 Comments
grazie per i tuoi professionali e preziosi suggerimenti, io ne faccio veramente tesoro, ed e’ apprezzabile quello che fai. da umile topografo di un paese della basilicata, io sono di avigliano in provincia di Potenza, mi sono avvicinato con tanta fatica al mondo dei droni gia da qualche anno , e non ti nego che ho avuto mille difficolta’ per capire i meccanismi , anche complessi relativi all’uso dei droni nel mondo della topografia. Molti u li usano e pubblicano veramente delle cose allucinanti, senza capire nulla di fotogrammetria e topografia. Caro ingegnere sono veramente contento e felice di trovare persone come lei che mettono a disposizione del pubblico notizie e suggerimenti acquisiti con tanti sacrifici , volonta’ e passione. . per ilo momento ti ringrazio e ti auguro una buona domenica.
Ciao Francesantonio,
grazie per il tuo commento.
Mi fa piacere condividere le mie esperienze di lavoro!
Creo che in questo modo ne traggano beneficio tutti quanti, io per primo che ho la possibilità di conoscere e fare rete con tante persone, tecnici e professionisti.
A presto e buona giornata!
Paolo
Salve Paolo,
risparmio i bit per i complimenti dato che sn scontati.
una domanda. con il mio drone ho volato su 16 ettari di campo coltivato a grano per stimare l’allettamento. il mio obiettivo non era una ricostruzione 3d ma la vista di insieme del campo. non avendo sistemi di precisione per determinare la posizione di gcp mi sn solo affidato al tag geografico delle immagini.
il risultato finale, come immagine, e soddisfacente, ho però notato che la nuvola di punti ha assunto la forma di una calotta sferica con una curvatura molto dolce ma comunque non corrispondente alla morfologia del terreno (assolutamente piatto) in questo caso la presenza di GCP avrebbe eliminato questo risultato inatteso? e come fare a distribuire dei GCP su 16 ettari di campo. immagino che uno per i 4 vertici che marcano il terreno sono pochi e metterne qualcuno in mezo è impossibile…
grazie per le tue considerazioni
michele
Ciao Michele.
Il risultato che hai ottenuto, o meglio gli errori sul risultato del tuo modello sono proprio dovuti alla mancanza di GCP che lavorano un po’ come se fossero delle punti che fermano il foglio sul tavolo.
A volte capita di non avere deformazioni evidenti ma accorgersi che un terreno pianeggiante viene in realtà modellato in discesa!
La disposizione sul terreno dei GCP (e anche dei CP ossia i punti di controllo) è tanto importante quanto la precisione del loro rilievo.
Andrebbero distribuiti omogeneamente nella planimetria e nell’altimetria (se hai dislivelli) e purtroppo quattro sono davvero un numero basso per avere accuratezze elevate.
Nel tuo caso, visto che non si tratta di un rilievo topografico potrei consigliarti di metterne una decina e oltre al perimetro dovresti cercare di metterne qualcuno anche nella zona centrale.
In questo modo il risultato sarà sicuramente migliore!
Ciao Michele e grazie del tuo commento!
Paolo
Paolo scusami non riesco a fare reply… o non so se andrà come risposta.
cmq come dici tu il problema si è la mancanza di gcp ma se per alcuni (quelli perimetrali) non è un problema rilevarli quelli interni del campo non è semplice. mi permetto di inserire un link sul mio G-drive per farti vedere come affronterei il problema. GCP in verde sono quelli possibili mentre quelli in rosso molto difficili da rilevare.
https://drive.google.com/open?id=15VRWRBC6QiX6ORM4Pn30Lc0qAwFiC1pc
ho pensato anche di stimarli con il dem messo a disposizione della regione o anche come indicato da te in un articolo stimarli con TCX…
grazie complimenti per i podcast
Ciao Michele, la tua risposta è arrivata perfettamente e ti ringrazio per la pazienza nell’aspettare la mia.
Ho visto i documenti che hai girato.
La posizione dei punti di appoggio è perfetta nella tua disposizione e, se te lo posso chiedere, come mai è difficile rilevare quelli interni?
Ci sono problemi di accesso in proprietà privata?
Per quanto riguarda la possibilità di stimare le coordinate dagli strumenti cartografici messi a disposizione della Regione è sicuramente possibile per un posizionamento di massima ma c’è il rischio concreto di inserire delle coordinate con precisioni sulla misura molto inferiori rispetto a quelle dei punti presi con strumenti topografici, vanificandone la misura e l’accuratezza generale del modello e del rilievo restituito.
Grazie per i complimenti per il podcast!
🙂
Ciao!
Paolo
grz paolo per la gentile risposta.
in effetti, sì, si tratta di stima e cmq il risultato ricercato non è il DEM ma il mosaico delle foto. sempre restando che i gCP sn necessari. le difficoltà di accesso non sn dovute alla proprietà, in quano è la stessa che mi chiede il servizio ma al fatto che per rilevare i punti interni bisogna farsi delle belle passeggiate dentro al campo di grano (16 ettari solo in foto ma 38 nel totale), cosa poco agevole e che comporterebbe dei danni… cosa che il proprietario vorrebbe evitare. altra questione è anche che per rilvare questi punti, dovrei appoggiarmi a un topografo/geometra che ne rilevi le coordinate esatte, dato che al momento l’acquisto di uno strumento adatto è fuori dal mio budget di attività che ha appena battuto il calcio di inizio e ho già dato fondo a tutte le riserve… ho valutato il noleggio ma con costi di cauzione pari al 50% del costo dello strumento + quota di nolo… l’affiancamento a un secondo professionista è l’unica soluzione…
grazie cmq per le tue considerazioni.
michele
Ciao Paolo, Innanzitutto I Miei Più Sinceri Complimenti Per I Contenuti Portati Nei Tui Articoli.
Sono Un Geometra/Topografo E Vorrei Esporti Il Mio Problema:
In Fase Di Esportazione Della Nuvola Di Punti Da Photoscan (File – Export Point) Mi Viene Richiesto In Che Sistema Di Coordinate Voglio Esportare La Nuvola, Io Vorrei Esportarla Nel Sistema Geografico Cui Sono Georeferenziati I Marker Che Ho Misurato In Campagna Con Sistema GNSS In Modalità RTK E Successivamente Inserito In Photoscan Ma Non Riesco A Farlo, Ho Provato Ad Esportare Spuntando “Local Coordinates” Ma Niente, Quando Vado Ad Importare Poi La Nuvola Su Un Altro Software Topografico Questa me la ritrovo non georeferenziata secondo le coordinate dei marker.
Come Posso Fare? Ti Ringrazio Anticipatamente Per L’aiuto.
Ciao Davide,
grazie per i tuoi complimenti.
Quando imposti un progetto in Metashape/Photoscan dovresti scegliere qual è il sistema di riferimento del progetto, quello delle foto e quello dei marker.
Ti consiglio di far sì che il riferimneto generale e quello dei marker coincidano.
Non è necessario ma è più rigoroso.
Dopo che hai fatto l’elaborazione e, soprattutto, aggiornato tutto quanto con le coordinate dei marker (ottimizzazione dell’allineamento) le coordinate dei punto dovrebbero essere calcolate conseguentemente.
Quando esporti i dati dovrebbero poi essere sistemati nel riferimento che hai scelto.
È piuttosto complicato aiutarti senza avere il progetto ed i dati sotto mano.
Spero comunque di averti dato degli spunti utili!
Ciao e a presto!
Paolo