অধ্যায়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 |
|---|---|---|
| Sobel | Gradient magnitude, thick edge | Direction-aware analysis |
| Laplacian | Second-order, noise-sensitive | Sharpness, blob detection |
| Canny | পরিষ্কার, পাতলা edge | Production: lane, contour, doc edge |
প্র্যাকটিস টাস্ক
- একটি road photo-তে Canny দিয়ে lane edge খুঁজুন।
- Laplacian variance বের করে ৫টি ছবি “sharp/blurry” classify করুন।
- একই scene-এ Sobel, Laplacian, Canny পাশাপাশি save করুন এবং পার্থক্য লিখুন।
সারসংক্ষেপ
- Edge = intensity-এর হঠাৎ পরিবর্তন।
- Sobel = প্রথম derivative; Laplacian = দ্বিতীয়; Canny = full pipeline।
- Canny-র আগে blur না দিলে noise অনেক false edge দেয়।
- Edge → পরবর্তী ধাপে contour, shape, Hough transform।