Using NDVI with atmospherically corrected data



NDVI is by far the most commonly used vegetation index. NDVI was developed in the early seventies (Rouse 1973, Tucker 1979), and widely used with remote sensing in the nineties until now. It is computed from the surface reflectance in the red and near infra-red channels on each side of the red-edge.




where \rho(NIR) and  \rho(RED) are reflectances in the NIR and RED. Although several users still use top-of atmosphere reflectances (TOA), surface reflectances should be used to reduce sensitivity to variations of aerosol atmospheric content.


A time profile of surface reflectance from Sentinel2 satellite for the blue, green, red and NIR spectral bands for a summer crop in South East France. The observation under constant viewing angles minimizes directional effects.One can also notice that reflectance variations related to vegetation status are greater in the near infra-red, while the noise is usually lower. As a result, a vegetation index should rely more on the NIR than on the red.

I think NDVI is mainly used for the following reasons (but feel free to comment and add your reasons) :

  • it has the large advantage of qualifying the vegetation status with only one dimension, instead of N dimensions if we consider the reflectances of each channel. Of course, by replacing N dimensions by only one, a lot of information is lost.
  • it  enables to reduce the temporal noise due to directional effects. But with the Landsat, Sentinel-2 or Venµs satellites, which observe under constant viewing angles, the directional effects have been considerably reduced.


I therefore tend to tell students that if NDVI is convenient, it is not the only way to monitor vegetation.

NDVI is quite sensitive to atmospheric effects, and time series of NDVI before atmospheric correction can be quite noisy if variations of aerosol atmospheric content are observed. At the time it was developed, it was not very frequent to access to data corrected for atmospheric effects. The situation has changed now, and we see much more users work with NDVI after atmospheric correction.


But it also turns out NDVI has some drawbacks when used after atmospheric correction, with surface reflectances instead of TOA reflectance. The issue is that red band surface reflectances are much lower than the TOA reflectances.


Comparison of NDVI obtained from simulated reflectances, with same NDVI computed adding a noise of 0.02 to the reflectances (which is the double of expected noise from atmospheric correction). A high number of NDVI values are close or equal to one.

As shown in the following Jupyter Notebook (my first one !), NDVI turns out to be very sensitive to noise when surface reflectances in the red are low. Because of the noise, the reflectances can be close or equal to zero, if not negative. In that case, the NDVI gets very close to 1 whatever the NIR reflectance.


And I receive quite often complaints about NDVI outliers due to very low reflectances. The usual consequence is that these users question the quality of the atmospheric correction, and even the necessity to perform atmospheric correction. Of course, atmospheric correction can be criticised, it is difficult and will never be perfect, there will always be some residual noise due to aerosol estimation errors, incomplete cloud masking, errors in adjacency effect estimates... That's why  I think we should question the use of NDVI in its standard definition.




Anyway,  there is a quite simple solution to solve the issue of red surface reflectances close to zero : just add a constant to the red band surface reflectance. This constant must be greater than the standard deviation of atmospheric correction noise. As this one is usually close to 0.01, the constant could be 0.05.




With such a definition of NDVI, we can see that the new version of the plot we had shown above looks much better below.

Same as above, but with the modified NDVI formula (ACORVI). The NDVI values close or equal to 1 have disappeared.


It is very probable that such a modified NDVI was already proposed in the litterature but I did not find it among the most famous ones (Bannary et al 1996), including the Atmospherically Resistant Vegetation Index (Kaufman et al, 1992).


So maybe should I call this one the Atmospheric COrrection Resistant Vegetation Index (ACORVI)

Now that I have defined my own vegetation index, I could retire happily ! I hope none of my neighbours in conferences remember that I used to say that defining a vegetation was really something of the past.


Let's summarise:

  • There is much more information in reflectances than in NDVI
  • But if you still find NDVI convenient, and if you are using atmospherically corrected reflectances, you will have better results with the ACORVI index.



Rouse J.W., Haas R.H., Schell J.A., Deering D.W., 1973. Monitoring vegetation systems in the great plains with ERTS. Third ERTS Symposium, NASA SP-351. 1:309-317
Tucker C.J., 1979. Red and photographic infrared linear combinations for monitoring vegetation. Remote Sens Environ 8:127-150
Kaufman Y. J., Tanre D., 1992. Atmospherically Resistant Vegetation Index (ARVI) for EOS-MODIS, I.E.E.E. T geosci remote 30(2):261-270
Bannari, A., Morin, D., Bonn, F., & Huete, A. R. (1995). A review of vegetation indices. Remote sensing reviews, 13(1-2), 95-120.
See also this impressive database of remote sensing indexes :


I found the nice graphs on top of this post from this site, sponsored by Eumetsat :

Posted under: Code, Comment ça marche /how it works, Corrections (geometry, atmosphere, clouds), In English

Tagged as: , ,


  • Olivier Hagolle on 05/02/2018 at 15:56 said:

    Well that would be even worse, with a much larger noise. You may see it by yourself playing with the notebook. Just comment the casts to zero in cell 3.

    • Olivier Hagolle on 06/02/2018 at 14:58 said:

      Thanks Ghani,
      Alfredo is very productive, would you have the reference ?
      I had a look at his review of vegetation indexes in 1996 (reference is now in the post). Can't say it is recent, but definitely useful !

  • Alain FELER on 17/11/2018 at 14:28 said:

    Nous essayons d'utiliser le NDVI pour repérer l'absence ou l'insuffisance de couvert végétal hivernal en Bretagne (les agriculteurs doivent mettre des plantations de couverture pour absorber les nitrates et limiter le lessivage, mais il n'est pas facile de repérer les contrevenants et ils le savent). Or je m'interroge sur la pertinence du NDVI quand il n'y a pas de végétation du tout ! Par ex. un champ grillé au glyphosate = terre nue, et pourtant on trouve dessus un NDVI median de l'ordre de 0.28 (champ de 35 ha vu sur Sentinel 2 L2A, donc des milliers de pixels), càd à peu près la même chose que sur la route nationale à côté, ou les vases en bord de l'Odet au sud de Quimper. Une suggestion serait très appréciée, merci d'avance ! AF

    • Olivier Hagolle on 19/11/2018 at 17:50 said:

      Je ne suis pas un grand spécialiste de l'apparence d'un champ grillé au glyphosate. De mémoire, la végétation devient un peu rouge au début, puis disparaît ensuite pour laisser place à un sol nu. Mais ce n'est pas simple de différencier une végétation sèche d'un sol nu.
      Les valeurs présentées ne me choquent pas. Le NDVI ne vaut pas zéro quand le sol est nu, car les sols ont souvent une réflectance qui augmente avec la longueur d'onde. Donc des valeurs de 0.2-0.3 sont assez normales, d'autant plus si le sol est sombre à cause de l'humidité. C'est aussi le cas pour le bitume.

      Mais s'il y a un couvert hivernal le NDVI devrait monter assez rapidement.
      Heu, je ne sais pas si je réponds bien à la question. Il peut être plus simple d'en parler par téléphone.

  • Alain FELER on 11/12/2018 at 14:19 said:

    Bonjour, après discussion entre les participants au projet votre réponse succincte s'avère parfaite. Merci !
    J'ai entendu dire qu'il y aurait peut-être bientôt un produit du genre NDVI en continu.
    Savez-vous s'il est envisagé de faire un genre de flux OGC avec ça ? On passerait une requête avec une zone, une période, et on récupérerait l'historique des NDVI sur la zone et la période, pixel par pixel ?
    Ainsi par exemple nous pourrions repérer le "monter assez rapidement" que vous évoquez, par une requête SIG sans avoir à gérer "l'approvisionnement" en données.

    • Olivier Hagolle on 11/12/2018 at 16:24 said:

      oui, MUSCATE développe un produit variables biophysiques, et le NDVI pourrait y être ajouté. Ce n'est pas moi qui m'en occupe, et j'imagine que ce n'est pas pour demain.
      Quant au flux OGC, c'est une bonne idée.

      Il vaudrait mieux pour ces questions écrire au chef de projet THEIA au CNES (Arnaud.Selle at

  • Mats Rosengren on 01/04/2019 at 12:23 said:

    Hello Olivier.

    I have always assumed that SR values should be between 0 and 1. This is a natural first assumption but I have come to realize the this is not the case depending on how the SR modeling and atmospheric correction is performed.

    Aren´t the main problems which causes negative SR values or even values >1 the following.
    - Surface reflectance modelling are normally based on the assumption that the pixels are on a flat horisontal Lambertian ground. As this is seldom the case, dark pixels (non-Lambertian or on a slope facing away from the sun) will end up having a negative SR value. Similar for high reflectance areas facing the sun (and sensor) may cause SR-values >1. This is the case for cloud tops and snow covered slopes.
    - If the atmospheric correction is overcorrecting you will also find false negative SR values in dark flat areas such as water especially cloud shadows or other shadows fall on clear water.

    I believe that these problems are larger at high latitudes due to low sun angles and clear atmosphere.

    What is your experience of atmospheric correction accuracy at very high latitudes?


  • Olivier Hagolle on 01/04/2019 at 15:15 said:

    Hi Mats, nice to hear from you !

    Surface reflectance can be greater than one, for instance, the reflectance measured in specular direction over a mirror will be much greater than one. Of course the spectral albedo, can't be greater than one. It will be caste for my mirror example.

    Regarding low reflectances, yes, reflectances should be positive, but if, for instance, we overestimate the optical thickness, we can correct too much and get negative values (usually close to zero).

    In high latitudes, as you say,the sun elevation is low, the apparent atmospheric thickness is even greater, and the probability of overcorrection can increase. The clear atmosphere is not too much an issue, since we estimate the AOT. But I have not used much MAJA in high latitudes, and there is a lack of surface reflectance validation data there. The few sites processed did not show big issues.

    Best regards,

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>