logo

تآكل وتمدد الصور باستخدام OpenCV في بايثون

تقوم العمليات المورفولوجية بتعديل الصور بناءً على بنية وترتيب وحدات البكسل. يقومون بتطبيق kernel على صورة إدخال لتغيير ميزاتها اعتمادًا على ترتيب وحدات البكسل المجاورة. العمليات المورفولوجية مثل التآكل والتمدد هي تقنيات في معالجة الصور خاصة للصور الثنائية أو ذات التدرج الرمادي. فهي تساعد في تحليل الأشكال وتنظيف الضوضاء وتحسين حدود الكائنات.

منشئ في جافا

تآكل

التآكل في معالجة الصور هو عملية مورفولوجية تعمل على تقليص حدود الكائنات في الصورة وتخفيفها عن طريق إزالة وحدات البكسل الموجودة على حواف الكائن بشكل فعال مما يجعل الكائنات أصغر حجمًا وإزالة التشويش الأبيض الصغير.

غاية

  • يؤدي إلى تقليص أو تآكل حدود الكائنات الأمامية (عادةً وحدات بكسل بيضاء).
  • يزيل الضوضاء البيضاء الدقيقة ويفصل بين الأشياء التي يتم لمسها.

كيف يعمل

  • تنزلق النواة (عادةً مصفوفة 3 × 3 5 × 5 أو 7 × 7) عبر الصورة.
  • يظل البكسل أبيض (1) فقط إذا كانت جميع وحدات البكسل الموجودة أسفل النواة بيضاء؛ وإلا فإنه يصبح أسود (0).
  • تعمل هذه العملية على تقليل حجم الكائن وتآكل الحواف.

تمدد

التوسيع هو عملية مورفولوجية تعمل على توسيع حدود الكائنات في الصورة عن طريق إضافة وحدات بكسل إلى حواف الكائن مما يجعل الكائنات تبدو أكبر وملء الفجوات أو الثقوب الصغيرة.



غاية:

  • يوسع حدود الكائنات الأمامية.
  • إبراز أو تكبير الميزات وملء الفجوات الصغيرة.

كيف يعمل:

  • النواة ملتوية بالمثل فوق الصورة.
  • يتم ضبط البيكسل على اللون الأبيض (1) إذا  واحد على الأقل  من البكسلات المقابلة تحت النواة بيضاء.
  • ونتيجة لذلك تنمو المناطق البيضاء مندمجة ثقوبًا صغيرة أو تجمع الأجزاء المكسورة معًا.

تنفيذ التآكل والتمدد

دعونا ننفذ التآكل والتمدد باستخدام OpenCV في بايثون

الخطوة 1: استيراد المكتبات

سنقوم باستيراد المكتبات اللازمة

  • السيرة الذاتية2 : مكتبة OpenCV لمعالجة الصور.
  • numpy : للعمليات العددية وإنشاء النوى.
  • matplotlib.pyplot : لعرض الصور في دفاتر الملاحظات.

الخطوة 2: تحميل صورة الإدخال وتحديد عناصر الهيكلة (النواة)

تحدد النواة المنطقة التي سيتم إجراء العملية فيها. الخيارات الشائعة هي المستطيلات أو الأقراص.

يمكن تنزيل الصورة المستعملة من هنا .

Python
img = cv2.imread('input.webp' 0) plt.imshow(img cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() kernel = np.ones((5 5) np.uint8) 

الإخراج:

original-cat' title=إبداعي

الخطوة 3: تطبيق التآكل

يعمل التآكل عن طريق تحريك النواة عبر الصورة. يظل البيكسل أبيض (255) فقط إذا كانت جميع البيكسلات الموجودة أسفل النواة بيضاء وإلا فإنها تصبح سوداء (0). وهذا يقلل من حدود الكائنات ويزيل الضوضاء البيضاء الصغيرة.

Python
img_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show() 

الإخراج:

تآكل' loading='lazy' title=بعد التآكل

الخطوة 4: تطبيق التمدد

يؤدي التمدد إلى تحريك النواة عبر الصورة ويصبح البكسل أبيض إذا كان هناك بكسل واحد على الأقل أسفل النواة أبيض. يؤدي ذلك إلى زيادة سماكة المناطق أو الأجسام البيضاء وملء الثقوب الصغيرة.

Python
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show() 

الإخراج:

ج
تمدد' loading='lazy' title=بعد التمدد

التطبيقات

تآكل

  • إزالة الضوضاء البيضاء المعزولة من الصورة.
  • فصل الأشياء التي تم ضمها أو لمسها.
  • العثور على حدود الكائن عن طريق تقليص حجم الكائن.

تمدد

  • ملء الثقوب أو الفجوات الصغيرة في الأشياء.
  • ربط الأجزاء المكسورة أو المنفصلة من نفس الكائن.
  • يستخدم بعد التآكل (كجزء من عملية "الفتح") لاستعادة حجم الكائن مع إزالة الضوضاء.

يعد التآكل والتمدد من العمليات المورفولوجية الأساسية في معالجة الصور التي تسمح لنا بتحسين الأشكال النظيفة والتلاعب بها داخل الصور. باستخدام عناصر هيكلة بسيطة، تساعد هذه التقنيات على إزالة الضوضاء وفصل الكائنات أو توصيلها وتحسين ميزات الصورة مما يجعلها أدوات أساسية للمعالجة المسبقة والتحليل الفعال في مهام رؤية الكمبيوتر باستخدام OpenCV وPython.

إنشاء اختبار