From 782fbabff34f7b2051a168abe09e34394b9daa92 Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Thu, 2 Feb 2012 21:17:08 -0800 Subject: [PATCH] ENH: Add contrast stretching to histogram equalization example. --- doc/examples/plot_equalize.py | 101 +++++++++++++++++++--------------- skimage/data/__init__.py | 9 +++ skimage/data/moon.png | Bin 0 -> 50177 bytes 3 files changed, 65 insertions(+), 45 deletions(-) create mode 100644 skimage/data/moon.png diff --git a/doc/examples/plot_equalize.py b/doc/examples/plot_equalize.py index 8e5609bc..2f0bb13e 100644 --- a/doc/examples/plot_equalize.py +++ b/doc/examples/plot_equalize.py @@ -3,70 +3,81 @@ Histogram Equalization ====================== -This examples takes an image with low contrast and enhances its contrast using -histogram equalization. Histogram equalization enhances contrast by "spreading -out the most frequent intensity values" in an image [1]_. The equalized image -has a roughly linear cumulative distribution function, as shown in this example. +This examples enhances an image with low contrast, using a method called +*histogram equalization*, which "spreads out the most frequent intensity +values" in an image [1]_. The equalized image has a roughly linear cumulative +distribution function. -For comparison, this example also shows an image after its intensity levels are -uniformly stretched. +While histogram equalization has the advantage that it requires no parameters, +it sometimes yields unnatural looking images. An alternative method is +*contrast stretching*, where the image is rescaled to include all intensities +that fall within the 2nd and 98th percentiles [2]_. .. [1] http://en.wikipedia.org/wiki/Histogram_equalization +.. [2] http://homepages.inf.ed.ac.uk/rbf/HIPR2/stretch.htm """ -import matplotlib.pyplot as plt -from matplotlib import ticker from skimage import data from skimage.util.dtype import dtype_range from skimage import exposure +import matplotlib.pyplot as plt -def plot_hist(img, bins=256): - """Plot histogram and cumulative histogram for image""" - img_cdf, bins = exposure.cumulative_distribution(img, bins) - plt.hist(img.ravel(), bins=bins) - plt.xlabel('Pixel intensiy') - # Shorten y-tick labels using scientific notation - y_formatter = ticker.ScalarFormatter(useOffset=True) - y_formatter.set_powerlimits((0, 0)) # force use of scientific notation - ax = plt.gca() - ax.yaxis.set_major_formatter(y_formatter) +import numpy as np + +def plot_img_and_hist(img, axes, bins=256): + """Plot an image along with its histogram and cumulative histogram. + + """ + ax_img, ax_hist = axes + ax_cdf = ax_hist.twinx() + + # Display image + ax_img.imshow(img, cmap=plt.cm.gray) + ax_img.set_axis_off() + + # Display histogram + ax_hist.hist(img.ravel(), bins=bins) + ax_hist.ticklabel_format(axis='y', style='scientific', scilimits=(0, 0)) + ax_hist.set_xlabel('Pixel intensity') - ax_cdf = plt.twinx() - ax_cdf.plot(bins, img_cdf, 'r') xmin, xmax = dtype_range[img.dtype.type] - plt.xlim(xmin, xmax) + ax_hist.set_xlim(xmin, xmax) + + # Display cumulative distribution + img_cdf, bins = exposure.cumulative_distribution(img, bins) + ax_cdf.plot(bins, img_cdf, 'r') + + return ax_img, ax_hist, ax_cdf -img_orig = data.camera() -# squeeze image intensities to lower image contrast -img = img_orig / 5 + 100 -img_rescale = exposure.rescale_intensity(img) +# Load an example image +img = data.moon() + +# Contrast stretching +p5 = np.percentile(img, 2) +p95 = np.percentile(img, 98) +img_rescale = exposure.rescale_intensity(img, in_range=(p5, p95)) + +# Equalization img_eq = exposure.equalize(img) -plt.subplot(2, 3, 1) -plt.imshow(img, cmap=plt.cm.gray, vmin=0, vmax=255) -plt.title('Low contrast image') -plt.axis('off') -plt.subplot(2, 3, 4) -plt.ylabel('Number of pixels') -plot_hist(img) -plt.subplot(2, 3, 2) -plt.imshow(img_rescale, cmap=plt.cm.gray, vmin=0, vmax=255) -plt.title('Rescale intensities') -plt.axis('off') -plt.subplot(2, 3, 5) -plot_hist(img_rescale) +# Display results +f, axes = plt.subplots(2, 3, figsize=(11, 5)) + +ax_img, ax_hist, ax_cdf = plot_img_and_hist(img, axes[:, 0]) +ax_img.set_title('Low contrast image') +ax_hist.set_ylabel('Number of pixels') + +ax_img, ax_hist, ax_cdf = plot_img_and_hist(img_rescale, axes[:, 1]) +ax_img.set_title('Contrast stretching') + +ax_img, _, ax_cdf = plot_img_and_hist(img_eq, axes[:, 2]) +ax_img.set_title('Histogram equalization') +ax_cdf.set_ylabel('Fraction of total intensity') -plt.subplot(2, 3, 3) -plt.imshow(img_eq, cmap=plt.cm.gray, vmin=0, vmax=1) -plt.title('Histogram equalization') -plt.axis('off') -plt.subplot(2, 3, 6) -plot_hist(img_eq) -plt.ylabel('Fraction of total intensity') # prevent overlap of y-axis labels plt.subplots_adjust(wspace=0.4) diff --git a/skimage/data/__init__.py b/skimage/data/__init__.py index 6d955f4f..c5159092 100644 --- a/skimage/data/__init__.py +++ b/skimage/data/__init__.py @@ -73,3 +73,12 @@ def coins(): """ return load("coins.png") + +def moon(): + """Surface of the moon. + + This low-contrast image of the surface of the moon is useful for + illustrating histogram equalization and contrast stretching. + + """ + return load("moon.png") diff --git a/skimage/data/moon.png b/skimage/data/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6f077e78df2b0e759f14e68bae31c8ad62f06f GIT binary patch literal 50177 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 d*02Bn1N@@@J