Estás en:   ArielOrtiz.com > Programación avanzada > Proyecto final: Combinación de imágenes

Proyecto final: Combinación de imágenes

Objetivos

Durante esta actividad, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción

Esta actividad puede ser elaborada de manera individual o en parejas.

Escribe un programa en gcc para Linux que permita realizar la combinación de dos imágenes BMP de 24-bits por pixel, usando el algoritmo de disolución alfa.

Para ello, primeramente deberás implementar una biblioteca de enlace dinámico (shared object) que permita manipular en memoria imágenes BMP de 224 colores.

Posteriormente, deberás desarrollar dos versiones diferentes del algoritmo de combinación de imágenes y medir sus respectivos tiempos de ejecución:

  1. Usando sólo C99 estándar.
  2. Usando la biblioteca OpenMP.

Las dos versiones deben estar disponibles desde el mismo código fuente, gracias al uso de directivas condicionales del preprocesador de C. Al momento de correr el Makefile, se debe poder indicar qué versión particular de ejecutable se desea generar, tal como se realizó en clase.

El programa ejecutable debe correr desde la línea de comando. Debe recibir como argumentos el factor de intensidad (un entero entre 0 y 255), el nombre de los dos archivos de entrada (las imágenes de frente y fondo) y el nombre del archivo de salida (imagen combinada):

./combina <intensidad> <entrada1.bmp> <entrada2.bmp> <salida.bmp>

Por ejemplo, suponiendo que se tienen las siguientes dos imágenes (disponibles en este archivo: bitmaps.tar.gz):

chavas.bmp
flor.bmp

Si el programa se corre así:

./combina 155 chavas.bmp flor.bmp salida1.bmp

El resultado sería la siguiente imagen:

salida1.bmp

Como segundo ejemplo, si el programa se corre así:

./combina 77 chavas.bmp flor.bmp salida2.bmp

El resultado ahora sería:

salida2.bmp

Si se detecta algún error, el programa debe terminar con un mensaje descriptivo del problema. Los posibles errores incluyen:

Información adicional

A continuación se describe el algoritmo a implementar.

Alpha Dissolution Image Combination Algorithm


La siguiente tabla muestra la estructura de un archivo BMP de 24 bits por pixel (adaptada del documento Graphics File Formats):

Offset Tipo Descripción
0 char[2] Número mágico: los caracteres "BM".
2 uint32_t Tamaño del archivo en bytes.
18 uint32_t Ancho de la imagen en pixeles.
22 uint32_t Alto de la imagen en pixeles.
28 uint16_t Número de bits por cada pixel. Debe ser 24.
30 uint32_t Compresión. Debe ser 0 para indicar que no hay compresión alguna.
54 uint8_t[N] El arreglo con los pixeles del bitmap, donde N = Ancho * Alto * 3.

¿Qué se debe entregar?

Elabora un reporte de por lo menos 200 palabras donde describas los resultados obtenidos de las mediciones y las conclusiones a las que llegaste. Incluye también una gráfica (de barras, de líneas, etc.) en donde se puedan observar claramente las diferencias en las mediciones y las mejoras (speedup) obtenidas. El reporte se debe presentar como un documento en formato PDF llamado reporte.pdf. Asegúrate de incluir tu nombre y matrícula.

Coloca en un archivo llamado combinacion.zip el directorio que contenga todos los archivos fuente (inclyendo archivos Makefile) de tu proyecto así como el archivo report.pdf.

NOTA: Cada archivo fuente de C debe incluir en la parte superior un comentario con el nombre y matrícula de los autores. Por ejemplo:

/*
 +------------------------------------------
 | Nombre:    María Expropiación Petronila 
 | Matrícula: 1166666
 | Actividad: Proyecto final: Combinación de imágenes.
 | Fecha:     29 de noviembre, 2010.
 +------------------------------------------
 */

Usando Sistema de Entrega de Tareas Automatizado, entrega el archivo combinacion.zip. No se aceptan proyectos por ningún otro medio.

Fecha límite: Lunes, 29 de noviembre.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

100 La actividad cumple con todos los requerimientos.
-10 No se incluyó en comentario los datos de los autores.
10 El programa fuente produce errores al momento de compilarlo.
50-90 El programa tiene algunos errores a tiempo de ejecución.
DA La solución es un plagio.
© 1996-2010 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
Desarrollado en Django | Licencia de Creative Commons | XHTML válido | CSS válido