Ерозия и разширяване на изображения с помощта на OpenCV в Python

Ерозия и разширяване на изображения с помощта на 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  )   

Изход:

оригинал-катОригинален

Стъпка 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.

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