Histogram equalization is the process of modifying the intensities of the image pixels to enhance the contrast. The human eye likes contrast! This is the reason that almost all camera systems use histogram equalization to make images look nice. The interesting thing is that the histogram equalization process is different for grayscale and color images. There's a catch when dealing with color images, and we'll see it in this recipe. Let's see how to do it.
import sys import cv2 import numpy as np
sunrise.jpg
:# Load input image -- 'sunrise.jpg' input_file = sys.argv[1] img = cv2.imread(input_file)
# Convert it to grayscale img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow('Input grayscale image', img_gray)
# Equalize the histogram img_gray_histeq = cv2.equalizeHist(img_gray) cv2.imshow('Histogram equalized - grayscale', img_gray_histeq)
# Histogram equalization of color images img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
img_histeq = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)
cv2.imshow('Input color image', img) cv2.imshow('Histogram equalized - color', img_histeq) cv2.waitKey()
histogram_equalizer.py
file that is already provided to you. The input image is shown, as follows:18.119.124.65