Skip to content

Instantly share code, notes, and snippets.

@lizecillie
Created August 22, 2013 17:47
Show Gist options
  • Save lizecillie/6310499 to your computer and use it in GitHub Desktop.
Save lizecillie/6310499 to your computer and use it in GitHub Desktop.
histogram_equalization_color
from __future__ import division
import matplotlib.pyplot as plt
import numpy as np
from skimage import io, color, img_as_float
def histogram_equalization(A):
rows = A.shape[0]
columns = A.shape[1]
histogram, bin_edges = np.histogram(A, range=(0,1), bins=255)
c = (np.cumsum(histogram/np.max(histogram)))*255
c = c/c[-1]
for i in xrange(0, rows):
for j in xrange(0, columns):
A[i,j] = c[A[i, j]]
return A
def histogram_equalization_colour(A):
A[:, :, 0] = histogram_equalization(A[:, :, 0])
A[:, :, 1] = histogram_equalization(A[:, :, 1])
A[:, :, 2] = histogram_equalization(A[:, :, 2])
return A
#def histogram_equalization_point_transformation(A):
# return A
def rgb_hsi_conversion_equalize(A):
A = color.rgb2hsv(A)
A[:, :, 0] = histogram_equalization(A[:, :, 0])
A[:, :, 1] = histogram_equalization(A[:, :, 1])
A[:, :, 2] = histogram_equalization(A[:, :, 2])
A = color.hsv2rgb(A)
return A
def rgb_hsi_conversion_equalizeI(A):
A = color.rgb2hsv(A)
A[:, :, 2] = histogram_equalization(A[:, :, 2])
A = color.hsv2rgb(A)
return A
A = img_as_float(io.imread('spaghetti.jpg', plugin='pil'))
C = np.empty_like(A)
C[:] = A
D = np.empty_like(A)
D[:] = A
E = np.empty_like(A)
E[:] = A
out = histogram_equalization_colour(A)
#out1 =
out2 = rgb_hsi_conversion_equalize(D)
out3 = rgb_hsi_conversion_equalizeI(E)
f0, (ax0, ax1) = plt.subplots(1, 2)
f0.tight_layout()
ax0.imshow(C)
ax0.set_title('Input image')
ax1.imshow(out)
ax1.set_title('Histogram equalization on each colour panel seperately')
f1, (ax0, ax1) = plt.subplots(1, 2)
f1.tight_layout()
ax0.imshow(C)
ax0.set_title('Input image')
ax1.imshow(out)
ax1.set_title('')
f2, (ax0, ax1) = plt.subplots(1, 2)
f2.tight_layout()
ax0.imshow(C)
ax0.set_title('Input image')
ax1.imshow(out2)
ax1.set_title('Histogram equalization on H, S and I')
f3, (ax0, ax1) = plt.subplots(1, 2)
f3.tight_layout()
ax0.imshow(A)
ax0.set_title('Input image')
ax1.imshow(out3)
ax1.set_title('Histogram equalization on the I-image')
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment