معالجة الصور الرقمية
Digital Image Processing
البكسلات والقنوات والفضاءات اللونية، والمرشحات والحواف والعتبات والتحويلات الهندسية.
تمثيل الصورة
- رمادية: مصفوفة ثنائية الأبعاد، قيمها عادة من 0 (أسود) إلى 255 (أبيض) بنوع
uint8. - ملونة: مصفوفة ثلاثية الأبعاد (ارتفاع، عرض، 3).
- الصور الطبية: قد تكون بعمق 12 أو 16 بت، أو ثلاثية الأبعاد (أحجام CT وMRI).
import cv2
import numpy as np
img = cv2.imread("photo.jpg") # BGR, uint8
print(img.shape, img.dtype)
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)المرشحات الخطية (الالتفاف)
المرشح نافذة صغيرة تنزلق على الصورة؛ القيمة الجديدة لكل بكسل مجموع موزون لجيرانه:
blur = cv2.GaussianBlur(gray, (5, 5), sigmaX=1.0) # تنعيم
median = cv2.medianBlur(gray, 5) # فعال ضد ضوضاء الملح والفلفل (غير خطي)
sharpen_kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
sharp = cv2.filter2D(gray, -1, sharpen_kernel)هذه هي العملية نفسها التي تتعلم الشبكات الالتفافية مرشحاتها تلقائياً.
الحواف
تدرج الصورة يقيس التغير في الشدة:
$$G = \sqrt{G_x^2 + G_y^2}$$
gx = cv2.Sobel(blur, cv2.CV_64F, 1, 0, ksize=3)
gy = cv2.Sobel(blur, cv2.CV_64F, 0, 1, ksize=3)
mag = np.hypot(gx, gy)
edges = cv2.Canny(blur, 50, 150) # كاشف Canny متعدد المراحلالعتبات والعمليات الشكلية
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
kernel = np.ones((3, 3), np.uint8)
opened = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) # إزالة نقاط صغيرة
closed = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel) # سد فجوات صغيرةطريقة Otsu تختار العتبة تلقائياً من مدرج الشدة.
التحويلات الهندسية
small = cv2.resize(img, (224, 224), interpolation=cv2.INTER_AREA)
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w / 2, h / 2), 15, 1.0)
rotated = cv2.warpAffine(img, M, (w, h))
flipped = cv2.flip(img, 1)هذه التحويلات أساس زيادة البيانات (data augmentation) في تدريب نماذج الرؤية.
تحسين التباين
معادلة المدرج التكراري (cv2.equalizeHist) أو نسختها التكيفية CLAHE تحسن التباين، وتُستخدم كثيراً في الصور الطبية، مع الحذر من تضخيم الضوضاء.
مصطلحات الدرس
- البكسل Pixel
- أصغر عنصر في الصورة الرقمية، ويحمل قيمة شدة أو لون.
- الفضاء اللوني Color Space
- طريقة تمثيل الألوان بالأرقام مثل RGB وHSV وLab.
- كشف الحواف Edge Detection
- تحديد المواقع التي تتغير فيها شدة الصورة بحدة، وغالباً تمثل حدود الأجسام.
الملخص
الصورة الرقمية مصفوفة من البكسلات، لكل بكسل قيمة شدة واحدة في الصور الرمادية أو ثلاث قيم في الصور الملونة. تشمل المعالجة الأساسية تحويل الفضاءات اللونية، والمرشحات الخطية للتنعيم وإزالة الضوضاء، وكشف الحواف بالتدرجات مثل Sobel وCanny، والعتبات، والعمليات الشكلية، والتحويلات الهندسية. هذه العمليات أساس المعالجة المسبقة وتساعد على فهم ما تتعلمه الشبكات الالتفافية.
أسئلة مراجعة
-
ما شكل مصفوفة صورة ملونة بحجم 480×640 في NumPy؟
(480, 640, 3): الارتفاع ثم العرض ثم القنوات.
-
لماذا نطبق تنعيماً قبل كشف الحواف؟
لأن مشتقات الصورة حساسة للضوضاء، والتنعيم يقلل الحواف الزائفة.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة