Морфологические фильтры Азат Якупов az.yakupov@innopolis.ru Морфологические фильтры Морфологические фильтры — это инструменты, используемые в обработке изображений и компьютерном зрении для обработки структуры и формы объектов на изображении. Они основаны на математической морфологии и используют различные операции, такие как расширение, сужение, открытие и закрытие, для модификации изображения. Морфологические операции Расширение (Dilation): Увеличивает светлые области и «раздвигает» объекты на изображении. Расширение может быть использовано для заполнения небольших дыр и соединения разорванных областей. Сужение (Erosion): Уменьшает светлые области, «съедая» края объектов. Это может быть использовано для устранения мелких деталей и шума. Морфологические операции Открытие (Opening): Сначала применяется сужение, затем расширение. Это полезно для удаления шума и мелких объектов, сохраняя основные формы. Закрытие (Closing): Сначала применяется расширение, затем сужение. Закрытие может заполнить мелкие дыры в объектах, сохраняя их основную форму. Морфологические фильтры Морфологические фильтры обычно работают с бинарными изображениями, где есть четкое разделение между фоном и объектами интереса. Они также могут быть адаптированы для работы с многоуровневыми или цветными изображениями. Примеры Расширение (Dilation) import cv2 import numpy as np image = cv2.imread('енот.png', 0) kernel = np.ones((5,5),np.uint8) dilated_image = cv2.dilate(image, kernel, iterations = 1) cv2.imshow('Dilated Image', dilated_image) cv2.waitKey(0) cv2.destroyAllWindows() Примеры Сужение (Erosion) image = cv2.imread('енот.png', 0) kernel = np.ones((5,5),np.uint8) eroded_image = cv2.erode(image, kernel, iterations = 1) cv2.imshow('Eroded Image', eroded_image) cv2.waitKey(0) cv2.destroyAllWindows() Примеры Открытие (Opening) image = cv2.imread('енот.png', 0) kernel = np.ones((5,5),np.uint8) opening_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) cv2.imshow('Opening Image', opening_image) cv2.waitKey(0) cv2.destroyAllWindows() Примеры Закрытие (Closing) image = cv2.imread('енот.png', 0) kernel = np.ones((5,5),np.uint8) closing_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel) cv2.imshow('Closing Image', closing_image) cv2.waitKey(0) cv2.destroyAllWindows() Демонстрация Спасибо за внимание Азат Якупов az.yakupov@innopolis.ru