=> 
« L’hiver approche » ― George R.R. Martin, A Game of Thrones En cette période de vacances de Noël, vous vous demandez peut-être s’il y a un peu de neige dans votre coin préféré de ski de rando ? Le suivi de l’enneigement des montagnes est utile, pas seulement pour organiser votre week-end, mais aussi parce que le manteau neigeux est une ressource hydrique primordiale dans de nombreuses régions, comme ici dans le sud-ouest de la France.

Le manteau neigeux qui s’accumule dans les Pyrénées joue le rôle d’un barrage naturel qui stocke les précipitations en hiver et libère l’eau de fonte au printemps juste au moment où les cultures en aval doivent être irriguée. Le débit des rivières alimentées par la fonte représente également une source d’énergie primaire importante pour la production d’hydroélectricité. Nous sommes en train de développer un produit « neige » à partir des donnée Sentinel-2 et Landsat-8 qui fournira la présence ou l’absence de neige à 20m de résolution tous les 5 jours. L’algorithme est simple car la surface enneigée est plutôt facile à détecter à partir de l’imagerie optique à haute résolution. La difficulté est généralement de distinguer les nuages de la neige. Ici nous n’avons pas trop ce souci car nous utilisons le produit de niveau 2A qui vient avec son masque de nuage et nous sert d’information a priori. Un autre avantage du produit N2A est qu’il nous donne directement les réflectances de surface corrigées des effets de pente. Après des années de recherche sur le terrain, nous avons acquis la conviction que les montagnes étaient des zones plutôt pentues… La correction de pente nous permet d’utiliser des seuils sur la réflectance identiques sur une face nord et une face sud. En fait, le principal problème qui reste irrésolu est l’obstruction de la surface du sol par les arbres qui gène la détection de la neige, en particulier dans les forêts de conifères. Malheureusement l’algorithme MAJA ne fournit toujours pas de reflectance « bottom of canopy ».

Westeros & Essos
La neige est facilement identifiable sur les images satellites optiques comme cette composition colorée des terres de Westeros et Essos.

La détection de la neige est basée sur l’indice de différence normalisée de neige NDSI (Normalized Difference Snow Index) : $$ \textrm{NDSI} = \frac{\rho_\textrm{{Vert}}-\rho_\textrm{{MIR}}}{\rho_\textrm{{Vert}}+\rho_\textrm{{MIR}}} $$ qui a été proposé en 1989 par Jeff Dozier dans la revue Remote Sensing of Environment pour Landsat TM. Ici $$ \rho$$ est la reflectance de surface. Cet indice peut être utilisé avec les images SPOT4/5, Landsat-8 et Sentinel-2 puisqu’une bande dans le moyen infrarouge (MIR) vers 1.6 µm est disponible. Le NDSI repose sur le fait que seules les surfaces enneigées apparaissent à la fois très claires dans le visible et sombres dans le MIR. Certains lacs peuvent aussi avoir une valeur de NDSI élevée mais il suffit d’ajouter un seuil sur la reflectance dans la bande rouge pour les éliminer.

Présentation de l’algorithme

Nous voulons un algorithme robuste et efficace pour traiter des chaînes de montagne entières avec un temps de calcul raisonnable. Puisque l’étendue du manteau neigeux est largement contrôlée par l’altitude de la surface, nous avons ajouté un modèle numérique de terrain dans les données d’entrée afin d’éviter les faux positifs aux basses altitudes et les faux négatifs aux hautes altitudes. Un premier passage de détection de la neige est réalisé avec des seuils assez stricts sur le NDSI et la réflectance dans le rouge ($$N_1=0.4, R_1=0.2$$). Cela nous permet d’obtenir un premier ensemble de pixels pour lesquels nous avons une grande confiance dans le fait qu’ils soient bien classés comme « neige ». Un pixel est marqué comme neige si : $$ \textrm{neige}_1 = \textrm{nuage}_1 \textrm{ est faux and } \textrm{NDSI} \gt N_1 \textrm{ et } \rho_\textrm{Rouge} > R_1 $$ (test 1) Nous ne prenons pas le masque de nuage initialement donné avec le produit L2A comme entrée ici $$ \textrm{cloud}_1$$ car il est obtenu a une résolution plus grossière, très conservatif et il nous prive d’une bonne partie de l’information disponible pour la détection de la neige. Nous permettons la reclassification de certains pixels marqués comme « nuage » en « neige » ou « non-neige » s’ils ont une réflectance assez basse. Nous sélectionnons uniquement ces « nuages sombres » puisque le test du NDSI est très robuste à la confusion neige/nuage dans ce cas. Le code « nuage » est retiré pour ces pixels, à moins qu’ils soient marqués comme une ombre de nuage par MAJA. $$\textrm{nuage}_1 = (\textrm{nuage}_{L2A} \textrm{ et } \rho_\textrm{Rouge}>R_c) \textrm{ ou } \textrm{« ombre de nuage » est vrai} $$ Cela nous permet d’estimer l’altitude basse du manteau neigeux dans l’image ($$Z_S$$) grâce au modèle numérique de terrain SRTM.

Fraction de neige par tranche d’altitude

Sachant qu’au-dessus de cette altitude minimale $$Z_S$$, la probabilité de trouver de la neige est plus élevée, nous réalisons un second test pour les pixels dans ce cas de figure avec des seuils moins élevés ($$N_2=0.15, R_2=0.12$$) : $$ \textrm{neige}_2 = Z>Z_S \textrm{ et nuage}_1 \textrm{ est faux et } \textrm{NDSI} \gt N_2 \textrm{ et } \rho_\textrm{Rouge} > R_2 $$ (test 2) Le masque de neige final est l’union de $$\textrm{neige}_1$$ and $$\textrm{neige}_2.$$ Certains pixels initialement marqués comme nuage dans le masque N2A ne seront pas reclassifiés comme « neige » après les tests 1 et 2. Ces pixels retourneront dans le masque de nuage (option A comme Amy: back to black), sauf s’ils ont une réflectance très faible (option Bee.. stayin alive).

Surface enneigée, surface des nuages et surface totale par tranche d’altitude

 

Masque de neige et de nuage dans une image SPOT-4 Take5 du Haut-Atlas marocain acquise le 27-03-2013. L

Ci-dessous nous avons comparé les masques de neige/nuage d’origine présents dans le produit N2A (calculés à 200m de résolution) avec les masques de neige/nuages obtenus avec notre méthode :

Masques de neige et de nuages après traitement par notre algorithme LIS (gauche) en comparaison avec ceux issus du produit N2A de THEIA

Le code de la chaîne LIS a été implémenté en Python avec les librairies OTB et GDAL par Manuel Grizonnet au CNES et il est désormais compatible avec SPOT4, Landsat-8 et Sentinel-2. Nous avons fait tourner le code sur une série de 57 images Landsat-8 sur les Pyrénées en moins de 6h (tuile D0005H0001). Les premiers tests réalisés avec une image Sentinel-2A se sont avérés très prometteurs, mais je montrerais sans doute cela dans une autre note ! (Promesse tenue : Premier masque de neige Sentinel-2)

Série d’images Landsat-8 sur les Pyrénées traitées par LIS (le masque de neige est délimité en magenta et celui des nuages en vert si vous avez de bons yeux).

Maintenant nous aimerions valider plus finement LIS avec des images de caméras terrestres au cours de l’année prochaine. Cela pourrait nous permettre aussi de calibrer les paramètres comme $$N_2$$ et $$R_2$$. Néanmoins, après avoir visionné des dizaines d’images sur les Pyrénées, le Haut-Atlas et les Alpes nous avons le sentiment que les résultats sont déjà très satisfaisants. L’étape suivante sera de développer une méthode d’interpolation des pixels masqués par les nuages pour générer un produit sans trous tous les 5 jours à partir des deux Sentinel-2. En parallèle le CNES est en train d’implémenter une version opérationnelle sur le segment sol MUSCATE, si bien que nous espérons pouvoir commencer à produire et distribuer des cartes d’enneigement avec Sentinel-2 en 2016, avant que la neige n’ait complètement fondu ! L’été n’est plus si loin… Pour un exemple d’application voir cet article État de l’enneigement dans les Pyrénées en janvier 2016. Une description plus détaillée de l’algorithme est disponible sur le dépôt du projet LIS.

2 thoughts on “Il neige ! Développement d’un produit de surface enneigée à partir des données Sentinel-2 et Landsat-8

  1. décidément, les blogs scientifiques sont plus drôles à lire que les publications ! Ravie de voir l’avancée des travaux 😀

Répondre à Marie Annuler la réponse

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.