Operaciones morfológicas
A veces, después de descomponer su imagen, tiene ruido no deseado en su imagen binaria. Las operaciones morfológicas pueden ayudar a eliminar ese ruido de la imagen.
Núcleo
El núcleo es una forma simple donde el origen se superpone en cada píxel de valor 1 de la imagen binaria. OpenCV limita el núcleo a una matriz NxN donde N es un número impar. El origen del núcleo es el centro. Un núcleo común es
Diferentes núcleos pueden afectar la imagen de manera diferente, como erosionarse o dilatarse verticalmente.
Como referencia, esta es nuestra imagen binaria que creamos:
Erosión
La erosión en la visión por computadora es similar a la erosión en el suelo. Le quita las fronteras de objetos en primer plano. Este proceso puede eliminar el ruido del fondo.
kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.erode(binary_img, kernel, iterations = 1)
Durante la erosión, si los píxeles superpuestos del núcleo no están contenidos completamente por los píxeles de la imagen binaria, se elimina el píxel en el que se superpuso.
Dilatación
La dilatación es opuesta a la erosión. En lugar de alejarse de las fronteras, se agrega a ellos. Este proceso puede eliminar pequeños agujeros dentro de una región más grande.
kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.dilate(binary_img, kernel, iterations = 1)
Durante la dilatación, cada píxel de cada núcleo superpuesto se incluye en la dilatación.
Apertura
La apertura es erosión seguida de dilatación. Este proceso elimina el ruido sin afectar el forma de características más grandes.
kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.morphologyEx(binary_img, cv2.MORPH_OPEN, kernel)
Nota
In this specific case, it is appropriate to do more iterations of opening in order to get rid of the pixels in the top right.
Clausura
El cierre es dilatación seguida de erosión. Este proceso elimina pequeños agujeros o roturas sin afectar la forma de las características más grandes.
kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.morphologyEx(binary_img, cv2.MORPH_CLOSE, kernel)