0
0
Computer Visionml~20 mins

Histogram equalization in Computer Vision - ML Experiment: Train & Evaluate

Choose your learning style9 modes available
Experiment - Histogram equalization
Problem:Improve the contrast of grayscale images using histogram equalization to make details more visible.
Current Metrics:Original image contrast is low, with pixel intensity distribution concentrated in a narrow range.
Issue:The image looks dull and details in dark or bright areas are hard to see due to poor contrast.
Your Task
Apply histogram equalization to increase image contrast and spread pixel intensities across the full range.
Use only OpenCV or NumPy for image processing.
Do not use any deep learning models.
Process grayscale images only.
Hint 1
Hint 2
Hint 3
Hint 4
Solution
Computer Vision
import cv2
import numpy as np
import matplotlib.pyplot as plt

# Load a grayscale image
image = cv2.imread('input_grayscale.jpg', cv2.IMREAD_GRAYSCALE)

# Check if image loaded
if image is None:
    raise ValueError('Image not found or path is incorrect')

# Apply histogram equalization using OpenCV
equalized_image = cv2.equalizeHist(image)

# Plot original and equalized images side by side
plt.figure(figsize=(10,4))
plt.subplot(1,2,1)
plt.title('Original Image')
plt.imshow(image, cmap='gray')
plt.axis('off')

plt.subplot(1,2,2)
plt.title('Equalized Image')
plt.imshow(equalized_image, cmap='gray')
plt.axis('off')

plt.show()
Loaded the grayscale image using OpenCV.
Applied histogram equalization with cv2.equalizeHist() to improve contrast.
Displayed original and equalized images for visual comparison.
Results Interpretation

Before: Pixel intensities clustered in a narrow range, image looks flat and details are hidden.

After: Pixel intensities spread evenly across the full range, image contrast improved, details more visible.

Histogram equalization redistributes pixel intensities to enhance image contrast, making features easier to see without changing the image content.
Bonus Experiment
Implement histogram equalization manually without using OpenCV's built-in function.
💡 Hint
Calculate the histogram, compute the cumulative distribution function (CDF), normalize it, and map original pixel values to new values using the CDF.