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

Masking ও Bitwise Operations

ROI ও logical operations।

🎬 গল্প দিয়ে শুরু
একটি ছবিতে শুধু মুখের অংশে effect দিতে চান? দুটি ছবি একসাথে blend করতে চান? Logo-র background বাদ দিয়ে কোনো banner-এ বসাতে চান? — সব ক্ষেত্রেই MaskBitwise 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-এর প্রকৃত শক্তি শুরু।
প্র্যাকটিস টাস্ক
  1. একটি portrait-এ শুধু মুখের অংশে CLAHE প্রয়োগ করুন (face region mask + bitwise)।
  2. Logo PNG (alpha সহ) একটি ছবিতে overlay করুন — top-right corner-এ।
  3. দুটি ছবি addWeighted দিয়ে cross-fade animation তৈরি করুন (10 frame)।