Статья Автор: Деникина Наталья Владимировна

Убираем шумы: что такое структурный элемент

Что такое структурный элемент (ядро)?

В предыдущих примерах была использована строчка: kernel = np.ones((5, 5), np.uint8)

Но вот что же она означает, осталось покрыто тайной:)

Структурный элемент (ядро) — это небольшая матрица, используемая для определения формы и размера области, в которой проводится морфологическая операция. Размер и форма ядра напрямую влияют на результаты операций. Ядро перемещается по изображению, и операции применяются к пикселям изображения в зависимости от значений пикселей, попавших под ядро.

Создание разных форм ядер:

  • Используем cv.getStructuringElement() для создания квадратного (прямоугольного), круглого (эллиптического) и крестовидного ядер.

Типичные формы ядер включают (рассмотрим результаты операций dilate() и  erode()):

  • Квадратное ядро (Rectangular Kernel): Часто используется для простых геометрических объектов и эффективного удаления шума.
     
    kernel_rect = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    # или используемое ранее
    kernel = np.ones((5,5),np.uint8)
    
    
    # array([[1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1]], dtype=uint8)
  • Круглое ядро (Elliptical Kernel): Используется для более точной обработки округлых объектов.
     
    kernel_ellipse = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
    
    # array([[0, 0, 1, 0, 0],
    #        [1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1],
    #        [1, 1, 1, 1, 1],
    #        [0, 0, 1, 0, 0]], dtype=uint8)
  • Крестовидное ядро (Cross-shaped Kernel): Подходит для специфических случаев, когда нужно сохранить или удалить пиксели вдоль крестовидной формы.
     
    kernel_cross = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))
    
    # array([[0, 0, 1, 0, 0],
    #        [0, 0, 1, 0, 0],
    #        [1, 1, 1, 1, 1],
    #        [0, 0, 1, 0, 0],
    #        [0, 0, 1, 0, 0]], dtype=uint8)

Выбор формы и размера структурного элемента (ядра) играет ключевую роль в морфологических операциях обработки изображений. Понимание того, как различные формы ядер — квадратное, круглое, крестовидное — влияют на результат, помогает эффективно применять операции сжатия и расширения для решения различных задач.

Например, квадратное ядро полезно для обработки объектов с четкими углами и для эффективного удаления шума "соль и перец". Круглое ядро лучше всего подходит для сглаживания контуров и обработки объектов с закругленными краями. Крестовидное ядро можно использовать в специфических ситуациях, когда нужно сохранить или удалить пиксели вдоль крестовидной формы.

Вы также можете провести собственные эксперименты с различными типами ядер, ведь это просто массив. Попробуйте заполнить его другими значениями и оценить результат.

Использование различных форм ядер позволяет разработчикам настраивать морфологические операции в зависимости от конкретных потребностей задачи, таких как улучшение качества изображения, удаление шума или выделение определенных структур. В конечном итоге, выбор ядра и его параметров должен основываться на тщательном анализе изображения и целей обработки, чтобы достичь оптимальных результатов.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать