In [1]:
import numpy as np
import skimage
from skimage import img_as_float
import skimage.filters as skif
from skimage.color import rgb2gray
import skimage.data as skid
import skimage.exposure as skie
from IPython.html.widgets import interact
import matplotlib.pyplot as plt
import seaborn
%matplotlib inline
In [2]:
chelsea = skid.chelsea()
In [3]:
chelsea.shape, chelsea.dtype
Out[3]:
In [4]:
plt.imshow(chelsea)
plt.axis('off')
In [5]:
img = rgb2gray(chelsea)
In [6]:
img.shape, img.dtype
Out[6]:
In [7]:
img
Out[7]:
In [8]:
p2, p98 = np.percentile(img, (2, 98))
In [9]:
img_rescale = skie.rescale_intensity(img, in_range=(p2, p98))
In [10]:
img_eq = skie.equalize_hist(img)
In [11]:
img_adapteq = img_as_float(skie.equalize_adapthist(img, clip_limit=0.03))
In [12]:
hist_types = dict([('Contrast stretching', img_rescale),
('Histogram equalization', img_eq),
('Adaptive equalization', img_adapteq)])
In [13]:
@interact(hist_type=list(hist_types.keys()))
def display_result(hist_type):
result = hist_types[hist_type]
# We display the processed grayscale image on the left.
plt.subplot(121)
plt.imshow(result, cmap='gray')
plt.axis('off')
# We display the histogram on the right.
plt.subplot(122)
plt.hist(result.ravel(), bins=np.linspace(0., 1., 256),
histtype='step', color='black')
plt.show()