Extraction de débris ligneux grossiers

8

J'ai créé un nuage de points très élevé et dense de certaines parcelles forestières à l'aide d'un scanner laser terrestre. Puis enlevé les points au-dessus de 1,3 mètre pour voir les débris ligneux grossiers (arbres morts tombés). Ci-joint le DEM ombré de la parcelle échantillon avec des débris ligneux grossiers à l'intérieur de l'ellipse rouge.

entrez la description de l'image ici

La parcelle se compose également de petits arbres, d'une partie des tiges d'arbres de moins de 1,3 mètre, de sol et de petites roches. De l'image, les débris ligneux sont perceptibles par leur forme continue. Je cherche l'outil pour extraire les débris ligneux de cette image. Arcmap, Envi ou tout autre logiciel open source serait parfait, et j'ai également des connaissances de base en Python si le codage est utile.

Sher
la source
2
Votre LiDAR est-il classé? Une mise à la terre / non automatique automatique aiderait ici. Les algorithmes automatiques devraient classer vos débris tombés en tant que bâtiments (au-dessus du sol sans points de sol en dessous), vous pouvez essayer de convertir votre classe de bâtiment (ou classe de légumes bas / moyen) en TIN avec Esri et convertir le TIN en triangle resources.arcgis.com /en/help/main/10.1/index.html#//… , supprimez les triangles à côtés très longs (python requis), dissolvez et ignorez les petits. Toutes ces mesures nécessiteront de l'expérimentation et probablement une vérification manuelle pour supprimer les aberrations.
Michael Stimson
Merci @ Michael Stimson. J'ai classé le sol et la végétation, mais je vais essayer de classer les bâtiments pour voir s'ils peuvent détecter les débris ligneux. La méthode TIN sonne comme un travail plus manuel qui peut ne pas être idéal pour mon cas car j'ai 96 parcelles de 1 hectare.
Sher
L'étamage et la décimation devraient réduire le nombre de zones à inspecter en omettant tout ce qui est trop petit pour être considéré comme contigu mais d'après l'expérience, il y aura un petit nombre de zones qui semblent contiguës mais ne le sont pas .. la contiguïté est facilement détectée par l'œil mais pas si facile à détecter par algorithme; l'apprentissage automatique peut être utile, mais je n'ai aucune expérience dans ce domaine pour vous persuader / dissuader de cette ligne de conduite. Personnellement, je ne compterais pas uniquement sur un processus logiciel sans vérifier les résultats.
Michael Stimson
1
Je ne sais pas si cela a déjà été fait. J'essaierais d'utiliser un réseau entièrement convolutif qui effectue la segmentation d'image comme un U-net: deeplearning.net/tutorial/unet.html .
Aaron
1
Pouvez-vous publier une image d'exemple sans l'ellipse rouge?
BERA

Réponses:

1

Pour ajouter à ce qui a été dit par Michael, je recommanderais de calculer la rugosité de surface de votre DEM en utilisant l'indice Rumple ou une métrique similaire. Vous pouvez également effectuer l'estimation de la rugosité sur le nuage de points lui-même tant que les points au sol ont été classés.

Vous pourrez peut-être classer le type de débris qui vous intéresse en fonction des seules valeurs de rugosité, mais vous pourrez également comparer la comparaison de la rugosité du DEM et du nuage de points. Cela peut vous aider à vérifier la validité de votre DEM ainsi que l'emplacement de vos gros débris ligneux.

Voici un lien vers un package qui peut calculer l'index rumple dans R: https://rdrr.io/cran/lidR/man/rumple_index.html

Et voici un programme python qui fait quelque chose de similaire bien que statistiquement différent: https://github.com/BodoBookhagen/PC_geomorph_roughness

ÉDITER:

Pour visualiser la rugosité de votre DEM en tant que couche raster, utilisez la fonction gdal gdaldem pour créer des cartes de rugosité et de robustesse du terrain.

gdaldem roughness path/to/dem.tif path/to/output.tif [-compute_edges] 

gdaldem TRI path/to/dem.tif path/to/output.tif [-compute_edges] 

Kartograaf
la source
Merci @Gory G. Fonction d'index Rumple dans R ne renvoyant qu'un seul index pour toute la parcelle, je m'attendais à une carte de grille d'indice de rugosité. las <- readLAS('a-4.las') chm = grid_canopy(las,0.1,p2r()) roughness = rumple_index(chm)Pourriez-vous s'il vous plaît laissez-moi savoir comment changer un code pour faire une carte d'index de rugosité?
Sher
1
@Sher Pour créer la carte de rugosité, vous pouvez utiliser GDAL. Il existe une fonction appelée "gdaldem" qui le fera pour vous dans une seule ligne de code. Vous pouvez également créer un raster d'indice de rugosité de terrain (TRI) en utilisant votre DEM comme entrée. Je vais ajouter le code sur ma réponse ci-dessus.
Kartograaf