El histograma es la base de una gran cantidad de técnicas de procesado de imagen y por esa razón es objeto de estudio en esta práctica. Básicamente el histograma es la representación gráfica de las frecuencias relativas con las que aparecen los distintos colores en una determinada imagen
En general se representa como un gráfico de barras en el que las abcisas son los distintos colores de la imagen y las ordenadas la frecuencia relativa con la que cada color aparece en la imagen. El histograma proporciona información sobre el brillo y el contraste de la imagen, y puede ser utilizado para ajustar estos parámetros, eliminar ciertas tonalidades molestas, etc ... Estas técnicas de manejo del histograma son las que iremos aprendiendo en este capítulo
A continuació presentamos una applet que calcula y representa el histograma de una imagen. En este caso se considerarán imágenes en escala de grises, de tal forma que los distintos colores de la imagen serán los 256 (8 bits de profundidad de color) tonos de grises posibles. Por supuesto sería posible hallar los histogramas de cada una de las componentes RGB de una imagen en color.
En esta applet, a la izquierda nos encontramos la imagen y a la derecha el histograma de la misma. Debajo del histograma se encuentra una barra que recorre la gama de grises para facilitarnos la lectura del mismo. Cuando Se vea que aparece una zona roja en el histograma es simplemente un escalado, es decir, que el rango se ha superado y para poder ver el resto del histograma marcamos dicho máximo y escalamos según otro maximo. Esto va a ocurrir con imágenes con mucho negro o mucho blanco principalmente.
Como nota curiosa cabe destacar, si el usuario se ha fijado en los histogramas de las distintas imágenes, que alguna de ellas que parece presentar únicamente colores blanco y negro o unos pocos grises, aparece según el histograma con una gama amplia de grises. Esto es debido al formato de almacenamiento de la imagen que es JPEG. No vamos a entrar en detalles pero sí hay que tener en cuenta que el JPEG es generalmente un formato de almacenamiento con pérdida de calidad. De esta forma si tratamos de guardar una imagen de dos colores con este formato van a aparecer una serie de colores de transición muy parecidos a los originales debido a estas pérdidas y esto se verá reflejado en el histograma. Si usáramos un formato sin pérdidas, una imagen con tres niveles de gris tendría un histograma con tres líneas verticales.
Finalmente veremos el pseudocódigo de cálculo de un histograma:
int Histograma[256];
for (i=0;i<AnchoImagen;i++)
for (j=0;j<AltoImagen;j++)
Histograma[Imagen[i][j]]++;
La matriz Histograma representa los distintos niveles de gris así Histograma[0]es el Negro e Histograma[255]es el Blanco. La rutina anterior recorre los pixels de la imagen. De esta forma la variablez Imagen[i][j]contiene el nivel de grís del pixel en la posición (i,j), incrementando dicha entrada en la matriz Histograma. Lo único que resta es representarlo gráficamente.
|
|
|