QGis pour LIDAR:modèle numérique de terrain (MNT) avec CloudCompare.

Dans cet article vous trouverez la définition d’un modèle numérique de terrain et, pas à pas, comment créer un MNT à partir d’un nuage LIDAR non classé et classé, avec CloudCompare et QGis.

Tutoriel Traitement des données LIDAR HD avec QGis

1- Les données LIDAR dans QGis 3.32

2- Télécharger les données LIDAR HD de l’IGN et les charger dans QGis

3-Les outils pour les données LIDAR dans QGis 3.32

4-Coloriser un nuage de points à partir d’une orthophoto avec CloudCompare

5-Coloriser un nuage de points à partir d’une orthophoto avec LAStools

6- Créer un Modèle numérique de surface (MNS) avec CloudCompare ou LAStools

7- Créer un Modèle Numérique de Terrain avec CloudCompare

Un Modèle Numérique de Terrain (MNT) et un Modèle Numérique de Surface (MNS) sont deux types de représentations numériques d’un environnement, généralement basés sur des données LiDAR. Bien qu’ils soient souvent utilisés de manière interchangeable, ils capturent des informations différentes du paysage. Dans l’article précédent nous avons vu comment générer un MNS avec CloudComapre ou LAStools. Nous verrons ici comment générer un MNT avec CloudCompare et dans le prochain article comme le réaliser avec LAStools.

Modèle Numérique de Terrain (MNT) :

Un Modèle Numérique de Terrain (MNT) représente la topographie réelle du sol sous toutes les caractéristiques présentes à la surface, telles que la végétation, les bâtiments ou les objets artificiels. Il s’agit essentiellement du terrain naturel, débarrassé de toutes les structures et éléments en élévation qui ne font pas partie de la topographie sous-jacente. Un MNT est généralement obtenu en filtrant ou en classant les points LiDAR pour ne conserver que ceux qui correspondent au sol. Ainsi, le MNT est plus proche de la topographie réelle, offrant des informations précieuses pour l’analyse géomorphologique, l’hydrologie, la cartographie des pentes, etc.

Modèle Numérique de Surface (MNS) :

Un Modèle Numérique de Surface (MNS) représente la surface visible du paysage, y compris les éléments qui se trouvent au-dessus du sol, tels que les bâtiments, la végétation, les véhicules, etc. Contrairement au MNT, le MNS ne filtre pas les objets au-dessus du sol et capture donc l’ensemble de la topographie, y compris les structures et les éléments en élévation. Les données LiDAR utilisées pour créer un MNS incluent donc toutes les caractéristiques présentes, ce qui en fait une représentation plus complète du paysage vu de dessus.

Différences entre MNT et MNS :

  1. Contenu : Le MNT ne comprend que les points qui correspondent au sol, tandis que le MNS inclut tous les points au-dessus du sol, y compris les objets et les structures.
  2. Utilisations : Le MNT est souvent utilisé pour des analyses géomorphologiques, d’hydrologie, de géologie et d’aménagement du territoire. Le MNS est utilisé pour la modélisation visuelle, la cartographie urbaine, la gestion des ressources naturelles et d’autres applications qui nécessitent une vue complète de la surface.
  3. Analyse : Le MNT peut fournir des informations précises sur la topographie réelle du sol, tandis que le MNS permet de visualiser et d’analyser les caractéristiques au-dessus du sol, telles que les bâtiments et la végétation.

En résumé, le Modèle Numérique de Terrain (MNT) se concentre sur le terrain naturel et élimine les éléments au-dessus du sol, tandis que le Modèle Numérique de Surface (MNS) inclut tous les éléments en élévation. Chacun de ces modèles a ses utilisations spécifiques en fonction des besoins d’analyse et de visualisation.

Créer un MNT à partir d’un nuage classé avec QGis

Dans un nuage classé nous disposons déjà de l’information nécessaire pour générer un MNT : la classe 2 – Sol. En effet, tous les points correspondant au sur-sol (bâtiments, végétations,etc.) appartiennent à d’autres classes.

Nous pouvons donc créer une couche raster en sélectionnant exclusivement les points de la classe 2.

Nous utiliserons un nuage de points classés LIDAR HD de l’IGN:

nuage lidar hd classé de l'IGN

Où nous retiendrons que les points classés « Sol »:

classe "sol" du lidar IGN classé

Pour cela nous allons utiliser un des nouveaux outils applicable aux couches de nuages de points: Export to raster (using triangulation). Dans le panneau Boîte à Outils Traitements, vous trouverez ce traitement sous la rubrique Point Cloud Conversion.

export raster using triangulation de QGis

Dans Resolution of the density raster on choisit la taille de maille en sortie.

Dans Paramètres avancés -> Expression de filtre on sélectionne Classification = 2, pour ne retenir que les points de la classe 2.

Nous rentrons un nom au fichier en sortie (ici groundIGN.tif) et nous exécutons la commande.

mnt du nuage lidar classé de l'IGN

Le moyen visuel le plus efficace pour déterminer la qualité du MNT est d’utiliser la Vue du Profil d’élévation:

vue élévation avec le nuage lidar ign et le mnt calculé

En bleu on voit le MNT que nous venons de calculer.

Créer un MNT à partir d’un nuage non classé avec QGis.

Pour cette partie de l’article nous allons travailler sur le même nuage de points que précédemment mais en ayant supprimé la classification. On se retrouve alors avec tous les points dans une seule classe 0.

Il nous faut donc un outils qui nous permette de séparer les points correspondants au sol du reste des points. Il en existe plusieurs mais nous allons commencer avec CloudCompare qui me paraît le « meilleur », car il permet de réaliser cette tâche en visualisant les différents étapes des essais. Ces essais sont nécessaires car il faut adapter les paramètres de s traitements à chaque nuage selon plusieurs critères.

Calcul du MNT avec CloudCompare.

Le filtre CSF (Cloth Simulation Filter) est un algorithme de filtrage utilisé dans le logiciel CloudCompare pour le traitement de nuages de points lidar. Il est principalement utilisé pour supprimer le bruit et les points aberrants des nuages de points, en particulier dans les zones où des surfaces complexes, telles que des arbres, sont présentes, mais aussi pour distinguer les points du sol par rapport au sur-sol.

Le filtre CSF tire son nom de la simulation de tissu (cloth simulation en anglais) en raison de la manière dont il modélise la structure du nuage de points. L’idée de base du filtre CSF est de modéliser les points comme étant attachés à des « tissus » virtuels qui se plient et se déforment en fonction de la densité des points dans les zones environnantes. Les zones où les « tissus » sont fortement déformés sont considérées comme présentant des surfaces complexes, comme la végétation ou les bâtiments.

Voici comment fonctionne généralement le filtre CSF dans CloudCompare :

  1. Calcul des normales : Le filtre CSF commence par calculer les normales des points du nuage. Les normales sont des vecteurs perpendiculaires aux surfaces locales des points.
  2. Création de « tissus » : Le filtre divise l’espace en une grille 3D et assigne chaque point à un « tissu » virtuel en fonction de sa position et de ses normales.
  3. Simulation de tissu : Le filtre simule comment ces « tissus » réagiraient sous des forces telles que la gravité. Les « tissus » se plient et se déforment en fonction de la densité des points autour d’eux.
  4. Détection du bruit : Les zones où les « tissus » sont fortement déformés sont considérées comme des zones de bruit ou de surfaces complexes. Les points associés à ces zones sont étiquetés comme hors sol.
  5. Filtrage : Les points marqués comme hors sol sont supprimés du nuage de points, laissant derrière eux une version filtrée et nettoyée du nuage.

Le filtre CSF (Cloth Simulation Filter) dans CloudCompare peut être utilisé pour séparer les points du sol des autres points présents dans un nuage de points LiDAR. Cette utilisation est particulièrement utile pour isoler la topographie réelle du terrain des éléments en élévation tels que les bâtiments, la végétation ou d’autres structures.

Il est important de noter que le succès de l’utilisation du filtre CSF pour séparer les points du sol des autres dépendra des paramètres que vous choisissez et de la complexité du paysage. Il peut être nécessaire d’ajuster plusieurs fois les paramètres du filtre pour obtenir les meilleurs résultats.

Il est important de noter que le succès de l’utilisation du filtre CSF pour séparer les points du sol des autres dépendra des paramètres que vous choisissez et de la complexité du paysage. Il peut être nécessaire d’ajuster plusieurs fois les paramètres du filtre pour obtenir les meilleurs résultats.

Nous commençons par charger notre nuage de points non classé dans CloudCompare:

nuage de points non classé dans cloudcompare

Ouvrez la fenêtre du filtre CSF à partir du menu Plugins->CSF Filter

menu csf filter de cloudcompare

Vous avez la fenêtre du plugin avec un premier paramètre à déterminer, le type de pente du terrain. Vous avez trois types:

  • terrain plat
  • terrain vallonné
  • terrain très accidenté

dialogue plugin csf filter de cloudcompare

Dans notre cas nous avons un terrain vallonné.

Ensuite, allez dans l’onglet Advanced parameters settings

advanced parameters du filtre csf de cloudcompare

Les deux paramètres à définir sont:

Cloth resolution

Le paramètre « Cloth resolution » (résolution du tissu) dans le filtre CSF (Cloth Simulation Filter) de CloudCompare fait référence à la taille de la grille tridimensionnelle utilisée pour modéliser les « tissus » virtuels dans le processus de simulation.

Lorsque vous appliquez le filtre CSF pour filtrer un nuage de points, il divise l’espace en petites régions en utilisant une grille 3D. Chaque région est considérée comme un « tissu » virtuel qui réagit aux forces appliquées, simulant ainsi le mouvement et la déformation d’un tissu réel. Le paramètre « Cloth resolution » contrôle la taille de cette grille.

Une résolution plus élevée signifie que la grille sera plus fine, ce qui permet au filtre CSF de mieux capturer les détails subtils et les variations dans le nuage de points. Cependant, une résolution plus élevée peut également augmenter le temps de calcul et la consommation de ressources.

Une résolution plus basse signifie que la grille sera plus grossière, ce qui peut accélérer le processus de calcul mais risque de manquer certains détails plus fins dans le nuage de points.

Le choix de la résolution dépendra de la complexité de vos données, de la taille du nuage de points et de l’objectif de votre analyse. Si vous travaillez avec des zones complexes, une résolution plus élevée peut être souhaitable pour capturer les détails. Si vous avez un grand nuage de points et que vous avez besoin de résultats plus rapidement, une résolution plus basse pourrait être appropriée.

Comme toujours, il est recommandé de faire des essais avec différentes valeurs de résolution et de vérifier visuellement les résultats pour déterminer quelle résolution fonctionne le mieux pour vos données spécifiques.

Classification threshold

Le paramètre « Classification threshold » (seuil de classification) dans le filtre CSF (Cloth Simulation Filter) de CloudCompare est utilisé pour spécifier un seuil de déformation au-delà duquel les points du nuage de points seront considérés comme non classifiés, c’est-à-dire qu’ils seront assignés à l’hors sol.

Lorsque le filtre CSF est appliqué, il simule la déformation d’une grille tridimensionnelle (représentant des « tissus » virtuels) basée sur les points du nuage. Les zones où les tissus sont fortement déformés sont interprétées comme des zones présentant des caractéristiques complexes, telles que la végétation ou des objets en élévation.

Le paramètre « Classification threshold » permet de contrôler la déformation maximale tolérée avant qu’un point ne soit considéré comme hors sol. En d’autres termes, si la déformation d’un point dépasse le seuil spécifié, il ne sera pas assigné à la classe « particulière »sol », ce qui le marquera comme étant potentiellement du « hors sol ».

L’ajustement du paramètre « Classification threshold » peut permettre de contrôler le niveau de détail que le filtre CSF utilisera pour différencier les caractéristiques complexes du sol. Une valeur plus élevée rendra le filtre plus sensible aux caractéristiques complexes. Une valeur plus basse rendra le filtre moins sensible et peut être utilisée pour ne filtrer que les caractéristiques très prononcées.

Comme toujours, il est recommandé de faire des essais avec différentes valeurs de seuil et de vérifier visuellement les résultats pour déterminer la valeur qui fonctionne le mieux pour vos données spécifiques.

Généralement on considère que la valeur du Classification threshold doit être le double de la valeur définie pour la Cloth resolution.

Nous voilà donc partis pour faire nos essais. Un bon point de départ est de définir la Cloth resolution à 0.2 mètres et la Classification thresholds à 0.4 mètres.

Nous exécutons le filtre est nous retrouvons une nouvelle couche résultat dans CloudCompare avec deux sous-couches:

La première contient les points classés comme « sol » par le filtre CSF

premier passage csf, couche ground

La deuxième contient les points classés comme « hors sol » par le filtre CSF

premier passage filtre csf couche off-ground

Nous allons essayer une nouvelle combinaison de paramètres pour affiner la détection des points hors sol. pour cela nous allons activer la couche « sol » que nous venons de calculer et nous allons lui appliquer le filtre csf avec comme paramètres la Cloth resolution à 0.4 mètres et la Classification thresholds à 0.8 mètres.

Nous aurons alors deux nouvelles couches, une avec les points qui sont considérés comme « sol » et l’autre avec des points qui avaient été considérés comme « sol » par les premier passage du filtre CSF mais qui sont maintenant considérés comme « hors sol » avec les nouveaux paramètres.

Nous avons la couche « sol »

deuxième filtre csf couche ground

Et nous avons les points qui sont maintenant « hors sol »

deuxième filtre csf couche off-ground

Visuellement on peut déjà dire que notre résultat doit être satisfaisant. Mais pou en être sûrs, nous allons répéter une troisième fois l’opération, cette fois ci avec la Cloth resolution à 0.8 mètres et la Classification thresholds à 1.6 mètres.

Nous aurons alors deux nouvelles couches, une avec les points qui sont considérés comme « sol » et l’autre avec des points qui avaient été considérés comme « sol » par les deuxième passage du filtre CSF mais qui sont maintenant considérés comme « hors sol » avec les nouveaux paramètres.

Nous avons la couche « sol »

troisième filtre csf couche ground

Où vous voyez maintenant des zones assez étendues sans aucun point.

Et la couche « hors sol »

troisième filtre csf couche off-ground

Pour pouvoir valider la bonne combinaison de paramètres, nous enregistrons les couches « sol » obtenues en tant que nuages de points. Vous pouvez enregistrer le nuage de points filtré en sélectionnant « File » > « Save As » dans le menu pour enregistrer une nouvelle copie avec les modifications apportées par le filtre CSF.

Nous avons donc trois nouveaux nuages de points, ground02… pour le résultat du premier filtre CSF, ground04… pour le deuxième et ground08… pour le troisième, que nous chargeons dans QGis. Nous chargeons aussi le nuage de points non classé d’origine, nc…

les trois nuages de points en sortie de cloudcompare

Intuitivement, le résultat du filtre 0.4 paraît le meilleur. Le filtre 0.2 a un peu trop de « sol » et le filtre 0.8 pas assez dans certaines zones.

Nous pouvons créer les trois MNT et comparer le résultat avec le nuage de points d’origine.

Pour cela, comme pour le premier exemple, nous utilisons l’outil Export to raster (using triangulation). Par contre, comme ici nous n’avons que des points correspondants au sol on n’a pas besoin de mettre un filtre. Nous définissons simplement le pas de maille du MNT en sortie et le nom du fichier en sortie.

export to raster using triangulation

Nous avons alors trois rasters avec les MNT correspondants

les trois mnt calculés avec qgis

Comme vous pouvez l’observer, dans le MNT 0.2 on voit encore les empreintes des bâtiments classées comme « sol ». Pour voir la différence entre les MNT 0.4 et 0.8 , nous utilisons la Vue Profil d’élévation.

Nous affichons le nuage de points d’origine et le MNT calculé à partir de la classe « sol » de l’IGN. Nous considérerons cet MNT comme étant le meilleur MNT.

vue de profil du mnt de référence

Sur ce profil nous avons des accidents de terrain, de la végétation basse et haute ainsi que des bâtiments.

Si nous affichons, en jaune, le MNT 0.2 nous avons:

vue de profil du résultat du filtre csf 0.2

La végétation basse et haute ont bien été classées « hors sol », mais les bâtiments sont toujours inclus dans les points « sol ».

Si nous affichons, en bleu, le MNT 0.4 nous avons:

vue de profil du résultat du filtre csf 0.4

Les bâtiments sont maintenant exclus et le résultat se confond avec celui de l’IGN.

Pour finir si nous affichons en rouge le MNT 0.8 nous avons:

vue de profil du résultat du filtre csf 0.8

En excluant des points qui font partie du terrain, nous avons créé des zones vides qui sont alors interpolées avec seulement les bords des zones. Nous avons toujours un bon calcul de terrain dans les zones de végétation et les bâtiments, mais certains accidents de terrain disparaissent.

En conclusion, nos paramètres avec paramètres la Cloth resolution à 0.4 mètres et la Classification thresholds à 0.8 mètres qui, depuis le calcul du filtre CSF dans CloudCompare nous semblaient la meilleure combinaison, s’avèrent en effet les meilleurs. Ils nous permettent d’obtenir le MNT équivalent à celui calculé à partir des données classées de l’IGN.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

5 thoughts on “QGis pour LIDAR:modèle numérique de terrain (MNT) avec CloudCompare.

  1. Bonjour,
    merci pour vos explications, mais pouvez-vous nous preciser où se trouve l’outil « Export to raster », svp? Pas évident, car il n’est pas ni dans les choix d’exporter la couche, ni dans le menu Raster, ni dans le menu Couche…
    Merci bcp.

  2. Merci. Mais pouvez-vous, svp, être un peu plus precis? Cette boite à outils se trouve dans l’un des menus? Sur lequel? Sinon, comment on trouve cette boite à outils, svp?
    Merci beaucoup.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *