অধ্যায়Phase 1 · ফাউন্ডেশন
1.4 10 মিনিট পড়া

Pixels, Channels, Resolution

RGB চ্যানেল ও resolution-এর ধারণা।

🎬 গল্প দিয়ে শুরু
কেন একটি “4K” ছবি এত পরিষ্কার, আর “480p” ঝাপসা? কেন কিছু ছবি “RGB”, কিছু “RGBA”, কিছু “grayscale”? এই অধ্যায়ে আমরা ছবির তিনটি মৌলিক বৈশিষ্ট্য — Pixels, Channels ও Resolution — গভীরভাবে বুঝব।

Resolution — ছবির আকার

Resolution মানে একটি ছবিতে কত pixel আছে, সাধারণত width × height আকারে লেখা হয়। যেমন 1920×1080 মানে প্রতি সারিতে ১৯২০ pixel, এবং ১০৮০টি সারি — মোট ২০ লক্ষ+ pixel।

নামResolutionমোট pixelসাধারণ ব্যবহার
QVGA320×24076,800IoT camera, thumbnail
VGA640×480307,200Webcam basic
HD (720p)1280×720921,600YouTube, video call
Full HD (1080p)1920×10802,073,600TV, streaming, CCTV
4K UHD3840×21608,294,400Cinema, premium camera
8K7680×432033,177,600Broadcast, future TV
বেশি resolution = সবসময় ভালো না
Resolution বাড়লে detail বাড়ে, কিন্তু storage, RAM ও processing খরচও বাড়ে। একটি real-time CV system 4K-তে চালানো অনেক GPU খরচ — অধিকাংশ production system 640×640 বা 1280×720 ব্যবহার করে।

Channels — রঙের স্তর

Channel হলো ছবির এক একটি “স্তর”। প্রতিটি channel একটি 2D matrix, এবং তারা একসাথে মিলে রঙিন বা multi-component image তৈরি করে।

  • 1 channel — Grayscale (শুধু আলোর intensity)
  • 3 channels — RGB / BGR (লাল, সবুজ, নীল)
  • 4 channels — RGBA / BGRA (extra alpha = transparency)
  • 1 channel binary — শুধু 0 অথবা 255 (mask)
  • N channels — Medical/satellite image-এ ১০+ channel থাকতে পারে (infrared, depth ইত্যাদি)
python
channels.py — split & merge
import cv2

img = cv2.imread("dhaka.jpg")           # BGR (H, W, 3)
b, g, r = cv2.split(img)                # 3 টি 2D matrix

print("Blue mean:",  b.mean())
print("Green mean:", g.mean())
print("Red mean:",   r.mean())

# Red boost — Red channel-এ ১.৫x গুণ
import numpy as np
boosted_r = np.clip(r * 1.5, 0, 255).astype(np.uint8)
out = cv2.merge([b, g, boosted_r])
cv2.imwrite("red_boost.jpg", out)

Pixel Density (DPI/PPI) — Resolution-এর ভাই

Resolution বলে মোট কত pixel, আর PPI (pixels per inch) বলে প্রতি ইঞ্চিতে কত pixel। একটি 1920×1080 ছবি ৬ ইঞ্চি phone-এ দেখলে শার্প লাগে, কিন্তু ৬৫ ইঞ্চি TV-তে কাছ থেকে দেখলে ঝাপসা — কারণ PPI কমে গেছে।

Print-এর জন্য
প্রিন্টে ৩০০ DPI standard। অর্থাৎ A4 size (৮.৩ × ১১.৭ ইঞ্চি) print-এর জন্য দরকার অন্তত ২৪৯০ × ৩৫১০ pixel।

Bit Depth — প্রতিটি pixel কত precise?

  • 8-bit → ০–২৫৫ (256 মান) — সবচেয়ে সাধারণ
  • 10/12-bit → HDR, cinema camera
  • 16-bit → Medical/satellite (০–৬৫৫৩৫)
  • 1-bit → Pure binary (mask, document scan)

ছবি resize করা — quality vs speed

python
resize.py
import cv2

img = cv2.imread("big.jpg")  # ধরা যাক 4000x3000

# Half size, fast (good for downscale)
small = cv2.resize(img, None, fx=0.5, fy=0.5,
                   interpolation=cv2.INTER_AREA)

# Fixed size for a model input (e.g. YOLO 640x640)
model_in = cv2.resize(img, (640, 640),
                      interpolation=cv2.INTER_LINEAR)

print(small.shape, model_in.shape)
কোন interpolation কখন?
INTER_AREA — ছোট করা (downscale)। INTER_LINEAR — general purpose। INTER_CUBIC / INTER_LANCZOS4 — বড় করা (upscale, slow but better)।
প্র্যাকটিস টাস্ক
  1. একটি 4K ছবি load করে 640×640-এ resize করুন এবং দুটি ফাইলের size তুলনা করুন।
  2. একটি RGB ছবিকে R, G, B তিনটি ভিন্ন grayscale ছবি হিসেবে save করুন।
  3. RGBA PNG একটি icon load করে alpha channel আলাদা করে দেখান।

সারসংক্ষেপ

  • Resolution = width × height; বেশি pixel = বেশি detail কিন্তু বেশি খরচ।
  • Channel = ছবির স্তর; 1 = grayscale, 3 = RGB, 4 = RGBA।
  • Bit depth pixel-এর precision ঠিক করে; ৮-bit সবচেয়ে কমন।
  • Production CV-তে input size ছোট রেখে speed/accuracy balance করা হয়।