Histograma
El histograma es un gráfico que relaciona los niveles de intensidad de una imagen y el número de píxeles que poseen tal nivel de intensidad, ello es:
f(rk) = nk (1)
donde rk representa el valor de la k-ésima intensidad en el intervalo [0, Imax] y nk es elnúmero de píxeles que posee la intensidad rk. Por ejemplo, para una imagen de tipo uint8, rk tomará los valores entre el intervalo [0, 255]. Representar el histograma de la imagen es programar la ecuación (1).
El histograma puede estar normalizado, en tal caso:
h(rk) = f(rk) / n = nk / n (2)
donde n representa elnúmero total de píxeles de la imagen. Por ejemplo la siguiente imagen
[pic]
Se representa por su histograma:
>> I=imread('fig1.jpg');
>> II=rgb2gray(I); % Ver método para convertir de color a escala de grises
>> [nk, rk]=imhist(II);
>> bar(rk, nk, 1);
[pic]
El número total de píxeles se puede determinar a través de:
>> sum(nk(:,1))
ans =
69720
Lo que corresponde conel número total de píxeles de la imagen:
>> whos
Name Size Bytes Class
II 249x280 69720 uint8
El número de píxeles que tienen el nivel 64 de intensidad son:
>> nk(65,1) % El nivel 0 tendrá el índice 1
ans =
41205
El histograma normalizado puede calcularse y representarse (de aplicar (2)):
>>nkk=nk./sum(nk(:,1)); >> bar(rk, nkk, 1);
La ecualización del histograma:
La ecualización del histograma se aplica cuando se desea lograr una distribución más uniforme entre el número de píxeles referido a los diferentes niveles de intensidad presentes en la imagen, ello es, un histograma que se extienda en el intervalo de niveles de gris [0, Imax]. La extenxión de los valores de niveles de gris se realiza utilizando informaciónpresente en la propia imagen.
Ecualizar el histograma es aplicar la siguiente función de distribución acumulativa:
[pic] (3)
donde k toma valores en el intervalo [1, Imax+1] (estos intervalos son para utilizar las matrices en Matlab, ello es equivalente a [0, Imax]).
El algoritmo que ecualizaun histograma cumple los siguientes pasos:
[1] Se obtiene el histograma.
[2] El nivel de intensidad rk se sustituye por:
sk = mk*Imax (4)
[3] Repetir hasta Imax.
Un programa en Matlab que realiza el anterior algoritmo para imágenes de tipo uint8 sería:
>>a=imread('Fig.jpg');
>>b=imhist(a);>>c=b./numel(a);
>>d=cumsum(c);
>>e=d.*256; % Figura resultante
La ecualización del histograma se realiza a través de la función:
>>III=histeq(II, 256); % En III estará la imagen ecualizada
La definición del histograma:
Como se ha expuesto previamente, la ecualización del histograma extiende los valores de niveles de gris basado en información presente en la propiaimagen. En la definición del histograma el propósito es definir una función que represente la tendencia que se desea que el histograma siga en determinada imagen.
Para definir un histograma se utiliza la función:
>>g = histeq(f, h);
donde f es la imagen original, g la imagen resultante y h es la función cuya tendencia se desea que el histograma de la imagen f siga. El intervalo de lafunción h debe coincidir con el de los niveles de gris de la imagen f ([0, Imax]).
Un ejemplo de función que penaliza los blancos y negros y acentúa las tonalidades medias de gris de una imagen puede ser la siguiente campana de Gauss:
>> cg=128;
>> ac=50;
>> h=exp(-((([1:1:256]-cg)./ac)).^2)';
[pic]
Ecualización global del histograma
3.1- Introducción
La ecualización...
Regístrate para leer el documento completo.