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 dehisteq
, 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")
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")
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");
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")
Consulte también
imadjust
| histeq
| adapthisteq