Морфологичните операции променят изображенията въз основа на структурата и разположението на пикселите. Те прилагат ядрото към входно изображение за промяна на характеристиките му в зависимост от подреждането на съседните пиксели. Морфологични операции като ерозия и дилатация са техники за обработка на изображения, особено за двоични изображения или изображения в сива скала. Те помагат при анализирането на форми, почистване на шума и прецизиране на границите на обекта.
Ерозия
Ерозията при обработката на изображения е морфологична операция, която свива и изтънява границите на обектите в изображението чрез премахване на пиксели по краищата на обекта, което ефективно прави обектите по-малки и премахва малък бял шум.
Цел
- Свива или разяжда границите на обектите на преден план (обикновено бели пиксели).
- Премахва финия бял шум и разделя обектите, които се докосват.
Как работи
- Ядро (обикновено 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). Това намалява границите на обекта и премахва малкия бял шум.
Pythonimg_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show()
Изход:
След ерозияСтъпка 4: Приложете дилатация
Разширяването плъзга ядрото през изображението и един пиксел става бял, ако поне един пиксел под ядрото е бял. Това удебелява бели области или обекти и запълва малки дупки.
Pythonimg_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
Изход:
След разширяванеПриложения
Ерозия
- Премахване на изолиран бял шум от изображение.
- Разделяне на обекти, които са съединени или докоснати.
- Намиране на граници на обект чрез свиване на размера на обекта.
Разширение
- Запълване на малки дупки или празнини в предмети.
- Съединяване на счупени или несвързани части от един и същи обект.
- Използва се след ерозия (като част от операцията „отваряне“) за възстановяване на размера на обекта, като същевременно запазва шума премахнат.
Ерозията и дилатацията са основни морфологични операции при обработката на изображения, които ни позволяват да прецизираме чисти и манипулирани форми в изображенията. Чрез използването на прости структуриращи елементи тези техники помагат за премахване на шума при отделяне или свързване на обекти и подобряване на характеристиките на изображението, което ги прави основни инструменти за ефективна предварителна обработка и анализ в задачи за компютърно зрение с OpenCV и Python.
Създаване на тест