CImg

CImg

La librería CImg se puede pillar de http://cimg.sourceforge.net/ y, efectivamente, incluye todo el código usado en las demos de la página http://www-sop.inria.fr/odyssee/research/tschumperle-deriche:02d/appliu/ .

Una curiosidad de la libreria (C++) es que se reduce a un único .h, con lo que es totalmente multiplataforma. Yo la he probado en Linux/gcc, Windows/gcc y Windows/MSVC 6.

Instrucciones

Compilar el ejemplo "pde_TschumperleDeriche2D.exe" y ejecutarlo desde linea de comandos.

Para el ejemplo del loro:

pde_TschumperleDeriche2D.exe -i img/parrot_original.ppm -m img/parrot_mask.pgm

Para el ejemplo del zoom:

./pde_TschumperleDeriche2D.exe -iter 3 -i img/lena.pgm -zoom 3 -o img/lena3_pde.pgm

Resultados

Original:

Zoom usando ImageMagick (bicúbico estándar):

Zoom usando pde_TschumperleDeriche2D.exe

Rendimiento

El ejemplo del loro es para dejarlo currando toda la noche.

Tiempos para 100 iteraciones (lleva una hora, va por 13000 y aún se ven casi todos los barrotes):

"ra" (PIV 2.8 GHz, Linux, O3, X11 local)
real    0m24.71s

"ra" (PIV 2.8 GHz, Linux, X11 remoto en barduck)
real    1m50.58s
user    1m7.31s
sys     0m2.32s

"barduck" (PIV 2.8 GHz, Windows XP, cygwin)
real    3m1.399s
user    2m32.592s
sys     0m2.843s

"barduck" (PIV 2.8 GHz, Windows XP, O3, cygwin)
real    1m41.20s

"barduck" (PIV 2.8 GHz, Windows XP, MSVC 6)
real    0m40.736s
user    0m0.015s
sys     0m0.031s

No asustarse, el zoom le cuesta bastante menos, y con menos de 10 iteraciones ya da resultados buenos

Usabilidad

Parece claro que si se quiere trabajar bajo Windows, es mejor utilizar MSVC por tema de rendimiento. Así pues es necesario instalar librerías adicionales para MSVC.

Es recomendable instalar el paquete completo de ImageMagick, ya que incluye librerías para casi todos los formatos conocidos.

Luego CImg puede llamar a ImageMagick o bien, para los formatos jpeg y PNG usar las librerías nativas (que se instalan generalmente con el propio paquete de ImageMagick).

Nota: Si se tiene el codigo fuente en el directorio personal de "ra" (lo recomendado) MSVC puede dar "internal errors" por causas desconocidas. La solución es o copiar el codigo al disco local y volver a volcarlo al terminar de trabajar, o bien desactivar la opcion de "precompiled headers".


Last Modified: November 25, 2005