Изучим opencv вместе (4): морфологическое преобразование

OpenCV

1. Расширение и коррозия

Расширение и эрозия - две самые основные операции морфологии изображения. На основе этих двух операций получаются другие операции морфологии. Морфология изображения - важная ветвь анализа бинарного изображения. В OpenCV расширение и эрозия соответствуют двум связанным API: расширение можно рассматривать как максимальную фильтрацию, то есть замену центрального пикселя максимальным значением, а эрозию можно рассматривать как минимальную фильтрацию, то есть замену центрального пикселя минимальным значением. ценность.

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('./img/g.jpg', 0)
kernel = np.ones((15, 15), np.uint8)
erosion = cv2.erode(img, kernel)
dilate = cv2.dilate(img, kernel)

kernel1 = cv2.getStructuringElement(cv2.MORPH_CROSS, (15, 15))
dilate1 = cv2.dilate(img, kernel1)

plt.subplot(2, 2, 1)
plt.imshow(img, "gray")
plt.title("img")

plt.subplot(2, 2, 2)
plt.imshow(erosion, "gray")
plt.title("erosion")

plt.subplot(2, 2, 3)
plt.imshow(dilate, "gray")
plt.title("dilate")

plt.subplot(2, 2, 4)
plt.imshow(dilate1, "gray")
plt.title("dilate1")

plt.show()

Эрозия: эрозия (src, kernel, dst = None, anchor = None, iterations = None, borderType = None, borderValue = None)

Расширение: dilate (src, kernel, dst = None, anchor = None, iterations = None, borderType = None, borderValue = None)

  • src: изображение, которое нужно ввести
  • ядро: структурный элемент
  • dst: выходное изображение
  • якорь: якорь центрального положения
  • итерации: количество циклов
  • borderValue: тип заполнения края

getStructuringElement(shape, ksize, anchor=None)

  • shape: тип структурирующего элемента
    • MORPH_ELLIPSE: Эллипс (по умолчанию)
    • MORPH_CROSS: Крест
    • MORPH_RECT: прямоугольник
  • ksize: размер структурирующего элемента
  • якорь: якорь центрального положения

2. Морфологическая трансформация

img = cv2.imread('./img/g1.jpg', 0)
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)
cv2.waitKey(0)

img = cv2.imread('./img/g2.jpg', 0)
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow("opening", opening)
cv2.waitKey(0)

img = cv2.imread('./img/g.jpg', 0)
kernel = np.ones((5, 5), np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
cv2.imshow("gradient", gradient)
cv2.waitKey(0)

img = cv2.imread('./img/g.jpg', 0)
kernel = np.ones((3, 3), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow("tophat", tophat)
cv2.waitKey(0)

img = cv2.imread('./img/g.jpg', 0)
kernel = np.ones((3, 3), np.uint8)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow("tophat", tophat)
cv2.waitKey(0)

morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

  • src: изображение, которое нужно ввести
  • op: морфологические операции
    • Открытая операция (MORPH_OPEN): коррозия + расширение
      Функция открытой операции: открытая операция может удалить небольшие интерференционные блоки в бинарном изображении и уменьшить проблему чрезмерного шума после бинаризации изображения.
    • Операция закрытия (MORPH_CLOSE): расширение + коррозия
      Роль закрытой операции: закрытая операция может заполнить пустую область в двоичном изображении, чтобы сформировать полный связанный компонент замкнутой области.
    • Роль операции градиента: в основном для извлечения контура или границы связанных компонентов.
      Операции с градиентом делятся на: базовый градиент (MORPH_GRADIENT), внутренний градиент (MORPH_ERODE), внешний градиент (MORPH_DILATE)
    • Top Hat (MORPH_TOPHAT): Исходное изображение — при работе
      Роль операции цилиндра: разница между изображением и операцией открытия, операция цилиндра иногда особенно полезна для нас, чтобы извлечь небольшие части изображения
    • Операция "черная шляпа" = закрытая операция - исходное изображение Роль цилиндрических операций: различия между операциями изображения и закрытия
  • ядро: структурный элемент
  • dst: выходное изображение
  • якорь: якорь центрального положения
  • итерации: количество циклов
  • borderValue: тип заполнения края