Está en la página 1de 1

Más alejndro.ruiz055@gmail.

com Escritorio Cerrar sesión

Proyectos electronicos variados


martes, 26 de julio de 2016

Mejoramiento de Imágenes mediante Ecualización de su Histograma Oscar Carrion P.

Oscar Carrion
La ecualización del histograma es una técnica que permite mejorar el contraste de una imagen mediante el Ver todo mi perfil
procesamiento de su histograma.

Archivo del blog


¿Qué es un Histograma?

► 2018 (1)
Un histograma mide el número de pixeles con una determinada intensidad en una imagen. ►
► 2017 (2)

▼ 2016 (1)
Por ejemplo, en la siguiente imagen y su histograma: ▼
▼ julio (1)
Mejoramiento de Imágenes
mediante Ecualización de ...


► 2015 (2)

► 2013 (1)

Los pétalos del girasol tienen intensidades de gris claras cercanas a 255 y la ventana de la esquina superior
izquierda tienen intensidades de gris oscuras cercanas a 0.

Entonces existen aproximadamente:

2000 pixeles con intensidad 50,


22000 pixeles con intensidad 100,
1000 pixeles con intensidad 150, y así sucesivamente. (De acuerdo al gráfico de la derecha.)

De acuerdo a su histograma, las imágenes se pueden ser:

Oscuras: Si la mayoría de sus pixeles se encuentran en la zona izquierda del histograma.


Claras: Si la mayoría de sus pixeles se encuentran en la zona derecha del histograma.
Bajo contraste: Si la mayoría de sus pixeles se encuentran en la zona central del
histograma.
Alto contraste: Los pixeles se encuentran distribuidos en todo el ancho del histograma.
Con la ecualización del histograma las imágenes oscuras, claras, y de bajo contraste se
transforman en imágenes de alto contraste (generalmente).

Las imágenes de alto contraste están optimizadas respecto a su distribución de intensidades y casi
no se logra mejorías notorias con la técnica de ecualización.

Técnica de ecualización con MATLAB

Para ecualizar una imagen oscura, clara o de bajo contraste se siguen los siguientes pasos:

1. Se obtiene el histograma de la imagen que se desea ecualizar. Esto lo realizo con las siguientes
instrucciones

L=256;
for m=0:L-1
p= (image == m);
image_hist(m+1)=sum(sum(p));
end

El programa es un bucle que recorre todas las intensidades de gris de una imagen de 8 bits. En 'p' se almacena
una imagen lógica cuyos valores son: 0 si no existe coincidencia en la comparación y 1 si existe coincidencia.
Luego se suman todas las coincidencias del valor del pixel dado en 'm' y se almacena el valor en un vector
'image_hist' que es el histograma de la imagen. Al graficar,

n=0:L-1;
figure;
stem(n,image_hist,'filled','markersize',2)
axis([0 L-1 0 max(image_hist+10)])

Se obtiene el gráfico a la derecha de la imagen del girasol.

2. Se halla la transformación lineal para obtener la nueva imagen a partir del histograma de la imagen original. Esto se
obtiene sumando y normalizando las probabilidades de los pixeles de la imagen original. De acuerdo a la siguiente fórmula:

T(r)=(L-1) int from{0} to{r} p_r(w)dw

Ya que las imágenes son digitales, tienen valores discretos de intensidad; por lo tanto la integral de la fórmula
anterior se transforma en sumatoria, del siguiente modo:

T(r)=(L-1) sum from{i=0} to{k} p_r(r_i) = (L-1) over NM sum from{i=0} to{k} n_i newline newline k=0,1,2,...,L-1

Donde 'NM' es la cantidad total de pixeles de la imagen y 'n' es el numero de pixeles de cada
intensidad en la imagen. Como el limite superior de la sumatoria varia de 0 a L-1, existirán L
sumatorias, las cuales son acumulativas. Una sumatoria acumulativa se puede realizar en MATLAB
por medio de la función 'cumsum()' del siguiente modo:

Tr=((L-1)/size(image,1)*size(image,2))*cumsum(image_hist)

En particular, no soy partidario del uso de funciones predefinidas en MATLAB, por lo que prefiero usar el siguiente
algoritmo de suma acumulativa:

s=zeros(1,L);
st=0;
for k=1:L
st=st+image_hist(k);
s(k)=st; % Paso principal del algoritmo
end
% Transformacion lineal
Tr=((L-1)/(size(image,1)*size(image,2)))*s;
Tr=round(Tr); % redondeamos al mas cercano entero

La gráfica de la transformación lineal para la imagen del girasol es:

   

El girasol se considera una imagen de alto contraste, según su histograma. Para imágenes como el girasol, la
transformación lineal resulta similar a una función lineal T(r)=r osea; la imagen de entrada es muy similar a la imagen
transformada, no resultando ninguna mejora aparente en la imagen que se desea ecualizar.

3. Como último paso se aplica la transformación lineal a la imagen original. Esto se realiza con el siguiente código:

image_out=zeros(size(image));
for k=0:L-1
layer = Tr(k+1)*(image==k);
image_out = image_out + layer; %suma por capas
end

Finalmente, pongo ejemplos de la transformación lineal para imágenes oscuras, claras y de bajo contraste. En la fila
superior se muestra la imagen original y la imagen ecualizada y en la fila inferior se muestra el histograma de la imagen
original y la transformación lineal obtenida a partir de su histograma.

Imagen Oscura
Imagen
Clara

Imagen de bajo contraste

Fuente consultada: Digital Image Processing, R. Gonzalez, R. Woods, 3ra edición. Pag. 122.

Publicado por Oscar Carrion en 19:39

Etiquetas: digital image processing, image equalization, image processing, imagen contraste enhacement, MATLAB image ecualization
Ubicación: Área Metropolitana de Lima, Perú

No hay comentarios:
Publicar un comentario

Introduce tu comentario...

Comentar como: AlejandroRz (G Cerrar sesión

Publicar Vista previa Avisarme

Entrada más reciente Página principal Entrada antigua

Suscribirse a: Enviar comentarios (Atom)

Páginas vistas en el último mes

93

Tema Sencillo. Imágenes del tema: gaffera. Con la tecnología de Blogger.

También podría gustarte