Realidad Aumentada
Tarea 1: Procesamiento de imagenes
MATERIA | REALIDAD AUMENTADA |
---|---|
ALUMNO | ORTIGOSA FLORES JOSE LUIS |
FECHA ENTREGA | 17-SEP-2015 |
Actividades
ProgramasRealización de Patrones
Descripción de la actividad
Realizar patrones cuadrados a partir de triángulos
rectángulos del tamaño de hojas carta.
Los patrones Fueron realizados con el programa xFig
.
Se crearon 5 patrones diferentes que son los siguientes:
|
|
|
|
|
Cada uno de los patrones se imprimio en hojas tamaño carta.
Tomar fotos
Descripción de la actividad
Tomar fotos a los patrones impresos que previamente fueron
colocados sobre una superficie plana, que en este caso fueron
pegadas en una pared.
Se tomaron fotos a una resolución de 1600 por 1200 pixeles
con un celular Nokia Luimia 810 (con una cámara de 8Mpx)
a una tamaño de 3Mpx para lograr la resolución deseada.
A cada patron se le tomaron 5 fotos, haciendo un total de 25 fotos.
foto 1 | foto 2 | foto 3 | foto 4 | foto 5 |
foto 6 | foto 7 | foto 8 | foto 9 | foto 10 |
foto 11 | foto 12 | foto 13 | foto 14 | foto 15 |
foto 16 | foto 17 | foto 18 | foto 19 | foto 20 |
foto 21 | foto 22 | foto 23 | foto 24 | foto 25 |
Convertir fotos a tono de grises
Descripción de la actividad
Usando el comando convert
convertir
las fotos de color *.jpg a tono de grises con extención
*.pgm
convert foto.jpg -depth 8 foto.pgm
Para convertir las 25 fotos a tonos de grises se hizo un pequeño script de bash para convertir todas las fotos
foto 1 | foto 2 | foto 3 | foto 4 | foto 5 |
foto 6 | foto 7 | foto 8 | foto 9 | foto 10 |
foto 11 | foto 12 | foto 13 | foto 14 | foto 15 |
foto 16 | foto 17 | foto 18 | foto 19 | foto 20 |
foto 21 | foto 22 | foto 23 | foto 24 | foto 25 |
Reducción de tamaño de las fotos
Descripción de la actividad
Crear un programa en C que use la biblioteca SCimagen
para reducir el tamaño de las fotos a 4 veces el tamaño original.
Se creo un programa con el lenguaje C para reducir el tamaño de una imagen *.pgm a la mitad. El programa se aplico dos veces a cada imagen. La idea general del programa fue tomar áreas de grupos de 4 pixeles y sacarles un promedio para que esté número fuera el valor que representaría a un pixel en la imagen reducida que el programa generaría. Lo anterior se puede ver en el fragmento de codigo siguiente:
Programa: reduccionImagen.tar
Para compilar el programa se requiere modificar la variable PATH_SCIMAGEN en el archivo makefile, para que apunte al directorio en donde se localizan los archivos matrix.h, pnm.h además de sus respectivos *.c.
Debido a que el programacreado sólo puede reducir por la mitar una imagen a la vez se crea un script para bash, para que el programa realice la reducción por dos veces.
Al final de la reducción las imagenes quedan una resolucion de 300x400 pixeles
foto 1 | foto 2 | foto 3 | foto 4 | foto 5 |
foto 6 | foto 7 | foto 8 | foto 9 | foto 10 |
foto 11 | foto 12 | foto 13 | foto 14 | foto 15 |
foto 16 | foto 17 | foto 18 | foto 19 | foto 20 |
foto 21 | foto 22 | foto 23 | foto 24 | foto 25 |
Histograma
Descripción de la actividad
Generar un histograma para cada imagen a escala de grises reducida para lo que se
requiere crear un programa en C que genere un archivo con los datos
necesario para funcionar como entrada para el programa gnuplot
de tal manera que se genere un histograma pora cada imagen.
Programa
El programa que se creó se encarga de recibir una imagen en escala de grises reducida, y se encarga de generar un archivo *.txt de salida con dos columnas de datos separadas por tabuladores, la primer columnas representan las clases y la segunda la frecuencia.
Para generar un histograma se requiere de una tabla de frecuencias
la tabla de frecuencias tiene dos columnas importantes, la columna clases
y la columna frecuancias. Que en este caso son los arreglos c y fx respectivamente.
Para calcular las clases primero debemos de usar la típica fórmula para
conocer el número de clases
Después de llenar la columna con las clases se procede a calcular la cantidad de elementos que cae en cada clase, para lo que se requiere visitar cada pixel de la imagen.
Al finalizar el programa crea un archivo de texto con las dos columnas de datos separadas por tabuladores.
Programa: histograma.tar
Generación de histogramas
Para generar la gráfica de los datos requerimos pasarle esos datos a gnuplot para lo cual se creo el siguiente script para gnuplot.
El escript espera encontrar dos paramentros uno llamado inputData y el otro outputGraph que son el nombre del archivo con los datos numericos para generar el histograma y el otro es el nombre de la imagen *.png que se generara como salida.
Finalmente para unir las salidas de ambos programas, tanto el que genera las tablas de frecuencia como el script que genera el gráfico, se requere de otro script en bash.
Como se puede ver en el script, esté genera los archivos con las frecuencias
así como los graficos para cada una de las imagenes.
En la siguiente tabla se muestran los histogramas y las tablas de frecuencias
de cada una de las 25 imagenes.
histo1 | histo2 | histo3 | histo4 | histo5 |
histo6 | histo7 | histo8 | histo9 | histo10 |
histo11 | histo12 | histo13 | histo14 | histo15 |
histo16 | histo17 | histo18 | histo19 | histo20 |
histo21 | histo22 | histo23 | histo24 | histo25 |
Umbralización global de imagenes
La función de umbralización es la siguiente:
Basado en los histogramas se puede especificar el valor de u=60, debido a que es el lugar en el que se separan aproximadamente las dos mayorias de valores.
Se creó un pragrama para convertir las imagenes reducidas y a escala de grises a imagenes umbralizadas.
Programa: umbralizador.tar
De lo importante de la función de arriba, esta en las
lineas 65 a 69, que es en donde se especifica la función
de umbralizado.
A diferencia de la función matemática aqui usamos 255 en lugar de 1
debido a que en 255 significa blanco.
Para converitr todas las imagenes reducidas y a escala de grises a una imagen en blanco y negro se usó el siguiente script de bash.
El escript recorre todas laas imagens que estan en el directorio reducidas las transforma con con el programa y las imagenes en blanco y negro son almacenadas en un directorio llamado umbralizadas.
img 1 | img 2 | img 3 | img 4 | img 5 |
img 6 | img 7 | img 8 | img 9 | img 10 |
img 11 | img 12 | img 13 | img 14 | img 15 |
img 16 | img 17 | img 18 | img 19 | img 20 |
img 21 | img 22 | img 23 | img 24 | img 25 |
Programas
reduccionImagen.tarhistograma.tar
umbralizador.tar