Source code for dipy.core.histeq
import numpy as np
from dipy.testing.decorators import warning_for_keywords
[docs]
@warning_for_keywords()
def histeq(arr, *, num_bins=256):
"""Performs an histogram equalization on ``arr``.
This was taken from:
http://www.janeriksolem.net/2009/06/histogram-equalization-with-python-and.html
Parameters
----------
arr : ndarray
Image on which to perform histogram equalization.
num_bins : int
Number of bins used to construct the histogram.
Returns
-------
result : ndarray
Histogram equalized image.
"""
# get image histogram
histo, bins = np.histogram(arr.flatten(), num_bins, density=True)
cdf = histo.cumsum()
cdf = 255 * cdf / cdf[-1]
# use linear interpolation of cdf to find new pixel values
result = np.interp(arr.flatten(), bins[:-1], cdf)
return result.reshape(arr.shape)