[GRASS-user] Landsat 8 Color Matching

Nikos Alexandris nik at nikosalexandris.net
Thu Aug 18 14:50:46 PDT 2016

Michele Toma:

>>I have multiple Landsat 8 scenes taken on the same day/same path, but
>>they vary in brightness. I believe this to be caused by the time of day
>>that the image was taken as the northern image is brighter (taken
>>earlier in the day) and the southern image is darker (taken later in
>>the day). This has occurred for multiple images. Is there a way to make
>>the colors match between tiles?
>>I've attempted to use i.histo.match on my composite rgb images which
>>resulted in distorted colors. Should this tool only be used on
>>grayscale images?

Nikos Alexandris:

>You would want to perform histogram matching after the conversion to
>radiance/reflectance and before composing an RGB image.

Michele Toma:

>>Are there other GRASS tools I am not aware of that I should be using?
>>Is the color distortion caused by any of the other tools that I am

>>Below are the steps that I've taken to process my images:
>>1.       Import all Landsat 8 bands to GRASS 7.0.4
>>2.       Convert DN to reflectance
>>a.       i.landsat.toar input=LC81100362016082LGN00_B output=LC81100362016082LGN00_refl metfile=LC81100362016082LGN00_MTL.txt
>>3.       Pansharpen using i.fusion.hpf
>>a.       i.fusion.hpf pan=LC81100362016082LGN00_relf8 msx=LC81100362016082LGN00_refl4, LC81100362016082LGN00_relf3, LC81100362016082LGN00_refl2 suffix=hpf
>>4.       Histogram equalization
>>a.       r.colors -e map=LC81100362016082LGN00_refl4.hpf color=grey

Nikos Alexandris:

>Note, this merely retouched the "color-table" and not the data itself.

>>5.       Color balance using i.colors.enhance
>>a.       i.colors.enhance red=LC81100362016082LGN00_refl4.hpf green=LC81100362016082LGN00_refl3.hpf blue=LC81100362016082LGN00_refl2.hpf
>>6.       Set region
>>a.       g.region raster=LC81100362016082LGN00_refl2.hpf
>>7.       Create RGB composite
>>a.       r.composite red=LC81100362016082LGN00_refl4.hpf green=LC81100362016082LGN00_refl3.hpf blue=LC81100362016082LGN00_refl2.hpf output=LC81100362016082LGN00_refl_rgb
>>8.       Export image
>>a.       r.out.gdal input= LC81100362016082LGN00_refl_rgb output= LC81100362016082LGN00.tif format='GTiff'

Michele Toma:

>Is the any more information documented about how the i.histo.match tool
>works? I am unsure if I have entered the correct information to run the
>tool properly and there is not much information on the documentation
>page. I ran the tool against all bands in two different images which
>seemed to work fine (no errors), but when creating an RGB layer of one
>of the images, it displayed a solid pink image. Displaying an RGB using
>the bands created before the histogram matching seems to be fine.

I had put this note " i.histo.match (addon) → histogram matching of two
or more raster maps (in grass 7) Note, the module works with integer
values and does not accept the "." character as part of the raster map's
name!" in the Wiki, some time ago.

There is this work-around posted, some time ago, in this thread:

I don't know if i.histo.match has been updated ever since.

One thing you *should* do, I think, is to mask out water and very bright
areas as well (clouds, snow), if you can. It'll help the matching.

Unfortunately I have no time to retrieve more from a related past work
(with Landsat 5/7).  Example screenshots from this work (composites
based on multiple Landsat scenes, after histo-matching) are here:


More information about the grass-user mailing list