Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

histeq

Mejorar el contraste mediante la ecualización del histograma

Descripción

ejemplo

J = histeq(I,hgram) transforma la imagen en escala de grises para que el histograma de la imagen en escala de grises de salida con bins coincida aproximadamente con el histograma de destino.IJlength(hgram)hgram

Opcionalmente, puede realizar la ecualización del histograma de imágenes en escala de grises usar una GPU (requiere ).Parallel Computing Toolbox™

J = histeq(I,n) transforma la imagen en escala de grises, volviendo en una imagen en escala de grises con niveles de gris discretos.IJn Un número aproximadamente igual de píxeles se asigna a cada uno de los niveles en , de modo que el histograma de es aproximadamente plana.nJJ El histograma de es más plano cuando es mucho menor que el número de niveles discretos en .JnI

[J,T] = histeq(I) devuelve la transformación en escala de grises que asigna los niveles de gris de la imagen a los niveles de gris en .TIJ

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

Esta sintaxis no se admite en una GPU.

newmap = histeq(X,map,hgram) transforma el mapa de colores asociado a la imagen indexada para que el histograma del componente gris de la imagen indexada ( , ) coincida aproximadamente con el histograma de destino.XXnewmaphgram La función devuelve el mapa de colores transformado en . debe ser el mismo que .histeqnewmaplength(hgram)size(map,1)

Esta sintaxis no se admite en una GPU.

[newmap,T] = histeq(X,___) devuelve la transformación de escala de grises que asigna el componente gris al componente gris de .Tmapnewmap

Esta sintaxis no se admite en una GPU.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('tire.tif');

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

J = histeq(I);

Muestre la imagen original y la imagen ajustada.

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

Mostrar un histograma de la imagen original.

figure imhist(I,64)

Mostrar un histograma de la imagen procesada.

figure imhist(J,64)

Cargue un conjunto de datos 3D.

load mristack

Realice la ecualización del histograma.

enhanced = histeq(mristack);

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

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')

Argumentos de entrada

contraer todo

Introduzca la imagen en escala de grises, especificada como una matriz numérica de cualquier dimensión.

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

histograma de destino, especificado como vector numérico. tiene contenedores igualmente espaciados con valores de intensidad en el rango adecuado:hgram

  • [0, 1] para imágenes de clase odoublesingle

  • [0, 255] para imágenes de claseuint8

  • [0, 65535] para imágenes de claseuint16

  • [-32768, 32767] para imágenes de claseint16

escala automáticamente para que .histeqhgramsum(hgram)=numel(I) El histograma de coincidirá mejor cuando sea mucho menor que el número de niveles discretos en .Jhgramlength(hgram)I

Tipos de datos: single | double

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

Tipos de datos: single | double

Imagen indexada, especificada como una matriz numérica de cualquier dimensión. Los valores en son un índice en el mapa de colores .Xmap

Tipos de datos: single | double | uint8 | uint16

Mapa de colores, especificado como un -por-3 matriz numérica con valores en el rango [0, 1].c Cada fila es un triplete RGB de tres elementos que especifica los componentes rojo, verde y azul de un solo color del mapa de colores.

Tipos de datos: double

Argumentos de salida

contraer todo

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

Transformación en escala de grises, devuelta como vector numérico. La transformación asigna los niveles de gris de la imagen a los niveles de gris en .TIJ

Tipos de datos: double

Mapa de colores transformado, especificado como una matriz numérica -by-3 con valores en el rango [0, 1].n Cada fila es un triplete RGB de tres elementos que especifica los componentes rojo, verde y azul de un solo color del mapa de colores.

Tipos de datos: double

Algoritmos

Cuando se proporciona un histograma deseado, elige la transformación de escala de grises para minimizarhgramhisteqT

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

Dóndec0 es el histograma acumulativo de ,Ac1 es la suma acumulada de todas las intensidades.hgramk Esta minimización está sujeta a las limitaciones que deben ser monotónicas yTc1no puede rebasar(T(a))c0por más de la mitad de la distancia entre el histograma cuenta en . utiliza la transformación ( ) para asignar los niveles de gris en (o el mapa de colores) a sus nuevos valores.(a)ahisteqbTaX

Si no especifica , entonces crea un plano ,hgramhisteqhgram

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

y luego aplica el algoritmo anterior.

Capacidades ampliadas

Consulte también

| |

Introducido antes de R2006a