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

Edge Detection (Sobel, Canny, Laplacian)

ছবির edge শনাক্তকরণ।

🎬 গল্প দিয়ে শুরু
কোনো object-এর “কিনারা” কী? — যেখানে intensity হঠাৎ বদলায়। এই হঠাৎ পরিবর্তনই edge। Edge detection ছাড়া object detection, shape analysis, lane detection — কিছুই হয় না।

Sobel — gradient-based

X ও Y দিকে partial derivative — অর্থাৎ pixel কতটা দ্রুত বদলাচ্ছে। বড় মান = edge।

python
import cv2, numpy as np

gray = cv2.imread("road.jpg", cv2.IMREAD_GRAYSCALE)

gx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3)
gy = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3)
mag = cv2.magnitude(gx, gy)
mag = np.uint8(np.clip(mag, 0, 255))

Laplacian — second derivative

python
import cv2

gray = cv2.imread("road.jpg", cv2.IMREAD_GRAYSCALE)
lap  = cv2.Laplacian(gray, cv2.CV_64F, ksize=3)
lap  = cv2.convertScaleAbs(lap)
Sharpness measure
Laplacian-এর variance দিয়ে ছবি “sharp না blurry” বলা যায় — auto-focus algorithm-এ ব্যবহার হয়।

Canny — gold standard

Canny ৪ ধাপে কাজ করে: (১) Gaussian blur, (২) gradient, (৩) non-maximum suppression, (৪) hysteresis (double threshold)। ফলাফল — পাতলা, পরিষ্কার edge।

python
import cv2

gray = cv2.imread("road.jpg", cv2.IMREAD_GRAYSCALE)
edges = cv2.Canny(gray, threshold1=80, threshold2=180)
Auto-Canny trick
median ব্যবহার করে threshold নিজেই বের করুন:
python
import numpy as np
v = np.median(gray)
lo = int(max(0, 0.66*v))
hi = int(min(255, 1.33*v))
edges = cv2.Canny(gray, lo, hi)

তুলনা

Detectorবৈশিষ্ট্যUse case
SobelGradient magnitude, thick edgeDirection-aware analysis
LaplacianSecond-order, noise-sensitiveSharpness, blob detection
Cannyপরিষ্কার, পাতলা edgeProduction: lane, contour, doc edge
প্র্যাকটিস টাস্ক
  1. একটি road photo-তে Canny দিয়ে lane edge খুঁজুন।
  2. Laplacian variance বের করে ৫টি ছবি “sharp/blurry” classify করুন।
  3. একই scene-এ Sobel, Laplacian, Canny পাশাপাশি save করুন এবং পার্থক্য লিখুন।

সারসংক্ষেপ

  • Edge = intensity-এর হঠাৎ পরিবর্তন।
  • Sobel = প্রথম derivative; Laplacian = দ্বিতীয়; Canny = full pipeline।
  • Canny-র আগে blur না দিলে noise অনেক false edge দেয়।
  • Edge → পরবর্তী ধাপে contour, shape, Hough transform।