What I want to do
Based on an ongoing discussion about whether the Mobius Action Cam (a ~70 gram 5-megapixel camera) can be used to take Infragram photos, Mathew Lippincott modified one and took some test photos, comparing each to a photo from the well-documented Infragram Webcam.
The earlier discussion seemed to suggest that typical NDVI processing does not work, in part because the Mobius test image was brighter in the visible channel than the supposed infrared channel, due to infrared leakage in all three color bands.
An alternative approach
However, further investigation with the Infragram Sandbox tool seemed to show that although there was leakage, a custom index could be used to identify differentiation between the channels which, similarly to NDVI, correlates with the presence of plants.
My attempt and results
Mathew sent me his test photos, chosen for different conditions as well as examples of "non-vegetation on a background of vegetation" and "vegetation on a background of non-vegetation", similar to the comprehensive tests done at LEAFFEST last fall.
Here are the raw images, for three different scenes. I've chosen to use the Rosco 2007 filter, as it seemed to return better results. The order is webcam, then Mobius:
I fiddled around with the indices for a while before I found something that seemed consistent and clear between the two cameras. It's very close to NDVI, but has an additive and a multiplicative term which set where it begins and ends on the HSV color wheel. I'd like to standardize it, but the only one I really varied was the additive one, which should set the plant/nonplant "threshold".
A basic math error had caused trouble with this section! But with some modifications, the technique seems to still be valid. You can see the original erroneous images and equations here.
HSV example: H:
(R-B)/(R+B)*-4, S: 1, V: 1
In the above example, there is no additive value, and the multiplicative is the "/-4". The additive value shifts the scale around the color wheel, while the multiplicative boosts the amount of the color wheel used to represent the data. Once we improve color mapping, this will be a lot simpler... anyways:
Here are the processed images, again with webcam first, Mobius second:
H:0.3-(R-B)/(R+B)*3 for webcam,
-(R-B)/(R+B)*4 for Mobius:
H:0.35-((R-B)/(R+B)*3) for webcam,
-(R-B)/(R+B)*4 for Mobius:
H:0.3-((R-B)/(R+B)*2) for webcam,
-((R-B)/(R+B)*3) for Mobius:
Note: After the corrections from Chris, the images aren't AS alike as before. Discuss.
Finally, here are all three Infragram Webcam images in "conventional" NDVI, unscaled:
Questions and next steps
The differentiation I see here looks good to me, in that the things I see that "should" be alive and productive are read that way with relatively few false positives (sky, book). I'm happy that we're back to using something very close to NDVI again; I wonder why that didn't work on earlier examples, and perhaps it's related to very bright sunlight causing overexposure or clipping?
To me, the biggest question remaining is how much we "give up" by allowing the NDVI to be brightness-corrected, which is essentially what I'm doing with these images. They still display useful information if they are not stretched, but you really see more detail if they are. The zero threshold which is supposed to distinguish living from non-living is kind of thrown out here, but is that simply a reflection of how we aren't able to control relative exposure between color channels anyways? Is this really much different from choosing a more "aggressive" and customized color lookup table (LUT)?
Please pick all my assumptions apart and tell me what you think!
Update: here are all the links to the Infragram.org images: