Práctica1

9
UNIVERSIDAD DEL QUINDIO, INGENIERÍA ELECTRÓNICA. PROCESAMIENTO DIGITAL DE IMÁGENES. Resumen – En este trabajo se presenta la forma de cómo analizar una imagen (brillo, contraste, histograma, información, además realizar operaciones entre imágenes), mediante el software matlab ya que contiene una serie de comandos que hace más amena dicha caracterización; además encontrara el procedimiento detallado de como analizar una imagen (códigos) y finalmente vera una interfaz que le permite visualizar cada campo de la imagen deseado. Abstract – In this paper we present the way how to analyze an image (Brightness, Contrast, Histogram, information and operation between imagenes), using the matlab software because it contains a series of commands that such characterization becomes more enjoyable, plus find the detailed procedure of how to analyze an image (codes) and finally vera an interface that allows you to display each field of the desired image. Palabras clave –imagen, pixel, contraste, brillo, histograma, operaciones Keywords – image, pixel, contrast, brightness, histogram, operations. I. INTRODUCCIÓN El procesamiento digital de imágenes es el la combinación de técnicas que se aplican a las imágenes digitales con el objetivo de mejorar la calidad y facilitar la búsqueda de información, con el fin aprender acerca de las características de una imagen y la forma en cómo podemos modificarla hasta obtener un buen resultado, Basados en el programa Matlab y gracias a la gran cantidad de aplicaciones que posee como lo la interfaz gráfica guide que son herramientas que usaremos para este trabajo y se observara su comportamiento a través del histograma el cual es representación gráfica de los niveles de intensidad del color de la imagen con respecto al número de píxeles presentes en la imagen con cada intensidad de color y se realizaran una serie de operaciones y ajustes a las imágenes tales como escalado, recorte y rotaciones. Las funciones que se utilizaron en la plataforma de Matlab realizan las siguientes operaciones: Imrotate: Gira la imagen dándole un ángulo especifico. Imresize: ajusta la imagen al tamaño de la ventana donde se carga la imagen. Imcrop: recorta la imagen según elija el usuario. A continuación se mostrará el procedimiento realizado para obtener lo mencionado anteriormente. II. OBJETIVOS Generales: Llegar a una completa caracterización de una imagen mediante el software matlab ya sea en código (programación) o mediante comandos ya establecidos, haciendo uso de una interfaz para la presentación de resultados. Practica 1: Características de una Imagen Alejandro Cifuentes Aragón Cód. 1094933313. Cesar Ardila Rojas Cód. 1094931450. Procesamiento Digital de Imágenes. Programa de Ingeniería Electrónica, Facultad de Ingeniería, Universidad del Quindío - Colombia 1

Transcript of Práctica1

1

UNIVERSIDAD DEL QUINDIO, INGENIERA ELECTRNICA. PROCESAMIENTO DIGITAL DE IMGENES.

Practica 1: Caractersticas de una Imagen Alejandro Cifuentes Aragn Cd. 1094933313. Cesar Ardila Rojas Cd. 1094931450. Procesamiento Digital de Imgenes. Programa de Ingeniera Electrnica, Facultad de Ingeniera, Universidad del Quindo - Colombia

Resumen En este trabajo se presenta la forma de cmo analizar una imagen (brillo, contraste, histograma, informacin, adems realizar operaciones entre imgenes), mediante el software matlab ya que contiene una serie de comandos que hace ms amena dicha caracterizacin; adems encontrara el procedimiento detallado de como analizar una imagen (cdigos) y finalmente vera una interfaz que le permite visualizar cada campo de la imagen deseado. Abstract In this paper we present the way how to analyze an image (Brightness, Contrast, Histogram, information and operation between imagenes), using the matlab software because it contains a series of commands that such characterization becomes more enjoyable, plus find the detailed procedure of how to analyze an image (codes) and finally vera an interface that allows you to display each field of the desired image.

Palabras clave imagen, pixel, contraste, brillo, histograma, operaciones

Keywords image, pixel, contrast, brightness, histogram, operations.

INTRODUCCIN

Elprocesamiento digital de imgeneses el la combinacin de tcnicas que se aplican a las imgenes digitales con el objetivo de mejorar la calidad y facilitar la bsqueda de informacin, con el fin aprender acerca de las caractersticas de una imagen y la forma en cmo podemos modificarla hasta obtener un buen resultado, Basados en el programa Matlab y gracias a la gran cantidad de aplicaciones que posee como lo la interfaz grfica guide que son herramientas que usaremos para este trabajo y se observara su comportamiento a travs del histograma el cual es representacin grfica de los niveles de intensidad del color de la imagen con respecto al nmero de pxeles presentes en la imagen con cada intensidad de color y se realizaran una serie de operaciones y ajustes a las imgenes tales como escalado, recorte y rotaciones.Las funciones que se utilizaron en la plataforma de Matlab realizan las siguientes operaciones:Imrotate: Gira la imagen dndole un ngulo especifico.Imresize: ajusta la imagen al tamao de la ventana donde se carga la imagen.Imcrop: recorta la imagen segn elija el usuario.A continuacin se mostrar el procedimiento realizado para obtener lo mencionado anteriormente.

OBJETIVOSGenerales: Llegar a una completa caracterizacin de una imagen mediante el software matlab ya sea en cdigo (programacin) o mediante comandos ya establecidos, haciendo uso de una interfaz para la presentacin de resultados.

Especficos:

Hacer uso de la interfaz guide, para la presentacin de resultados. Realizar conversiones de imgenes de color a escala de grises y de pixeles en diferentes tamaos de bits. Revisar los diferentes tipos y formatos imgenes que existen e identificar en cuales se hace posible trabajar en Matlab. Analizar cmo realizar operaciones entre imgenes de una manera correcta.

MATERIALES

Software Matlab (command window, editor e interfaz). Imgenes en extensin .jpg. Computador porttil o de escritorio que soporte Matlab.

MARCO TERICO

Una imagen digital est compuesta de pxeles los cuales pueden definirse como pequeos puntos en la pantalla o imagen. Cada pxel es capaz de proporcionar informacin visual acerca de una pequea regin en particular de la imagen. A partir de esto, se puede considerar a una Imagen Digital, como un arreglo de instrucciones de cmo se encuentra coloreado cada pxel. En general se puede decir que una imagen de m por n si est compuesta de m pxeles en la direccin vertical y n pxeles en la direccin horizontal. El sistema de coordenadas empleado para la ubicacin de cada pxel de la imagen es como se muestra la figura

Figura.1 Sistema de coordenadas en la ubicacin de cada pxel.

Las imgenes digitales en MATLAB se representan por medio de un arreglo de nmeros reales o complejos. Dicho arreglo puede ser bidimensional o tridimensional, dependiendo del tipo de imagen de que se trate.

Los formatos de imagen soportados por matlab son:

Figura.2 Formatos que soportados Matlab

La Profundidad de Bits viene determinada por la cantidad de bits utilizados para definir cada pxel. Mientras mayor sea la profundidad de bits, mayor ser la cantidad de tonos (escala de grises o color) que se pueden representar. Las imgenes digitales se pueden producir en blanco y negro (en forma bitonal), a escala de grises o a color.

Tipos de imgenesEl tipo de dato matriz, que contendr una imagen puede ser de varios tipos (segn el tipo de dato de cada pixel):

double Doble precisin, nmeros en punto flotante que varan en un rango aproximado de -10308 a 10308 (8 bytes por elemento). uint8 Enteros de 8 bits en el rango de [0,255] (1 byte por elemento) uint16 Enteros de 16 bits en el rango de [0, 65535] (2 bytes por elemento) uint32 Enteros de 32 bits en el rango de [0, 4294967295] (4 bytes por elemento) int8 Enteros de 8 bits en el rango de [-128, 127] (1 byte por elemento) int16 Enteros de 16 bits en el rango de [- 32768, 32767] (2 bytes por elemento) int32 Enteros de 32 bits en el rango de [- 2147483648,2147483647] (4 bytes por elemento) logical Los valores son 0 1 (1 bit por elemento)

HISTOGRAMA

El histograma es unarepresentacin grficade una variable en forma de barras. La superficie de cada una de las barras mostradas es proporcional a la frecuencia de los valores representados. En el eje vertical se representan lasfrecuencias, y en el eje horizontal losvaloresde las variables, de modo que ser ms alta, o tendr ms superficie, aquel valor que ms se repite.

Figura 3. Representacin de un histogramaPROCEDIMIENTO

Para la realizacin de dicha prctica de laboratorio lo primero que se realizo fue la obtencin de todas las imgenes a las que se le iban a realizar el anlisis, ya sea de la librera de matlab o de otra parte solo que almacenadas en la carpeta que se crea por defecto al instalar matlab, luego el primer proceso en realizarse fue la lectura de las imgenes. Las imgenes con las que se trabaj en esta prctica fueron:

Fig 1. Aurora.jpg

Fig 2. atardecer.jpg

Fig 3. amor.jpgLa siguiente fase en elaborarse fue calcular el brillo y el contraste de la imagen mediante implementacin de cdigo solo que para estas dos caractersticas se tiene frmulas matemticas que permiten llegar a total exactitud, siendo estas:

Para lo cual se realiz el siguiente cdigo en forma de funcin:function [B C I]= caract(a,p)[n m]=size(a);b=0;%brillofor i=1:n for j=1:m b=b+double(a(i,j)); endendB=b/(n*m);%contrastec=0;for i=1:n for j=1:m c=c+(double(a(i,j))-B)^2; endendC=sqrt(c/(n*m)); %informacionif p==2 I=imfinfo('aurora.jpg');endif p==3 I=imfinfo('cocora.jpg');endif p==4 I=imfinfo('mariposas.jpg');endend

%BrilloComo lo que se tienen son sumatorias que van recorriendo la imagen, se inicializa un contador en cero que ser el resultado de las sumatorias, luego se halla el tamao de las imgenes en filas por columnas ya que hasta ah es donde van a hallar el brillo

En la siguiente parte del cdigo lo que se realiza son dos for anidados para que recorra la imagen y dentro de tal recorrido va incrementando el contador antes mencionado y le va sumando los puntos que va calculando en este caso se utiliza el doubl ya que la imagen es de 8bits y tiene buena precisin.

Finalmente para ya completar la ecuacin se toma el resultado final b y lo divide en las dimensiones halladas de la imagen, obteniendo con esto el brillo.

%ContrasteLuego para la implementacin de la ecuacin de contraste se observa que tienen mucha similitud lo nico que cambia es que se le resta el brillo y se le saca la raz cuadrada, por tanto en las sumatorias solo se pone a restar el brillo hallado anteriormente y elevado todo al cuadrado.

Despus de haber hallado de nuevo las sumatorias ya con los cambios, se le saca la raz cuadrada a la sumatoria hallada sobre la multiplicacin de sus dimensiones. Ya para culminar dicho anlisis de las imgenes la ltima fase fue en la elaboracin de un cdigo que realizara el histograma de cada una de ellas suministrando informacin de si la imagen se puede decir si es clara u oscura.

Igualmente se lee la imagen a la cual se le har el anlisis,

a=imread('aurora.jpg');

Como en este caso se presenta que es una imagen a color se procede a transformarla a escala de grises para poder realizar el histograma usando el siguiente comando:

axes(handles.im1);imshow(a)axes(handles.im2);imhist(rgb2gray(a))%InformacinPara el punto de la informacion de la imagen se implement el siguiente cdigo para las tres imgenes.I=imfinfo('aurora.jpg');

%recortar

Para este punto se implement el codigo:

A=imcrop(A)El cual realizo la funcin especifica para dicho punto .

%escalarEn esta parte del programa se implement la funcin a continuacin:es1=handles.esc;x= imresize(es, es1,'nearest');

Donde se recibe un valor numrico de un Edit. Text y ese valor es el factor de escalado para la imagen.Ademas se recibe el valor de un popup men donde se elige si el escalado es con interpolacin del vecino ms cercano, bilinear y bicubica.

%rotarPara esta implementacin se us la funcinNi=handles.imag;if r==2 b= imrotate(Ni,45); axes(handles.im4); imshow(b)endif r==3 b= imrotate(Ni,90); axes(handles.im4); imshow(b)endif r==4 b= imrotate(Ni,135); axes(handles.im4); imshow(b)endif r==5 b= imrotate(Ni,180); axes(handles.im4); imshow(b)endif r==6 b= imrotate(Ni,225); axes(handles.im4); imshow(b)endif r==7 b= imrotate(Ni,270); axes(handles.im4); imshow(b)endif r==8 b= imrotate(Ni,315); axes(handles.im4); imshow(b)end

Donde dependiendo del ngulo de rotacin elegido por el usuario se rotaba la imagen (45, 90, 135, 180, 225, 270, 315) grados.%operaciones Para realizar operaciones tales como suma, multiplicacin, divisin o resta por una constante, se implemento el cdigo de la siguiente manera: k=handles.ctn;h1=handles.imag;h=rgb2gray(h1);[n m]=size(k);%s=zeros(n,m);if t==2for i=1:n for j=1:m h(i,j)=double(h(i,j))+k; endend endif t==3for i=1:n for j=1:m h(i,j)=double(h(i,j))-k; endendendif t==3 for i=1:n for j=1:m h(i,j)=double(h(i,j))*k; endend endif t==4 for i=1:n for j=1:m h(i,j)=double(h(i,j))/k; endend endaxes(handles.im6);imshow(h)axes(handles.im7)imhist(h)

Donde dependiendo de la operacin seleccionada por el usuario se ingresa a la opcin 1, 2, 3 o 4, donde se toma el valor de un edit text el cual impone el valor de la constante para realizar la operacin, seguido de esto se realiza el histograma de la imagen resultante para hacerle su posterior anlisis.

%operaciones boleanasPara la implementacin de las operaciones boleanas primero se pasaron las imgenes a binarias para poder realizar las operaciones, implementando el siguiente cdigo: b=im2bw(rgb2gray(b1));c=im2bw(rgb2gray(a1));if op==2 ans= b & c;endif op==3 ans= b | c;endif op==4 ans= xor (b , c);endaxes(handles.im9);imshow(ans) Finalmente para la presentacin de resultados se realiz una interfaz grfica la cual solo consiste en aplicar diferentes botones de accin que me permitirn ingresar los cdigos antes realizados, solo que teniendo en cuenta como es el formato en el cual se deber retornar para que la muestre en los campos de la interfaz, para los cuales el guide realizado fue:

Figura 4. Diagrama final de la interfaz realizada

Para los cuales mediante los callbacks de los diferentes tipos de botones y textos se implementaron cada uno de los programas antes mencionados solo que a la hora de retornar dichos resultados se arreglaban al formato especificado, y mediante el popup men fue como un case que permita la realizacin de cada proceso ante una imagen elegida; al simular dicha interfaz se obtuvieron los siguientes resultados encontrados en la siguiente seccin.ANLISIS Y RESULTADOSA continuacin se muestras seis imgenes las cuales muestran dentro de cada una la imagen original, el histograma, el nivel de brillo y contraste, el ancho y la altura de cada una, la imagen que quiere recortar, la imagen rotada, escala, la imagen con operacin aritmtica, su respectivo histograma, se ilustra la imagen que se quiere combinar con la primera selecciona y por ultima la combinacin de estas dos. Siguiente de esto, se muestran las figuras con diferentes parmetros y diferentes combinaciones (fig. 5-9), las imgenes que se analizaron presentan formato (jpg):

Figura 5. Anlisis completo para la imagen aurora.jpg y la imagen atardecer.jpg

Figura 6. Anlisis completo para la imagen atardecer.jpg y la imagen aurora.jpg

Figura 7. Anlisis completo para la imagen amor.jpg y la imagen atardecer.jpg

Figura 8. Anlisis completo para la imagen aurora.jpg y la imagen amor.jpg

Figura 9. Anlisis completo para la imagen atardecer.jpg y la imagen amor.jpg

De acuerdo al histograma de cada foto se puede caracterizar una imagen por su compostura, es decir, si su escala de grises se encuentra ms hacia la izquierda tiende a ser ms oscura la imagen, como la podemos observar en las figuras (5 y 6) que el histograma que se muestra en la parte superior de cada figura representa su escala de grises para las imgenes de aurora.jpg (fig. 5) y atardecer.jpg (fig. 6). Para la imagen de amor.jpg su histograma se encuentra distribuido de forma diferente en donde sus picos ms altos se encuentran al lmite de la tonalidad gris y al lmite de la tonalidad blanca; a partir de estos se puede calcular tanto su brillo como su contraste.

Al realizar operaciones aritmticas, ya sea, sumas, multiplicaciones, restas o divisiones entre constantes, estas hacen que el histograma cambie, ya que al suma una constante a la imagen esta va a tender hacia el lado derecho de la escala, es decir q su nivel de blancura o si es la resta ocurrir lo contrario se tornar ms oscura. Por otro la multiplicacin hace q los pixeles q estn en rangos bajos se incremente mas no su posicin, es decir su nitidez aumenta, pero lo contrario ocurre con la divisin.

En cuanto a las operaciones aritmticas ya es dependiendo de su composicin y tambin del tipo de imgenes que se quieren combinar, dentro de cada figura el ultimo grafico que se presenta son las operaciones booleanas ya pueden ser and, or o xor dependiendo de los parmetros que se hayan elegido cambiara cada una de ellas. En la fig. 5 utilizamos la operacin and entre las dos imgenes, podemos observar que al combinarlas la imagen torna a ser ms oscura, para la fig. 6 se utiliz la operacin or donde la grfica tiene un poco ms de nitidez y de contraste, poco brillo, en cuanto a la grfica anterior. En la figura 7 se utiliz la xor esta presenta mejor brillo poca definicin con respecto a las anteriores, ya depende del usuario necesita utilizar de acuerdo a lo que este requiera.

En las figuras tambin se manejaron diferentes tipos de interpolacin, la cuales son vecino ms cercano, bilineal y bicubica, pero solo para el escalado, para rotar la imagen solo se tom en cuanto al vecino ms cercano. De acuerdo a cada uno de estos diferentes escalados para interpolar se puede obtener ya sea una figura ms definida o no. El recorte se hizo de forma interactiva, es decir el usuario por medio del cursor puede seleccionar el cuadrado o rectngulo que quiere recortar. CONCLUSIONES

Por medio de los histogramas se puede detallar que tan clara o tan oscura puede ser una imagen dependiendo a la distribucin del espectro, si su espectro se encuentra en la margen izquierda tendera a ser oscura, y si de lo contrario se encuentra en la parte derecha tendera ser ms clara. Al realizar las diferentes operaciones, ya sean aritmticas o booleanas se debe tener en cuenta los niveles de saturacin, para que la imagen no sobrepase estos lmites y se dae, ya que se tornara muy oscura o muy clara en las cuales no se observara nada de la imagen. Gracias a la herramienta matlab se pueden realizar anlisis y modificaciones importantes a las imgenes, siendo una herramienta de gran ayuda para este curso de procesamiento digital de imgenes Sea cual sea la operacin que se realice entre imgenes se aprecia un cambio notorio en el histograma de las imgenes, ya que puede ocurrir un ensanchamiento, reduccin o ampliacin de la distribucin del histograma resultante en un factor x para las operaciones globales o una relacin de pixel a pixel. Gracias a los histogramas podemos observar si una operacin aritmtica est bien realizada ya que en el histograma se puede analizar cmo se presenta un corrimiento. Con la multiplicacin entre imgenes podemos apreciar como el espectro de la imagen se ensancha. Con la suma o resta se puede apreciar como el histograma solo se mueve a la derecha o izquierda sin presentar ninguna otra modificacin.

REFERENCIAS BIBLIOGRFICAS

[1]. Disponible en la pgina web: http://es.wikipedia.org/wiki/Procesamiento_digital_de_im%C3%A1genes Fecha de la consulta: 9 de marzo de 2014.[2]. Disponible en la pgina web: http://bibliotecadigital.ilce.edu.mx/sites/ciencia/volumen2/ciencia3/084/htm/sec_9.htm Fecha de la consulta: 9 de marzo de 2014.[3]. Disponible en la pgina web:http://www.dspace.espol.edu.ec/bitstream/123456789/10740/14/Manejo%20basico%20de%20imagenes_matlab.pdf. Fecha de consulta: 9 de marzo de 2014.[4]. Disponible en la pgina web: http://www.dspace.espol.edu.ec/bitstream/123456789/10740/14/Manejo%20basico%20de%20imagenes_matlab.pdf. Fecha de consulta 9 de marzo de 2014.[5]. Disponible en la pgina web:http://www4.ujaen.es/~satorres/practicas/practica1.pdf. Fecha de consulta 9 de marzo de 2014.[6]. Disponible en la pgina web:http://www.santalices.net/cuadernos/histograma/histograma.htm 9 de marzo de 2014.