Nicolas Brodu     
          
            M 3 C 2
Nicolas
Brodu
M 3 C 2

Comparaison de scènes naturelles

L'objectif est de suivre l'évolution d'une scène naturelle au cours du temps. Le suivi d'objets individuels (comme des plantes ou des cailloux) est possible avec la méthode que je décrit ici. Cependant, on aimerait mesurer des effets à plus large échelle, comme l'érosion d'une falaise ou le dépôt de sédiments. Cette page montre la méthode que j'ai mise au point en collaboration avec Dimitri Lague. Il a été en Nouvelle-Zélande et il a capturé un lit de rivière avec un scan laser, avec soin, et à plusieurs reprises. On a ensuite inventé et mis au point ensemble un nouvel algorithme, dont j'ai écrit une implémentation ci-dessous, et qui a permis à Dimitri de suivre les changements temporels du lit de rivière d'une mesure à l'autre. Notre collaboration a résulté en cet outil unique, capable de : résoudre des changements avec une excellente précision (en dessous d'un cm, sans précédent au moment où le papier a été publié) ; directement sur les données brutes d'une scène naturelle (donc sans besoin de pré-traitement) ; robuste aux données manquantes et erreurs de mesures ; et capable de surcroît de fournir des intervalles de confiance. Cf notre article pour plus d'information.

Voici une comparaison sur 3 mois (Décembre 2010 à Février 2011) du site étudié. Les effets d'une crue sont clairement visibles à la base de la falaise, démontrant ainsi le potentiel de notre méthode pour mesurer ces événements individuels. La végétation a bien sûr été supprimée avant la comparaison, afin de ne pas interférer avec les mesures. Elle a été remise en post-traitement.

Présentation graphique avec plus de détails

La rivière de montagne, mesurée par LiDAR en 2009 et en 2011, sans la végétation, a changé beaucoup plus que lors des trois mois ci-dessus. Certaines parties ont énormément évolué (plus de 7m, voir plus bas), et d'autres n'ont pas changé. Les données de 2009 manquent par endroit en raison de mauvaises conditions, mais l'algorithme s'y adapte. Le but est de comparer deux scènes, en trouvant la direction pertinente pour cette comparaison en chaque point, directement en 3D (sans maillage préalable de surface), de détecter les petits comme les grands changements, d'être robuste aux artefacts et données manquantes, et de pouvoir estimer la confiance statistique qu'on a dans les changements détectés, en chaque point.

La difficulté principale a été de trouver, pour chaque point, la direction pertinente pour comparer les deux scènes. Intuitivement cette direction est celle perpendiculaire à la surface, mais celle-ci change d'un point à l'autre. Par exemple, cette normale change de complètement verticale pour la berge en bas à droite, à presque horizontale pour le creusement de la falaise à gauche. Le problème, c'est que cette direction change également en fonction de l'échelle à laquelle on analyse les données. Par exemple, si on s'intéresse au suivi des mouvements individuels de chaque rocher dans une zone de débris, les surfaces pertinentes (et donc leur directions perpendiculaires) sont à définir à l'échelle de ces rochers, soit moins d'un mètre. Inversement, si on s'intéresse à l'évolution globale de la falaise qui a produit cette zone de débris, il faut considérer une échelle bien plus grande, au moins 10m, afin de trouver la direction de changement de la falaise de façon robuste à la présence des débris. L'algorithme propose donc également un mécanisme adaptatif pour calculer à quelle échelle la surface apparaît la plus "plate" en chaque point, et que l'utilisateur peut bien sûr surcharger si nécessaire en fonction de l'objet d'étude (e.g. mouvements des rochers individuels ou de la falaise).

L'algorithme peut non seulement détecter les changements, mais aussi donner une indication de la fiabilité des calculs. Sur la gauche, on voit en jaune les régions où l'algorithme a trouvé des changements intéressants, et en rouge là où il n'a pas pu dire si il y vraiment eu un changement ou pas. Sur la droite, les changements sont notés en bleu et rouge respectivement là où il y a eu creusement ou déposition de matière. Certaines régions ont connu des grands changements, jusqu'à 7m en 2 ans. La précision de l'algorithme est, à cette distance de la falaise (cf échelle de 100m en bas), d'environ 6mm dans des conditions idéales (~1cm en moyenne). En dessous de ça, ou dans les zones de données manquantes, l'algorithme n'est pas capable de dire s'il y a eu un changement ou pas. Ces zones correspondent aux parties les plus stables de la falaise.

Article and logiciel

L'article est disponible ici et sur ArXiv.

Il n'y a pas a proprement parler de documentation, mais vous pouvez exécuter le programme sans arguments pour une aide intégrée. Je recommande vivement de visiter la page de Dimitri pour des données d'exemple, des tutoriaux, et plus d'exemples d'utilisation.

Vous pouvez télécharger une version précompilée du programme pour Linux 64 bits ou pour Windows 64 bits (ou pour 32bits ou pour antiquités). The La version Linux est la référence. Compiler m3c2 sur votre propre système est recommandé pour obtenir des performances optimales. Depuis le 25/02/13, ces archives contiennent également Canupo pour reconnaitre les motifs dans les données, cf la page dédiée pour plus de détails.

Le code source est disponible ainsi que pour le projet Canupo. Ce code peut être plus récent que les binaires ci-dessus. Vous pouvez télécharger le code comme une archive tar.gz, ou en utilisant GIT: git clone git://nicolas.brodu.net/canupo. Un compilateur C++ récent est nécessaire, ainsi que quelques bibliothèques classiques (boost, cairo...).

Ce logiciel est libre, conformément à la licence LGPL v2.1 ou plus récente

Style:
      R E C H E R C H E 
M
3
C
2
M
3
C
2