অধ্যায়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 প্র্যাকটিস টাস্ক
- একটি অন্ধকার ছবি equalizeHist ও CLAHE দুটি দিয়ে compare করুন।
- ১০টি ছবির histogram-correlation দিয়ে দুটো প্রায় একই ছবি খুঁজে বের করুন।
- Color ছবিতে YCrCb-এর Y channel-এ CLAHE প্রয়োগ করে পুনরায় BGR-এ ফিরে save করুন।
সারসংক্ষেপ
- Histogram = intensity distribution; ছবি বোঝার দ্রুততম উপায়।
- equalizeHist = global; CLAHE = local & adaptive।
- Color ছবিতে শুধু luminance equalize করুন, RGB সরাসরি নয়।
- Histogram compare = ছবি similarity-র সহজ baseline।