Top Hat y Black Hat Transform usando Python-OpenCV

En morfología y procesamiento de imágenes digitales, las transformaciones top-hat y black-hat son operaciones que se utilizan para extraer pequeños elementos y detalles de imágenes dadas. Estos dos tipos de transformadas en las que, la transformada de sombrero de copa se define como la diferencia entre la imagen de entrada y su apertura por algún elemento estructurante, mientras que la transformada de sombrero negro se define como la diferencia entre la imagen de cierre y la de entrada. Estas transformaciones se utilizan para diversas tareas de procesamiento de imágenes, como la extracción de características, la ecualización de fondo, la mejora de imágenes y otras.

Aquí usaremos operaciones morfológicas de Apertura y Cierre .

Diferencia entre sombrero de copa y sombrero negro

El filtro de sombrero de copa se utiliza para resaltar objetos brillantes de interés en un fondo oscuro. La operación de sombrero negro se usa para hacer lo contrario, realzar objetos oscuros de interés en un fondo brillante.
Ejemplo 1: Transformación de sombrero de copa

Imagen utilizada:

# Importing OpenCV 
import cv2
  
  
# Getting the kernel to be used in Top-Hat
filterSize =(3, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, 
                                   filterSize)
  
# Reading the image named 'input.jpg'
input_image = cv2.imread("testing.jpg")
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)
  
# Applying the Top-Hat operation
tophat_img = cv2.morphologyEx(input_image, 
                              cv2.MORPH_TOPHAT,
                              kernel)
  
cv2.imshow("original", input_image)
cv2.imshow("tophat", tophat_img)
cv2.waitKey(5000)

Producción:

Como puede observar en la imagen de arriba, los detalles muy pequeños se realzan y eliminan mediante la operación Top-Hat. Por lo tanto, es útil para observar los detalles menores de las entradas cuando están presentes como píxeles claros sobre un fondo oscuro.

Ejemplo 2: transformación Black Hat

Imagen de entrada:

# Importing OpenCV and numpy
import cv2
  
# Defining the kernel to be used in Top-Hat
filterSize =(3, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,
                                   filterSize)
  
# Reading the image named 'input.jpg'
input_image = cv2.imread("testing.jpg")
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)
  
# Applying the Black-Hat operation
tophat_img = cv2.morphologyEx(input_image, 
                              cv2.MORPH_BLACKHAT,
                              kernel)
  
cv2.imshow("original", input_image)
cv2.imshow("tophat", tophat_img)
cv2.waitKey(5000)

Producción:

Aquí, en esta imagen, todos los objetos que son blancos sobre un fondo oscuro se resaltan debido a la transformación Black Hat aplicada a la imagen de entrada.

Publicación traducida automáticamente

Artículo escrito por infoaryan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *