تتيح OpenCV تنعيم الصور بمرشحات Blur وGaussian وMedian، بينما يستخدم Laplacian لإبراز تغيرات الشدة واستخراج الحواف. لذلك لا نعد Laplacian نوعًا من التمويه. سنحفظ نتيجة كل مرشح، مع قراءة الصورة الرمادية والتحقق من نجاح تحميلها قبل المعالجة.
الكود الكامل باستخدام Python 3
import cv2
def apply_filters(image):
laplacian = cv2.Laplacian(image, cv2.CV_64F, ksize=3)
return {
"blur": cv2.blur(image, (5, 5)),
"gaussian": cv2.GaussianBlur(image, (5, 5), 0),
"median": cv2.medianBlur(image, 5),
"laplacian": cv2.convertScaleAbs(laplacian),
}
if __name__ == "__main__":
image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
if image is None:
raise SystemExit("Cannot read image.jpg; check the path.")
for name, result in apply_filters(image).items():
if not cv2.imwrite(f"filter_{name}.png", result):
raise SystemExit(f"Cannot save {name} result.")
print("Saved four filtered images.")اختيار المرشح المناسب
يحسب Blur متوسط الجيران، ويعطي Gaussian أوزانًا تتناقص مع البعد عن المركز، أما Median فيختار الوسيط وقد يفيد مع ضوضاء الملح والفلفل. زيادة حجم النافذة تقوي التنعيم وقد تخفي التفاصيل. حجم Median يجب أن يكون فرديًا أكبر من 1، والنافذة المستخدمة هنا 5.
تصحيح استخدام Laplacian
نمرر ksize=3 بالاسم؛ فالوسيط الثالث في استدعاء Laplacian ليس زوج أبعاد النافذة مثل blur. نحسب في CV_64F لحفظ المشتقات السالبة، ثم نحول القيمة المطلقة إلى صورة قابلة للعرض باستخدام convertScaleAbs. هذا عرض لمقدار الاستجابة، وليس احتفاظًا بإشارة المشتقة الأصلية.
التشغيل والتحقق
ثبّت opencv-python وضع ملف image.jpg في مسار صحيح. شغّل البرنامج وافتح الملفات الأربعة للمقارنة. لا يتطلب الحفظ نافذة GUI، ولا تظهر رسالة نجاح إذا فشلت كتابة أحد الملفات. عند استخدام صورة ملونة يمكنك معالجة القنوات أو التحويل إلى الرمادي حسب غرض التطبيق.






