Tutoriel : LIDAR HD avec QGIS 3.32
Dans cet article vous trouverez comment transférer les couleurs (coloriser) d’une image ou une orthophoto vers les points d’un nuage LIDAR avec CloudCompare. Ceci permet un rendu comparable à l’orthophoto qui facilite le travail avec des nuages non classés mais aussi avec les données classées.
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
Quand vous chargez des données LIDAR dans QGis vous vous trouvez face à deux types de rendu.
Dans le cas de données non classées vous aurez soit un carré gris si la symbologie est placée sur classification:
soit un dégradé de couleurs si vous vous avez une symbologie par rampe sur un attribut (ici l’intensité du signal):
Dans le cas de données classées l’affichage des classes est un peu (pas beaucoup) plus parlant:
Si on compare ces rendus avec une orthophotographie :
On doit reconnaître que c’est beaucoup plus agréable de travailler sur ce dernier type de rendu où l’on aperçoit les objets tels qu’on les voit habituellement.
Et bien, c’est tout à fait possible de travailler avec des nuages de points LIDAR en ayant le même type de rendu que celui de l’orthophoto. Un des attributs standards des points LIDAR est l’attribut RGB qui permet de stocker, pour chaque point, une valeur de couleur.Pour afficher les couleurs des points, il suffit de sélectionner la symbologie RGB dans l’onglet symbologie des Propriétés de la couche.
Mais, évidement, il faut que ces valeurs aient été renseignées avant. Et ce n’est pas le cas des données HD de l’IGN. Nous allons donc voir ici comment transférer les valeurs de couleur depuis les pixels d’une orthophoto vers les points correspondants du nuage de points LIDAR.
Pour cela vous avez besoin de votre nuage de points LIDAR et de l’orthophoto ou autre image aérienne de la même zone.
Coloriser des données LIDAR avec CloudCompare
Dans ce chapitre nous allons utiliser CloudCompare pour réaliser l’opération. Dans le prochain chapitre nous utiliserons la boîte à outils LAStools.
Pourquoi? Parce que l’outil qui permet de faire cette opération dans LAStools fait partie des traitements sous licence payante. Vous pouvez quand même réaliser le traitement mais le résultat est volontairement dégradé par LAStools. Même si à l’œil nu on ne voit pas de différence, commençons par un traitement qui vous donnera le meilleur résultat est pour le meilleur prix (gratuit).
De plus, le traitement avec CloudCompare est assez simple mais il vous permet de vous familiariser avec son fonctionnement. Vous serez alors à même d’utiliser CloudCompare pour des opérations plus compliquées.
Pour télécharger CloudCompare cliquez ici.
Démarrage de CloudCompare
Une fois installé, ouvrez le programme.
Utilisez le menu File->Open pour charger le nuage de points à traiter: pointez sur le fichier, cliquez sur Open, dans la fenêtre qui s’ouvre cliquez sur le bouton Apply all
Vous allez avoir une fenêtre qui mérite une explication:
CloudCompare analyse, avant de charger un fichier, les coordonnées X,Y et Z. Il calcule des « décalages » pour les coordonnées de manière à ne garder que la partie qui varie vraiment sur l’étendue de la zone de travail. Par exemple, dans cette fenêtre, il propose de soustraire aux valeur de Y, qui sont de l’ordre des 6 millions, la valeur -6225500. On aura ainsi des valeurs de Y significatives. Une fois les traitements terminés, dans les fichiers résultants, il ajoutera la même valeur aux Y obtenus. Cela permet de travailler seulement avec des valeurs significatives tout en préservant les véritables coordonnées, mais à l’extérieur des traitements.
Pour les nuages de points, vous pouvez simplement accepter les valeurs proposées qui seront toujours bonnes.
Vous retrouvez votre nuage de points dans la fenêtre principale.Au chargement le point de vue est placé au dessus du nuage de points.
Avec la souris, vous pouvez afficher le nuage dans les trois dimensions, à votre guise.Pour mieux voir les points, dans le panneau Properties, recherchez la section Color Scale et dans Current sélectionnez High contrast
Chargement de l’orthophoto
Maintenant nous allons charger l’orthophotographie.
Si vous utilisez le même procédé que pour le nuage de points, vous chargerez l’image en tant qu’image tif. Pour ce que nous souhaitons faire nous avons besoin de la charger en tant que nuage de points. Pour cela, ouvre le gestionnaire de fichiers, allez dans le répertoire de l’image puis cliquez sur le fichier image et déplacez-le dans la fenêtre de CloudCompare.
Vous aurez cette fenêtre:
Cliquez sur Yes.
Vous aurez, comme pour le nuage de points, la fenêtre shift/scale qui s’affiche.
Ici nous avons une valeur à modifier. Vous avez peut-être déjà compris que dans la fenêtre de CloudCompare nous sommes dans une boîte 3D qui ressemble à notre monde réel mais qui a ses propres références. Contrairement à un SIG qui va déterminer si deux points dans deux couches différentes sont au même endroit en comparant leurs coordonnées XY, dans CloudCompare ce sera fait en calculant la distance dans les références internes 3D. Quand on voudra affecter la valeur RGB d’un point du nuage de points, il va rechercher le pixel le plus proche de l’image. Mais comme on est dans un monde 3D, ce pixel n’est pas forcément celui qui a les mêmes XY, c’est celui qui a la distance XYZ la plus petite. Dans des terrains accidentés, cela peut être très différent du résultat qu’on obtiendrait avec un SIG.
Quand on a chargé le nuage de points (voir l’image plus haut) les valeurs de Z tournent autour de 589 mètres. Notre orthophoto n’a pas de coordonnées Z, c’est à dire qu’elle a des valeurs de Z =0. Si on laissait tel quel le décalage Z (avec une valeur 0) on peut être surs que les points les plus proches ne correspondront pas aux bonnes coordonnées XY. Nous allons décaler les pixels de l’image d’un décalage de 589 mètres. Les deux couches seront alors très proches et les erreurs minimes.
Si on rentre cette la valeur 589 on aura alors l’image qui se situe au milieu du nuage de points.
Pré-traitement de coloriser
On pourrait penser qu’on a tous les ingrédients nécessaires à notre opération de colorisation. Mais le souci c’est que nous avons deux couches de points avec des millions de points chacune. Trouver la correspondance entre ces deux couches prendrait beaucoup trop de temps. Un moyen de réduire nettement ce temps de traitement est de créer un raster TIN de notre photo. Après on pourra utiliser les sommets du TIN pour coloriser notre nuage LIDAR.
Pour créer un TIN cliquer sur la couche photo dans la liste des couches, puis sur l’outil Raster de CloudCompare
Vous avez alors la fenêtre de configuration de la transformation raster.
Sauf cas exceptionnel, vous aurez dans le paramètre size un message invalid grid box. Pas de souci, cliquez sur le bouton Edfit Grid et, dans la fenêtre qui s’ouvre, cochez la case keep square, puis sur OK.
Le paramètre step indique la précision de la grille. Par défaut il est de 1 mètre et donne des bons résultats, mais vous pouvez augmenter la précision, tout en sachant que cela augmente les temps de traitements.
Dans Active Layer sélectionnez RGB
Le paramètre direction doit être mis à Z pour avoir une interpolation horizontale et le cell height vous pouvez le laisser à minimum ou le changer, cela ne fera pas réellement de différence.
Cliquez sur Update grid et vous verrez l’aperçu du résultat
Vous pouvez décocher Export statistics, puis cliquez sur Mesh pour lancer la création du TIN.
Vous verrez l’ajout du TIN dans la liste des couches du projet. Vous pouvez alors fermer la fenêtre de rasterisation.
Vous pouvez décocher dans la liste des couches l’ortho d’origine et vous verrez ainsi le TIN qui sera utilisé.
Colorisation du nuage de points
Tout est prêt pour pouvoir transférer les couleurs du TIN vers notre nuage LIDAR. Sélectionnez la couche vertices et la couche Lidar
Pour coloriser nous allons utiliser le menu Edit -> Color -> Interpolate from another entity
Dès que vous cliquez sur le menu, la commande s’exécute.
CloudCompare ne demande pas quelle est la couche source et la couche destination. Il considère que la couche source est celle qui a des valeurs de RGB et celle de destination celle qui n’en a pas. Si toutes les deux avaient des valeurs renseignées, vous devez préalablement utiliser la commande CLEAR sur la couche de destination.
Le résultat de notre commande, après avoir patiemment attendu la fin du traitement est:
Il ne reste qu’à exporter le résultat sous forme de fichier .las ou .laz
Sélectionnez la couche LIDAR d’origine, qui possède maintenant les valeurs RGB, puis dans le menu File->Save. Donnez un nom (ici resultat) et l’extension souhaitée (.las ou .laz). Vous aurez votre nouveau nuage LIDAR, colorisé, prêt à être chargé dans QGis:
Un zoom permet de voir les points colorisés.