MSAVI Algorithm Specification

MSAVI

The Modified Soil Adjusted Vegetation Index algorithm was was developed by Qi et al. (1994)

The adjustment factor L for SAVI depends on the level of vegetation cover being observed.
This leads to the circular problem of needing to know the vegetation cover before calculating the vegetation index, which is what gives you the vegetation cover.
The basic idea of MSAVI was to provide a variable correction factor L.
The correction factor used is based on the product of NDVI and WDVI. This means that the isovegetation lines do not converge to a single point.

The MSAVI results from the following equation:

MSAVI = (1 + L) * (IR_factor * near_IR - red_factor * red) / (IR_factor * near_IR + red_factor * red + L)

where: L = 1 - 2 * s * NDVI * WDVI and s is the soil line slope

Not all soils are alike. Different soils have different reflectance spectra.
All of the vegetation indices assume that there is a soil line, where there is a single slope in RED-NIR space.
However, it is often the case that there are soils with different RED-NIR slopes in a single image.
Also, if the assumption about the isovegetation lines (parallel or intercepting at the origin) is not exactly right,
changes in soil moisture (which move along isovegetation lines) will give incorrect answers for the vegetation index.
The problem of soil noise is most acute when vegetation cover is low.
The following group of indices attempt to reduce soil noise by altering the behavior of the isovegetation lines.
All of them are ratio-based, and the way that they attempt to reduce soil noise is by shifting the place where the isovegetation lines meet.
WARNING: These indices reduce soil noise at the cost of decreasing the dynamic range of the index.
These indices are slightly less sensitive to changes in vegetation cover than NDVI (but more sensitive than PVI) at low levels of vegetation cover.
These indices are also more sensitive to atmospheric variations than NDVI (but less so than PVI). (See Qi et al. (1994) for comparisons.)

MSAVI-Flags

Also the processor computes an additional flags band called 'msavi_flags' with the following bit coding:

Bit Position Description
Bit 0 The computed value for MSAVI is NAN or is Infinite
Bit 1 The computed value for MSAVI is less than -1 (minus one)
Bit 2 The computed value for MSAVI is greater than 1 (one)