CV Lab 3 Muhammad Umer Siddiq

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

Computer Vision

Lab Report # 3

Name: Muhammed Umer Siddiq


Reg no: 296908
Degree: DE 41 EE B

Task: Apply Histogram Equalization, first on your own, then using the cv2
function.

Code:
import sys

if "google.colab" in sys.modules:
    import subprocess

    subprocess.call("apt-get install subversion".split())
    subprocess.call(
        "svn export https://github.com/YoniChechik/AI_is_Math/trunk/
c_02a_basic_image_processing/Unequalized_Hawkes_Bay_NZ.jpg".split()
    )

import numpy as np
import matplotlib.pyplot as plt
import cv2

figsize = (7, 7)
# read as grayscale
I = cv2.imread("/content/drive/MyDrive/Colab Notebooks/abc.jpg", 0)

plt.figure(figsize=figsize)
plt.imshow(I, cmap="gray", vmin=0, vmax=255)
plt.title("Original image")
plt.show()
# calculating and showing the original histogram

bins_edges_min_max = [0, 256]
num_bins = 256
bin_count, bins_edges = np.histogram(I, num_bins, bins_edges_min_max)
bins_start = bins_edges[:-1]
def draw_hist(x_axis, input):
    fig, ax = plt.subplots(figsize=figsize)
    plt.bar(x_axis, input, width=input.shape[0] / (x_axis[-1] - x_axis[0] 
+ 1))
    return fig, ax

draw_hist(bins_start, bin_count)
plt.title("Original histogram")
plt.show()
# Normalizing the histogram to get PDF

pdf = bin_count / np.sum(bin_count)

draw_hist(bins_start, pdf)
plt.title("Original PDF")
plt.show()
# Calculating CDF

cdf = np.cumsum(pdf)

plt.figure(figsize=figsize)
plt.plot(cdf)
plt.title("Original CDF")
plt.show()
# PDF and CDF ploted on a single plot

fig, ax = draw_hist(bins_start, pdf)
ax.plot(cdf * np.max(pdf), "r")
plt.title("Original PDF+ const*CDF to show the connection between the two"
)
plt.show()
# unnormalizing CDF to get equalization function

f_eq = np.round(cdf * 255).astype(int)

f_eq
# Using the equaization function to get the equalized image

I_eq = f_eq[I]

plt.figure(figsize=figsize)
plt.imshow(I_eq, cmap="gray", vmin=0, vmax=255)
plt.title("equalized image")
plt.show()

Output:
Conclusion:
Histogram Equalization is a technique used when the contrast of the image is too
high or too low. It works by mapping the pixel intensities in the image to a new
distribution that is more uniform. This is achieved by computing the CDF of the
pixel intensities in the image and then mapping the original pixel intensities to new
values using a transformation function that is derived by normalizing the CDF and
multiplying it by the maximum pixel value of an image.

You might also like