Public Lab Research note


by cfastie | | 11,159 views | 9 comments |

Read more:

Image above: Flowers of trailing arbutus (dark) and plants of hair cap moss (light) in a detail from a grayscale NDVI image

When LifePixel converts a camera to Superblue by replacing the IR block filter (presumably with a Schott BG3 filter), they also load a custom white balance preset. When photos are taken with this preset, the blue and red channels can be used to produce a plant health index similar to the Normalized Difference Vegetation Index (NDVI). Without this preset, the proportion of blue light (in the blue channel) and infrared light (in the red channel) is skewed and produces less meaningful NDVI values. This preset tells the camera whether to make relative adjustments in the intensity of the red, blue, or green channels for each pixel in the scene. The difference between the intensity of blue and infrared light captured is the basis of the calculation of an NDVI value for each pixel, so this adjustment is probably critical.

I don't know how LifePixel determines the proper white balance preset. My Canon A810 with the internal IR block filter removed and a piece of Rosco #2007 VS Blue filter in front of the lens takes blue or purplish photos with any of its standard white balance presets. But when I point the camera at just about anything and make a custom white balance preset, the photos look a lot like those from the LifePixel Superblue camera. NDVI values computed as (IR - red)/(IR + red) will always be between -1 and +1. The white balance setting can affect where in this range the NDVI values for healthy plants fall. So for NDVI results to be comparable to those used in the remote sensing community, this setting probably has to be correct.

If photos are captured in RAW format, the white balance can be set afterwards, but you would have to know what setting to use. My Canon A810 does not record RAW format, although CHDK could add that functionality with a substantial increase in file size and post processing labor. Even if RAW is not captured, the white balance can be adjusted to some degree afterwards. But the easiest way to set white balance is to point the camera at the proper color and save a custom preset. The question is: What color do you use?


Rosco, a Canon Powershot A810 with the internal IR block filter removed and a piece of Rosco #2007 VS Blue polyester filter taped in front of the lens. The dark blue paper was used to custom white balance the camera.

I noticed that in the blue channel of the LifePixel photos plants were darker than in the blue channel of Rosco's photos. So on a whim, I used a piece of very blue origami paper to set a custom white balance preset in the Rosco A810. Below are some of the photos I took. I also captured the same scene with the LifePixel converted Superblue G11, and with an unmodified camera. The first scene is a close up of trailing arbutus (Epigaea repens) one of the earliest native plants to bloom around here. This scene exploits an important advantage of the single camera NDVI approach -- extreme close ups are possible because there is no parallax error. The live leaves in the Rosco photo were a slightly duller yellow than in the LifePixel Superblue photo, and the Rosco NDVI image was shifted more to the green end of the NDVI color scale. After adjusting the Rosco photo's (not the NDVI image's) white balance with Lightroom's "Temp" slider to -10 and reprocessing it through Ned's ImageJ plugin, the NDVI image was very close to the LifePixel image. (The setting of -10 is more or less equivalent to making the white balance 10% cooler. For RAW files, you can set the absolute temperature in degrees Kelvin. To photographers, "cooler" means bluer, and "warmer" means more red, but to physicists, it's the other way around. If you are not sure who to believe, just remember who took 50 years to find the Higgs boson.)


Top row: Normal true color, LifePixel Superblue photo, and derived NDVI. Bottom row: Rosco photo, derived NDVI, and derived NDVI after adjusting the white balance temperature.

In general there is good discrimination in these NDVI images of photosynthetic and non-photosynthetic material. Most of the leaves that are green in the RGB photo are green in the false-color NDVI images. The flowers, which contain no chlorophyll, have low NDVI values (purple), as does the Cheshire quartzite in the foreground. Live green plant material normally has NDVI values between 0.1 and 0.9, and that appears be the case in the final NDVI images.


Normal true color photo, LifePixel Superblue photo, and derived NDVI image.

The second scene has some young pine trees and some barely green ground cover. The LifePixel Superblue NDVI does a fairly good job discriminating the trees and most of the other green plants (above). I included images of the grayscale version of the Rosco NDVI images (below). This is a reminder that NDVI is a calculated value between -1 and +1 for each pixel. Higher values have more difference between infrared light and photosynthetically active light (red or blue) and generally indicate more photosynthetically active biomass. An arbitrary color table is applied to these values to highlight certain ranges, typically values between 0.1 and 0.9 which usually indicate green plant material.


Results from Rosco. Top row: Photo from camera, derived NDVI grayscale, derived NDVI false color. Bottom row: Same as above but after the white balance temperature was adjusted by -10.

After applying the same -10% temperature adjustment to the photo from the Rosco camera, the false color NDVI image is very close to the LifePixel image. This is a very good indication that the Rosco filter could produce reliable NDVI results with consistent white balance calibration. It was very cloudy and gray that day, so I will have to confirm these results today in the bright sun.

Although it appears that the Rosco filter might be a workable substitute for a Schott BG3 filter, an important step will be to compare this result to NDVI produced with two cameras. When a dedicated IR camera has a good IR pass filter, the IR data used to compute NDVI will not be contaminated with visible light. Similarly, an unmodified camera with a standard IR block filter will have little IR light in any channel. So the two camera approach could provide different, and possible more reliable, NDVI values. Another advantage of the two camera approach is that each pair of photos can produce not only NDVI but also NRG (false color infrared) and normal true color images. The one camera approach provides only NDVI.

I have 475 square inches of Rosco #2007 VS Blue polyester filter. If anybody wants a piece, send me an address. (But I'm not sure this website allows directly contacting registered users, Jeff?)


I definitely want some Rosco #2007!

this is a great idea, it seems like what we need to do is find or make a custom white balance card for the Rosco, or really any filter we choose. I couldn't find any commercial products in a quick search, but will keep looking. Making our own would be tedious, but pretty straight forward:

a quick google search is telling me that a lot of work has been done characterizing the IR spectra of paint pigments, probably for forensics and art restoration. We should be able to work backwards from pigment spectra to paint mixtures to actually printing a white balance card.

check out this great presentation on Medieval painting. We still use the same pigments in paints, so its applicable overview of some of the work out there:

Database of IR spectra of paints and coatings:

Reply to this comment...

Super exciting!

an important step will be to compare this result to NDVI produced with two cameras

Excited to see that step too.

Maybe it's just me, but I do wonder what it would look like with a color range from -1 to 0 being grayscale, and 0 to +1 being a gradient from blue to red, or more of a rainbow. This is the kind of thing itd be really neat to see with an web-based image compositor... we could choose different gradients and so forth.

Re: contacting users, i think the best way may be to get in touch via the mailing list or by email. You could use your existing profile contact form if you've enabled it.

Reply to this comment...

Thank you for sharing this information. Your results are very promising. I am struggling to come up with a way to capture imagery that can be used to generate NDVI without carrying 2 cameras or flying 2 separate missions. It looks like you've pretty much solved it. I would greatly appreciate a piece of the Rosco #2007 so I can test on a couple Canon Point and Shoots I have for mapping. Please email me at geobduffy at yahoo dot com. I can't figure out how to email you directly here. THANK YOU!!!

Reply to this comment...

Do you have a source for Ned's ImageJ plugin? I'm very curious about that. Also, I may have gotten ahead of myself with excitement...Do you think this will be ok for low altitude (200ft-400ft AGL) mapping? Or do you think the blue scatter will cause problems? Thanks again!

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

Reply to this comment...

Ned's plugin is available under downloads here: I still has a bit of a learning curve but offers tremendous power to process lots of images and control many important variables. I assume Rayleigh scattering is not too much of a problem at low altitudes. Especially if it is not too hazy. But this whole business still needs lots of testing. I have some images from yesterday that I am trying to use to compare Rosco with a dual camera setup. It would be great to have some others testing this out. I will get in touch about sending some Rosco.

Reply to this comment...

Thanks for the quick response. I'd be happy to be a Low Alt Aerial Photo Guinea Pig for testing :)

Reply to this comment...

I'd like some of the Rosco filter too. Thanks!

Reply to this comment...

kykytos, Sorry, I am out of the business of mailing #2007 filter. We are currently testing several different filters with different cameras to choose a combination for the Infragram Kickstarter. Let us know what your plans are. If you are nearby maybe you can help out.

Reply to this comment...

kykytos-- I put Chris out of the filter business . If you are interested in helping us do research on filters, please e-mail me. mathew at publiclab

Reply to this comment...

Login to comment.

Public Lab is open for anyone and will always be free. By signing up you'll join a diverse group of community researchers and tap into a lot of grassroots expertise.

Sign up