La gestion des nuages en télédétection spatiale est un sujet délicat, Ils créent un écran opaque et interdisent toute interprétation du signal sur une parcelle agricole au risque de produire des résultats erronés.

Afin de les prendre en compte, l’ESA (Agence Spatiale Européenne) a développé un algorithme (Sen2cor) qui permet de détecter ces nuages, leurs ombres ainsi que d’autres types de pixels (eau, neige, surfaces non végétalisée, pixels non classifiés), Autant de pixels qui devront entrainer l’exclusion de l’image pour une exploitation.

Il existe de nombreux algorithmes de masques de nuages, ils ont tous leurs forces et leurs faiblesses, une chose est sure, aucun n’est parfait.

L’idée est donc d’utiliser le masque de l’ESA pour exclure des parcelles lors d’un traitement, parmi les différentes classes de pixels produites par Sen2cor, il faut déterminer celles que l’on va accepter ou non, c’est déjà un choix important.

Ensuite, il faut choisir le niveau de tolérance de mauvais pixels que l’on autorise sur la parcelle, en effet, ce n’est pas parce que 3 ou 4 pixels d’ombre de nuages sont sur l’image d’une parcelle que celle ci n’est pas exploitable.

Un autre élément entre en ligne de compte: la distance de sécurité, en effet, quand à quelques dizaines de mètres d’une parcelle, on détecte un nuage on peut raisonnablement penser que le risque d’effet sur la parcelle est présent.

On a donc trois paramètres à déterminer pour accepter ou exclure une parcelle candidate à l’exploitation d’une image satellite: les classes de pixels à exclure, le seuil de tolérance de présence de mauvais pixels et la distance de sécurité.

Il ne reste plus qu’à calibrer ces trois paramètres en utilisant un exemple.

Chartres Eure et Loir (28) Sentinel 2 25 Janvier 2021

J’ai sélectionné des parcelles sur cette image avec de la végétation sans sélection préalable d’une quelconque culture ou autre et visuellement j’ai déterminé si la parcelle était exploitable ou pas en leur attribuant une couleur (verte: la parcelle est claire et rouge: la parcelle est contaminée par des mauvais pixels)

Sur la zone nord ouest de l’image on constate la présence de neige, à l’est de l’image on a des nuages et leurs inséparables ombres. On a également des parcelles avec peu de neige en train de fondre, ainsi que des parcelles parfaitement claires.

Masque de nuages Sen2cor ESA

Voici ce que donne le masque de nuages livré avec les images Sentinel, en vert c’est de la végétation, tout le reste représente ce que l’on ne veut pas sur une parcelle agricole (eau, ombre, pas de végétation, pixels non classifiés, neige, nuages, pixels trop sombres)

L’idée est donc d’appliquer pour chaque parcelle un comptage des classes de pixels choisies, déterminer si la somme de ces mauvais pixels est inférieur au seuil de tolérance dans le périmètre de la distance de sécurité autour de la parcelle.

On se retrouve donc avec 4 type de résultats:

  • Des faux positifs: On a exclu une parcelle qui était en fait valide
  • Des faux négatifs: On a validé une parcelle qui était à exclure
  • Des vrais positifs: On validé une parcelle qui était bien valide
  • Des vrais négatifs: On a bien exclu une parcelle bel et bien contaminée par de mauvais pixels.

Ci dessus exemple d’une parcelle sur le jeu de données, le taux de mauvais pixels est de 47.69%, seule la classe 4 (végétation) est sélectionnée comme valide.

Sachant que le masque de nuages n’est pas absolument parfait, et ce n’est pas une critique, j’ai aussi développé un masque de nuages qui présente aussi des défauts, il faut minimiser les faux négatifs, c’est à dire les parcelles validées par le masque alors qu’elles sont trop contaminées, mais sans être trop sévère de façon à ne pas exclure des parcelles qui seraient claires.

Exemple d’une parcelle que l’on peut accepter

Ci dessus une parcelle exclue à cause de l’ombre des nuages et l’image en couleurs naturelles.

Une parcelle claire
mais le masque de nuage trouve 12% de mauvais pixels dessus et donc l’exclut à tort

Au final avec une tolérance de 3%, une distance de sécurité nulle, et seule la classe végétation tolérée, on obtient un taux d’erreur de 10.84% soit aucune parcelle classée claire alors qu’elle ne l’était pas, mais 45 parcelles exclues alors qu’elle étaient valides, c’est un paramétrage disons “sécuritaire” qui permet d’éviter toute mauvaise interprétation de l’image.

Sur l’image ci dessus, en vert les parcelles claires bien déterminées par le masque de nuages, en rouge, les parcelles exclues à bon escient et en orange les parcelles exclues alors qu’elles n’auraient pas du l’être.

Des travaux en cours permettront d’optimiser les trois paramètres de l’algorithme afin de minimiser le taux d’erreur.

En conclusion, même si le masque de l’ESA peut présenter des failles, il a le mérite d’exister, d’être très facile à mettre en œuvre. Peut être d’autres masques (FMask, Thiea, réseaux de neurones convolutifs) permettraient des résultats meilleurs, à explorer…