[GRASS-user] value differences between landsat images

Hello grass users!

This may be a very technical question, but i hope somebody knows the answer

I'm currently working with landsat 5 images, trying to identify water
bodies with an algorithm that i found on the web (*). The thing is,
many calculations are made in the process, including NDVI and
normalization of the different bands, but there are important
differences between landsat images, even with adjacent ones. This
differences in values can be > 30, for the same kind of terrain, e.g.:

r.what -f input=223_082_B east_north=502773.212142,6416651.23944
502773.212142 | 6416651.23944 || 83 |

r.what -f input=223_083_B east_north=502789.528784,6415683.11873
502789.528784 | 6415683.11873 || 49 |

(in this example i used the r.what function in both images, in some
area that is repeated but slightly moved from one image to the other)

This would obviously cause a difference in the calculations that i
want to run, and so can be a big problem for me, but that depends of
how these differences are produced, for which i imagine two scenarios:
1. In one hand, if the different values are generated by a constant
that multiplies all the values in the image (i.e., all the "real"
values), then the problem is solved, because said constant would be
eliminated in the calculations (ej. in the NDVI formula, it would be
divided by itself).
2. On the other hand, if the different values are generated by a
constant that is summed to all the values, then i'm really lost,
because i can't imagine a way around to solve the problem.

Maybe some other scenario is really ocurrying (maybe a combination of
both??). I made a small test with two adjacent images (by comparing
many points like in the example), and it looked like the first
scenario, but with great uncertainty.... (In practice i can't do the
same exploration for all the images that i have, because of the error
involved and the time that consumes)

If anyone have any clue that can help i'd be very grateful,

cheers,

Juan M. Barreneche
Zoología de Vertebrados,
Facultad de Ciencias
Universidad de la República,
Montevideo, Uruguay

(*): DETECÇÃO E DISCRIMINAÇÃO DE SOMBRAS, NUVENS E CORPOS D'ÁGUA EM
IMAGENS DE SENSORIAMENTO REMOTO. Airton Marco Polidorio, Nilton
Nobuhiro Imai, Antonio Maria Garcia Tommaselli, Franklin César Flores.
Revista Brasileira de Cartografia # 58/03, Dec 2006. (ISSN 1808-0936)

Juan:

  I think you are talking about radiometric normalization between images. This is performed by first extracting values of "pseudoinvariant features" ("PIFs") in the overlap zones between images -- these are features which should be the same, spectrally. If you have a set of band values of PIFs from images A and B, you can create a regression between the two of them (you should be able to get an R2 >> .9 for all bands), and then apply the regression coefficients to one of the images (this assumes the other image is treated as the "reference" image, typically an image that has been converted to at-the-ground reflectance via some atmospheric correction first (e.g. i.atcorr). This gets the two images in the same radiometric scale, which allows you to use, for instance, the same threshold value two differentiate water between the two images (incidentally, a low band 5 or 7 should be enough to distinguish water from everything else except cloud shadows).

  Typically the order of ops is:
  1) Perform image-to-image orthorectification for all images (so the overlap zones are +/- 1 pixel registered to one another).
  2) Perform atmospheric correction of one image ("reference image").
  3) Choose PIFs between images that cover a range of bright/dark reflectance values for each band (e.g. soil, water, vegetation), extract data to a stats package, remove outliers, calculate band-to-band gain/offsets between reference image and other uncorrected images.
  4) Apply gain/offsets to the uncorrected images.

  Google scholar: radiometric normalization "remote sensing" for some pubs on this.

--j

Juan Manuel Barreneche wrote:

Hello grass users!

This may be a very technical question, but i hope somebody knows the answer

I'm currently working with landsat 5 images, trying to identify water
bodies with an algorithm that i found on the web (*). The thing is,
many calculations are made in the process, including NDVI and
normalization of the different bands, but there are important
differences between landsat images, even with adjacent ones. This
differences in values can be > 30, for the same kind of terrain, e.g.:

r.what -f input=223_082_B east_north=502773.212142,6416651.23944
502773.212142 | 6416651.23944 || 83 |

r.what -f input=223_083_B east_north=502789.528784,6415683.11873
502789.528784 | 6415683.11873 || 49 |

(in this example i used the r.what function in both images, in some
area that is repeated but slightly moved from one image to the other)

This would obviously cause a difference in the calculations that i
want to run, and so can be a big problem for me, but that depends of
how these differences are produced, for which i imagine two scenarios:
1. In one hand, if the different values are generated by a constant
that multiplies all the values in the image (i.e., all the "real"
values), then the problem is solved, because said constant would be
eliminated in the calculations (ej. in the NDVI formula, it would be
divided by itself).
2. On the other hand, if the different values are generated by a
constant that is summed to all the values, then i'm really lost,
because i can't imagine a way around to solve the problem.

Maybe some other scenario is really ocurrying (maybe a combination of
both??). I made a small test with two adjacent images (by comparing
many points like in the example), and it looked like the first
scenario, but with great uncertainty.... (In practice i can't do the
same exploration for all the images that i have, because of the error
involved and the time that consumes)

If anyone have any clue that can help i'd be very grateful,

cheers,

Juan M. Barreneche
Zoología de Vertebrados,
Facultad de Ciencias
Universidad de la República,
Montevideo, Uruguay

(*): DETECÇÃO E DISCRIMINAÇÃO DE SOMBRAS, NUVENS E CORPOS D'ÁGUA EM
IMAGENS DE SENSORIAMENTO REMOTO. Airton Marco Polidorio, Nilton
Nobuhiro Imai, Antonio Maria Garcia Tommaselli, Franklin César Flores.
Revista Brasileira de Cartografia # 58/03, Dec 2006. (ISSN 1808-0936)
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

--

Jonathan A. Greenberg, PhD
Postdoctoral Scholar
Center for Spatial Technologies and Remote Sensing (CSTARS)
University of California, Davis
One Shields Avenue
The Barn, Room 250N
Davis, CA 95616
Cell: 415-794-5043
AIM: jgrn307, MSN: jgrn307@hotmail.com, Gchat: jgrn307

Juan Manuel Barreneche:

This may be a very technical question, but i hope somebody
knows the answer

I'm currently working with landsat 5 images, trying to
identify water
bodies with an algorithm that i found on the web (*). The
thing is, many calculations are made in the process, including NDVI
and normalization of the different bands, but there are
important differences between landsat images, even with adjacent
ones. This differences in values can be > 30, for the same kind of
terrain, e.g.:

r.what -f input=223_082_B
east_north=502773.212142,6416651.23944
502773.212142 | 6416651.23944 || 83 |

r.what -f input=223_083_B
east_north=502789.528784,6415683.11873
502789.528784 | 6415683.11873 || 49 |

(in this example i used the r.what function in both images,
in some area that is repeated but slightly moved from one image to
the other)

This would obviously cause a difference in the calculations
that i want to run, and so can be a big problem for me, but that
depends of
how these differences are produced, for which i imagine two
scenarios:
1. In one hand, if the different values are generated by a constant
that multiplies all the values in the image (i.e., all the
"real" values), then the problem is solved, because said constant
would be eliminated in the calculations (ej. in the NDVI formula,
it would be divided by itself).

2. On the other hand, if the different values are generated
by a constant that is summed to all the values, then i'm
really lost, because i can't imagine a way around to solve the
problem.

Maybe some other scenario is really ocurrying (maybe a
combination of both??). I made a small test with two adjacent
images (by comparing many points like in the example), and it
looked like the first scenario, but with great uncertainty....
(In practice i can't do the
same exploration for all the images that i have, because of
the error involved and the time that consumes)

If anyone have any clue that can help i'd be very
grateful,

are the images taken at the same time of day/year? if not it will be hard to get them to match well as they will be different animals.

if it is simply an "automatic contrast" adjustment, you could linearly interpolate between bands so they matched. (but then which is correct?)
I don't think it would be though, as LANDSAT has fixed calibration for each band.

if you run i.landsat.rgb on the two images with the same parameters do they match up well? that doesn't touch the values, only the colors, but it may give you a clue about the cause of the difference.

I guess the important thing is the ratio of the bands, not the exact values of one particular band. I take it you see a hard line at the boundary in the processed image?

Hamish