Histogram adalah sebuah graph atau plot, yang menggambarkan distribusi intensitas dari sebuah image. It is a plot with pixel values (ranging from 0 to 255, not always) in X-axis and corresponding number of pixels in the image on Y-axis.
Histogram berguna untuk membantu dalam image analisis. Kita dapat memiliki gambaran mengenai contrast, brightness dan distribusi intensitas. Berikut contoh image dan kolerasinya dengan histogram yang diambil dari website Cambridge in Color.

Untuk menghitung histogram, digunakan fungsi calcHist().
cv2.calcHist([images], [channels], mask, hitSize, ranges)
- images : source image dengan type uint8 atau float32. Harus menggunakan square brackets, contoh, “[nama_img]”.
- channels : juga harus menggunakan square brackets. Merupakan index dari channel yang akan dihitung histogramnya. Contoh, jika input adalah grayscale image, maka akan diisi [0]. Untuk color image, dapat diisi dengan nilai [0],[1] or [2] untuk menghitung histogram blue,green or red channel.
- mask : mask dari image. Untuk histogram full image, Gunakan “None”. Jika ingin menghitung histogram pada area tertentu, mask image harus disiapkan.
- histSize : jumlah BIN. Harus menggunakan square brackets. Untuk full scale, gunakan nilai [256].
- ranges : Umumnya diisi dengan nilai [0,256].
BIN adalah grouping data. Contoh, kita perlu mencari nilai dari pixel diantara 0 – 15, lalu 16 – 31, …, 240 – 255. Maka hanya dibutuhkan 16 BINS untuk menampilkan histogram. Dimana masing-masing BINS berisi nilai sum dari data pada range tersebut.
Contoh 1
Berikut contoh menghitung histogram untuk blue channel.
import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('chureito-pagoda.jpg') hist = cv2.calcHist([img], [0], None, [256], [0, 256]) %matplotlib inline plt.hist(img.ravel(), 256, [0, 256]) plt.show()

Contoh 2
Berikut contoh menghitung histogram untuk channel blue, green dan red.
color = ('b', 'g', 'r') for i, col in enumerate(color): hist2 = cv2.calcHist([img], [i], None, [256], [0, 256]) plt.plot(hist2, color = col) plt.xlim([0, 256]) plt.show()

Image yang digunakan pada tutorial ini https://drive.google.com/file/d/1sPBiKDTOomEwOqdN1CN8aUKKuVSsb737/view?usp=sharing
FIle google colab bisa diakses di https://colab.research.google.com/drive/1RveNu580u9jvzCYne93uI2V2Omx0Gtix?usp=sharing