Vegetation indices and data transformations

Learning goals

  • Calculate vegetation indices (NDVI, EVI)
  • Understand and perform a Tasseled Cap transformation


Spectral behavior of vegetation

Vegetation produces a distinct spectral reflectance pattern due to its leaf and cell structure, its physiognomy, and complex stand structure. Photosynthetically inactive plant parts differ considerably from active ones across different wavelength regions. Reflectance of photosynthetically active vegetation is characterized by different factors in the VIS, NIR and SWIR:

  • VIS – leaf pigments - In the visible bands the reflectance is relatively low as the majority of light is absorbed by the leaf pigments. Chlorophyll strongly absorbs energy in the blue and red wavelengths and reflects (a little) more in the green parts of the spectrum. This is why healthy vegetation appears green to the human eye.

  • NIR – cell structure - For healthy vegetation, the reflectance is much higher in the near infrared (NIR) region than in the visible region due to the cellular structure of the leaves, specifically the spongy mesophyll. Therefore healthy vegetation can be easily identified by the high NIR reflectance and generally low visible reflectance.

  • SWIR – water content - The reflectance in the shortwave infrared (SWIR) wavelengths is related to the water content of the vegetation and its structure. Water has strong absorption around 1.45, 1.95 and 2.50 µm. Outside of these absorption bands in the SWIR region, reflectance of leaves generally increases when water content in the leaf decreases.

Spectral reflectance curve of vegetation. Source:

Vegetation indices

Vegetation indices make use of this particular reflectance signal. Most commonly known are the Normalized Difference Vegetation Index (NDVI) and the Enhanced Vegetation Index (EVI).

Normalized Difference Vegetation Index (NDVI)

The NDVI relates the difference between the NIR and red reflectance to their sum.

\(NDVI = (nIR – red) / (nIR + red)\)

For instance, a red reflectance of 10% and a NIR reflectance of 50% result in

red <- 0.1
nIR <- 0.5

ndvi <- (nIR - red) / (nIR + red)
## [1] 0.6666667

The NDVI is not a physical measure, but a proxy integrating different factors, such as land use / cover, including the background signal visible in a pixel, photosynthetic activity, vitality and overall vegetation condition. It relates well to vegetation density and structure, e.g., represented by the leaf area index (LAI).

Enhanced Vegetation Index (EVI)

The EVI often has a better correlation with biomass than NDVI, specifically in vegetation canopies with low and high LAI values.

NDVI and EVI from MODIS image composites (5-20 March 2000). Source:

\(EVI = G * ((nIR – red) / (nIR + (C1 * red – C2 * blue) + L))\)

The EVI aims at reducing saturation effects which are common for NDVI. It includes a correction for soil background effects (L) to improve sensitivity for low density vegetation canopies. It is less sensitive to high aerosol loads, since the additional coefficients (C1 and C2) steer the aerosol resistance term, and the visible blue reflectance is used to correct for scattering that also affects the visible red.

Indices enhance differences in reflectance to highlight certain features. Vegetation indices have the advantage of being simple, but the disadvantage of disregarding parts of the spectral feature space. Linear transformations, such as the Tasseled Cap Transformation, can help to overcome this limitation.

Data transformations

Tasseled Cap Transformation

The Tasseled Cap Transformation (TC) is a linear transformation of the Landsat spectral bands. It was first presented in 1976 by R.J. Kauth and G.S. Thomas of Environmental Research Institute of Michigan in an article titled “The Tasseled Cap – A Graphic Description of the Spectral-Temporal Development of Agricultural Crops as Seen by Landsat.” The TC was thus developed for analyzing agricultural lands with Landsat MSS data. The name “Tasseled Cap” was chosen because the of the shape of phenological trajectories of crops in the nIR ~ red feature space.

Crop phenological trajectories in near infrared ~ red featurespace. Band numbers relate to Landsat MSS bands, where band 3 (6) is the near infrared and band 2 (5) is the red band.

We can observe these trajectories by producing near infrared ~ red scatterplots for different points in time.

Animated scatterplot of 10,000 locations of an agricultural system in southeastern Turkey in near infrared ~ red featurespace, observed within the course of one year (2015).

The concept was further developed for the use with other sensors, including Landsat TM, ETM+ and OLI. It is still widely used for different remote sensing applications, especially in the context of agriculture and forestry. When analyzing the results of TC, we mostly look at three components called Brightness, Greenness, and Wetness:

  • Brightness: the axis along the line of soils, indicating soil brightness.
  • Greenness: the axis perpendicular to the soil line, emphasizes near infrared and hence vegetation.
  • Wetness: emphasizes shortwave infrared and is thereby related to water content.


We provide the following datasets in our repository:

…sr_data/: Four cloud-masked surface reflectance image chips from Landsat 8:

  • LC081890252014031001T1-SC20170927101754 (10 March 2014)
  • LC081890252014071601T1-SC20171024094741 (16 July 2014)
  • LC081890252015082001T1-SC20170927120710 (20 August 2015)
  • LC081890252014110501T1-SC20170927102137 (05 November 2014)

1) Compute vegetation indices

Read the March surface reflectance stack in R and calculate NDVI as well as EVI. The correction factors for calculating EVI from Landsat data are:

  • \(G = 2.5\)

  • \(C1 = 6\)

  • \(C2 = 7.5\), and

  • \(L = 1\).

Always be aware that the reflectance values in our datasets are scaled by 10,000. This will not make a difference when computing the NDVI. However, for the EVI, the additive coefficient \(L\) must be scaled by 10,000. Also, keep in mind that we commonly want to store datasets in INT2S data type, and therefore we will also need to scale our results by 10,000. Consequently, we compute the EVI from Landsat data as follows:

evi <- 2.5 * ((nIR – red) / (nIR + 6 * red – 7.5 * blue + 10000))

While the computation is ongoing, proceed with preparing the code for the next task. When the computation is done, write the results to disk, using the INT2S data type.

2) Perform a Tasseled Cap transformation

Perform a TC transformation using the March surface reflectance stack. We use the coefficients derived by Crist (1985).

tcc <- matrix(c( 0.2043,  0.4158,  0.5524, 0.5741,  0.3124,  0.2303, 
                -0.1603, -0.2819, -0.4934, 0.7940, -0.0002, -0.1446,
                 0.0315,  0.2021,  0.3102, 0.1594, -0.6806, -0.6109), 
                dimnames = list(c('blue', 'green', 'red', 'nIR', 'swIR1', 'swIR2'), c('brightness', 'greenness', 'wetness')),
                ncol = 3)

##       brightness greenness wetness
## blue      0.2043   -0.1603  0.0315
## green     0.4158   -0.2819  0.2021
## red       0.5524   -0.4934  0.3102
## nIR       0.5741    0.7940  0.1594
## swIR1     0.3124   -0.0002 -0.6806
## swIR2     0.2303   -0.1446 -0.6109

The TC is a linear band transformation. We can simply multiply the individual bands in the March stack with the corresponding factor and sum up the result, e.g., for TC Brightness:

brightness <- march.stack[[1]] * tcc[1,1] + 
              march.stack[[2]] * tcc[2,1] + 
              march.stack[[3]] * tcc[3,1] + 
              march.stack[[4]] * tcc[4,1] + 
              march.stack[[5]] * tcc[5,1] + 
              march.stack[[6]] * tcc[6,1]

Make sure to create an individual layer for Brightness, Greenness, and Wetness. Create a stack from the three layers. While the computation is ongoing, proceed with task 1) of the block on training data collection.

When the computation is completed, write the results to disk, using the INT2S data type. Add the NDVI, EVI, and the TC stack to the QGIS project you started in the next block. Visually explore the vegetation indices and TC components.

Copyright © 2020 Humboldt-Universität zu Berlin. Department of Geography.