This question was marked as being a duplicate of Landsat8 NDVI values not in the -1 to 1 range but I've posted my question because:

  1. I am not using Landsat; and
  2. there was no explanation of how to resolve the problem. How would one use conditional logic to rectify the problem?

If it's negative reflectance in the red band causing me grief, why would some of my NDVI maps look fine and others look like the ones in the screenshot? All acquisition dates have negative reflectance in the red.

I used Con() statements to rescale my reflectance maps for a single acquisition date between values of 0 and 1 as per the other thread. I now get a max NDVI of 1 which is good, but my minimum is still negative (< -800). Kind of at my wits end at this point. An NDVI of -800 is mathematically impossible if the reflectance range is 0 to 1.

I am trying to radiometrically calibrate UAV imagery collected using filter-modified digital cameras sourced from Sensefly. In the field, I had a Spectralon tile (99% reflective in the VIS-NIR spectra) in addition to a black ceramic tile. I used a hyperspectral ground sensor with incident light sensor to measure the black tile during and after each flight. Images were processed through eMotion into 12-bit TIFF format then orthomosaiked using Pix4D.

I used ArcGIS to extract mean pixel values for the tiles. Spectralon means had to be extracted separately using individual images shot on the ground since the tile is only 3x3 inches. The multiband orthos were split into single bands using Arc as well. I then ran a linear regression (PROC REG in SAS) between the mean pixel value in a given channel and the closest ground sensor channel. Since then, I've slowly been applying the regression equations to the respective bands using the raster calculator.

My problem is that my NDVI values calculated using the calibrated imagery do not make any sense at all. The min/max ranges go from -600 to well over 2000, sometimes even 2 x 10^6! Pix4D also has a built into radiometric calibration tool which uses only a Spectralon tile (I've since been told that 99% reflectivity is too much for this tool) and the NDVI values I calculated using those reflectance maps generally make sense, but mine should be better since I use 2 tie points instead of 1.

To make matters more confusing, I have one flight (see below) where I had a black, a camo-green, and a white ceramic tile in addition to the Spectralon. That calibration looks beautiful. I also have 2 flights with black, green, and Spectralon tiles.

Attached are several screenshots from Arc that show the min/max NDVI values from the two custom calibration methods. I have one from Pix4D but I do not have the reputation to attach it.

NDVI produced from empirical line calibration with 4 tiles

NDVI produced from empirical line calibration with only black and Spectralon tiles

  • You should consider committing to be a part of the remote sensing SE. I feel like this question would be answered better there. area51.stackexchange.com/proposals/90327/… Commented Oct 25, 2016 at 23:03
  • Thanks Trevor! Is there an easy way for me to cross-post this over to that forum?
    – user254201
    Commented Oct 26, 2016 at 1:14
  • 1
    Whoops I'm new to the site and now understand what you meant. I've committed and will definitely be active on that SE when it gets up and running.
    – user254201
    Commented Oct 26, 2016 at 1:29

1 Answer 1


1.) Have you set the nodata value to zero for all the bands/images you are working with? If some of the bands have a nodata value set to -9999 (or some other negative value) you may get erroneous results.

You can set the nodata value to zero in ArcMap using the Set Null tool (Spatial Analyst->Conditional->Set Null). Or in GDAL using the gdalwarp command:

gdalwarp -of GTIFF -co "COMPRESS=DEFLATE" -srcnodata -9999 -dstnodata 0 Input.tif Output.tif

2.) Try calculating the NDVI in other software. The QGIS raster calculator is easy to use, and it handles things like int to float conversions much better than Arc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.