# Histogram matching

Jump to: navigation, search
An example of histogram matching

In image processing, histogram matching or histogram specification is the transformation of an image so that its histogram matches a specified histogram.[1] The well-known histogram equalization method is a special case in which the specified histogram is uniformly distributed.[2]

It is possible to use histogram matching to balance detector responses as a relative detector calibration technique. It 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.

## Algorithm

Given two images, the reference and the adjusted images, we compute their histograms. Following, we calculate the cumulative distribution functions of the two images' histograms – ${\displaystyle F_{1}()\,}$ for the reference image and ${\displaystyle F_{2}()\,}$ for the target image. Then for each gray level ${\displaystyle G_{1}\in [0,255]}$, we find the gray level ${\displaystyle G_{2}\,}$ for which ${\displaystyle F_{1}(G_{1})=F_{2}(G_{2})\,}$, and this is the result of histogram matching function: ${\displaystyle M(G_{1})=G_{2}\,}$. Finally, we apply the function ${\displaystyle M()}$ on each pixel of the reference image.

## Exact histogram matching

In typical real-world applications, with 8-bit pixel values (discrete values in range [0, 255]), histogram matching can only approximate the specified histogram. All pixels of a particular value in the original image must be transformed to just one value in the output image.

Exact histogram matching is the problem of finding a transformation for a discrete image so that its histogram exactly matches the specified histogram.[3] Several techniques have been proposed for this. One simplistic approach converts the discrete-valued image into a continuous-valued image and adds small random values to each pixel so their values can be ranked without ties. However, this introduces noise to the output image.

## Multiple histogram matching

The histogram matching algorithm can be extended to find a monotonic mapping between two sets of histograms. Given two sets of histograms ${\displaystyle P=\{p_{i}\}_{i=1}^{k}}$ and ${\displaystyle Q=\{q_{i}\}_{i=1}^{k}}$, the optimal monotonic color mapping ${\displaystyle M}$ is calculated to minimize the distance between the two sets simultaneously, namely ${\displaystyle \operatorname {arg} \min _{M}\ \sum _{k}d(M(p_{k}),q_{k})}$ where ${\displaystyle d(\cdot ,\cdot )}$ is a distance metric between two histograms. The optimal solution is calculated using dynamic programming.[4]

## References

1. ^ Gonzalez, Rafael C.; Woods, Richard E. (2008). Digital Image Processing (3rd ed.). Prentice Hall. p. 128. ISBN 9780131687288.
2. ^ Gonzalez, R.C.; Fittes, B.A. (June 9–11, 1975). Gray-level transformations for interactive image enhancement (PDF). 2nd Conference on Remotely Manned Systems: Technology and Applications. Los Angeles, California. pp. 17–19.
3. ^ Coltuc, Dinu; Bolon, Philippe; Chassery, Jean-Marc (May 2006). "Exact Histogram Specification". IEEE Transactions on Image Processing. 15 (5): 1143–52. doi:10.1109/TIP.2005.864170.
4. ^ Shapira D.; Avidan S.; Hel-Or Y. (2013). "Multiple Histogram Matching" (PDF). Proceedings of the IEEE International Conference on Image Processing.