অধ্যায়Phase 2 · কোর ইমেজ প্রসেসিং
2.8 20 মিনিট পড়া

Histograms

Intensity distribution বিশ্লেষণ।

🎬 গল্প দিয়ে শুরু
ছবিটি কি অন্ধকার, না অতিরিক্ত উজ্জ্বল? Contrast কম, না বেশি? এই প্রশ্নের গাণিতিক উত্তর একটিই — Histogram। প্রতিটি pixel intensity কতবার এসেছে তার গ্রাফ।

Histogram হিসাব

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

gray = cv2.imread("photo.jpg", cv2.IMREAD_GRAYSCALE)
hist = cv2.calcHist([gray], [0], None, [256], [0,256])

plt.plot(hist); plt.xlim([0,256]); plt.show()
ব্যাখ্যা
X-axis = intensity (0-255), Y-axis = count। বাম দিকে peak মানে dark ছবি; ডান দিকে = bright; সরু peak = low contrast।

Color Histogram

python
import cv2, matplotlib.pyplot as plt

img = cv2.imread("dhaka.jpg")
for i, col in enumerate(("b","g","r")):
    h = cv2.calcHist([img], [i], None, [256], [0,256])
    plt.plot(h, color=col)
plt.show()

Histogram Equalization — auto contrast

python
import cv2

gray = cv2.imread("dark.jpg", cv2.IMREAD_GRAYSCALE)
eq   = cv2.equalizeHist(gray)

Intensity-গুলোকে সমানভাবে ছড়িয়ে দেয় — অন্ধকার ছবিতে detail বেরিয়ে আসে।

Color ছবিতে সরাসরি না
BGR-এর প্রতিটি channel আলাদা equalize করলে রং বিকৃত হয়। বদলে YCrCb/LAB-এর শুধু luminance channel-এ apply করুন।

CLAHE — local & smart equalization

python
import cv2

gray  = cv2.imread("low.jpg", cv2.IMREAD_GRAYSCALE)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
out   = clahe.apply(gray)

ছবিকে ছোট tile-এ ভাগ করে প্রতিটিতে আলাদা equalization, তারপর smooth blend। Over-amplification বাঁচাতে clip limit। Medical image, low-light photography-তে standard।

Histogram Comparison — image similarity

python
import cv2

h1 = cv2.calcHist([img1],[0,1,2],None,[8,8,8],[0,256,0,256,0,256])
h2 = cv2.calcHist([img2],[0,1,2],None,[8,8,8],[0,256,0,256,0,256])
cv2.normalize(h1,h1); cv2.normalize(h2,h2)
score = cv2.compareHist(h1, h2, cv2.HISTCMP_CORREL)  # 1.0 = same
প্র্যাকটিস টাস্ক
  1. একটি অন্ধকার ছবি equalizeHist ও CLAHE দুটি দিয়ে compare করুন।
  2. ১০টি ছবির histogram-correlation দিয়ে দুটো প্রায় একই ছবি খুঁজে বের করুন।
  3. Color ছবিতে YCrCb-এর Y channel-এ CLAHE প্রয়োগ করে পুনরায় BGR-এ ফিরে save করুন।

সারসংক্ষেপ

  • Histogram = intensity distribution; ছবি বোঝার দ্রুততম উপায়।
  • equalizeHist = global; CLAHE = local & adaptive।
  • Color ছবিতে শুধু luminance equalize করুন, RGB সরাসরি নয়।
  • Histogram compare = ছবি similarity-র সহজ baseline।