অধ্যায়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 | সাধারণ ব্যবহার |
|---|---|---|---|
| QVGA | 320×240 | 76,800 | IoT camera, thumbnail |
| VGA | 640×480 | 307,200 | Webcam basic |
| HD (720p) | 1280×720 | 921,600 | YouTube, video call |
| Full HD (1080p) | 1920×1080 | 2,073,600 | TV, streaming, CCTV |
| 4K UHD | 3840×2160 | 8,294,400 | Cinema, premium camera |
| 8K | 7680×4320 | 33,177,600 | Broadcast, 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)।
প্র্যাকটিস টাস্ক
- একটি 4K ছবি load করে 640×640-এ resize করুন এবং দুটি ফাইলের size তুলনা করুন।
- একটি RGB ছবিকে R, G, B তিনটি ভিন্ন grayscale ছবি হিসেবে save করুন।
- 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 করা হয়।