[GRASS-user] Low reflectance values with i.atcorr and Landsat 8

Tomáš Brunclík brunclik at atlas.cz
Fri Jun 19 02:50:12 PDT 2015

just a note to this discussion. I never understood the input/output 
stretching parameters of i.atcor, so I have no advice here, just couple 
of thoughts.
I especially don't see why these scale parameters seem to be always used 
in any tutorial, either always set to 0,1 both, or worse, to actual 
range of input for the input scaling parameter. I would understand their 
use, if the input TOA reflectance was in percent or in reflectance 
multiplied by 10000, or quantized as DN values are - then such input 
stretching min,max could be used to correct for this (not based on 
actual values in the image, but on its metadata, though). Similarly, if 
we needed output in percent reflectance or reflectance muptiplied by 
10000, then the output streching could be used.
But if the input is in values of TOA reflectance already and we need 
output in values of ground reflectance, there should be no stretching 
involved at all, not even stretching to 0,1. And not even if there are 
pixels in the scene having TOA reflectace over 1, and not again if there 
are no pixels having reflectance over 0.5. Because both is possible - 
although reflectance over 1 is of course not possible by definition, it 
can be measured for surfaces not meeting measurement assumptions.
A scene band can contain pixels with TOA reflectance seemingly over 1 
very easily, nothing fishy about that. Because keep in mind, we are 
speaking about *spectral directional reflectance* and it is measured 
with assumption of lambertian surfaces. Reflectance value of 1 should be 
value of pixel of absolutely white object with *lambertian surface*. But 
there can be an object with a mirror-like surface, like water or metal 
roof and if such object is reflecting light toward the sensor (glint), 
it can easily reach radiance values equivalent to lambertian surface 
reflectance well above 1. And of course there can be invalid pixels, 
like dead pixels in CCD cameras. So the algorithm (or the user) should 
not try to scale the whole input or output reflectance, regardless of if 
these pixels were removed from the scene or not. If unscaled TOA 
reflectance, even containing reflectances over 1 at places should be fed 
to the ATCOR algorithm unscaled, the result should be ground reflectance 
And of course, it is normal, that the result may again contain 
reflectances above 1 - it could be the pixels mentioned before, but also 
for example clouds - because the reflectance is true only for surfaces 
on the ground. Highly reflective surfaces high above ground can again 
reach radiance values higher than what absolutely white object on ground 
could have, because to the cloud in 10 km altitude there comes much more 
light than to the surface below filtered by the thick atmosphere down 
there, and we are not correcting for this, as we do for high mountains 
with DMT, do we?

Tomas Brunclik

Yann Chemin napsal(a):
> Something is fishy here, reflectance values should always be within 
> 0-1 range.
> Please manually remove all values outside of that range (use 
> r.mapcalc) and make a histogram of your TOAR band. if the histogram is 
> of expected shape, and is not truncated at 1.0 threshold then you are 
> OK. if there is a problem here, that means the TOAR processing had an 
> issue. Stretching output from an unknown histogram skewness could be 
> giving you funny results.
> On Mon, Jun 15, 2015 at 6:47 PM Micha Silver <micha at arava.co.il 
> <mailto:micha at arava.co.il>> wrote:
>     On 6/15/2015 3:25 PM, John, Lisa wrote:
>>     Hi Micha,
>>     did you refer to the input range?
>     Yes, the input range.
>>     I did so and checked bands 1-9 with r.info <http://r.info> -r.
>>     Top of atmosphere reflectance values are all in the range of
>>     -0.01 - 2.12. The negative value seems to be a outlier and I
>>     check in addition with the range 0-2.12.
>>     I used these values for the input range in i.atcorr -r and used
>>     0,1 as output range.
>     I meant in the first i.landsat.toar step. The input (DN) values
>     should be up to 700 or so. Landsat 8, with its 12 bit data can
>     have max DN values of 4096. But I didn't use that full range,
>     rather the actual DN range of the original images.
>>     However I get even smaller reflectance values (0.15 respectively
>>     0.29 for vegetation in band5)
>>     Regards, Lisa.
>>     This mail was received via Mail-SeCure System.
>>     _______________________________________________
>>     grass-user mailing list
>>     grass-user at lists.osgeo.org  <mailto:grass-user at lists.osgeo.org>
>>     http://lists.osgeo.org/mailman/listinfo/grass-user
>>     This mail was received via Mail-SeCure System.
>     _______________________________________________
>     grass-user mailing list
>     grass-user at lists.osgeo.org <mailto:grass-user at lists.osgeo.org>
>     http://lists.osgeo.org/mailman/listinfo/grass-user
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user

More information about the grass-user mailing list