SMAC prend en charge de nouveaux satellites

=>

De nouveaux coefficients ont été ajoutés au site du CESBIO . Les nouveaux satellites pris en compte sont :

  • Landsat 8, RapidEye
  • Quickbird, Worldview2, Ikonos
  • Pléiades1A (PHR1A)
  • DMC-DEIMOS1

 

Le Simplifié Modèle d'Atmosphérique Correction (SMAC) est parfaitement adapté à l'implémentation rapide et approchée de corrections atmosphériques. Il s'agit de fonctions analytiques dérivées du modèle 5S. Les 49 coefficients de ce modèle sont ajustés à partir de simulations de transfert radiatif obtenues avec le modèle 6S (l'ancienne version, pas la récente version vectorielle). SMAC n'est pas un modèle très précis (beaucoup moins que MACCS), et il faut lui fournir des données auxiliaires pour l'épaisseur optique des aérosols ou pour les contenus atmosphériques en ozone et vapeur d'eau. Quand ces données sont précisément connues, la précision des simulations est en général meilleure que deux à trois pour cent, sauf parfois pour les grands angles (au dessus de 70°) ou dans de fortes bandes d'absorption et si on ne prend pas en compte les effets d'environnement et les effets de pente.

 

SMAC a été conçu pour être facile à utiliser :

#lecture des 49 cofficients
nom_smac ='COEFS/coef_FORMOSAT2_B1_CONT.dat'
coefs=coeff(nom_smac)
 
#Lire la réflectance TOA de la bande à traiter
#(celà va dépendre du format de l'image)
 
#Lire les valeurs des angles dans les métadonnées (ici, on les fixe)
theta_s=30
phi_s=180
theta_v=0
phi_v=0
# calculer la pression atmosphérique à l'altitude du pixel
pressure=PdeZ(1300)
 
#trouver les valeurs des variables atmsophériques (ici, on les fixe arbitrairement)
AOT550=0.1
UO3=0.3
UH2O=3
 
#calculer la correction atmosphérique
r_surf=smac_inv(r_toa,theta_s,phi_s,theta_v,phi_v,pressure,AOT,UO3,UH2O,coefs)

Dans la dernière ligne ci-dessus :

  • theta_s, phi_s sont resp. l'angle solaire zenithal et azimuthal
  • theta_v, phi_v sont resp. l'angle de visée zenithal et azimutha
  • AOT est l'épaisseur optique à 550 nm qui peut provenir d'une station Aeronet, ou fixée au jugé, ou égale à 0.1 (si on se contente d'une correction très approchée).
  • UO3 est le contenu en ozone, en cm.atm (0.3 est souvent suffisamment précis)
  • UH2O est le contenu en vapeur d'eau, en kg/m². J'utilise souvent une valeur égale à 3, quand je ne cherche pas une grande précision, dans des bandes ou l'absorption est faible
References

[1] Rahman, H., & Dedieu, G. (1994). SMAC: a simplified method for the atmospheric correction of satellite measurements in the solar spectrum. REMOTE SENSING, 15(1), 123-143.
"[2]"Tanré, D., Deroo, C., Duhaut, P., Herman, M., Morcrette, J. J., Perbos, J., & Deschamps, P. Y. (1990). Technical note Description of a computer code to simulate the satellite signal in the solar spectrum: the 5S code. International Journal of Remote Sensing, 11(4), 659-668.

"[3]"Vermote, E. F., Tanré, D., Deuze, J. L., Herman, M., & Morcette, J. J. (1997). Second simulation of the satellite signal in the solar spectrum, 6S: An overview. Geoscience and Remote Sensing, IEEE Transactions on, 35(3), 675-686.>
"[4]"Kotchenova, S. Y., Vermote, E. F., Matarrese, R., & Klemm Jr, F. J. (2006). Validation of a vector version of the 6S radiative transfer code for atmospheric correction of satellite data. Part I: Path radiance. Applied Optics, 45(26), 6762-6774.
"[5]"Kotchenova, S. Y., & Vermote, E. F. (2007). Validation of a vector version of the 6S radiative transfer code for atmospheric correction of satellite data. Part II. Homogeneous Lambertian and anisotropic surfaces. Applied Optics, 46(20), 4455-4464.

 

Posted under: Code, Corrections (geometry, atmosphere, clouds), En Français, Landsat

Tagged as:

5 comments

  • TOKOTOKO jannai on 11/06/2016 at 05:59 said:

    Bonjour
    Doit-on multiplier la correction à chaque valeur de pixel de chaque bande de l'image à corriger ?

    • Olivier Hagolle on 11/06/2016 at 14:42 said:

      Bonjour,
      votre question est peu précise, j'espère que je réponds bien.
      Il ne faut pas multiplier, il faut utiliser la fonction smac_inv, comme dans le code ci-dessus. Il faut le faire pour toutes les bandes et tous les pixels, mais en python, avec numpy, on peut passer l'image entière en argument sans faire de boucle sur les pixels. La boucle sur les bandes est obligatoire.

  • TOKOTOKO jannai on 12/06/2016 at 11:51 said:

    Bonjour ,
    Merci beaucoup pour votre réponse
    Je voulais savoir : que faut t-il faire après avoir calculer la réflectance pour chaque Band ?
    J'utilise IDL , j'ai rapidement réécrit le code C.
    J'ai donc la fonction SMAC , et j'obtient une valeur de réflectance par Band( puisque j'ai une même pression appliqué à l'ensemble des pixel )
    A partir de la valeur de réflectance obtenue par band faut-il , pour corriger l'image , l'ajouter ou la multiplier à chaque valeur de pixel de l'image original ( pour un bande donnée ) ?
    Cldt

    • Olivier Hagolle on 12/06/2016 at 16:25 said:

      Merci, c'est plus clair ainsi.
      Inutile de multiplier ou additionner. Il suffit de remplacer la valeur. La fonction SMAC vous fournit la réflectance corrigée des effets de l'atmosphère.
      Olivier

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>