Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

adapthisteq

Ecualización de histograma adaptativo limitado por contraste (CLAHE)

Descripción

ejemplo

J = adapthisteq(I) mejora el contraste de la imagen en escala de grises I transformando los valores mediante la ecualización de histograma adaptativo limitado por contraste (CLAHE) [1].

J = adapthisteq(I,Name,Value) utiliza pares nombre-valor para controlar aspectos de la mejora del contraste.

Ejemplos

contraer todo

Aplique CLAHE a una imagen y muestre los resultados.

I = imread('tire.tif');
J = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
imshowpair(I,J,'montage');
title('Original Image (left) and Contrast Enhanced Image (right)')

Figure contains an axes object. The axes object with title Original Image (left) and Contrast Enhanced Image (right) contains an object of type image.

Lea la imagen de color indexado en el espacio de trabajo.

[X, MAP] = imread('shadow.tif');

Convierta la imagen indexada en una imagen en color verdadero (RGB) y, después, la imagen RGB en el espacio de color L*a*b*.

RGB = ind2rgb(X,MAP);
LAB = rgb2lab(RGB);

Adapte los valores al intervalo que espera la función adapthisteq, [0 1].

L = LAB(:,:,1)/100;

Realice la CLAHE en el canal L. Adapte el resultado para volver al intervalo que utiliza el espacio de color L*a*b*.

L = adapthisteq(L,'NumTiles',[8 8],'ClipLimit',0.005);
LAB(:,:,1) = L*100;

Convierta la imagen resultante de nuevo al espacio de color RGB.

J = lab2rgb(LAB);

Muestre la imagen original y la imagen procesada.

figure
imshowpair(RGB,J,'montage')
title('Original (left) and Contrast Enhanced (right) Image')

Figure contains an axes object. The axes object with title Original (left) and Contrast Enhanced (right) Image contains an object of type image.

Las sombras en la imagen mejorada se ven más oscuras y las luces más brillantes. El contraste general ha mejorado.

Argumentos de entrada

contraer todo

Imagen en escala de grises, especificada como matriz numérica 2D.

Tipos de datos: single | double | int16 | uint8 | uint16

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: 'NumTiles',[8 16] divide la imagen en 8 filas y 16 columnas de mosaicos.

Número de regiones contextuales rectangulares (mosaicos) en las que adapthisteq divide la imagen, especificado como un vector de 2 elementos de enteros positivos. Con la imagen original dividida en M filas y N columnas de mosaicos, el valor de 'NumTiles' es [M N]. Tanto M como N deben ser al menos 2. El número total de mosaicos es igual a M*N. El número óptimo de mosaicos depende del tipo de imagen de entrada, y se determina mejor mediante la experimentación.

Tipos de datos: double

Límite de mejora del contraste, especificado como un número en el intervalo [0, 1]. Los límites más altos dan lugar a un contraste más alto.

'ClipLimit' es un factor de contraste que evita la sobresaturación de la imagen específicamente en las zonas homogéneas. Estas zonas se caracterizan por un pico alto en el histograma del mosaico de imagen específico debido a que muchos píxeles caen dentro del mismo intervalo de niveles de gris. Sin el límite de recorte, la técnica de ecualización adaptativa del histograma podría producir resultados que, en algunos casos, son peores que la imagen original.

Tipos de datos: double

Número de bins del histograma utilizados para generar una transformación de mejora del contraste, especificado como un entero positivo. Los valores más altos dan como resultado un mayor intervalo dinámico a costa de una menor velocidad de procesamiento.

Tipos de datos: double

Intervalo de datos de imagen de salida, especificado como uno de los siguientes valores.

ValorDescripción
'full'Utiliza el intervalo completo de la clase de salida (como [0 255] para uint8).
'original'Limita el intervalo a [min(I(:)) max(I(:))].

Tipos de datos: char | string

Forma deseada del histograma, especificada como uno de los siguientes valores:

ValorDescripción
'uniform'Crea un histograma plano.
'rayleigh'Crea un histograma en forma de campana.
'exponential'Crea un histograma curvo.

'Distribution' especifica la distribución que adapthisteq usa como base para crear la función de transformación de contraste. La distribución que seleccione debería depender del tipo de imagen de entrada. Por ejemplo, las imágenes subacuáticas parecen más naturales cuando se utiliza la distribución de Rayleigh.

Tipos de datos: char | string

Parámetro de distribución, especificado como un número no negativo. 'Alpha' solo se usa cuando 'Distribution' se establece como 'rayleigh' o 'exponential'.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen con contraste mejorado, devuelta como matriz 2D del mismo tipo de datos que la imagen de entrada I.

Algoritmos

CLAHE opera en pequeñas regiones de la imagen, llamadas mosaicos, en lugar de la imagen completa. adapthisteq calcula la función de transformación del contraste para cada mosaico de manera individual. El contraste de cada mosaico se mejora para que el histograma de la región de salida coincida aproximadamente con el histograma que especifica el valor de 'Distribution'. Después, los mosaicos contiguos se combinan mediante interpolación bilineal para eliminar los límites inducidos artificialmente. El contraste, especialmente en las zonas homogéneas, puede limitarse para evitar que se amplifique el ruido que pueda haber en la imagen.

Referencias

[1] Zuiderveld, Karel. “Contrast Limited Adaptive Histograph Equalization.” Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también