NDVI Post-Processing in Fiji


A lot of people have been asking me how we post-process imagery coming from one of our, or any other company's, NGB converted cameras. There's a very easy way to run this processing thanks to Fiji and the Photo Monitoring plugin by Ned Horning. I've just written up a quick getting started guide to this software, pasted here for convenience. If you're coming across this post in the future, see this link for the most up to date version.

Images taken with modified NGB cameras need to be processed in order to display information about vegetation health. This process is very easy using Fiji and Ned Horning's Photomonitoring Plugin. First, grab a copy of these software packages - the easiest way to get a copy with the Photomonitoring Plugin is to download a pre-configured pack from Flight Riot, here (Look for the text "Click Here to Download FIJI/IMAGEJ with PHOTO MONITORING PLUGIN pre-configured" just below the third paragraph).

Install this version of Fiji then load the program and open an NGB image. The sample image used in this tutorial is downloadable by clicking here.


Open the NDVI processing tool by clicking Single image NDVI from displayed image from the Photo Monitoring dropdown as shown above. Now the NDVI processing tool will open and display several options for how to process your image. Make the following changes to the default settings:

  1. Uncheck "Stretch the visible band before creating NDVI?"
  2. Uncheck "Stretch the NIR band before creating NDVI?"
  3. Change the output color table box to 'ndviClasses_-1_1.lut' as shown below


Now just click 'OK' and after a few seconds two images will load. One is the black and white raw NDVI values image and the other is the same image but with the selected lookup table applied. A lookup table (or LUT) simply takes the NDVI values from the first image and applies a color depending on the magnitude. This allows us to visualize the NDVI values more easily. This is just a way of visualizing the data though and does not change the data in any way, you can select other LUT files and experiment to see which display you prefer most. The default output results in the images below.


This is perfectly usable as it is, but I know this LUT is designed to display the highest values in green. The highest values in this image are only as high as values corresponding to yellow, which is about 0.5. In order to show more depth in the image, we can re-scale the LUT values from -1.0 to 0.5 so that we get the full range of colors across the full range of NDVI values in this image. To make this change, open the NDVI processing tool again and this time enter 0.5 into the box titled "Maximum NDVI value for scaling color NDVI image". Applying that change gives us the following images (note the black and white raw image hasn't changed at all):


In this version, we can see more levels of differentiation within the leaves, and even some different levels in the snow, likely caused by vignetting in the camera's lens. When making a mosaic, process the mosaic first before calculating the NDVI values as this gives the software a chance to promote image-center pixels over image-edge pixels (as most postprocessing software does). Aside from that, the NDVI image has lost a good deal of the detail that would have been used to match up overlapping images in the mosaic. Fiji can safely handle mosaics up to several dozen megabytes but above that it is less stable, even if you increase the maximum memory it allows itself.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • I have mailed you the images :) Please have a look at them,

    Thanks !!

  • Hi  - would it be possible for you to send me one of your images? If I have one of your images I can and I'll try to figure out what the problem is. You can send it to horning@amnh.org


  • Getting black image as in NDVI and greyscale image as colormap with the luts. Not getting green/blue images as above.
    Please help !!

  • Those parameters will likely need to be tweaked to show a good full scale image using a Roscoe filter - tighten the min and max NDVI value and probably also add NIR saturation. The filters we use have been updated since this article was written, and are available here: http://www.event38.com/ProductDetails.asp?ProductCode=NGB2
  • Cool little article. Are the settings shown for the photo monitoring plugin, namely the color channel settings,for a camera fitted with a blue Roscoe type filter?
  • Is there any open source NDVI image post processing software out there that does statistical analysis and outputs graphs like AgPixel does? Currently checking out ERDAS but basically I have already stitched an orthomosaic of aerial photos using VisualSFM+cloudcompare+microsoft ICE as well as visualsfm+cmpmvs and I ran them both through ImageJ. I just need to be able to prepare some technical documentation, maybe get some graphs of crop health and whatnot. Any suggestions would be greatly appreciated

  • The pictures with that scale were processed using a python script I whipped up at the time, haven't used it in a while. I intended to release it but I don't think I ever made it autoscale depending on the size of the picture, plus it was very, very slow in Python!

  • Thanks for this info. I have a question How do you add NDVI -1 to +1 scale in the images.?

  • Thanks for these resources

  • Noli Sicad,

    There is a 'Processing' plugin in the QGIS 2.0 or newer versions (former SEXTANTE plugin), it worth to install because it integrates the tools of several other open source GIS software (GRASS, SAGA, Orfeo Toolbox etc. if installed on your notebook or PC) into QGIS framework. You can easily find functions for NDVI or other indices processing e.g. in Orfeo Toolbox.

    An other way: in 'Raster' menu there is 'Raster calculator' where you can write your own expressions based on the bands of your imported raster files.

This reply was deleted.