Histogramas

INSTITUTO TECNOLÓGICO SUPERIOR DE IRAPUATO Ingeniería en Mecatronica Edgar Cuitláhuac Camargo Suarez IS111576 Histograma

Views 132 Downloads 94 File size 294KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO TECNOLÓGICO SUPERIOR DE IRAPUATO Ingeniería en Mecatronica Edgar Cuitláhuac Camargo Suarez IS111576 Histogramas

Grupo: ISHC57C

21.Febrero. 2020 ingeniería en Mecatrónica ITESI. Visión Computacional Profesor Gerardo Trejo Caballero

[email protected]

Histogramas Edgar Cuitláhuac Camargo Suarez IS111576 21.febrero.2020 Ingeniería en Mecatrónica ITESI. Procesamiento digital de Imágenes Profesor Gerardo Trejo Caballero

I. RESUMEN Se realizaran los histogramas de una imagen a escala de grises, estos histogramas serán, Histograma normal, Histograma Normalizado, Histograma acumulado, Histograma acumulado normalizado

Esto da origen a un nuevo histograma ℎ1 (𝑔(𝑥, 𝑦)).Al observar la expresión (1) se evidencia porque está es una operación puntual. Sin pérdida de Generalidad si se restringe a la transformación T hacer monótona entonces un histograma ℎ1 (𝑔(𝑥, 𝑦))Implica una transformación única T Noelia continuas la relación que deben existir entre un histograma ℎ0 (𝑓(𝑥, 𝑦)) y uno deseado ℎ0 (𝑔(𝑥, 𝑦))ya viene dado por: 𝑔

II. MARCO TEÓRICO Aunque son muy conocidos en estadística los aspectos relaciones con el histograma de un conjunto de datos, aquí se presentará una sencilla definición de este para el trabajo en tratamiento digital de imágenes. el trazado del número de veces (frecuencia de aparición) en qué se repite cada uno de los niveles de grises de una imagen se denomina histograma. En el eje x se coloca cada uno de los niveles de grises de la imagen cómo mientras que en su eje y se colocan las frecuencias de aparición de cada uno de estos niveles. En muchas ocasiones este también recibe el nombre de aproximación de primer orden de la función de densidad de la imagen. En la figura 1(b) se muestra el histograma de la imagen de la figura 1 (a).

𝑓

∫ ℎ1 (𝑢) 𝑑𝑢 = ∫ ℎ0 (𝑢)𝑑𝑢 0

0

Histograma Normalizado Sea Yi la variable aleatoria correspondiente a la cantidad de datos en el bin 𝑖 de ancho 𝑤 𝑖 de un histograma. El histograma representa a una densidad de probabilidad (para alguna variable aleatoria X), y para que esté normalizada, esta tiene que integrar a 1. Entonces, queremos normalizar a los Yi↦yi tal que: 1 = ∫ 𝑓(𝑥)𝑑𝑡 ≈ ∑ 𝑦𝑖 𝑤𝑖 𝑖

donde aproximamos la integral por la suma de las áreas de los bin s Ahora, una forma de normalizar sería dividir a todos los Yi 𝑌 1 ∑𝑖 𝑤𝑖 𝑌𝑖 = 1 por ∑𝑖 𝑤𝑖 𝑦𝑖 = ∑𝑖 𝑤𝑖 ∑ 𝑖 = ∑ 𝑗 𝑤𝑖 𝑦𝑖

𝑖 𝑤𝑖 𝑌𝑖

La integral da 1 como queríamos, pero esta normalización no representa la densidad de probabilidad cuando los bin s son de distinto ancho. En cambio, si normalizamos a cada bin por su ancho y por N , la cantidad total de datos en el histograma, tenemos:

(a)

(b)

Figura 1 (a) Una imagen en niveles de grises y (b) su histograma

Muchas veces la información que brinda el histograma puede resultar muy valiosa para determinar e interpretar de forma objetiva las características de una imagen sin necesidad de observar la información directa. por ejemplo, Dave histograma de la figura 1 (b)se puede decir que la imagen correspondiente tiene un buen contraste ya que sus niveles de grises se encuentran distribuidos prácticamente a lo largo del rango dinámico. Histograma Acumulado Se define el histograma acumulado acumulativo de una imagen a la suma de todas sus frecuencias de aparición de los niveles de grises es decir: 2𝑏

𝐴=∑

Yi↦

𝑌𝑖 𝑤𝑖 ∑𝑗 𝑌𝑗

=

𝑌𝑖 𝑊𝑖 𝑁

? 𝑦í

Esta normalización también integra a 1: 𝑌𝑖 1 ∑ 𝑤𝑖 𝑦𝑖 = ∑ 𝑤𝑖 = ∑𝑗 𝑤𝑖 𝑦𝑖 ∑𝑗 𝑌𝑗 𝑖

𝑖

y representa correctamente a la densidad de probabilidad cuando los anchos son distintos. Histograma Normalizado acumulado Un histograma normalizado acumulado no es más que el histograma acumulado pero normalizado de esta manera tenemos un histograma con la información acomoda de manera más conveniente para los próximos procesamientos que se harán a tales histogramas junto con las imágenes.

ℎ(𝑖)

𝑖=0

Dónde h(i) es el histograma de la imagen B es la resolución en niveles de gris. Sea 𝐹(𝑥, 𝑦)el valor de un Píxel en las coordenadas (x,y), sea ℎ0 (𝑓(𝑥, 𝑦))el histograma correspondiente a la imagen de entrada. sea T una transformación que se le aplica a dicha imagen coma entonces el valor de pico de salida viene dado por: 𝑔(𝑥, 𝑦) = 𝑇(𝑓(𝑥, 𝑦)). (1)

III. OBJETIVOS • • • • • •

Realización de Histograma Realización de Histograma acumulado Realización de Histograma normalizado Realización de Histograma Normalizado Acumulado Realizar código en Matlab Crear función en Matlab

IV. MATERIALES, EQUIPO Y SOFTWARE • •

El histograma acumulado consiste en la suma de la frecuencia de la intensidad del vector H mas la frecuencia anterior, el resultado seria un Histograma mejor acomodado y visual mente será una forma mas cómoda de observar la información. En la figura 3 se observa el resultado del histograma normalizado de la figura 2.

PC Software Matlab.

V. DESARROLLO Para llevar a cabo estas funciones se realizó un código en Matlab el cual nos calculaba el histograma normal de una imagen a escala de grises su funcionamiento es muy sencillo simplemente va contando las intensidades de cada Píxel y las va almacenando en una variable en este caso está variable será un vector de tamaño del rango dinámico de nuestra imagen, el cual será de 8 bits=256 intensidades. Realizamos una función en Matlab la cual llamaremos Histograma esta función tendrá como salida un vector en donde se guardará el número de frecuencias de intensidades, Se tiene la siguiente matriz correspondiente a una imagen; 255 255 255 128 128 128 0 0 0 0 0 0 Tabla1 Información de una imagen a escala de grises

Figura 2 Histograma de (tabla 1) utilizando función Histograma

El funcionamiento de esta función es el siguiente, primero se deberá crear el vector de tamaño del rango dinámico como se menciono antes será de 256 ya que es una imagen de 8 bits, una ves creado el vector recorreremos nuestra imagen pixel por pixel, cada ves que estemos en una posición dentro de la imagen I nuestro vector de salda se posicionara en la posición que marque la intensidad por ejemplo si en la posición I(1,2) nuestra intensidad es igual a 129 nuestro vector de salida se posicionara en su casilla 129 y aumentaremos 1 ya que la casilla 129 esta asociada a la intensidad 128 se aumentara 1 seria intensidad 129 pero únicamente estamos posicionados aun no se ah asignado un valor para esto se debe agregar en la posición que se encuentra el vector un 1 para así tener en la posición relacionada 1 pixel Se puede observar de mejor manera en la tabla 2 el funcionamiento de esta función. Intensidad 126 127 128 129 asociada

0 0 0 1 Valor 127 128 129 130 Posición De esta manera se ira obteniendo la frecuencia de cada intensidad, una ves encontradas todas las frecuencias se procede a graficar el histograma. Ahora se procederá ha realizar un Histograma Acumulado, para eso diremos que nuestro nuevo histograma dependerá de el histograma de la imagen.

Figura 3) Histograma Acumulado de (Figura 2)

Este Histograma tiene una característica importante siempre ira de forma ascendente, jamás ira hacia debajo de ser asi la función estaría trabajando de manera incorrecta. En seguida sacaremos el Histograma Normalizado a que se refiere esto como podemos observar en la (figura 3) de lado izquierdo esta la frecuencia de veces que aparece una intensidad o la probabilidad de encontrar un pixel de x intensidad o el numero total de pixeles que contiene la imagen, para obtener valores normalizados en una escala mejor que seria entre [0,1] para eso se dividirá cada uno de los valores que se tiene en el vector del Histograma Normalizado entre El numero total de pixeles que contiene la imagen: 𝐻(𝑖,𝑗) 𝐻𝑁 = ( ) donde: 𝑟∗𝑐 r es el numero de renglones y c es el numero de columnas.

Figura 4 ) Histograma Normalizado de (figura 2)

Para Finalizar Se realizará ahora el histograma normalizado de nuestro histograma acumulado y lo llamaremos histograma acumulado normalizado, es la misma función que un histograma normalizado gráficamente se obtendrán valores en la escala de 0 a 1 pero con un acomodo mejor del histograma esto se hace con la finalidad de obtener una mejor vista de la información del histograma.

Figura 5) Histograma Acumulado Normalizado

VI. DISCUSIÓN Cómo podemos observar la realización de un histograma es únicamente para la obtención de información de nuestra imagen a escala de grises cómo se mencionó anteriormente el histograma es una representación de la frecuencia e intensidad de pixeles qué hay dentro de una imagen. Se procede a normalizar dicho histograma esto para obtener una probabilidad estadística de la cantidad de píxeles que tiene una intensidad o mejor dicho la cantidad de pixeles a la que corresponde una intensidad. se realizó también el histograma acumulado este histograma nos muestra de una manera más ordenada nuestras intensidades ahora a normalizar un histograma acumulado se puede apreciar de manera más correcta y clara la información de nuestra imagen ya que si por ejemplo si quieres saber estadísticamente qué intensidad Se encuentra a la mitad oh qué intensidad de Píxel corresponde al 50 % solo es cuestión de buscar en nuestro histograma el valor que se aproxime o se encuentre en 0.5.

VII. CONCLUSIÓN La utilización de los histogramas generalmente se utiliza para obtener información de la imagen en nuestro caso para manipular y observar el número de frecuencias de nuestras intensidades pero también se vio que podemos realizar una ecualización de histograma para estadísticamente obtener los datos de manera más clara. Estos histogramas nos serán de mucha ayuda en los próximos temas sobre visión computacional. VIII. ANEXOS • Funcion Histograma %Funcion para calcular el histograma de una imagen en escala de grises. %Tiene como parámetros de entrada I que es una imagen de 8 bits a escala de %grises %Ejemplo de su uso: %I=imread("archivo"); %G=Escaladegrises1(I); %H=Histograma(I); %bar(H);

%--------Visión computacional---------% %--Edgar Cuitlahuac Camargo Suarez----% function [ H ] = Histograma ( I ) H(256)=0;%creación del vector donde se guardaran las frecuencias de intensidad [r,c]=size(I);%se toma el tamaño de la imagen de entrada for i=1:r for j=1:c H(I(i,j)+1)=H(I(i,j)+1)+1;% se posiciona en la posición que marca la intensidad de la imagen y se le agrega 1 ya que la posición esta relacionada con una intensidad anterior, posterior mente se dice que el valor que debería tomar esa posición será el valor actual que contiene mas 1 end end end • Función histograma acumulado %Funcion para calcular el histograma Acumulado de una imagen en escala de grises. %Tiene como parámetros de entrada I que es una imagen de 8 bits a escala de %grises %Ejemplo de su uso: %I=imread("archivo"); %G=Escaladegrises1(I); %H=HistogramaAcumulado(I); %bar(H); %----visión computacional--------% %--Edgar Cuitlahuac Camargo Suarez---% function [ HA ] = HistogramaAcumulado ( I ) H=Histograma(I);%Se calcula el histograma de la imagen HA(256)=0;%creación de vector donde se guardaran los valores del Histograma Acumulado HA(1)=H(1);%Siempre el valor de la posición 1 será igual a el valor del histograma en la posición 1 [rv,cv]=size(H); for ii=2:cv HA(ii)=(H(ii)+HA(ii-1));% se suma la posición actual del histograma mas la posición anterior de esta forma se va creando el histograma acumulado end • Funcion Histograma Normalizado %Funcion para calcular el histograma Normalizado de una imagen en escala de grises.

%Tiene como parámetros de entrada I que es una imagen de 8 bits a escala de %grises %Ejemplo de su uso: %I=imread("archivo"); %G=Escaladegrises1(I); %H=HistogramaNormalizado(I); %bar(H); %------Vision computacional--------% %--Edgar Cuitlahuac Camargo Suarez-----% function [ HN ] = HistogramaNormalizado ( I ) H=Histograma(I);%Se calcula el histograma de la imagen [r,c]=size(I); HN(256)=0; [rn,cn]=size(H); for i=1:cn HN(i)=(H(i)/(r*c));%Se divide cada intensidad de la imagen entre el nuero total de pixeles para obtener una normalización entre 0 y 1 esto para que tenga una representación de forma estadística. end end • Histograma Acumulado Normalizado %Funcion para calcular el histograma Acumulado Normalizado de una imagen en escala de grises. %Tiene como parámetros de entrada I que es una imagen de 8 bits a escala de %grises %Ejemplo de su uso: %I=imread("archivo"); %G=Escaladegrises1(I); %H=HistogramaNormalizado(I); %bar(H); %---visión computacional-----% %---Edgar Cuitlahuac Camargo Suarez--------% function [ HAN ] = HistogramaAcumNorma ( I ) H=Histograma(I);%Calculamos el Histograma de la Image con la funcion Histograma HA=HistogramaAcumulado(I);%Se calcula el Histograma Acumulado con la función Histograma Acumulado HAN(256)=0;%Creamos el vector donde guardaremos los valores de nuestro histograma [r,c]=size(I); [ran,can]=size(H); for i=1:can

HAN(i)=(HA(i)/(r*c));% se toman los valores del Histograma Acumulado y se dividen entre el numero de pixeles end end

IX. REFERENCIA [1] Mario I.Chacon M .”Procesamiento digital de imágenes” mexico trillas,2007(reimp2008) . [2] Daniel Saldivar. Marco Pérez “Procesamiento digital de imágenes con más latísimo link “ Alfa omega