Question: How can one Infragram photo produce different NDVI results?

cfastie is asking a question about infragram: Follow this topic

by cfastie | December 05, 2015 15:59 | #12482

Rutvij bought an infrared Mobius camera (Infragram Point & Shoot) from the Public Lab store. He took a photo of a tree and processed it three ways: at, with Ned's Photo Monitoring plugin for Fiji, and with python code which predates The results from each method are quite different and he asked me why. I thought this was a good question. Which method is best, and are the others unreliable? If so, should they be removed as options for users who can find links to them at the Public Lab site? Should the process of getting reliable NDVI results be made less confusing for first-time users?

Above: Rutvij's photo with the Infragram Point & Shoot. This is a Mobius ActionCam with the internal IR block filter replaced with a Rosco Fire red filter.

Above: NDVI image processed at

Above: NDVI image processed with Ned Horning's Photo Monitoring plugin for Fiji.

Above: NDVI image processed with python code from


Great framing Chris, thank you. I have the same question

Reply to this comment...

Are those three NDVI using the same color map? Perhaps an option to create NDVI without the colormap might clear things up a bit.

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

Thanks wmaiouiru, that's a good point. All three NDVI images use a different color map. I don't know what the Python code image uses for a color map, but that method is more or less deprecated, and I assume few people use it. The result above uses a different color map than the Fiji result, but does allow you to use a color map very similar to the one used in the Fiji result. At, you must chose "Fastie colormap" under "3. COLOR." The other difference between the Fiji result and the result is that the Fiji plugin allows you to "stretch the histograms" of the VIS and/or NIR channels. This somehow magically makes the NDVI results much more "realistic." It is not possible to do this trick at

So if the result has the Fastie colormap applied (and is reshaped to its original aspect ratio), and the Fiji result does not have the histogram stretch applied, the results look like this:

Fiji_plugin_noStretch.JPG InfragramFstieShpe.jpg
First image is from Fiji with no histogram stretch and the NDVI_VGYRM.lut color map applied. Second image is from with the red filter preset, the Fastie colormap, and the aspect ratio restored.

It might be possible to use Infragrammar in the infragram sandbox to simulate a histogram stretch, but I couldn't figure out how to do that. Most of the people who have the facility to write infragrammar expressions might be more likely to just use Fiji (which is free and awesome). I assume the histogram stretch trick is on the list of features to add to However, this trick is just that -- it makes the result look more like real NDVI, but the NDVI values are not necessarily comparable to legacy NDVI or NDVI from other photos or other cameras.

So a more important upgrade to might be to add the ability to calibrate the NDVI result using targets in the photographed scene. But the histogram stretch might still be handy for when there are no targets (and finding targets might be an obstacle).


Reply to this comment...

The link above to the Python code for converting photos to NDVI images is not a link at Public Lab. However, a version of this Python code is available at the Public Lab Github repository: It appears that the code is intended for blue filtered cameras only and has one color mapping scheme. Rutvij found this code and used it to make the NDVI image below.


The two GitHub repositories with code to convert Infragram photos to NDVI are nice resources for those who know what to do with them. They are not intended as resources for beginners and don't have comprehensive user manuals. If people find them and want to use them they should be able to contact the authors to ask questions, but Public Lab probably does not have any obligation to make this resource any more user-friendly. The fact that this python code produces different results from or the Fiji plugin is confusing but not surprising.

The path of least resistance for new users of infragram cameras is probably I don't know what the user experience is like there for beginners. People seem to be doing lots of interesting things there but it's hard to tell whether they get what they are trying to get.

If I were selling Infragram cameras so that customers could learn something from NDVI images, I would hesitate to send them to to process their photos without supplying an explanation of the limitations and alternatives.

I guess it's not possible to know how many people use the Photo Monitoring Fiji plugin or what success people have with it.

Reply to this comment...

i agree with chris. doesn't reflect current best practices or our research interests either, as ned continues to advance calibration in Fiji.

I've received staff push-back on directing new users to Fiji, but I want to depreciate the workflow and have the project focus back on Fiji.

Reply to this comment...

A couple of comments ago I included NDVI images from and Fiji that are essentially the same. This sort of confirms that can be used to produce results that are similar to results from Fiji and are reasonably meaningful. However:

The first point above could be addressed with a good user manual for However:

Reply to this comment...

Hi, Chris - we're (finally) hoping to address this in a few different ways, and thanks for your excellent and thoughtful suggestions. I've been breaking up the docs for some Infragram work into smaller Activities (starting with and also posting new documentation including a video walkthrough. While long overdue, I think we can do a lot now (with support from NASA and Google) to put some capacity towards this.

Another parallel track is that we're making it easier (in the back-end coding sense) to modify and improve image processing with an eye towards a better workflow for, using Image Sequencer, which I showed you at LEAFFEST:

The demo for doing NDVI is here, although it's just an early prototype:,segmented-colormap

But the sequencer architecture allows for new modules, and a histogram stretch could be one of them. More soon, and thanks again!

Reply to this comment...

Log in to comment