MSAVI2 processor

Hi everyone, I an new to Sentinel data and SNAP and have been using SNAP to produce MSAVI2 geotiffs from Sentinel 2A. The output is a 2 band product and the pixel values appear to be “shifted” up (i.e. values greater than 1). From my experience, VI values should be from -1 to 1. Why does the output have two bands and why are the values shifted up?
Thanks so much!!!


your answer is in the help of the MSAVI2 Processor. The first band is the MSAVI2 image while the second is a flag image where each pixel can have the following values:

0: The computed value for MSAVI2 is NAN or is Infinite
1: The computed value for MSAVI2 is less than 0 (zero)
2: The computed value for MSAVI2 is greater than 1 (one)

As stated in the help archive:

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

This equation is not bounded between [-1; 1] like NDVI but using the flags image you can mask the unwanted values (ie. NaN, infinite or greater than 1 values).

Javio, thank you so much - I need to study up more on this. One more question - what is the role of the IR and red factors?

The IR_factor and red_factor are correction factors that can be applied optionally in the case that you have to apply scaling factors. You don´t need it with S2 L2A data but imagine that you want to process an image from an arbitrary source where you have to apply some kind of spectral target calibration factors for instance.

Javio, Just one point. Apparently, this MSAVI formula is different from that in Qi et a. 1994:
I found both formulas in literature, though. Any hints?


Dear Carminemaffei, can you please share the literature that you found citing the equation that SNAP processor is using according to Javio.

Till now I knew only about the Qi et al (1994) equation.

One more thing, I run the MSAVI2 processor through SNAP and I did get a large number of invalid values>1.

I produced MSAVI2 using BandMaths and Qi et al (1994) equation i.e. (2* B8 +1- sqrt(sq(2* B8 +1)-8*(B8 – B4)))/2 and my values are all inside MSAVI2 range i.e. (-1, +1)

All the best,