Main Content

histeq

Mejorar el contraste mediante la ecualización de histogramas

Descripción

ejemplo

J = histeq(I) transforma la imagen en escala de grises I para que el histograma de la imagen en escala de grises de salida J tenga 64 bins y sea aproximadamente plano.

J = histeq(I,n) transforma la imagen en escala de grises I para que el histograma de la imagen en escala de grises de salida J con n bins sea aproximadamente plano. El histograma de J es más plano si n es mucho menor que el número de niveles discretos de I.

J = histeq(I,hgram) transforma la imagen en escala de grises I para que el histograma de la imagen en escala de grises de salida J con length(hgram) bins se ajuste aproximadamente al histograma objetivo hgram.

newmap = histeq(X,map) transforma los valores del mapa de colores para que el histograma del componente gris de la imagen indexada X sea aproximadamente plano. El mapa de colores transformado es newmap.

newmap = histeq(X,map,hgram) transforma el mapa de colores asociado a la imagen indexada X para que el histograma del componente gris de la imagen indexada (X, newmap) se ajuste aproximadamente al histograma objetivo hgram. La función histeq devuelve el mapa de colores transformado en newmap. length(hgram) debe ser igual que size(map,1).

[___,T] = histeq(___) también devuelve la transformación T que asigna el componente gris de la imagen en escala de grises o el mapa de colores de entrada al componente gris de la imagen en escala de grises o al mapa de colores de salida.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('tire.tif');

Mejore el contraste de una imagen de intensidad mediante la ecualización del histograma.

J = histeq(I);

Muestre la imagen original y la imagen ajustada.

imshowpair(I,J,'montage')
axis off

Figure contains an axes object. The axes object contains an object of type image.

Muestre un histograma de la imagen original.

figure
imhist(I,64)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

Muestre un histograma de la imagen procesada.

figure
imhist(J,64)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

Cargue un conjunto de datos 3D.

load mristack

Realice la ecualización del histograma.

enhanced = histeq(mristack);

Muestre el primer corte de datos de la imagen original y de la imagen con contraste.

figure
subplot(1,2,1)
imshow(mristack(:,:,1))
title('Slice of Original Image')
subplot(1,2,2)
imshow(enhanced(:,:,1))
title('Slice of Enhanced Image')

Figure contains 2 axes objects. Axes object 1 with title Slice of Original Image contains an object of type image. Axes object 2 with title Slice of Enhanced Image contains an object of type image.

Argumentos de entrada

contraer todo

Imagen en escala de grises, especificada como arreglo numérico de cualquier dimensión.

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

Histograma objetivo, especificado como vector numérico. hgram tiene bins igualmente espaciados con valores de intensidad en el intervalo apropiado:

  • [0, 1] para las imágenes de clase double o single

  • [0, 255] para las imágenes de clase uint8

  • [0, 65535] para las imágenes de clase uint16

  • [-32768, 32767] para las imágenes de clase int16

histeq adapta automáticamente hgram para que sum(hgram)=numel(I). El histograma de J se ajusta mejor a hgram si length(hgram) es mucho menor que el número de niveles discretos de I.

Tipos de datos: single | double

Número de niveles discretos de gris, especificado como entero positivo.

Tipos de datos: single | double

Imagen indexada, especificada como arreglo numérico de cualquier dimensión. Los valores de X son un índice del mapa de colores map.

Tipos de datos: single | double | uint8 | uint16

Mapa de colores asociado a la imagen indexada X, especificado como matriz numérica de c por 3 con valores comprendidos en el intervalo [0, 1]. Cada fila es un triplete RGB que especifica los componentes rojo, verde y azul de un único color del mapa de colores.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen en escala de grises transformada, devuelta como arreglo numérico del mismo tamaño y clase que la imagen de entrada, I.

Transformación de la escala de grises, devuelta como vector numérico. La transformación T asigna niveles de gris de la imagen I a niveles de gris de J.

Tipos de datos: double

Mapa de colores transformado, especificado como matriz numérica de n por 3 con valores comprendidos en el intervalo [0, 1]. Cada fila es un triplete RGB que especifica los componentes rojo, verde y azul de un único color del mapa de colores.

Tipos de datos: double

Algoritmos

Cuando se suministra un histograma deseado hgram, histeq elige la transformación de grises T para minimizar

|c1(T(k))c0(k)|,

c0 es el histograma acumulativo de la imagen de entrada I, y c1 es la suma acumulativa de hgram para todas las intensidades k. Esta minimización está sujeta a estas restricciones:

  • T debe ser monótono

  • c1(T(a)) no puede sobrepasar c0(a) en más de la mitad de la distancia entre los recuentos del histograma en a

histeq usa la transformación b = T(a) para asignar los niveles de gris de X (o el mapa de colores) a sus nuevos valores.

Si no especifica hgram, histeq crea un hgram plano

hgram = ones(1,n)*prod(size(A))/n;

y, después, aplica el algoritmo anterior.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

| | |