Se hai ricevuto una nuvola di punti da un rilievo aerofotogrammetrico o laser scanner e la vuoi semplificare, in questo articolo ti spiego come si fa usando il software open source Cloud Compare
NUVOLE DI PUNTI
Una nuvola di punti è un insieme di punti nello spazio che riproduce tridimensionalmente un oggetto o un paesaggio.
Una nuvola di punti, o cloudpoints, è il risultato di un rilievo fotogrammetrico e dell’elaborazione con software Structure from Motion.
Anche un rilievo laser scanner restituisce in output una nuvola di punti.
UN PENSIERO SULLE NUVOLE DI PUNTI
Prima di trattare l’argomento di questo post, condivido una riflessione sulle nuvole di punti che avevo pubblicato qualche settimana fa su LinkedIN.
La nuvola di punti è il vero risultato di un rilievo aerofotogrammetrico o laser scanner!
La restituzione plano-altimetrica inserita nella cartografia regionale è importante.
Il modello tridimensionale texturizzato da ruotare è bello.
Il modello tridimensionale online da indagare con strumenti di misura è comodo.
Le foto aree sono utili per una visuale non comune.
Ma il vero valore sta nella nuvola di punti!
Sono tanti punti (spesso colorati) georeferenziati (o almeno lo dovrebbero essere!) nello spazio 3D.
Da qui vengono tutti gli output di prima (quasi tutti, le foto aeree no…) e qui ci sono tutte le informazioni topografiche sul sito rilevato.
Credo che la nuvola di punti dovrebbe essere consegnata al committente di un rilievo.
Io lo faccio.
La puoi importare in un CAD, ora in alcuni GIS, o la puoi lavorare con vari software per ricavare DSM, DTM, curve di livello, sezioni e profili.
Consegnare una nuvola di punti è un affare “win-win” tra topografo e committente.
Il tecnico non deve più assistere il cliente nell’estrazione dei dati (“fammi questa sezione“, “tirami un profilo“, …).
Il cliente accede a tutti i dati e li elabora con la sua sensibilità unica, estraendo le informazioni necessarie ai suoi scopi specifici.
CLOUD COMPARE
Cloud Compare è un software open source che nasce per confrontare nuvole di punti da rilievi laser scanner.
È stato poi implementato nel tempo con strumenti e plugin avanzati ed interessanti.
È un ottimo software che personalmente uso tantissimo per trattare i risultati dei rilievi aerofotogrammetrici da drone
Avevo scritto due articoli su come usarlo per ricavare delle sezioni da nuvole di punti.
Li trovi a questi link: una sezione da una nuvola di punti, sezioni con Cloud Compare.
Ed un articolo su come estrarre curve di livello da una nuvola di punti
SEMPLIFICARE UNA NUVOLA DI PUNTI
Non è raro ricevere una nuvola di punti da un rilievo fotogrammetrico che conti cinque, dieci o venti milioni di punti!
I punti sono vicinissimi uno all’altro, sono colorati e il modello tridimensionale ricostruito è davvero bello!
Il tuo computer però non la pensa allo stesso modo.
Se non hai tonnellate di RAM, processori da gara e schede video con pacchi di memoria dedicata potresti fare fatica a gestire file con così tante informazioni.
Se non fai fotogrammetria e rilievi laser scanner, ma sei un utilizzatore di questi rileivi, è probabile che il tuo computer abbia caratteristiche egrege per lavorare in CAD, GIS o Office ma fatichi un po’ di fronte ad un 3D, anche se non è renderizzato.
Ecco perchè potresti voler semplificare una nuvola di punti, alleggerendola togliendo un di punti dal totale.
Cloud Compare ti permette di farlo e di scegliere come.
IMPORTA E SELEZIONA LA NUVOLA DI PUNTI
Per prima cosa devi importare la nuvola di punti in Cloud Compare.
Poi la devi selezionare per attivare le funzioni di elaborazione.
Lo fai cliccando sull’oggetto “Cloud” che trovi nel pannello “DB Tree“, a sinistra nell’area di lavoro.
Una volta che l’hai selezionata, nella finestra “Properties” puoi leggere tutte le caratteristiche della nuvola, tra cui il numero totale di punti.
LA FUNZIONE SUBSAMPLE
Per semplificare una nuvola di punti devi scegleire la funzione Subsample (che si potrebbe tradurre con “sottocampiona“).
La trovi nel menù “Edit-Subsample” o cliccando sul pulsante della barra dei menù che vedi nell’immagine qui sotto.
Ti si aprirà una finestra da cui puoi scegliere come semplificare la nuvola di punti scegliendo tra tre opzioni: random, space e octree.
RANDOM SUBSAMPLING MODE
In modalità Random puoi selezionare il numero di punti finali della nuvola di punti alleggerita tramite slider (da muovere a destra o sinistra) o inserendo manualmente il numero di punti nel campo dedicato.
Cloud Compare semplificherà la nuvola in maniera casuale per arrivare al numero dii punti indicati.
In reltà l’algoritmo non lavora in modo del tutto casuale ma tiene un po’ conto della distribuzione spaziale dei punti per fornire un risultato sensato.
Se la procedura fosse del tutto aleatoria si rischierebbe teoricamente di avere porzioni non semplificate e buchi più evidenti dove l’algoritmo si è accanito…
Quello che succede però è che non vengono tenute in considerazione porzioni della nuvola dove la concentrazione di punti è maggiore per le caratteristiche dell’oggetto del rilievo: uno sperone roccioso ha una concentrazione di punti maggiore rispetto ad una platea in cemento armato così come il tetto di un fabbricato ha più punti di un campo da calcio…
SPACE SUBSAMPLING MODE
Un algoritmo piuttosto interessante da usare per semplificare una nuvola di punti è la modalità space.
Selezionando “Space” nel menù a tendina puoi selezionare la minima distanza che vuoi mantenere tra i punti della nuvola semplificata.
L’algoritmo di semplificazione elimina i punti dalla nuvola in modo che nessun punto rimasto sia più vicino a quelli adiacenti della distanza minima scelta.
Maggiore il valore spaziale selezionato e minore è il numero di punti che sarà mantenuto.
Devi sapere che Cloud Compare utilizza unità di misura implicite!
L’unità di misura dipende dall’esecuzione del rilievo.
Se hai rilevato in millimetri, 1 corrisponde ad un millimetro.
Se hai rilevato in metri, 10 sono dieci metri.
È importante saperlo perchè in questo modo puoi decidere con consapevolezza la minima distanza che deve essere mantenuta tra i punti della nuvola semplificata.
0.01 in un rilievo fatto in metri corrisponde ad 1 cm.
OCTREE SUBSAMPLING MODE
La modalità Octree permette di scegliere un livello di suddivisione dell’Octree al quale la nuvola verrà semplificata.
L’octree è una struttura particolarmente importante usata n Cloud Compare e rappresenta la partizione del volume occupato dall’oggetto tridimensionale in elementi cubici di dimensioni via via sempre più piccole.
Inizialmente si parte da otto macro-cubi per poi continuare dividendo ciascun cubo in altri quattro.
E così via fino al dettaglio…
Non è semplice né intuitivo capire il concetto di Octree.
Io mi confondo spesso.
Preferisco non andare oltre perchè non sarebbe di grande utilità per te.
Ti basti sapere che maggiore è il livello, minori sono le celle e maggiore è il numero di punti che sarà lasciato nel processo di alleggerimento della nuvola.
Personalmente, non uso mai questa opzione di subsampling.
LA NUVOLA DI PUNTI SEMPLIFICATA
Al termine della procedura di semplificazione Cloud Compare aggiunge una nuvola di punti semplificata nel pannello “DB Tree“.
Accendendo e spegnendo la nuvola originale e quella semplificata puoi vedere come ha lavorato l’algoritmo e, eventualmente, ripetere la procedura per togliere altri punti.
ESPORTARE LA NUVOLA DI PUNTI
Una volta soddisfatto del processo di semplificazione puoi esportare la nuvola di punti nel formato che preferisci.
Seleziona dal pannello DB Tree la nuvola e poi tramite il comando Salva con nome scegli tra i formati disponibili: dxf, las, laz, ply, shp, e57, asci, …
Spero che questo articolo ti sia utile per semplificare una nuvola di punti in modo da poterla gestire nel miglior modo all’interno dei software che usi abitualmente nel tuo lavoro e per i tuoi progetti.
Se hai dubbi o hai bisogno di chiarimenti specifici scrivili nei commenti qui sotto.
O non esitare a contattarmi nei modi in cui preferisci.
A presto!
Paolo Corradeghini
ISCRIVITI AL CANALE TELEGRAM DI 3DMETRICA!
Nel canale Telegram di 3DMetrica pubblico ogni giorno qualcosa che riguarda la topografia, i rilievi, gli strumenti, i software, le mappe, la geomatica, le tecniche ed i dietro le quinte del mio lavoro
Se ti va di seguirmi puoi iscriverti liberamente a questo link.
Se lo vuoi cercare direttamente sull’app, il nome da digitare è tredimetrica.
Mi farebbe davvero piacere averti tra gli iscritti!
Ho pubblicato un video sul canale You Tube che parla proprio di questa procedura:
E qui invece puoi ascoltare una puntata del podcast che parla poprio del software Cloud Compare
[spreaker type=player resource=”episode_id=17343343″ width=”100%” height=”200px” theme=”light” playlist=”false” playlist-continuous=”false” autoplay=”false” live-autoplay=”false” chapters-image=”true” episode-image-position=”right” hide-logo=”false” hide-likes=”false” hide-comments=”false” hide-sharing=”false” hide-download=”true”]
Lasciami un commento!
11 Comments
Sono una studentessa di ingegneria alle prese con una tesi magistrale di fotogrammetria e scansioni laser, materie di cui purtroppo non sono per nulla esperta. Volevo ringraziarla per il materiale che ha pubblicato sul suo blog, mi è stato davvero, davvero molto utile ed è spiegato in modo chiaro e semplice.
Avrei qualche dubbio sulla valutazione dell’accuratezza dei risultati e purtroppo non so a chi chiedere, ho cercato e letto un’infinità di materiale online ma non sono sicura delle mie conclusioni. se per caso fosse disposto a rispondere a qualche mia domanda a riguardo la prego di contattarmi per mail. Grazie ancora.
Grazie Chiara per il tuo messaggio.
Mi fa piacere, se posso, aiutarti.
Ciao,
trovo il tuo blog molto interessante e mi sto approcciando per la prima volta all’elaborazione di nuvole di punti da rilievo drone. Avrei un dubbio e ti chiedo, se possibile, un suggerimento. Ho una nuvola di punti di una scogliera e vorrei eliminare tutti i punti a mare, c’è qualche procedura che mi consigli? Tipo filtro RGB o di quota.
Grazie,
Salvatore
Salve , chiedo scusa per il disturbo.mi potreste dire come scalare in cloudcompare una nuvola di punti fatta con agisoft.grazie
Ciao Ferdinando,
puoi scalare una nuvola di punti tramite il comando “Edit – Multiply/Scale”
Nella finestra che ti aprirà devi scegliere il fattore di scala e, eventualmente, applicare fattori di scala diversi per i tre assi: x, y e z.
Spero che tu ci riesca senza difficoltà.
Ciao!
Paolo
Buongiorno, sono totalmente ignorante in materia. Volevo sapere questo cortesemente: se applicassi un rilievo di una nuvola di punti in una città riesco a discriminare strutture poste a quote differenti tra loro di pochi cm? Esempio: riesco a discriminare quota marciapiede, quota strada, quota tombini, ecc.? Grazie mille
Ciao Nicola,
ti rispondo solo ora.
Grazie davvero per la pazienza nell’attesa!
Il risultato di un rilievo fotogrammetrico dipende da due fattori importanti:
1) la risoluzione a terra delle immagini (che si traduce in un fattore che si chiama GSD – Ground Sampling Distance);
2) la qualità e la precisione delle misure topografiche che si prendono a terra per scalare, orientare e georeferenziare correttamente il modello 3D che ne risulta.
Se le foto che si scattano non hanno sufficienti dettagli potrebbe non essere così semplice distinguere la parte superiore di un marciapiede dalla strada, specialmente vicino al bordo verticale dello stesso marciapiede.
Più le foto sono dettagliate e meglio si distinguono gli elementi nel modello 3D.
Un maggior dettaglio si ottiene scattando foto più ravvicinate oppure usando fotocamere con sensori più grandi e performanti (in termini di risoluzione).
Le misure topografiche invece hanno un ruolo importante per rendere un modello 3D corretto geometricamente, dimensionalmente e posizionato nel posto “giusto” in un sistema di riferimento di destinazione.
Se non si prendono misure a terra non si può parlare di topografia.
Se si prendono misure con precisioni scarse (30-40 cm) non si riescono a discriminare con sicurezza elementi che nella realtà sono a pochi cm.
Per esperienza diretta è comunque difficile riuscire a distinguere elementi che sono a meno di pochi centimetri.
Valori medi dell’accuratezza di una restituzione fotogrammetrica sono dell’ordine di 3-7 cm.
Non esiste quindi una risposta univoca alla tua domanda ma è possibile comunque lavorare in fase di acquisizione per riprodurre in elaborazione un modello 3D molto dettagliato e permettere quindi la discriminazione di quota stradal, quota pozzetto, quota marciapiede calpestabile, ecc.
Spero di aver risposto alla tua domanda.
Per altri dubbi non esitare a contattarmi, prometto che impiegherò meno tempo nella risposta.
Grazie ancora per la pazienza!
Ciao.
Paolo
Ciao Paolo, come sempre, complimenti per le tue esposizioni. Mi preme di chiederti se in cc esiste la possibilità importando una nuvola da rilievo lidar, di discriminare il terreno da altre cose come per esempio la vegetazione. Grazie Filippo
Ciao Filippo, grazie del commento.
Cloud Compare non ti dà la possibilità di fare una vera e propria classificazione di nuvole di punti, discriminando terreno, vegetazione, edifici, ecc…
Ha un algoritmo (CSF Filter) che ha lo scopo di distinguere il terreno dal “non terreno”.
Ho scritto un articolo sulla pulizia delle nuvole di punti con Cloud Compare, lo trovi qui: http://3dmetrica.it/pulire-una-nuvola-di-punti-in-cloud-compare/
Per classificare le nuvole di punti potresti provare a usare software specifici come LiDAR360, LupoScan, …
Funzionano piuttosto bene, anche se non sono certo progetti open source come Cloud Compare.
Ciao Filippo!
Buongiorno,
intanto grazie per la spiegazione chiara e precisa.
Io e una mia collega vorremmo provare ad usare Cloud Compare per rimuovere della vegetazione da un muro. Abbiamo provveduto ad eliminare dalla nuvola di punti le aree che non ci interessavano ma stiamo avendo difficoltà nel capire come procedere con il riempimento dei “buchi”. C’è la possibilità di interpolare con dei punti limitrofi all’area tagliata?
Grazie per la disponibilità
Cari Saluti
Ciao Anna Laura,
ricostruire una nuvola di punti nelle aree “bucate” non è un’operazione comune, né molto rigorosa.
🙂
C’è la possibilità di farlo, passando attraverso la generazione di un DEM, un modello digitale di elevazione.
Dopo che hai pulito la nuvola puoi rasterizzarla, scegliendo passo del DEM e l’opzione di “interpolazione” dei buchi.
A partire dal DEM che Cloud Compare genera puoi creare una nuvola formata da punti, che corrispondono al centro di ciascun pixel del DEM.
Devo dirti però che questo approccio, oltre al fatto di togliere parecchie informazioni alla nuvola (che viene appiattita sulla base del DEM), non funziona molto bene per elementi verticali (come per il paramento del muro), proprio perchè sfrutta la nautra dei modelli digitali di elevazione (grandi lenzuoli pixelati).
Potresti provare a lavorare sulla matrice di trasformazione per ruotare la nuvola e fare in modo che il piano verticale diventi il nuovo piano XY di un sistema cartesiano 3D.
A questo punto puoi generare un DEM che dovrebbe riuscire a riempire meglio i buchi lasciati dalla vegetazione.
Fatto questo puoi ribaltare di nuovo la nuvola di punti (applichi la trasformazione inversa che hai fatto in precedenza).
Mi rendo conto che non è una procedure proprio immediata e lineare ma, di nuovo, interpolare i punti di una nuvola non è un’operazione abituale su questo tipo di dati.
Spero di avervi dato comunque delle informazioni utili.
Per altri dubbi non esitate a contattarmi.
A presto!
Paolo