Nothing Special   »   [go: up one dir, main page]

CAPITULO 3 - Histogramas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

“Año del Bicentenario, de la consolidación de nuestra

Independencia y de la conmemoración de las


heroicas batallas de Junín y Ayacucho”

UNIVERSIDAD NACIONAL DE LA AMAZONÍA PERUANA


Facultad de Ingeniería de Sistema de Informática

HISTOGRAMAS

Alumnos:
Castillo Soto Jade Nicole
Manrique Vilchez, David Alexander
Pezo murrieta orison

Docente:
Ing. Tonny Eduardo

Curso:
Procesamiento de Imágenes

Nivel:
III

Ciclo:
VI

Iquitos - Perú
2024
ÍNDICE

1. HISTOGRAMAS .................................................................................................................... 3

1.1. ¿QUÉ ES UN HISTOGRAMA? .................................................................................... 3

1.2. CARACTERÍSTICAS DE TOMA DE UNA IMAGEN ................................................... 4

1.2.1. Iluminación ........................................................................................................... 4

1.2.2. Contraste ............................................................................................................. 5

1.2.3. Dinámica .............................................................................................................. 6


1.3. CÁLCULO DEL HISTOGRAMA DE UNA IMAGEN CON MATLAB .......................... 7

1.3.1. Función de MATLAB para línea de comandos ................................................... 7


1.3.2. Librerías de bloques para el procesamiento de imagen y vídeo de Simulink .... 8
1.4. HISTOGRAMA DE IMÁGENES A COLOR ............................................................... 15

1.4.1. Histograma de luminosidad ............................................................................... 15

1.4.2. Histograma de componentes de color .............................................................. 16


1.5. HISTOGRAMA ACUMULATIVO ............................................................................... 16

1.5.1. Herramientas de MATLAB para el cálculo del histograma acumulativo .......... 17

2
1. HISTOGRAMAS
Los Histogramas pueden ser considerados como medidas estadísticas de la imagen
y normalmente son usados como medio de ayuda para evaluar propiedades
importantes de una imagen. Especialmente son los errores producidos en la toma de
imagen los que son fácilmente reconocidos mediante la utilización de histograma.
Aparte de poder tratar con los problemas anteriormente mencionados es posible
también preprocesar la imagen tomando como base el histograma para mejorarla o
bien para resaltar características de ella que serán o bien extraídas o analizadas en
fase de procesamiento posterior (considerando posteriormente un sistema de
reconocimiento de patrones en la imagen, por ejemplo).

1.1. ¿QUÉ ES UN HISTOGRAMA?


Los histogramas son distribuciones que describen la frecuencia con la que se
presentan los valores de intensidad (píxeles) de la imagen. En el caso más
sencillo los histogramas son mejor entendidos por medio de imágenes a escala
de grises, un ejemplo es mostrado en la figura 1. Para una imagen a escala de
grises 𝐼(𝑢, 𝑣)con intensidad en el intervalo [0, 𝑘 − 𝐼] contendrá el histograma
𝐻 exactamente 𝐾diferentes valores, el cual considerando una típica imagen a
escala de grises de 8 bits será de 𝐻 = 28 = 256. Cada valor del histograma
es definido como ℎ(𝑖) = 𝑎El número de píxeles de 𝑙 con el valor de intensidad
𝑖 para todos los valores 0 ≤ 𝑖 < 𝑘. Esto expresado formalmente:

𝒉(𝒊) = 𝒄𝒂𝒓𝒅𝟐 {(𝒖, 𝒗) | 𝑰(𝒖, 𝒗) = 𝒊}

ℎ(0) es entonces el número de píxeles con el valor 0, ℎ(1) el número de píxeles


que tienen el valor de 1, sucesivamente mientras que finalmente ℎ(255)
representa el número de píxeles blancos (con el máximo valor de intensidad)
de la imagen. Como resultado del cálculo del histograma se obtiene un vector
unidimensional ℎ con una longitud 𝑘, tal y como es representado en la figura
2, donde 𝑘 = 16.

Evidentemente el histograma no proporciona información acerca del origen de


los píxeles que lo conforman. Esto es, pérdida de la información de la relación
espacial que tenían los píxeles en la imagen, por lo que resulta imposible
reconstruir una imagen a partir de su histograma.

3
Figura 1. El vector de un histograma con 16 posibles valores de intensidad. El índice de los
elementos del vector 𝑖 = 0 . . .15 representa el valor de intensidad. El valor de 9 en el elemento
2 significa que en la correspondiente imagen el valor de intensidad 2 aparece 9 veces.

Figura 2. Tres diferentes imágenes que producen el mismo histograma.

1.2. CARACTERÍSTICAS DE TOMA DE UNA IMAGEN


Los histogramas muestran características importantes de una imagen, como
por ejemplo el contraste y la dinámica, problemas que son producidos durante
la toma de la imagen y generan consecuencias para las siguientes etapas de
procesamiento.

1.2.1. Iluminación
Los errores de la iluminación son reconocidos en el histograma porque
la región final o inicial de la escala de intensidad no es utilizada,
mientras que en la otras regiones del histograma son ocupados por
valores de intensidad de píxeles. La figura 3 muestra un ejemplo de
imágenes con diferentes tipos de iluminación.

4
Figura 3. Las figuras muestran cómo los errores de la iluminación son fácilmente
detectables por el histograma: (a) Imagen con correcta iluminación, (b) con alta
iluminación y (c) con baja iluminación.

1.2.2. Contraste
Como contraste se entiende el campo de valores de intensidad que en
una imagen son utilizados, en pocas palabras la diferencia entre el
máximo y mínimo valor de intensidad de los píxeles presentes en la
imagen. Una imagen con un contraste completo utiliza el intervalo
completo de niveles de intensidad definidos para la imagen
𝑎 = 𝑎𝑚𝑖𝑛 . . . 𝑎𝑚𝑎𝑥 = 0. . . 𝑘 − 1 (de negros a blanco). Por ello es sencillo
observar el contraste de una imagen utilizando para ello un histograma.
La figura 4 muestra diferentes configuraciones de contraste en
imágenes y el histograma producido.

5
Figura 4. Las figuras muestran diferentes contrastes en imágenes y sus respectivos
efectos en el histograma: (a) bajo contraste y (b) contraste normal.

1.2.3. Dinámica
Bajo el término de dinámica se entiende el número de píxeles
diferentes que son utilizados en la imagen. El caso ideal para un
imagen resulta cuando es utilizado en el rango completo de valores de
intensidad disponibles 𝑘 para la imagen en cuestión, en este caso la
región de valores está cubierta completamente. Una imagen que cubra
una región de valores de intensidad 𝑎 = 𝑎𝑚𝑖𝑛 . . . 𝑎𝑚𝑎𝑥 más pequeña que
la completa con:

𝑎𝑚𝑖𝑛 > 0 𝑦 𝑎𝑚𝑎𝑥 < 255

la cuál alcanza su máximo rango dinámico cuando todos los valores de


intensidad en ese intervalo están presentes en la imagen 5.

6
Figura 5. Diferentes dinámicas en una imagen y sus efectos en el histograma: (a) alta
dinámica, (b) baja dinámica con 64 niveles de intensidad y (c) muy baja dinámica con
solo 8 niveles de intensidad.

Mientras el contraste de una imagen puede ser elevado en tanto el


valor máximo del intervalo de la intensidad de los píxeles no sea
sobrepasado, la dinámica de una imagen no puede ser elevada
(excepto por interpolación de los valores de intensidad de los píxeles).
Por esa razón las cámaras digitales y los escáner profesionales tienen
una resolución mayor a los 8 bits, normalmente de 12 a 14 bits, aunque
los elementos de despliegue de la imagen tengan las resoluciones
normales de 256.

1.3. CÁLCULO DEL HISTOGRAMA DE UNA IMAGEN CON MATLAB


Se explican las funciones de MATLAB que pueden calcular y desplegar el
histograma de una imagen, esto desde dos perspectivas diferentes que van
desde encontrar el histograma de una imagen fija por medio de una función o
hacerlo sobre vídeo proveniente de una WebCam utilizando la librería de
bloques de procesamiento de imagen y vídeo de Simulink.

1.3.1. Función de MATLAB para línea de comandos


La función del toolbox de procesamiento de imagen para el cálculo del
histograma de una imagen tiene formato:

[counts, x] = imhist(I, n)

Esta función calcula y despliega el histograma de la imagen I. El


número de valores del histograma si no se específica n depende del
tipo de imagen que se trate. Si I es una imagen binaria la función
calculará el histograma con solo 2 valores.

7
Si n es especificada, el histograma es calculado y desplegado
utilizando n valores en lugar de los especificados por el tipo de imagen.
La variable counts es un vector que recibe el número de píxeles
pertenecientes al valor de intensidad especificado por x. Relacionando
estas dos variables mediante stem(x, counts) podríamos encontrar
de nueva cuenta el histograma.

1.3.2. Librerías de bloques para el procesamiento de imagen y vídeo de


Simulink
La librería para el procesamiento de imagen y vídeo de Simulink
mediante el bloque «2-D Histogram» permite calcular el histograma de
una imagen. La figura 6 muestra gráficamente la representación de
este bloque en Simulink.

Figura 6. Bloque «2-D Histogram» de la librería de procesamiento de imagen y vídeo


de Simulink que permite calcular el histograma de una imagen.

El bloque tiene dos configuraciones posibles, 1) la básica y 2) la


operación de “Running”. En la operación básica el bloque calcula la
distribución en frecuencia de cada imagen acoplada a la entrada del
bloque dado como salida a un vector de 1 x N donde N es el número
de valores del histograma el cual depende del tipo de imagen. En la
operación “Running” el bloque calcula la distribución de frecuencias en
una serie de imágenes

Normalmente la mayoría de las aplicaciones utilizan a éste bloque en


su modo de operación básica, ya que normalmente se requiere tomar
decisiones sobre características instantáneas del histograma de una
imagen.

La figura 7 muestra la ventana de configuración de éste bloque. Al


seleccionar (1) la casilla “Running histogram”, se configura al bloque
para que trabaje en su modo de operación “Running”. Si dicha casilla
no está seleccionada indica que el bloque trabaja en su operación
básica.

8
Figura 7. Muestra la ventana de configuración del bloque “2-D Histogram” de la
librería de procesamiento de imágenes y vídeo de Simulink.

Al seleccionar la casilla “Normalized” el bloque escala cada elemento


calculando el histograma de tal manera que la suma de todos los
elementos del histograma resulte uno.

El bloque para dibujar marcas


La librería de procesamiento de imagen y vídeo de MATLAB tiene el
bloque “Draw Markers” que pertenece a la categoría de bloques de
texto y gráficos, “Text & Graphics” permite dibujar múltiples círculos ,
marcas x, signos de +, estrellas y cuadrados sobre imágenes mediante
la sobreescritura de los píxeles a través del algoritmo Bresenham. La
figura 8 muestra gráficamente la representación de este bloque en
Simulink.

9
Figura 8. Bloque “Draw Markers” de la librería de procesamiento de imagen y vídeo
de Simulink. Por defecto el bloque está configurado para añadir a la imagen círculos
definidos en las posiciones Pts.

La imagen salida de este bloque es del mismo tipo que la de entrada


definida en Image, la imagen tendrá la misma información que Image
además de las marcas definidas en los puntos Pts. La figura 9 muestra
la ventana de configuración de éste bloque.

Figura 9. Muestra la ventana de configuración del bloque “Draw Markers” de la


librería de procesamiento de imágenes y vídeos de Simulink.

Image from workspace

10
Este bloque permite añadir al algoritmo de procesamiento una matriz o
imagen constante definida previamente desde la consola de comandos
de MATLAB. La figura 10 muestra el bloque como es representado en
Simulink.

Figura 10. Bloque de Simulink para añadir una matriz o imagen al algoritmo de
procesamiento de imagen. El bloque por defecto inicializa con una imagen
predefinida tal y como se muestra.

Bloque from vídeo device


Para poder captar imágenes a partir de una WebCam, MATLAB provee
un bloque que parte de las librerías contenidas en el Toolbox de
Adquisición de Imágenes. El bloque es accesible desde Simulink y
permite capturar frames de una WebCam, tan solo se requiere instalar
previamente su driver.

El bloque se encuentra representado en la figura 11 (a), en ella puede


apreciarse cómo se trata de un bloque cuya funcionalidad es ser una
fuente de imágenes provenientes de la WebCam.

Para poder utilizar este bloque es necesario configurarlo de tal forma


que pueda ser capaz de conectarse con el dispositivo de vídeo. La
figura 11 (b), muestra la ventana de configuración del bloque “From
Video Device” y el valor seleccionado para poder utilizar a la WebCam
como fuente de vídeo.

11
Figura 11. Bloque “From Video Device” parte de la librería del Toolbox de Adquisición
de Imágenes. Permite capturar imágenes desde un dispositivo de vídeo compatible
con Windows ®, tal como WebCam. Como puede verse en la figura entre paréntesis
se señala el nombre de la WebCam que en ese momento se encuentra conectada
para ser utilizada.

Este programa realizado en Simulink para el cálculo y despliegue en


tiempo real de histograma sobre imágenes provenientes de una
WebCam es esquematizado en la figura 12.

Figura 12. Programa en Simulink que calcula y despliega en tiempo real el


histograma de imágenes que provienen de una WebCam.

12
La imagen capturada por la WebCam a través de “From Video Device”
es convertida a imagen a escala de grises y posteriormente se calcula
su histograma utilizando el bloque “2-D Histogram”.

Para generar los puntos a partir del vector 1 X N entregado por el


bloque “2-D Histogram”, se genera una función en MATLAB, la cual
tendrá por objetivo empaquetar el vector 1 X N que contiene la
distribución de frecuencia de los píxeles. Como en ejemplo se trata de
imágenes a escala de grises este vector es un vector de 256 elementos
donde el primero es 1 y el último 256, de esta manera la salida de la
función son dos vectores empaquetados en una variable donde al
elemento 1 corresponda la distribución en frecuencia de los píxeles de
valor 0, mientras que para el valor de 256 es el número de píxeles que
corresponden al valor 255. En la programa 1 se muestra la función
utilizada.

13
Programa 1. Ejemplo de función que determina el valor del píxel máximo y mínimo.

Figura 13. (a) El bloque de función de MATLAB definida por el usuario para el trabajo
en Simulink y (b) su ventanilla de configuración.

Una vez calculados los puntos con la función concatena definida en el


programa 1, se pasan al bloque “Draw Markers” para su graficación.
Para ello se utiliza como fondo o tapete una imagen definida
previamente en línea de comandos, en este caso la matriz o imagen
será definida como A, y utilizada en el programa a través del bloque
“Image From Workspace”. La matriz será definida en línea de
comandos por:
>>>A=ones(352, 256);

La dimensión de esta matriz deben ser en número de filas lo


suficientemente grandes de tal forma que plasme adecuadamente las

14
variaciones del histograma, mientras que el número de columnas es
siempre de 256.

1.4. HISTOGRAMA DE IMÁGENES A COLOR


Por histograma de imágenes a color se refiere a histogramas de luminosidad
o bien a los que se obtienen sobre cada uno de los planos que conforman la
imagen de color, considerando a cada plano como si se tratase de una imagen
en escala de gris independiente.

1.4.1. Histograma de luminosidad


Es el histograma de la correspondiente versión en escala de grises de
la imagen a color, ya que la imagen a escala de grise extraída de la
imagen a color, representaría la luminosidad de los diferentes planos
que la componen. La figura 14 muestra el histograma de la luminosidad
de una imagen a color.

Figura 14. Muestra el resultado de ejecutar el programa en Simulink descrito en la


figura 12.

Figura 15. (a) Imagen a color, (b) su versión en escala de grises (imagen de
luminosidad) y (c) el correspondiente histograma de (b).

15
1.4.2. Histograma de componentes de color
Aunque el histograma de luminosidad considera todos los
componentes de color es posible que no puedan considerarse errores
presesentes en la imagen. Por ejemplo, es posible que el histograma
de luminosidad parezca adecuado a pesar de que alguno de los planos
de color tenga algún error. en las imágenes RGB el plano azul
normalmente aporta muy poco a la luminosidad total de la imagen a
escala de grises a partir de la imagen de color. La figura 16 muestra el
histograma de luminosidad ℎ𝐿𝑢𝑚 y los histogramas de cada no de los
diferentes planos de color ℎ𝑅 , ℎ𝐺 𝑦 ℎ𝐵 para una imagen RGB típica.

Figura 16. Histogramas de los componentes de una imagen a color: (a) Imagen
original RGB, (b) histograma del plano R, (c) histograma del plano B y (d) el
histograma del plano (d).

1.5. HISTOGRAMA ACUMULATIVO


El histograma acumulativo es una variante del histograma normal, el cual
refleja información importante para la realización de operaciones de píxel por
píxel en imágenes (operaciones de punto), por ejemplo para equilibrar un
histograma. El histograma acumulativo 𝐻(𝑖) es definido como:

𝐻(𝑖) = ∑ ℎ(𝑗) 𝑝𝑎𝑟𝑎 0 ≤ 𝑖 < 𝐾


𝑗=0
Ecuación 1

El valor de 𝐻(𝑖) es entonces la suma de todos los valores abajo del valor
especificado 𝑖 del histograma “normal” ℎ(𝑗) con los valores 𝑗 = 0. . . 𝑖, o bien, el
obtenido considerando el valor inmediato anterior:

16
𝐻(𝑖) = { ℎ(0) 𝑝𝑎𝑟𝑎 𝑖 = 0; 𝐻(𝑖 − 𝐼) + ℎ(𝑖) 𝑝𝑎𝑟𝑎 0 ≤ 𝑖 < 𝐾
Ecuación 2

El histograma acumulativo es de acuerdo a su definición una función monótona


creciente, con el valor máximo de:

𝐾−1

𝐻(𝐾 − 𝐼) = ∑ ℎ(𝑗 = 𝑀𝑥𝑁


𝑗=0
Ecuación 3

La figura 17 muestra un ejemplo del histograma acumulativo.

1.5.1. Herramientas de MATLAB para el cálculo del histograma


acumulativo
Empezamos por aplicar directamente en un programa de MATLAB la
ecuación mostrada en la ecuación 2. Para ello nos valdremos de la
utilización de la función imhist anteriormente tratada en la sección
1.3.1, la cual, como fue observado era capaz de regresar el vector
𝐼𝑥256 de los valores del histograma calculado. A partir de estos valores
es posible recursivamente calcular el histograma acumulativo. El
programa 2 muestra los pasos necesarios para calcular y desplegar el
histograma acumulativo.

Figura 17. (a) Imagen original, (b) histograma de (a) y (c) el histograma acumulativo
de (a).

17
Programa 2. Muestra el programa MATLAB para calcular y desplegar el histograma
acumulativo.

El programa 3 muestra la función utilizada para el cálculo del


histograma acumulativo y el empaquetamiento de datos. La figura 17
muestra el resultado de haber ejecutado el programa descrito en la
figura 17 pero utilizando la nueva función para el despliegue del
histograma acumulativo.

18
Programa 3. Función que permite calcular el histograma acumulativo y empaquetar
los datos calculados por el bloque “2-D Histogram” para generar los puntos que el
bloque “Draw Markers” gratificará.

19
Figura 18. Muestra el resultado de ejecutar el programa en Simulink descrito en la
figura 12, pero utilizando la función definida en el programa 3 para el cálculo y
despliegue del histograma acumulativo.

20

También podría gustarte