Modified Soil-adjusted Vegetation Index (MSAVI) or Modified Triangular Vegetation Index 2 (MTVI) weighted by the Normalized difference senescent vegetation index (NDSVI)
The intent of this index is to correct the MSAVI or MTVI index for bias associated with senescent vegetation. This is done by:
deriving the NDSVI;
applying a threshold to limit NDSVI to values associated with senescent vegetation;
converting the index to inverted weights (-1*(NDSVI/sum(NDSVI)));
applying weights to MSAVI or MTVI
The MSAVI formula follows the modification proposed by Qi et al. (1994), often referred to as MSAVI2. MSAVI index reduces soil noise and increases the dynamic range of the vegetation signal. The implemented modified version (MSAVI2) is based on an inductive method that does not use a constant L value, in separating soil effects, an highlights healthy vegetation. The MTVI(2) index follows Haboudane et al., (2004) and represents the area of a hypothetical triangle in spectral space that connects (1) green peak reflectance, (2) minimum chlorophyll absorption, and (3) the NIR shoulder. When chlorophyll absorption causes a decrease of red reflectance, and leaf tissue abundance causes an increase in NIR reflectance, the total area of the triangle increases. It is good for estimating green LAI, but its sensitivity to chlorophyll increases with an increase in canopy density. The modified version of the index accounts for the background signature of soils while preserving sensitivity to LAI and resistance to the influence of chlorophyll.
The Normalized difference senescent vegetation index (NDSVI) follows methods from Qi et a., (2000). The senescence is used to threshold the NDSVI. Values less then this value will be NA. The threshold argument is used to apply a threshold to MSAVI. The default is NULL but if specified all values (MSAVI <= threshold) will be NA. Applying a weight.factor can be used to change the influence of the weights on MSAVI.
swvi( red, nir, swir, green = NULL, mtvi = FALSE, senescence = 0, threshold = NULL, weight.factor = NULL, ... )
red | Red band (0.636 - 0.673mm), landsat 5&7 band 3, OLI (landsat 8) band 4 |
---|---|
nir | Near infrared band (0.851 - 0.879mm) landsat 5&7 band 4, OLI (landsat 8) band 5 |
swir | short-wave infrared band 1 (1.566 - 1.651mm), landsat 5&7 band 5, OLI (landsat 8) band 6 |
green | Green band if MTVI = TRUE |
mtvi | (FALSE | TRUE) Use Modified Triangular Vegetation Index 2 instead of MSAVI |
senescence | The critical value, in NDSVI, representing senescent vegetation |
threshold | Threshold value for defining NA based on < p |
weight.factor | Apply partial weights (w * weight.factor) to the NDSVI weights |
... | Additional arguments passed to raster calc function |
rasterLayer class object of the weighted MSAVI metric
Haboudane, D., et al. (2004) Hyperspectral Vegetation Indices and Novel Algorithms for Predicting Green LAI of Crop Canopies: Modeling and Validation in the Context of Precision Agriculture. Remote Sensing of Environment 90:337-352.
Qi J., Chehbouni A., Huete A.R., Kerr Y.H., (1994). Modified Soil Adjusted Vegetation Index (MSAVI). Remote Sens Environ 48:119-126.
Qi J., Kerr Y., Chehbouni A., (1994). External factor consideration in vegetation index development. Proc. of Physical Measurements and Signatures in Remote Sensing, ISPRS, 723-730.
Qi, J., Marsett, R., Moran, M.S., Goodrich, D.C., Heilman, P., Kerr, Y.H., Dedieu, G., Chehbouni, A., Zhang, X.X. (2000). Spatial and temporal dynamics of vegetation
Jeffrey S. Evans jeffrey_evans@tnc.org
if (FALSE) { library(raster) library(RStoolbox) data(lsat) lsat <- radCor(lsat, metaData = readMeta(system.file( "external/landsat/LT52240631988227CUB02_MTL.txt", package="RStoolbox")), method = "apref") # Using Modified Soil-adjusted Vegetation Index (MSAVI) ( wmsavi <- swvi(red = lsat[[3]], nir = lsat[[4]], swir = lsat[[5]]) ) plotRGB(lsat, r=6,g=5,b=2, scale=1, stretch="lin") plot(wmsavi, legend=FALSE, col=rev(terrain.colors(100, alpha=0.35)), add=TRUE ) # Using Modified Triangular Vegetation Index 2 (MTVI) ( wmtvi <- swvi(red = lsat[[3]], nir = lsat[[4]], swir = lsat[[5]], green = lsat[[3]], mtvi = TRUE) ) plotRGB(lsat, r=6,g=5,b=2, scale=1, stretch="lin") plot(wmtvi, legend=FALSE, col=rev(terrain.colors(100, alpha=0.35)), add=TRUE ) }