# Different NDVI values with and without scale/offset

Bellow there are 2 different NDVI values, before and after applying scale/offset on bands 4 and 5.

Which is correct, the one with scale/offset being applied or the other?

I used a Landsat 8 L2SP image, with scale factor 0.0000275 and additive offset -0.2 on each band.

B4, B5 are the bands without scale and offset being applied.

B4_SCALE_OFFSET, B5_SCALE_OFFSET are the bands with scale and offset being applied.

NDVI is computed with the following equation:

NDVI = (reflectance NIR - reflectance RED)/(reflectance NIR + reflectance RED)

The raw satellite image is distributed with DN (digital number / digital level) values. This is because an integer value image weights a lot less than a float value image. In the case of L8 Col 2, DN values have a valid range of 1-65455. The scale and offset of this product is 0.0000275 and -0.2, so given an example of:

DN NIR: 25000
DN red: 10000

Using scale and offset, reflectance is:

Reflectance NIR: 0.4875
Reflectance RED: 0.075

Then:

NDVI using DN values: 0.429
NDVI using reflectance values: 0.73

When a satellite product has scale and offset values, you should always convert it to reflectance first, then compute NDVI or other vegetation indices. The old Landsat products (and the old version of Sentinel-2) had only scale value, so applying NDVI directly over DN values wasn't a problem.

• But L2SP are already surface reflectance products, so how can I convert them to reflectance? Bands 1 to 7 have reflectance units as the manual says on page 12, "usgs.gov/media/files/…" . Just to clarify, I must apply scale and offset on L2SP images in order to calculate indices, right? @aldo_tapia Jan 3, 2023 at 12:14
• Yes, you need to convert the DN values to reflectance values in order to calculate indices. Also, check page 3 of Data Format Control Book: usgs.gov/media/files/… Jan 3, 2023 at 12:24
• I am forwarding the following sentences from Data Format Control Book, "The standard L2SP is a Digital Number (DN) product stored in a 16-bit unsigned integer format", "The values output from Landsat Surface Reflectance Code (LaSRC) are scaled to fit in unsigned integers for the files named in the values for FILE_NAME_BAND_X". I understand that, DN are already converted to SR using LASRC, and we are using scale/offset just to convert integer to floating point units. What you say is that, we don't get surface reflectance before scale/offset, right? @aldo_tapia Jan 3, 2023 at 12:43
• The integer value is called DN value as the document states. It's different than the raw value of a satellite which is called radiance. A DN value is a way to store reflectance values in integer format. So if you use directly DN value instead of reflectance (after scale and offset), NDVI output will be lower than expected Jan 3, 2023 at 12:59
• Understood, it will be lower but will it be valid? I am asking because in the end, there will be reflectance values stored as an integer and on the other hand will be reflectance values stored as a float, am I right? @aldo_tapia Jan 3, 2023 at 13:14