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)