Whenever I try to pan-sharpen composites of some Landsat images in GRASS using i.pansharpen
, i.fusion.brovey
or the IHS sharpening method, the output will have some or all of the following characteristics:
- the composite color is in a different hue compared to the un-sharpened composite
- the brightness level is messed up
- the entire composite went all-white/all-black (when using images pre-processed to top-of-atmosphere reflectance or surface reflectance corrections in
i.landsat.toar
)
I've also tried all of the following; but the colors/brightness remained the same or turned even worse:
- Applied
i.landsat.rgb
, before-and-after the pan-sharpening process - Played with the
-f
or-p
flag ini.landsat.rgb
- Tried
r.colors
to edit the color table to grey/grey255/grey.eq - Tried
i.pansharpen
using all Brovey/IHS/PCA methods - Played with the
-l
flag ini.pansharpen
to rebalance the blue-channel
The GRASS GIS manual did explained on how to perform pan-sharpening and color-balancing, but I can't figure out how to combine both processes in a concurrent workflow. I suspected that this is due to my poor understanding of color-tables, color-histogram, etc. in GRASS..
So, can someone explain to me – how do you tackle color-balancing problems when dealing with Landsat images after image-processing in GRASS? Can you share with me your favorite workflow/methods?
Many thanks for any feedback!
Best Answer
Overview
One working approach inside GRASS-GIS version 7 to get an acceptable color-balanced composite image after Pan-sharpening is
i.pansharpen
)r.rescale
)i.landsat.rgb
module or manually adjusting the color tables of the bands of interestDetails and example instructions
Pan-Sharpening / Fusion
GRASS 7 holds a dedicated pan-sharpening module,
i.pansharpen
which features three techniques for sharpening, namely the Brovey transformation, the classical IHS method and one that is based on PCA.i.pansharpen
works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of[0, 255]
, they can be rescaled to fit into this range by using GRASS'r.rescale
module.Given a set of 11-bit spectral bands (for example Blue, Green, Red, NIR and Pan) ranging between
[0, 2047]
, querying the Blue band for example would returnRescaling the Blue band to range between
[0, 255]
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest.
As usual when working with GRASS, it is required to set the region of interest, i.e.
g.region
rast=Blue_DNs_255
to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will be of the same high(er) resolution as the Panchromatic band.An example command for an IHS-based Pan-Sharpening action might look like
Color Balancing
After the process completion, the module outputs
Normally it should be enough to re-balance the colors after the pan-sharpening by using for example the i.landsat.rgb module or manual adjustment of each of the three bands that would compose an RGB image.
Screenshots
...to be added