i.colors.enhance(1grass)

NAME
i.colors.enhance - Performs auto-balancing of colors for RGB images.

KEYWORDS
imagery, RGB, satellite, colors

SYNOPSIS
i.colors.enhance
i.colors.enhance --help
i.colors.enhance [-fprs] red=name green=name blue=name [strength=float] [--help] [--verbose] [--quiet] [--ui]

  Flags:

-f
    Extend colors to full range of data on each channel

-p
    Preserve relative colors, adjust brightness only

-r
    Reset to standard color range

-s
    Process bands serially (default: run in parallel)

--help
    Print usage summary

--verbose
    Verbose module output

--quiet
    Quiet module output

--ui
    Force launching GUI dialog

  Parameters:

red=name [required]
    Name of red channel

green=name [required]
    Name of green channel

blue=name [required]
    Name of blue channel

strength=float
    Cropping intensity (upper brightness level)
    Options: 0-100
    Default: 98

DESCRIPTION
i.colors.enhance auto-balances and enhances the color channels of a RGB image (e.g. from Landsat) to provide a more natural color mixture. Only the color table of each image band is modified, the base data remains untouched.

The module works by calculating a histogram for each color channel and removing an adjustable amount of outliers from either end before recalibrating the color scale with r.colors.

It will work with any 8-bit RGB imagery set and the script is easily modified to work with other datasets of greater band-depth.

NOTES
Depending on the image, it may or may not be advantageous to use the -p flag to preserve the relative color scaling. You will have to experiment with the different options to find a setting that works best for your particular imagery.

The strength option should generally be set in the 90-99 range. The lower the number, the more saturated the image becomes. It represents the percentage cut-off for the top end of the color histogram curve. The lower end is fixed at 2% of the area under the curve.

For quicker execution of this module on large images you can achieve largely similar results by switching to a coarser resolution before the running of the module (using g.region) and then back to the original resolution afterwards.

EXAMPLE
North Carolina sample dataset example with Landsat data:

g.region raster=lsat7_2002_10 -p
d.rgb blue=lsat7_2002_10 green=lsat7_2002_20 red=lsat7_2002_30
d.barscale at=55.3125,93.125 bcolor=white text_pos=over
i.colors.enhance blue=lsat7_2002_10 green=lsat7_2002_20 red=lsat7_2002_30 strength=95
d.rgb blue=lsat7_2002_10 green=lsat7_2002_20 red=lsat7_2002_30
d.barscale at=55.3125,93.125 bcolor=white text_pos=over

Uncorrected RGB composite of Landsat ETM channels B/G/R

Color corrected RGB composite of Landsat ETM channels B/G/R

TODO
The strength option requires further refinement.

SEE ALSO
d.rgb, g.region, i.oif, r.colors, r.composite, r.univar

AUTHORS
Markus Neteler, Trento, Italy
M. Hamish Bowman, Dept. Marine Science, Otago University, New Zealand

SOURCE CODE

Available at: i.colors.enhance source code (history)

Accessed: Thursday Oct 30 22:18:56 2025

Main index | Imagery index | Topics index | Keywords index | Graphical index | Full index

© 2003-2025 GRASS Development Team, GRASS GIS 8.4.1 Reference Manual