Infografia, Práctica 1: Seam Carving - Javi Agenjo at UPF

Infografia, Práctica 1: Seam Carving

Última actualización 22/09/2010

Introducción

Esta práctica consiste en la implementación del algoritmo de Seam Carving para redimensionado de imagenes.

Shai Avidan, Ariel Shamir

Seam Carving for Content-Aware Image Resizing
ACM Transactions on Graphics, Volume 26, Number 3,
SIGGRAPH 2007

El algoritmo permite redimensionar imagenes sin que se aprecian algunos de los problemas habituales como cambios de proporcion o interpolaciones.

Material

Desarrollo

Teneis que usar el framework que os pasamos. Contiene una clase Color util para operar con colores, y una clase Image que os permite gestionar las imagenes (acceder a un pixel, cargar un TGA, guardar un TGA).

Teneis que usar GCC, si veis que no lo teneis instalado, escribid el siguiente comando desde vuestro terminal:

upf-software-install-grafic gcc
upf-software-install-grafic gcc-c++

Una vez instalada descomprimid el framework (unzip infografia2013.zip) y dentro encontrareis el codigo a utilizar

Ahora podemos compilar el código ejemplo:

g++ src/*.cpp -o app -std=c++0x

Se habrá creado un binario llamado prueba. Para ejecutarlo:

./app sunset.tga sunset2.tga

Las imágenes las podéis ver con el comando display si estais en linux y teneis instalado ImageMagick:

display sunset.tga

Si estais en windows podeis usar cualquier programa de imagenes.

Experimentos

Probar con diferentes tipos de imágenes y con varios juegos de parámetros, buscando evaluar la eficacia y los problemas del algoritmo.

Entrega

La clase de la semana del 6 al 10 de mayo antes de las 9 de la mañana.

No se aceptan entregas tardías, no se hacen excepciones.

Se entrega desde el Aula Global, si teneis algun problema enviadmela por mail pero tratad primero de entregarla por el Aula Global.

Qué se entrega:

  • Informe: introducción, el algoritmo, explicación del código, experimentos, conclusiones. En formatos html, ps, pdf o rtf.
  • Código C++, comentado, listo para compilar (con su Makefile). Formato: ASCII.
  • Las imágenes (cualquier formato) y parámetros (ascii) usados en los experimentos.
  • Se deben poder reproducir los experimentos con todos los materiales entregados, en cualquier PC de aulas, en Linux.
  • En caso de copia (entre equipos, o de otras fuentes) todos los integrantes de los equipos involucrados suspenderán inmediatamente la asignatura, y el Departament abrirá un expediente solicitando la expulsión temporal de dichos estudiantes.

Defensa

Duración: 10 minutos por equipo, con preguntas individuales. Todos los integrantes deben estar plenamente familiarizados con el trabajo de su equipo. Esta clase es de asistencia obligatoria. No hay que traer Slides, será una presentación oral delante del código.

Imagenes test

Imagenes

Usad las siguientes imagenes:

Consejos

  • Leer el artículo con atención.
  • Volver a leer el artículo con atención.
  • Invertir un buen tiempo en planear el código, no ponerse a programar directamente.
  • Hacer código modular: desglosar la tarea global en partes, hacer funciones para estas partes, llamar a las funciones desde un programa principal corto.
  • Estudiar el programa C++ de ejemplo, ver qué operaciones con imágenes hay definidas y cómo se acceden y modifican los valores de los pixels.
  • Mientras se escribe el código, y para hacer ‘debugging’, hacer pruebas con imágenes pequeñas y sencillas.
  • Probar primero con imágenes en escala de grises.
  • Implementar primero la reducción de fotos y si da tiempo probad con el ampliado de fotos.