Modifier le nuage de points LiDAR pour éliminer le bruit / les valeurs aberrantes présentes sous et au-dessus du sol?

10

J'ai des données LiDAR "sales" contenant les premier et dernier retours et aussi inévitablement des erreurs sous et au-dessus du niveau de la surface. (capture d'écran)

entrez la description de l'image ici

J'ai SAGA, QGIS, ESRI et FME à portée de main, mais aucune vraie méthode. Quel serait un bon flux de travail pour nettoyer ces données? Existe-t-il une méthode entièrement automatisée ou est-ce que je supprimerais en quelque sorte manuellement?

Robert Buckley
la source
Vos données de nuage de points ont-elles un niveau de bruit faible / élevé (classes 7 et 8 de las specs 1.4 R6)?
Aaron
Qu'avez-vous essayé avec l'un de ces produits logiciels et où vous êtes-vous retrouvé coincé? Vous semblez vouloir discuter des options plutôt que de poser une question ciblée. Il est toujours bon de discuter des options dans la salle de chat SIG.
PolyGeo
1
Voter pour rouvrir, car le modérateur confond les questions qui demandent un logiciel avec des questions qui demandent des méthodes / façons de faire quelque chose. Les réponses qui ne répertorient que les logiciels ne sont pas de vraies réponses dans ce contexte. J'explique mieux mon POV dans gis.meta.stackexchange.com/questions/4380/… .
Andre Silva
1
De plus, il semble que la clôture unilatérale «trop large» ait été utilisée de manière excessive: gis.meta.stackexchange.com/questions/4816/… . Je pense que le cas s'applique ici. Ce qui rend la question singulière, c'est d'avoir tous les types de valeurs aberrantes dans le nuage de points.
Andre Silva

Réponses:

9

Vous semblez avoir des valeurs aberrantes:

  • i) sous la surface du sol;
  • ii) au-dessus de la surface du sol et verticalement, entre autres caractéristiques réelles au-dessus du sol;
  • iii) des points au-dessus du sol avec une hauteur supérieure à tous les objets d'intérêt, par exemple ceux causés par les nuages ​​ou les oiseaux (cela n'est pas illustré sur la photo, mais je suppose que cela pourrait également être le cas).

Pour «i», l'option consiste à utiliser un algorithme de filtre au sol qui peut prendre en compte les «erreurs négatives» pour obtenir un nuage de points au sol LiDAR propre. Voir l'algorithme Multiscale Curvature Classification (MCC) d'Evans et Hudak (2007). Il est dit à la page 4:

Les erreurs négatives sont courantes dans les données LiDAR, qui peuvent être causées par la diffusion des photons dans une impulsion laser renvoyée. La diffusion allonge le temps nécessaire pour qu'une impulsion laser émise revienne au capteur de l'avion, gonflant le calcul de la distance parcourue, provoquant ainsi une erreur de mesure où l'élévation de la surface est enregistrée à tort comme étant inférieure aux mesures environnantes. Il convient de noter que les approches de classification de courbure peuvent potentiellement supprimer les retours valides entourant les erreurs négatives, ce qui peut étendre l'artefact de bord autour d'une erreur négative pour créer un effet distinct de «cratère de bombe». Pour remédier aux erreurs négatives, Haugerud et Harding ont suggéré de définir le paramètre de tolérance de courbure à quatre fois la taille de cellule interpolée et de sélectionner des retours dépassant ce seuil de courbure négative. Cependant, il convient de noter que dans certaines circonstances, les retours qui semblent être des erreurs négatives peuvent en fait être des retours valides (par exemple, des gouffres). Par conséquent, la suggestion précédente de supprimer les éventuelles erreurs négatives peut être implémentée comme une dernière boucle de modèle facultative à utiliser à la discrétion de l'utilisateur si nécessaire.

Ci-dessous, il y a un article avec un exemple sur l'utilisation de MCC-LIDAR:

Une fois que vous avez un nuage de points au sol LiDAR précis pour faire un MNT précis, il est possible de normaliser le nuage de points et d'exclure les points qui sont sous la surface du DEM (ceux avec des valeurs négatives). En utilisant la même approche, il est également possible de traiter le point numéro «iii» en supprimant les points au-dessus d'un certain seuil fixe. Voir par exemple:

Ensuite, il nous laisse avec «ii», qui est adressé par la réponselasnoise d'AlecZ recommandant de LAStools. Il gérera également «iii», et peut-être aussi une partie de «i» (LAStools nécessite cependant une licence). D'autres outils spécifiquement créés pour vérifier / supprimer les valeurs aberrantes ont été cités ici: l' filters.outlieroutil PDAL dans la réponse de Charlie Parr qui a une explication détaillée sur le fonctionnement de l'outil, et avec l'avantage PDAL est un logiciel gratuit.

Ensuite, ce qui reste du processus automatisé (le cas échéant) peut être supprimé manuellement. Par exemple:


Evans, Jeffrey S .; Hudak, Andrew T. 2007. Un algorithme de courbure à plusieurs échelles pour classer le LiDAR à retour discret dans les environnements forestiers . Transactions IEEE sur les géosciences et la télédétection. 45 (4): 1029-1038.

Andre Silva
la source
3

Je recommanderai PDAL la bibliothèque d'abstraction de données ponctuelles. J'ai eu un bon succès en utilisant PDAL pour un problème de filtrage similaire. J'aime PDAL car il est open source, fournit un support Python et me permet de reproduire facilement le traitement et de garder une trace de mes paramètres de filtrage. Je l'aime aussi parce qu'il a des «pipelines» où vous pouvez enchaîner plusieurs étapes (par exemple recadrer puis filtrer puis exporter) et les exécuter en même temps. Notez que si vous avez de très gros nuages ​​de points, PDAL peut ne pas être aussi rapide que d'autres solutions (LASTools, QTM, etc.).

Vous pouvez résoudre le problème des points périphériques avec un pipeline PDAL similaire au suivant:

{
"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"
    }
    ]
}

Ce pipeline lit dans un LAS, le recadre dans une étendue UTM spécifiée, puis effectue un filtre qui marque tous les points périphériques, puis effectue un deuxième filtre qui conserve uniquement les points non périphériques (c.-à-d. Le drapeau Classification! = 7), puis exporte vers un GeoTIFF d'une résolution de 1 m. Le filtre statistique effectue un calcul de la distance moyenne du plus proche voisin pour tester si un point est «trop loin» de ses voisins et donc une valeur aberrante.

De la documentation :

entrez la description de l'image ici

Charlie Parr
la source
1
@AndreSilva édité! il demande essentiellement quelle est la distance `` normale '' pour qu'un point soit formé par ses voisins (mean_k), et si la distance pour un point est trop éloignée (supérieure à (multiplicateur) * sigma au-dessus de la distance moyenne), elle est signalée comme une valeur aberrante
Charlie Parr
1

Étant donné que OP ne limitait pas les solutions à l'open-source, je suggérerais Quick Terrain Modeler ( QT Modeler ). Il nécessite une licence. Chargez le nuage de points dans QT, et vous l'inclinez essentiellement pour obtenir la vue de profil que vous souhaitez, élastiques le cluster que vous souhaitez supprimer et appuyez simplement sur supprimer.

auslander
la source
1

J'ai eu de la chance en utilisant simplement une variance focale sur un raster interpolé. Vous affectez ensuite les valeurs de variance à vos points et utilisez un seuil pour supprimer les variances localement élevées, représentant des écarts importants par rapport à l'estimation du noyau local.

Vous devez vous assurer que la résolution de la surface interpolée est un grain suffisamment petit pour qu'elle capture la variation locale au niveau d'un ou de plusieurs points. La taille du noyau aura également un effet, mais pour les valeurs aberrantes simples, une fenêtre 3x3 devrait suffire. Vous pouvez perdre quelques points supplémentaires, mais avec lidar, vous avez suffisamment de données à épargner.

Jeffrey Evans
la source
1

Lastools fournit exactement ce dont vous avez besoin - des scripts automatisés qui supprimeront tous ces points pour vous. Il y a un coût de licence pour cela, cependant, mais si c'est un processus que vous voulez faire rapidement comme tâche régulière, utiliser le script lasnoise de leur ensemble d'outils est une option parfaite.

Comme l'a noté @Andre Silva, ArcGIS dispose d'un jeu d'outils Las, que vous pouvez utiliser après avoir exécuté l'outil de géotraitement Créer un jeu de données LAS. De là, vous pouvez entrer manuellement pour reclasser ou supprimer ces points de bruit. L'inconvénient est qu'il n'est pas un processus aussi intuitif ou efficace que QT Modeler (suggéré par @auslander), probablement le meilleur programme pour visualiser / analyser / manipuler manuellement les fichiers las, et avec un coût de licence également. ArcMap limitera le nombre de points visibles lors de la modification de votre nuage de points, ce qui signifie que vous devrez probablement zoomer sur les zones bruyantes, les supprimer ou les reclasser, puis vous déplacer dans le cadre d'un processus de nettoyage manuel. Mais cela fera le travail.

AlecZ
la source
1

Comme l' a dit Andre Silva , MCC-LIDAR est une bonne option pour extraire les points au sol, mais d'après mon expérience, cela aura du mal si vous avez un très gros nuage de points (500 millions de points ou même moins). En d'autres termes, il renverra une erreur et n'exécutera pas l'algorithme, même si vous modifiez les paramètres (paramètres d'échelle et de courbure). De plus, d'après mon expérience, il conserve certaines des "erreurs négatives" dans les données.

Mon alternative pour cela est d'inverser le nuage de points (les points en dessous du sol vont monter et le sol au-dessus va descendre). Pour l'obtenir, je charge les données dans R et j'inverse la hauteur, puis je lance MCC-LIDAR et je réinverse les données. Vous pourriez probablement le faire dans QGIS ou ArcGIS mais selon la taille de votre ensemble de données, cela pourrait prendre un certain temps.

L'outil PDAL sol est également une bonne option car il fonctionne mieux avec de plus grands ensembles de données , mais, encore une fois, certains des points beugler sol sera toujours conservé. L'inversion de l'ensemble de données aidera à nouveau à résoudre ce problème.

Pour les points au-dessus du sol, ma meilleure approche est un nettoyage manuel et le meilleur outil open source que j'ai trouvé pour le faire est dans CloudCompare. Vous choisirez Segmentdans le menu de la barre supérieure et vous pourrez soit supprimer les points sélectionnés, soit tous les autres. J'ai déjà utilisé LAStools ( lasviewoutil) pour cela, mais le fonctionnement de l'interface 3D n'est pas aussi convivial.

André
la source
Approche intéressante inversant le nuage de points pour éliminer les erreurs négatives. A-t-il été facile de charger un nuage de points de 500 millions de points dans R?
Andre Silva
Cela peut prendre quelques minutes. Je télécharge généralement à partir d'un fichier ASCII en utilisant fread du package de développement data.table où je peux jouer avec le nombre de threads à utiliser.
Andre
1

Je suis un support technique de GreenValley International, l' outil de suppression des valeurs aberrantes de notre logiciel phare LiDAR360 peut être utilisé pour supprimer ces erreurs autant que possible et donc améliorer la qualité des données.

L'algorithme recherchera d'abord les points voisins de chaque point dans un voisinage défini par l'utilisateur et calculera la distance moyenne entre le point et ses points voisins. Ensuite, la moyenne et l'écart type de ces distances moyennes pour tous les points sont calculés. Si la distance moyenne d'un point à ses voisins est supérieure à la distance maximale (distance maximale = moyenne + n * écart type, où n est un nombre multiple défini par l'utilisateur), il sera considéré comme une valeur aberrante et sera supprimé de l'original nuage de points.

entrez la description de l'image ici

chenlh
la source
-1

En tant qu'option Open Source, 3D Forest a de bons outils pour filtrer automatiquement, ainsi que des outils manuels pour nettoyer les nuages ​​de points. Vous devrez peut-être essayer avec différents paramètres de filtre pour obtenir le résultat dont vous avez besoin. Même s'il est orienté vers les nuages ​​de points de la forêt, de nombreux outils sont utiles dans n'importe quel nuage de points.

A_NeriWinter
la source