En este tutorial, vamos a ver cómo aplicar la ecualización de histograma adaptativo limitado de contraste (CLAHE) para ecualizar imágenes. CLAHE es una variante de la ecualización de histograma adaptable (AHE) que se ocupa de la sobreamplificación del contraste. CLAHE opera en pequeñas regiones de la imagen, llamadas mosaicos, en lugar de la imagen completa. Luego, los mosaicos vecinos se combinan mediante interpolación bilineal para eliminar los límites artificiales.
Este algoritmo se puede aplicar para mejorar el contraste de las imágenes.
También podemos aplicar CLAHE a imágenes en color, donde normalmente se aplica sobre el canal de luminancia y los resultados después de ecualizar solo el canal de luminancia de una imagen HSV son mucho mejores que ecualizar todos los canales de la imagen BGR.
En este tutorial, vamos a aprender cómo aplicar CLAHE y procesar una imagen de entrada determinada para la ecualización de histogramas.
Parámetros:
Al aplicar CLAHE, hay dos parámetros a tener en cuenta:
clipLimit: este parámetro establece el umbral para la limitación del contraste. El valor predeterminado es 40.
tileGridSize: establece el número de mosaicos en la fila y la columna. Por defecto esto es 8×8. Se utiliza mientras la imagen se divide en mosaicos para aplicar CLAHE.
Código para arriba:
Python3
import cv2 import numpy as np # Reading the image from the present directory image = cv2.imread("image.jpg") # Resizing the image for compatibility image = cv2.resize(image, (500, 600)) # The initial processing of the image # image = cv2.medianBlur(image, 3) image_bw = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # The declaration of CLAHE # clipLimit -> Threshold for contrast limiting clahe = cv2.createCLAHE(clipLimit = 5) final_img = clahe.apply(image_bw) + 30 # Ordinary thresholding the same image _, ordinary_img = cv2.threshold(image_bw, 155, 255, cv2.THRESH_BINARY) # Showing all the three images cv2.imshow("ordinary threshold", ordinary_img) cv2.imshow("CLAHE image", final_img)
Imagen de entrada:
Producción: