Cuaderno de Campo

Apuntes, Ideas y Observaciones

Metapixel

8 de Noviembre, 2006

Metapixel es un fantastico programa para Linux con el que generar esas fotomosaicos que seguro todos habeis visto, compuestas a partir de varios cientos ó miles de miniaturas de otras fotografias.

El programa funciona via consola, y para instalarlo y ejecutarlo solo necesitais tener instalado el compilador de C y el interprete de Perl (presente en todas las distribuciones Linux), asi como las librerias libjpeg/libpng.
Aqui os dejo un ejemplo de lo que se puede conseguir y una breve explicación del funcionamiento. (No perdais ojo a la sandalia que aparece en el centro del video.)



Instalación

Descarga y descomprime el archivo TAR. Abre una consola en la carpeta recien creada y compila e instala como root:make && make install

Ya lo tienes instalado.

Conceptos básicos

Metapixel se compone básicamente de dos aplicaciones:
metapixel, el encargado de generar los mosaicos propiamente dichos.
metapixel-prepare, el encargado de generar la librería que surte de imágenes a metapixel, y que por lo tanto debe ser ejecutado en primer lugar.

Como es habitual en consola el formato de ejecución de ambos programas es:

[EJECUTABLE] [OPCIONES] [FICHERO-ENTRADA] [FICHERO-SALIDA]

[OPCIONES] pueden ser pasadas directamente desde la consola cada vez que se ejecuta el programa ó bien establecidas y guardadas en un fichero llamado .metapixelrc situado en tu $HOME. Lo normal es que aquellas opciones comunes y que se repiten en cada llamada las guardemos en el fichero .metapixelrc, de esta manera cada vez que queramos generar un mosaico basta con escribir metapixel –tipo-mosaico /imagen-plantilla.jpg /mosaico-resultado.png

Opciones

Estos son algunos de los parametros que habitualmente deberías en tu fichero de configuración para evitar tener que escribirlos cada vez que ejecutas el programa desde la consola. Hay algunos más, estos son solo los más elementales.
Puesto que la existencia de este fichero es opcional, durante la instalación de Metapixel no se instala. Para crearlo abre tu editor de texto favorito, escribe las opciones que te interese y guardalo en tu carpeta raiz llamandolo .metapixelrc (ojo al punto delante del nombre que indica que el fichero está oculto)
Los parentesis de la opcion deben ser incluidos.

( prepare-directory “directorio” ) , ejem: (prepare-directory “/home/galeria/Mis imagenes”)
Indica el directorio que usará metapixel-prepare para leer y generar la librería que posteriormente será usada por metapixel.
Si queremos que la busqueda de imágene sea recursiva (en el directorio indicado y directorios interiores) en el momento de lanzar metapixel-prepare añadiremos la opción -r
Esta opcion es usada por metapixel-prepare e ignorada por metapixel

(library-directory “directorio” ), ejem: ( library-directory “/home/galeria/Mis imagenes preparadas”)
Una vez lanzado metapixel-prepare el programa escanea una a una todas la imágenes que encuentre
(JPG / PNG) en “prepare-directory” y hace una copia escalada en este directorio. Al mismo tiempo genera en este directorio un archivo llamado “tables.mxt” que contiene información acerca de cada una de las imágenes.
Este es el directorio al que se dirige metapixels para generar los mosaicos. No es creado de forma automática y sino se encuentra el programa devuelve un error.

(prepare-dimensions ancho alto) ,ejem: (prepare-dimensions 256 256)
Indica a que tamaño se van ha hacer las copias en library-directory de las imagenes encontradas en prepare-directory.
Estas imágenes deben ser lo más pequeñas posibles (para ahorrar espacio) pero siempre más grandes que las que finalmente usemos en nuestro mosaico.

(small-image-dimensions ancho alto), ejem: (small-image-dimensions 64 64)
Indica cual es el tamaño de cada una de las imágenes que compondrá el mosaico, y debería ser más pequeño que el tamaño dado en la opcion prepare-dimensions

(search-method option), ejem: (search-method global)
Existen dos métodos para encontrar la imagen que mejor se adapta a cada posición.
global: Mas preciso. Mas lento. Mas memoria, y sobre todo: requiere que tu librería de imagenes preparadas contenga tantas imágenes como las necesarias para componer el mosaico, independientemente de que se vayan ó no ha utilizar, de lo contrario emite un error.
Si deseas hacer un mosaico de una imagen de 3000×2000 pixel a base de imágenes de 64×64 tu librería debería tener= (3000/64) x (2000/64) = 1457 imágenes como mínimo.
Para evitar el error simplemente aumenta el valor de small-image-dimensions ó incluye más imagenes en la preparación de la librería.

local, mas rapido, más impreciso, mas repetición. Es el método ideal si se cuentan con pocas imágenes y/o nos dá igual que estas se repitan con demasiada frecuencia.

(minimum-classic-distance distancia), ejem: (minimum-classic-distance 20)
Indica la distancia minima que debe existir antes de volver a utilizar la misma imagen.
Este parámetro puede dar lugar a engaño, ya que se cuentan las fotos utilizadas entre una miniatura y la siguiente, pero contadas en horizontal, por lo que es facil que coincidan la misma foto en dos filas contiguas.

Funcionamiento básico

Si ya tenemos creado nuestro fichero de configuración con estos parámetros básicos, podemos empezar a usar Metapixel.
El primer paso es generar la libreŕia de imágenes preparadas, abre una consola y ejecuta en modo recursivo:metapixel-prepare -r
El programa empieza de inmediato a generar copias de tus fotografias en la carpeta library-directory indicada en el fichero de configuración. El proceso puede llevar un tiempo, pero no demasiado. Mi album de fotos contiene 15000 imagenes y tardó en procesarlas menos de 3 horas (cuando viene del trabajo ya estaban terminadas).
Nota: Incomprensiblemente el programa trata TODOS los ficheros que encuentre, por lo cual emitirá errores cuando trate leer cualquier archivo que no sea un JPG ó PNG (ficheros html, avi, mpeg, texto, etc.. ) en cualquier caso el escaneo de carpetas no se detiene por este error, y simplemente son ignorados dichos ficheros.

Una vez terminado el proceso, tendrás una carpeta llena de pequeños thumbnails de tamaño prepare-dimensions listos para utilizar.
Una vez selecciona la imagen que desees convertir en mosaico, escribes en linea de comandos metapixel --metapixel /direccion/imagen-a-convertir.jpg /direccion/donde-guardar-resultado.png
En ese momento el programa trocea la imagen dada (emite ….) y a continuación comienza a reconstruirla utilizando tu librería (emite xxxx)

Como ejemplo: La imagen que podeis ver en el video fue creada partiendo de un JPG de 6528×4352 pixel, y contiene unas 6900 miniaturas de 64×64 pixel utilizando una librería que consta de 15000 imágenes de 256×256 pixels. La recreación de la imagen le llevó alrededor de 40 minutos. El archivo “tables.mtx” pesa unos 15 Mg.

Observaciones

Metapixel trae bastantes más opciones con las que jugar un rato, estas son las más elementales. La opcion antimosaic (crea un mosaico a partir de trozos de propia imagen), collage (eso mismo, un compilación de imagenes más o menos solapadas según –distance), incluso un metodo “cheat” (tramposo).

Evidentemente los mejores resultados se consiguen utilizando muchas (miles) imágenes y puesto que lo ideal es que las imagenes que componen el mosaico sean “visibles” estamos obligados a escalar las imágenes originales…. a no ser que vuestra cámara produzca imágenes de 6000 ó 7000 pixel de ancho…

Seleccionad imágenes con areas contrastadas y una ampliar gama de colores, al menos tantos colores como los que abunden en vuestro album de fotos. Si mayormente teneis fotografías realizadas de noche, no hagais un mosaico con la foto de la novia en la nieve!! :D

  1. m.j.

    …eres una maquina…por eso eres mi amigo…eres tan didáctico chavalote…un abrazo enorme…

  2. chemy

    Necesito un progrma igual que este pero para windows si conoces alguno por favor pasamelo gracias

  3. daniel

    Tu pagina es una de mis favoritas, practica, sencilla y donde recurrir a la hora de necesitar una explicacion clara. Felicitaciones y gracias.
    p/d> gracias a ti tengo mi linux a punto, y al igual que los vampiros a quien se lo muestro, le contagio el virus freesoftware y seguro migra de plataforma. Un abrazo desde Corrientes Argentina.

  4. Trebol-A

    Vaya, gracias Daniel !! ;)

Deja aquí tu comentario

« Nieves Concostrina

Día del Armisticio »


Cuaderno de campo es un blog mantenido por Trebol-a y en el que escriben Trebol-a, Miguel y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar

Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos de la licencia Creative Commons