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

Mejore el contraste utilizando la ecualización de histograma

Descripción

ejemplo

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

Opcionalmente, puede realizar ecualizaciones de histograma de imágenes en escala de grises usando una GPU (requiere).Parallel Computing Toolbox™ Para obtener más información, consulte.Procesamiento de imágenes en una GPU

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

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

newmap = histeq(X,map) transforma los valores del 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 indizada (,) 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

Leer una imagen en el espacio de trabajo.

I = imread('tire.tif');

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

J = histeq(I);

Visualice la imagen original y la imagen ajustada.

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

Muestra un histograma de la imagen original.

figure imhist(I,64)

Muestra un histograma de la imagen procesada.

figure imhist(J,64)

Cargue un DataSet 3-D.

load mristack

Realizar ecualización de histograma.

enhanced = histeq(mristack);

Muestra el primer trozo de datos de la imagen original y 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')

Este ejemplo realiza la misma ecualización de histograma en la GPU.

I = gpuArray(imread('tire.tif')); J = histeq(I); figure imshow(I) figure imshow(J)

Argumentos de entrada

contraer todo

Imagen de escala de grises de entrada, especificada como una matriz numérica de cualquier dimensión.

Para realizar la ecualización de histograma mediante una GPU, especifique como un que contiene una matriz numérica de cualquier dimensión.IgpuArray

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

Histograma de destino, especificado como un vector numérico. tiene bins espaciados por igual 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

escalas automáticamente para que.histeqhgramsum(hgram)=numel(I) El histograma de coincidirá mejor cuando es mucho más pequeño que el número de niveles discretos en.Jhgramlength(hgram)I

Si realiza la ecualización de histograma mediante una GPU, puede especificar opcionalmente como una que contiene un vector numérico.hgramgpuArray

Tipos de datos: single | double

Número de niveles de gris discretos, especificados como un escalar.

Tipos de datos: single | double

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

Tipos de datos: single | double | uint8 | uint16

Colormap, especificado como un array-by-3.c Cada fila especifica un valor de color RGB.

Tipos de datos: double

Argumentos de salida

contraer todo

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

Si la ecualización del histograma se realiza mediante una GPU, se devuelve como una matriz numérica.JgpuArray

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

Si la ecualización del histograma se realiza mediante una GPU, se devuelve como un vector numérico.TgpuArray

Tipos de datos: double

Mapa de colores transformado, especificado como un array-by-3.n Cada fila especifica un valor de color RGB.

Tipos de datos: double

Algoritmos

Cuando se suministra un histograma deseado, se elige la transformación en 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 restricciones que deben ser monotónicas yTc1no puede sobregrabar(T(a))c0por más de la mitad de la distancia entre el conteo de histograma 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 se especifica, se crea un plano,hgramhisteqhgram

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

y, a continuación, aplica el algoritmo anterior.

Capacidades ampliadas

Consulte también

| |

Introducido antes de R2006a