logo

Розмивання та розширення зображень за допомогою OpenCV у Python

Морфологічні операції змінюють зображення на основі структури та розташування пікселів. Вони застосовують ядро ​​до вхідного зображення для зміни його характеристик залежно від розташування сусідніх пікселів. Такі морфологічні операції, як ерозія та розширення, є методами обробки зображень, особливо для бінарних зображень або зображень у градаціях сірого. Вони допомагають аналізувати форми, прибираючи шум і уточнюючи межі об’єктів.

Ерозія

Ерозія в обробці зображень — це морфологічна операція, яка зменшує та розріджує межі об’єктів на зображенні шляхом видалення пікселів на краях об’єктів, що ефективно зменшує об’єкти та усуває невеликий білий шум.

призначення

  • Звужує або розмиває межі об’єктів переднього плану (зазвичай білих пікселів).
  • Усуває тонкий білий шум і розділяє об’єкти, які торкаються.

Як це працює

  • Ядро (зазвичай матриця 3×3 5×5 або 7×7 одиниць) ковзає по зображенню.
  • Піксель залишається білим (1), лише якщо всі пікселі під ядром білі; інакше він стає чорним (0).
  • Цей процес зменшує розмір об’єкта та стирає краї.

Розширення

Розширення – це морфологічна операція, яка розширює межі об’єктів на зображенні шляхом додавання пікселів до країв об’єкта, завдяки чому об’єкти виглядають більшими та заповнюються невеликі прогалини чи отвори.



Призначення:

  • Розширює межі об'єктів переднього плану.
  • Підкреслює або збільшує особливості та заповнює невеликі прогалини.

Як це працює:

  • Ядро так само згорнуто над зображенням.
  • Піксель має білий колір (1), якщо  принаймні один  відповідних пікселів під ядром є білим.
  • В результаті білі області ростуть, зливаючись з маленькими дірками або з’єднуючи зламані частини.

Реалізація ерозії та розширення

Давайте запровадимо Erosion і Dilation за допомогою OpenCV у Python

Крок 1. Імпортуйте бібліотеки

Ми імпортуємо необхідні бібліотеки

  • cv2 : Бібліотека 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) 

Вихід:

оригінал-кішка' 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.

Створіть вікторину