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.

Създаване на тест