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 de histograma

Sintaxis

J = histeq(I,hgram)
J = histeq(I,n)
[J,T] = histeq(I)
[gpuarrayJ,gpuarrayT] = histeq(gpuarrayI,___)
newmap = histeq(X,map)
newmap = histeq(X,map,hgram)
[newmap,T] = histeq(X,___)

Descripción

ejemplo

J = histeq(I,hgram) transforma la imagen de intensidad I para que el histograma de la imagen de intensidad de salida J con length(hgram) bins coincida aproximadamente con el histograma de destino hgram.

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

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

[gpuarrayJ,gpuarrayT] = histeq(gpuarrayI,___) realiza la ecualización del histograma en una GPU. La imagen de entrada y la imagen de salida son de tipo gpuArray. Esta sintaxis requiere el Parallel Computing Toolbox™.

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

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

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

Ejemplos

contraer todo

Lee una imagen en el espacio de trabajo.

I = imread('tire.tif');

Mejora el contraste de una imagen de intensidad mediante la ecualización de histogramas.

J = histeq(I);

Visualice 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 DataSet de 3-D.

load mristack

Realizar ecualización de histogramas.

enhanced = histeq(mristack);

Mostrar la primera rebanada de datos para la imagen original y la imagen de contraste mejorada.

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 intensidad de entrada, especificada como una matriz numérica. I puede ser 2-d, 3-d, o N-d.

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

Histograma de destino, especificado como un vector numérico. hgram tiene recipientes de igual espaciado con valores de intensidad en el rango apropiado: [0,1] para imágenes de clase double o single, [0, 255] para imágenes de clase uint8, [0, 65535] para imágenes de clase uint16, y [-32768, 32767] para imágenes de clase int16 . histeq automáticamente escala hgram para que sum(hgram)=numel(I). El histograma de J será mejor coincidir con hgram cuando length(hgram) es mucho menor que el número de niveles discretos en I.

Tipos de datos: single | double

Número de niveles de grises discretos, especificados como escalares.

Tipos de datos: single | double

Imagen de entrada cuando se ejecuta en una GPU, especificada como un gpuArray.

Imagen indexada, especificada como una matriz de valores numéricos reales. Los valores de X son un índice en map. X puede ser 2-d, 3-d, o N-d.

Tipos de datos: single | double | uint8 | uint16

Colores, especificada como un array n-por-3. Cada fila especifica un valor de color RGB.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen de intensidad de salida, devuelta como una matriz numérica de la misma clase que la imagen de entrada I. J también tiene las mismas dimensiones que I.

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

Tipos de datos: double

Imagen de salida cuando se ejecuta en una GPU, se devuelve como un gpuArray.

Transformación en escala de grises cuando se ejecuta en una GPU, se devuelve como gpuArray.

Transformado colores, especificado como un array n-por-3. Cada fila especifica un valor de color RGB.

Tipos de datos: double

Algoritmos

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

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

donde c0 es el histograma acumulativo de A, c1 es la suma acumulativa de hgram para todas las intensidades k. Esta minimización está sujeta a las limitaciones que T debe ser monótona y c1(T(a)) no puede sobregrabar c0(a) por más de la mitad de la distancia entre los conteos de histogramas en a. histeq utiliza la transformación b = T(a) para mapear los niveles grises en X (o colores) a sus nuevos valores.

Si no especifica hgram, histeq crea un hgramplano,

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

y luego aplica el algoritmo anterior.

Capacidades ampliadas

Consulte también

| | |

Introducido antes de R2006a