MSAVI2 Algorithm Specification |

### MSAVI2

The second Modified Soil Adjusted Vegetation Index algorithm was was developed by Qi et al. (1994) as a recursion of MSAVI
Basically, they use an iterative process and substitute 1 - MSAVI(n-1) as the L factor in MSAVI(n).
They then inductively solve the iteration where MSAVI(n) = MSAVI(n-1)
In the process, the need to precalculate WDVI and NDVI and the need to find the soil line are eliminated.

The MSAVI2 results from the following equation:

MSAVI2 = (1/2) * ( 2 * IR_factor * near_IR + 1 - sqrt( ( 2 * IR_factor * near_IR + 1) * ( 2 * IR_factor * near_IR + 1) - 8 * (IR_factor * near_IR - red_factor * red) ) )

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.)

### MSAVI2-Flags

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

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