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.

Técnicas de mejora del contraste

Este ejemplo muestra cómo mejorar el contraste de las imágenes en escala de grises y en color utilizando la asignación de valores de intensidad, la ecualización de histograma y la ecualización adaptativa de histograma limitada por el contraste.

Las siguientes tres funciones son especialmente adecuadas para mejorar el contraste:

  • imadjust aumenta el contraste de la imagen asignando los valores de la imagen de intensidad de entrada a nuevos valores de modo que, de forma predeterminada, el 1% de los datos se sature en las intensidades bajas y elevadas de los datos de entrada.

  • histeq realiza la ecualización de histograma. Mejora el contraste de las imágenes transformando los valores de una imagen de intensidad para que el histograma de la imagen de salida coincida aproximadamente con un histograma especificado (distribución uniforme de forma predeterminada).

  • adapthisteq realiza la ecualización adaptativa de histograma limitada por el contraste. A diferencia de histeq, opera en regiones de datos pequeñas (mosaicos) en lugar de en la imagen completa. El contraste de cada mosaico se mejora para que el histograma de cada región de salida coincida aproximadamente con el histograma especificado (distribución uniforme de forma predeterminada). La mejora del contraste puede limitarse para evitar que se amplifique el ruido que pueda haber en la imagen.

Mejorar imágenes en escala de grises

Lea una imagen en escala de grises con poco contraste en el espacio de trabajo. Mejore la imagen utilizando las tres técnicas de ajuste del contraste con la configuración predeterminada.

pout = imread("pout.tif");
pout_imadjust = imadjust(pout);
pout_histeq = histeq(pout);
pout_adapthisteq = adapthisteq(pout);

Muestre la imagen original y las tres imágenes con el contraste ajustado como un montaje.

montage({pout,pout_imadjust,pout_histeq,pout_adapthisteq},"Size",[1 4])
title("Original Image and Enhanced Images using imadjust, histeq, and adapthisteq")

Figure contains an axes object. The axes object with title Original Image and Enhanced Images using imadjust, histeq, and adapthisteq contains an object of type image.

Lea una segunda imagen en escala de grises en el espacio de trabajo y mejore la imagen utilizando las tres técnicas de ajuste del contraste.

tire = imread("tire.tif");
tire_imadjust = imadjust(tire);
tire_histeq = histeq(tire);
tire_adapthisteq = adapthisteq(tire);

Muestre la imagen original y las tres imágenes con el contraste ajustado como un montaje.

montage({tire,tire_imadjust,tire_histeq,tire_adapthisteq},"Size",[1 4])
title("Original Image and Enhanced Images using " + ...
    "imadjust, histeq, and adapthisteq")

Figure contains an axes object. The axes object with title Original Image and Enhanced Images using imadjust, histeq, and adapthisteq contains an object of type image.

Observe que imadjust ha tenido poco efecto en la imagen del neumático, pero ha provocado un cambio drástico en el caso del mohín. Representar los histogramas de pout.tif y tire.tif revela que la mayoría de los píxeles de la primera imagen se concentra en el centro del histograma, mientras que, en el caso de tire.tif, los valores ya están repartidos entre el mínimo de 0 y el máximo de 255, lo que impide que imadjust sea efectivo al ajustar el contraste de la imagen.

figure
subplot(1,2,1)
imhist(pout)
title("Histogram of pout.tif")
subplot(1,2,2)
imhist(tire)
title("Histogram of tire.tif");

Figure contains 4 axes objects. Axes object 1 with title Histogram of pout.tif contains an object of type stem. Axes object 2 contains 2 objects of type image, line. Axes object 3 with title Histogram of tire.tif contains an object of type stem. Axes object 4 contains 2 objects of type image, line.

La ecualización de histogramas, por otra parte, cambia sustancialmente ambas imágenes. Se exponen muchas de las características antes ocultas, en especial, las partículas de residuos del neumático. Lamentablemente, al mismo tiempo, la mejora satura en exceso varias zonas de ambas imágenes. Observe cómo el centro del neumático, parte de la cara de la niña y la chaqueta quedan descoloridos.

En cuanto a la imagen del neumático, sería preferible que el centro de la rueda mantuviera el mismo brillo aproximado y que se mejorase el contraste en otras áreas de la imagen. Para que así suceda, debería aplicarse una transformación distinta a diferentes partes de la imagen. La técnica de ecualización adaptativa de histograma limitada por el contraste, implementada en adapthisteq, puede conseguirlo. El algoritmo analiza partes de la imagen y calcula las transformaciones adecuadas. También se puede establecer un límite de mejora del contraste, lo que impide la saturación excesiva que provoca el método básico de ecualización de histograma de histeq. Esta es la técnica más sofisticada de este ejemplo.

Mejorar imágenes en color

La mejora del contraste de las imágenes en color suele realizarse convirtiendo la imagen a un espacio de color que tenga la luminosidad de la imagen como uno de sus componentes, como el espacio de color L*a*b*. El ajuste de contraste solo se realiza en la capa de luminosidad L* y, después, la imagen se convierte de nuevo al espacio de color RGB. Manipular la luminosidad afecta a la intensidad de los píxeles y mantiene los colores originales.

Lea una imagen con poco contraste en el espacio de trabajo. Después, convierta la imagen del espacio de color RGB al espacio de color L*a*b*.

shadow = imread("lowlight_1.jpg");
shadow_lab = rgb2lab(shadow);

Los valores de luminosidad oscilan entre 0 y 100. Escale los valores al intervalo [0, 1], que es el intervalo previsto de imágenes con tipo de datos double.

max_luminosity = 100;
L = shadow_lab(:,:,1)/max_luminosity;

Realice los tres tipos de ajuste del contraste en el canal de luminosidad y mantenga los canales a* y b* sin cambios. Convierta las imágenes de nuevo al espacio de color RGB.

shadow_imadjust = shadow_lab;
shadow_imadjust(:,:,1) = imadjust(L)*max_luminosity;
shadow_imadjust = lab2rgb(shadow_imadjust);

shadow_histeq = shadow_lab;
shadow_histeq(:,:,1) = histeq(L)*max_luminosity;
shadow_histeq = lab2rgb(shadow_histeq);

shadow_adapthisteq = shadow_lab;
shadow_adapthisteq(:,:,1) = adapthisteq(L)*max_luminosity;
shadow_adapthisteq = lab2rgb(shadow_adapthisteq);

Muestre la imagen original y las tres imágenes con el contraste ajustado como un montaje.

figure
montage({shadow,shadow_imadjust,shadow_histeq,shadow_adapthisteq},"Size",[1 4])
title("Original Image and Enhanced Images using " + ...
    "imadjust, histeq, and adapthisteq")

Figure contains an axes object. The axes object with title Original Image and Enhanced Images using imadjust, histeq, and adapthisteq contains an object of type image.

Consulte también

| |

Temas relacionados