Histogram Citra Digital

 Histogram Citra Digital

Contoh1:

import cv2

import numpy as np

from matplotlib import pyplot as plt


img = cv2.imread('kucing.jpg')


color = ('b','g','r')

for i,col in enumerate(color):

  histr = cv2.calcHist([img],[i],None,[256],[0,256])

  plt.plot(histr,color = col)

  plt.xlim([0,256])

plt.show()


Contoh 2:

import matplotlib.pyplot as plt


from skimage.feature import hog

from skimage import data, exposure



image = data.astronaut()


fd, hog_image = hog(image, orientations=8, pixels_per_cell=(16, 16),

                    cells_per_block=(1, 1), visualize=True, multichannel=True)


fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True)


ax1.axis('off')

ax1.imshow(image, cmap=plt.cm.gray)

ax1.set_title('Input image')


# Rescale histogram for better display

hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))


ax2.axis('off')

ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)

ax2.set_title('Histogram of Oriented Gradients')

plt.show()


Contoh3:

import matplotlib

import matplotlib.pyplot as plt

import numpy as np


from skimage import data, img_as_float

from skimage import exposure



matplotlib.rcParams['font.size'] = 8



def plot_img_and_hist(image, axes, bins=256):

    """Plot an image along with its histogram and cumulative histogram.


    """

    image = img_as_float(image)

    ax_img, ax_hist = axes

    ax_cdf = ax_hist.twinx()


    # Display image

    ax_img.imshow(image, cmap=plt.cm.gray)

    ax_img.set_axis_off()


    # Display histogram

    ax_hist.hist(image.ravel(), bins=bins, histtype='step', color='black')

    ax_hist.ticklabel_format(axis='y', style='scientific', scilimits=(0, 0))

    ax_hist.set_xlabel('Pixel intensity')

    ax_hist.set_xlim(0, 1)

    ax_hist.set_yticks([])


    # Display cumulative distribution

    img_cdf, bins = exposure.cumulative_distribution(image, bins)

    ax_cdf.plot(bins, img_cdf, 'r')

    ax_cdf.set_yticks([])


    return ax_img, ax_hist, ax_cdf



# Load an example image

img = data.moon()


# Contrast stretching

p2, p98 = np.percentile(img, (2, 98))

img_rescale = exposure.rescale_intensity(img, in_range=(p2, p98))


# Equalization

img_eq = exposure.equalize_hist(img)


# Adaptive Equalization

img_adapteq = exposure.equalize_adapthist(img, clip_limit=0.03)


# Display results

fig = plt.figure(figsize=(8, 5))

axes = np.zeros((2, 4), dtype=np.object)

axes[0, 0] = fig.add_subplot(2, 4, 1)

for i in range(1, 4):

    axes[0, i] = fig.add_subplot(2, 4, 1+i, sharex=axes[0,0], sharey=axes[0,0])

for i in range(0, 4):

    axes[1, i] = fig.add_subplot(2, 4, 5+i)


ax_img, ax_hist, ax_cdf = plot_img_and_hist(img, axes[:, 0])

ax_img.set_title('Low contrast image')


y_min, y_max = ax_hist.get_ylim()

ax_hist.set_ylabel('Number of pixels')

ax_hist.set_yticks(np.linspace(0, y_max, 5))


ax_img, ax_hist, ax_cdf = plot_img_and_hist(img_rescale, axes[:, 1])

ax_img.set_title('Contrast stretching')


ax_img, ax_hist, ax_cdf = plot_img_and_hist(img_eq, axes[:, 2])

ax_img.set_title('Histogram equalization')


ax_img, ax_hist, ax_cdf = plot_img_and_hist(img_adapteq, axes[:, 3])

ax_img.set_title('Adaptive equalization')


ax_cdf.set_ylabel('Fraction of total intensity')

ax_cdf.set_yticks(np.linspace(0, 1, 5))


# prevent overlap of y-axis labels

fig.tight_layout()

plt.show()



Share on :

16 Responses to "Histogram Citra Digital"