שחיקה והרחבה של תמונות באמצעות OpenCV ב-Python

שחיקה והרחבה של תמונות באמצעות OpenCV ב-Python

פעולות מורפולוגיות משנות תמונות על סמך המבנה והסידור של הפיקסלים. הם מיישמים גרעין על תמונת קלט לשינוי התכונות שלה בהתאם לסידור הפיקסלים השכנים. פעולות מורפולוגיות כמו שחיקה ו הרחבה הן טכניקות בעיבוד תמונה במיוחד עבור תמונות בינאריות או בגווני אפור. הם עוזרים בניתוח צורות בניקוי רעשים ובחידוד גבולות אובייקט.

שְׁחִיקָה

שחיקה בעיבוד תמונה היא פעולה מורפולוגית שמכווצת ומדללת את הגבולות של אובייקטים בתמונה על ידי הסרת פיקסלים בקצוות של אובייקט, מה שהופך אובייקטים לקטנים יותר והסרת רעש לבן קטן.

מַטָרָה

  • מכווץ או שוחק את הגבולות של עצמים בחזית (בדרך כלל פיקסלים לבנים).
  • מסיר רעש לבן עדין ומפריד בין עצמים שנוגעים.

איך זה עובד

  • גרעין (בדרך כלל מטריצה ​​3×3 5×5 או 7×7 של אלה) מחליק על פני התמונה.
  • פיקסל נשאר לבן (1) רק אם כל הפיקסלים מתחת לליבה לבנים; אחרת הוא הופך שחור (0).
  • תהליך זה מקטין את גודל האובייקט ושחוק קצוות.

הַרחָבָה

הרחבה היא פעולה מורפולוגית שמרחיבה את הגבולות של אובייקטים בתמונה על ידי הוספת פיקסלים לקצוות האובייקטים גורמת לאובייקטים להיראות גדולים יותר ומילוי פערים או חורים קטנים.

מַטָרָה:

  • מרחיב את גבולות האובייקטים בחזית.
  • מדגיש או מגדיל תכונות וממלא פערים קטנים.

איך זה עובד:

  • הקרנל מפותל באופן דומה על התמונה.
  • פיקסל מוגדר ללבן (1) אם  לפחות אחד  מהפיקסלים המתאימים מתחת לליבה הוא לבן.
  • כתוצאה מכך גדלים האזורים הלבנים תוך התמזגות של חורים קטנים או מצטרפים חלקים שבורים יחדיו.

יישום שחיקה והרחבה

בואו ליישם שחיקה והרחבה עם OpenCV ב-Python

שלב 1: ייבוא ​​ספריות

אנו נייבא את הספריות הדרושות

  • cv2 : ספריית OpenCV לעיבוד תמונה.
  • רדום : לפעולות מספריות וליצירת גרעינים.
  • 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  )   

תְפוּקָה:

חתול מקורימְקוֹרִי

שלב 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  ()   

תְפוּקָה:

שְׁחִיקָהלאחר שחיקה

שלב 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  ()   

תְפוּקָה:

הַרחָבָהלאחר הרחבה

יישומים

שְׁחִיקָה

  • הסרת רעש לבן מבודד מתמונה.
  • הפרדת חפצים המחוברים או נוגעים.
  • מציאת גבולות אובייקט על ידי כיווץ גודל אובייקט.

הַרחָבָה

  • מילוי חורים קטנים או רווחים בחפצים.
  • צירוף חלקים שבורים או מנותקים של אותו חפץ.
  • משמש לאחר שחיקה (כחלק מפעולת 'פתיחה') לשחזור גודל האובייקט תוך שמירה על הסרת רעש.

שחיקה והתרחבות הן פעולות מורפולוגיות בסיסיות בעיבוד תמונה המאפשרות לנו לחדד צורות נקיות ולתפעל אותן בתוך תמונות. על ידי שימוש ברכיבי מבנה פשוטים, טכניקות אלו עוזרות להסיר רעש להפריד או לחבר אובייקטים ולשפר את תכונות התמונה מה שהופך אותם לכלים חיוניים לעיבוד מקדים וניתוח יעילים במשימות ראייה ממוחשבת עם OpenCV ו-Python.

צור חידון