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