Modifica della nuvola di punti LiDAR per rimuovere il rumore / valori anomali presenti sotto e sopra il suolo?


10

Ho dati "sporchi" su LiDAR contenenti i primi e gli ultimi ritorni e anche inevitabilmente errori sotto e sopra il livello della superficie. (immagine dello schermo)

inserisci qui la descrizione dell'immagine

Ho a portata di mano SAGA, QGIS, ESRI e FME, ma nessun metodo reale. Quale sarebbe un buon flusso di lavoro per pulire questi dati? Esiste un metodo completamente automatizzato o dovrei in qualche modo eliminarlo manualmente?


I dati della nuvola di punti sono classificati a basso / alto rumore (classi 7 e 8 secondo le specifiche 1.4 R6)?
Aaron

Cosa hai provato con uno di quei prodotti software e dove ti sei bloccato? Sembra che tu voglia discutere delle opzioni piuttosto che porre una domanda mirata. Discutere le opzioni va sempre bene nella chat room GIS.
PolyGeo

1
Votare per riaprire, poiché il moderatore sbaglia domande che richiedono software con domande che richiedono metodi / modi per fare qualcosa. Le risposte che elencano solo i software non sono risposte reali in questo contesto. Spiego meglio il mio POV in gis.meta.stackexchange.com/questions/4380/… .
Andre Silva,

1
Inoltre, sembra che la chiusura unilaterale "troppo ampia" sia stata utilizzata eccessivamente: gis.meta.stackexchange.com/questions/4816/… . Penso che il caso si applichi qui. Ciò che rende singolare la domanda è avere tutti i tipi di valori anomali nella nuvola di punti.
Andre Silva,

Risposte:


9

Sembra che tu abbia degli outlier:

  • i) sotto la superficie del terreno;
  • ii) sopra la superficie del suolo e verticalmente tra le altre caratteristiche reali del suolo;
  • iii) punti fuori terra con altezza maggiore di tutti gli oggetti di interesse, ad esempio quelli causati da nuvole o uccelli (questo non è mostrato nella figura, ma suppongo che potrebbe anche essere il caso).

Per "i", l'opzione è quella di utilizzare un algoritmo di filtro di terra che può tenere conto degli "errori negativi" per ottenere una nuvola di punti di terra LiDAR pulita. Vedi l'algoritmo Multiscale Curvature Classification (MCC) di Evans e Hudak (2007). Si dice a pagina 4:

Errori negativi sono un evento comune nei dati LiDAR, che può essere causato dalla dispersione dei fotoni in un impulso laser restituito. Lo scattering allunga il tempo per un impulso laser emesso per tornare al sensore dell'aeromobile, gonfiando il calcolo della distanza percorsa, causando quindi un errore di misurazione in cui l'altitudine della superficie viene erroneamente registrata come al di sotto delle misurazioni circostanti. Va notato che gli approcci alla classificazione della curvatura possono potenzialmente rimuovere ritorni validi attorno agli errori negativi, che possono espandere l'artefatto del bordo attorno a un errore negativo per creare un distinto effetto "cratere bomba". Per ovviare agli errori negativi, Haugerud e Harding hanno suggerito di impostare il parametro di tolleranza della curvatura su quattro volte la dimensione della cella interpolata e di selezionare i rendimenti che superano questa soglia di curvatura negativa. Tuttavia, va notato che in determinate circostanze, i rendimenti che sembrano essere errori errati possono in effetti essere rendimenti validi (ad esempio, doline). Pertanto, il precedente suggerimento di rimuovere potenziali errori negativi può essere implementato come un ultimo modello opzionale da utilizzare a discrezione dell'utente, se necessario.

Di seguito è riportato un post con un esempio sull'uso di MCC-LIDAR:

Una volta che hai una nuvola di punti di terra LiDAR accurata per creare un DEM accurato, è possibile normalizzare la nuvola di punti ed escludere i punti che si trovano sotto la superficie del DEM (quelli con valori negativi). Utilizzando lo stesso approccio, è anche possibile indirizzare il numero punto 'iii' rimuovendo i punti al di sopra di una soglia fissa. Vedi, ad esempio:

Quindi, ci lascia con 'ii', che viene affrontato dalla risposta di AlecZ che raccomanda lasnoiseda LAStools. Gestirà anche 'iii', e forse anche parte di 'i' (tuttavia LAStools richiede una licenza). Altri strumenti appositamente creati per controllare / rimuovere i valori anomali sono stati citati qui: lo filters.outlierstrumento PDAL nella risposta di Charlie Parr che ha una spiegazione dettagliata su come funziona lo strumento e con il vantaggio che PDAL è un software gratuito.

Quindi, ciò che resta del processo automatizzato (se presente un valore anomalo) può essere rimosso manualmente. Per esempio:


Evans, Jeffrey S .; Hudak, Andrew T. 2007. Un algoritmo di curvatura multiscala per classificare LiDAR a ritorno discreto in ambienti boschivi . Transazioni IEEE su geoscienza e telerilevamento. 45 (4): 1029-1038.


3

Consiglierò PDAL la libreria di astrazione dei dati puntuali. Ho avuto un buon successo usando PDAL per un problema di filtro simile. Mi piace PDAL perché è open source, fornisce supporto Python e mi facilita la riproduzione dell'elaborazione e il monitoraggio dei miei parametri di filtro. Mi piace anche perché ha "condutture" in cui è possibile concatenare più passaggi (ad esempio ritagliare quindi filtrare quindi esportare) ed eseguirli contemporaneamente. Nota che se hai nuvole di punti davvero grandi PDAL potrebbe non essere veloce come alcune altre soluzioni (LASTools, QTM, ecc.).

È possibile affrontare il problema dei punti periferici con una pipeline PDAL simile alla seguente:

{
"pipeline": [
    "input_utm.las",
    {
        "type":"filters.crop",
        "bounds":"([401900,415650],[7609100,7620200])"
    },
    {
        "type":"filters.outlier",
        "method":"statistical",
        "mean_k":12,
        "multiplier":2.0
    },
    {
        "type":"filters.range",
        "limits":"Classification![7:7]"
    },
    {
      "filename":"output.tif",
      "resolution":1.0,
      "output_type":"mean",
      "radius":3.0,
      "bounds":"([401900,415650],[7609100,7620200])",
      "type": "writers.gdal"
    }
    ]
}

Questa pipeline legge in un LAS, lo ritaglia nella misura UTM specificata, quindi esegue un filtro che contrassegna tutti i punti periferici, quindi esegue un secondo filtro che conserva solo punti non periferici (ovvero il flag di classificazione! = 7), quindi esporta in una risoluzione GeoTIFF da 1 m. Il filtro statistico sta eseguendo un calcolo della distanza media del vicino più vicino per verificare se un punto è 'troppo lontano' dai suoi vicini e quindi un valore anomalo.

Dalla documentazione :

inserisci qui la descrizione dell'immagine


1
@AndreSilva modificato! essenzialmente chiede quale sia una distanza "normale" perché un punto sia formato dai suoi vicini (mean_k), e se la distanza per un punto è troppo lontana (maggiore di (moltiplicatore) * sigma sopra la distanza media) allora è contrassegnato come un outlier
Charlie Parr

1

Poiché OP non ha limitato le soluzioni all'open source, suggerirei Quick Terrain Modeler ( QT Modeler ). Richiede una licenza. Carica la nuvola di punti in QT e la inclini essenzialmente per ottenere la vista del profilo che desideri, elastico il cluster che desideri rimuovere e premi Elimina.


1

Ho avuto fortuna semplicemente usando una varianza focale su un raster interpolato. Quindi assegnare i valori di varianza ai punti e utilizzare una soglia per rimuovere varianze localmente elevate, che rappresentano grandi scostamenti dalla stima del kernel locale.

Devi assicurarti che la risoluzione della superficie interpolata sia una grana abbastanza piccola da catturare la variazione locale a livello di punto (i). Anche la dimensione del kernel avrà un effetto, ma per i singoli outlier dovrebbe essere sufficiente una finestra 3x3. Potresti perdere qualche punto in più, ma con lidar hai a disposizione molti dati di riserva.


1

Lastools fornisce esattamente ciò di cui hai bisogno: script automatici che rimuoveranno tutti questi punti per te. Tuttavia, ciò comporta un costo di licenza, ma se si tratta di un processo che si desidera eseguire rapidamente come attività normale, utilizzare lo script lasnoise dal loro set di strumenti è un'opzione perfetta.

Come notato da @Andre Silva, ArcGIS ha un set di strumenti las, che è possibile utilizzare dopo aver eseguito lo strumento di geoprocessing Crea set di dati LAS. Da lì, puoi accedere manualmente per riclassificare o eliminare questi punti di disturbo. Lo svantaggio è che non è un processo così intuitivo o efficace come QT Modeler (suggerito da @auslander), probabilmente il miglior programma per visualizzare / analizzare / manipolare manualmente i file las e con un costo di licenza. ArcMap limiterà il numero di punti visibili durante la modifica della nuvola di punti, il che significa che probabilmente dovrai ingrandire le aree con rumore, rimuoverle o riclassificarle, quindi spostarti come parte di un processo di pulizia manuale. Ma questo porterà a termine il lavoro.


1

Come ha detto Andre Silva , MCC-LIDAR è una buona opzione per estrarre i punti di base, ma dalla mia esperienza, sarà difficile se si dispone di una nuvola di punti molto grande (500 milioni di punti o anche meno). In altre parole, restituirà un errore e non eseguirà l'algoritmo, anche se si modificano le impostazioni (parametri di scala e curvatura). Inoltre, dalla mia esperienza, mantiene alcuni degli "errori negativi" nei dati.

La mia alternativa è quella di invertire la nuvola di punti (i punti sottoterra saliranno e il suolo scenderà). Per ottenere ciò, carico i dati in R e inverto l'altezza, quindi eseguo MCC-LIDAR e reinvertisco i dati. Probabilmente potresti farlo in QGIS o ArcGIS ma a seconda della dimensione del tuo set di dati, potrebbe richiedere del tempo.

Lo strumento PDAL terra è anche una buona opzione in quanto funziona meglio con set di dati più grandi, ma, ancora una volta, alcuni dei punti muggito terra sarà ancora mantenuto. L'inversione del set di dati aiuterà nuovamente a risolvere questo problema.

Per i punti fuori terra, il mio approccio migliore è una pulizia manuale e il miglior strumento open source che ho trovato per farlo è all'interno di CloudCompare. Sceglierai Segmentnel menu della barra in alto e potrai rimuovere i punti selezionati o tutti gli altri. Ho usato LAStools prima ( lasviewstrumento) per questo, ma il modo in cui funziona l'interfaccia 3D non è così facile da usare.


Approccio interessante invertendo la nuvola di punti per rimuovere gli errori negativi. È stato facile caricare una nuvola di punti di 500 milioni di punti in R?
Andre Silva,

Potrebbero volerci un paio di minuti. Di solito carico da un file ASCII usando fread dal pacchetto di sviluppo data.table dove posso giocare con il numero di thread da usare.
Andre

1

Sono un supporto tecnico di GreenValley International, lo strumento di rimozione anomala nel nostro software di punta LiDAR360 può essere utilizzato per rimuovere questi errori il più possibile e quindi migliorare la qualità dei dati.

L'algoritmo cercherà innanzitutto i punti vicini di ciascun punto all'interno di un quartiere definito dall'utente e calcolerà la distanza media dal punto ai punti vicini. Quindi, vengono calcolate la deviazione media e standard di queste distanze medie per tutti i punti. Se la distanza media di un punto dai vicini è maggiore della distanza massima (distanza massima = media + n * deviazione standard, dove n è un numero multiplo definito dall'utente), verrà considerato un valore anomalo e verrà rimosso dall'originale nuvola di punti.

inserisci qui la descrizione dell'immagine


-1

Come opzione Open Source, 3D Forest ha alcuni simpatici strumenti per filtrare automaticamente, oltre a strumenti manuali per pulire le nuvole di punti. Potrebbe essere necessario provare con diversi parametri di filtro per ottenere il risultato desiderato. Anche se è orientato alle nuvole di punti della foresta, molti strumenti sono utili in qualsiasi nuvola di punti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.