# Histogram Matching

This demo demonstrates the feature of histogram matching.

Purpose of Histogram matching is to transform the intensities in a source image so that the intensities distribute according to the histogram of a specified target image.

Here, histogram matching is shown for the RGB image. But, it can also be applied on grayscale images too. Histogram matching can be used to normalize two images when the images were acquired at the same local illumination (such as shadows) over the same location, but by different sensors, atmospheric conditions, or global illumination.

using ImageContrastAdjustment
using Images
using Plots
using TestImages

Load example images: one source image and one reference image

Note

You need to use julia >= v"1.3.0" and TestImages >= v"1.3.1" in order to load these two test images.

img_source = testimage("chelsea");
img_reference = testimage("coffee");

Applying histogram matching on source image using the reference image. Here we use adjust_histogram function from ImageContrastAdjustment.jl. It returns a histogram matched image with a granularity of nbins, i.e., number of bins. The first argument img is the image to be matched, and the second argument targetimg is the image with the desired histogram to be matched to.

img_transformed = adjust_histogram(img_source, Matching(targetimg = img_reference))
mosaicview(img_source, img_reference, img_transformed; nrow = 1)