Problems encountered calculating Red Edge Indices using Sentinel 2

I have used Sentinel 2 data to retrieve Red Edge indices in SNAP and found discrepancies in the resultant raster (attached). The inconsistencies pertaining to NDVIre3 from Sentinel 2 involves following equation;

NDVIre3= (B8-B7)/(B8+B7)
NDVIre3n= (B8a-B7)/(B8a+B7)
Reference to these indices:
Prior to use Band Math, the atmospheric correction was performed and indices were calculated on Scaled reflectance and same pixel size. I have also used QGIS to cross check the results but found same noise in the resultant image. On the contrary, NDVI (B8-B4) / (B8+B4) produces smooth raster realistic to ground realities. I am not sure what might be the cause of this problem.

How have you resampled the data to a common pixel size and to witch size.
The noise could be introduced by the resampling.

B4 and B8 have the same resolution 10m.
B7 and B8A have 20m pixel size.
It is better to resample all bands to 20m using the downsampling method mean. This mimics the aggregation of the sensor.

@marpet Thanks for your feedback. I will revisit pre-processing with advised strategy. Please let me also know whether I should use;

Raster>Geometric Operations>Resampling’ tool OR
Optical>Geometric>S2 Resampling Processor

to resample my S2A_MSIL1C product?

The S2 Resampling will be slower but handles the angles better. Please read the documentation about the S2 Resampling and decide on your own. Maybe you don’t need the angles in your application. Then you can go with the generic resampling.

Thanks, I will revisit Pre-processing following your advised steps and then come back to apprise you about results.


I had revisited pre-processing steps as directed. I performed atmospheric calibration using Sen2Cor (at 20m res) to get L2A product, resampled using generic resampling tool in SNAP customizing downscaling option to Mean with Nearest Neighbourhood, applied NDVI function and found realistic results but encountered same discrepancy with NDVIre3n raster (B8A-B7)/(B8A+B7) apparent below. I am unable to use NDVIre3 (B8-B7)/(B8+B7) since Sen2Cor doesn’t produce B8 if 20m input res is selected in Sen2Cor tool. Let me also know how to get this band make available to use with earlier derived surface reflectance bands.

Please suggest me possible causes of this noise and weird pixel values in contrast to NDVI apparent in the NDVIre3/NDVIre3n raster’s snapshot. I have read another article wherein NDVIre3 has been used but didn’t found authors talking about this problem might be simply because they didn’t faced it! but how?