অধ্যায়Phase 2 · কোর ইমেজ প্রসেসিং
2.9 15 মিনিট পড়া
Masking ও Bitwise Operations
ROI ও logical operations।
🎬 গল্প দিয়ে শুরু
একটি ছবিতে শুধু মুখের অংশে effect দিতে চান? দুটি ছবি একসাথে blend করতে চান? Logo-র background বাদ দিয়ে কোনো banner-এ বসাতে চান? — সব ক্ষেত্রেই Mask ও Bitwise operation আপনার অস্ত্র।
Mask কী?
Mask = সাধারণত একই size-এর একটি binary (0/255) image। যেখানে 255, সেখানে original ছবি “show”; যেখানে 0, সেখানে hide।
python
import cv2, numpy as np
img = cv2.imread("dhaka.jpg")
H, W = img.shape[:2]
mask = np.zeros((H, W), dtype=np.uint8)
cv2.circle(mask, (W//2, H//2), 150, 255, -1) # white filled circle
result = cv2.bitwise_and(img, img, mask=mask)Bitwise — AND, OR, XOR, NOT
python
import cv2, numpy as np
a = np.zeros((300,300), np.uint8); cv2.rectangle(a,(50,50),(250,250),255,-1)
b = np.zeros((300,300), np.uint8); cv2.circle(b,(200,200),100,255,-1)
and_ = cv2.bitwise_and(a, b) # যে অংশ দুটোতেই
or_ = cv2.bitwise_or (a, b) # যে অংশ যেকোনোটিতে
xor_ = cv2.bitwise_xor(a, b) # দুটোতেই নয়, একটিতেই
not_ = cv2.bitwise_not(a) # উল্টোReal example — logo overlay
python
overlay.py
import cv2
bg = cv2.imread("banner.jpg")
logo = cv2.imread("logo.png") # সাদা background সহ
h, w = logo.shape[:2]
# ROI কাট
roi = bg[20:20+h, 20:20+w]
# Logo-র mask: gray → threshold
gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
_, mask = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY_INV)
mask_inv = cv2.bitwise_not(mask)
bg_part = cv2.bitwise_and(roi, roi, mask=mask_inv) # background অক্ষুণ্ণ
logo_part = cv2.bitwise_and(logo, logo, mask=mask) # শুধু logo
bg[20:20+h, 20:20+w] = cv2.add(bg_part, logo_part)
cv2.imwrite("branded.jpg", bg)Alpha PNG থাকলে আরও সহজ
IMREAD_UNCHANGED দিয়ে load করলে 4th channel-ই mask। তখন threshold দরকার নেই।
addWeighted — blending
python
import cv2
a = cv2.imread("a.jpg"); b = cv2.imread("b.jpg")
b = cv2.resize(b, (a.shape[1], a.shape[0]))
blend = cv2.addWeighted(a, 0.6, b, 0.4, gamma=0)Phase 2 শেষ — কী শিখলেন?
- Geometric transforms — resize, crop, rotate, flip।
- Color space-এর শক্তি — HSV-তে color filter, LAB-এ light correction।
- Convolution — সব filter ও CNN-এর গাণিতিক ভিত্তি।
- Smoothing — Gaussian, Median, Bilateral কখন কোনটি।
- Thresholding — Simple, Adaptive, Otsu।
- Edge — Sobel, Laplacian, Canny।
- Morphology — erosion, dilation, opening, closing।
- Histogram — distribution, equalization, CLAHE।
- Mask + bitwise — selective processing-এর চাবি।
পরবর্তী — Phase 3: Classical CV
এখন আপনি ছবি রূপান্তর করতে পারেন। Phase 3-এ আমরা ছবি থেকে অর্থ বের করব — contour, feature (SIFT/ORB), matching, optical flow, motion detection, calibration। Classical CV-এর প্রকৃত শক্তি শুরু।
প্র্যাকটিস টাস্ক
- একটি portrait-এ শুধু মুখের অংশে CLAHE প্রয়োগ করুন (face region mask + bitwise)।
- Logo PNG (alpha সহ) একটি ছবিতে overlay করুন — top-right corner-এ।
- দুটি ছবি addWeighted দিয়ে cross-fade animation তৈরি করুন (10 frame)।