Histogram matching plugin for rasterio.
Provides a CLI and python module for adjusting colors based on histogram matching in a variety of colorspaces.
We have a source image that we want to alter. We have a reference image with a histogram that we like. The goal is to adjust the values of the source image so that its histogram matches that of the reference.
The matching directly in the default RGB colorspace does not always give the best results. So for this example, we'll adjust based on the Lightness and Chroma in LCH colorspace.
$ rio hist -c LCH -b 1,2 --plot source.tif reference.tif output.tif
This will give us a new output.tif
that matches the histogram of reference. And the --plot
option
also allows us to see some diagnostic plots to inspect the results and the cumulative distribution functions of the matching process.
$ rio hist --help
Usage: rio hist [OPTIONS] SRC_PATH REF_PATH DST_PATH
Color correction by histogram matching
Options:
-c, --color-space [RGB|LCH|LAB|Lab|LUV|XYZ]
Colorspace
-b, --bands TEXT comma-separated list of bands to match
(default 1,2,3)
-m, --match-proportion FLOAT Interpolate values between source and
reference histogram. 1.0 (default) is full
match, 0.0 is no match
--plot create a <basename>_plot.png with diagnostic
plots
-v, --verbose
--co NAME=VALUE Driver specific creation options.See the
documentation for the selected output driver
for more information.
--help Show this message and exit.
rio_hist.match.histogram_match
is the main entry point and operates on a single band.
rio_hist.utils
has some interesting functions that may be useful in other contexts.