Exemple de mosaïque obtenue avec metapixel

Des mosaïques d’images avec Metapixel

Une mosaïque consiste en une grande image, elle-même composée de nombreuses miniatures. Il fut un temps où cette technique représentait un art, mais vous verrez à travers ce billet qu’elle est maintenant accessible à tout linuxien moyen.

Exemple

Exemple de mosaïque obtenue avec metapixel
Exemple de mosaïque obtenue avec metapixel

A fortiori, plus l’image requiert de détail, plus la mosaïque sera grosse pour garder les vignettes visibles. L’image ci-dessus fait, en taille réelle, 22 Mo pour 27 Mpixel ! Vous pouvez la télécharger ici.

 

Installation de metapixel

C’est donc metapixel, programme fonctionnant en ligne de commande, qui va nous faire tout le boulot :

apt-get install metapixel

Génération de la librairie

Vous devez disposer d’un dossier contenant toutes les miniatures (les tiles) et bien sûr une image à laquelle vous voulez que la mosaïque ressemble. Supposons que les miniatures soient dans le dossier Miniatures/.
La première étape est de créer une bibliothèque d’images, avec une table associée dans laquelle sont enregistrées les valeurs de chaque miniature (couleurs, gradients, etc.) :

metapixel-prepare --recurse Miniatures/ /tmp/ --width=40 --height=30

L’option –recurse vous permettra de fouiller dans tous les sous-dossiers. Les dimensions (width et height) sont celles des miniatures (en pixels) à générer depuis le dossier d’images. Il est conseillé de respecter le ratio des images (on est donc bien dans mon exemple en 4/3). Par défaut, ces valeurs sont toutes deux à 24. La table de données et les miniatures seront placées dans le dossier /tmp.

Création de la mosaïque

Maintenant, on va générer une mosaïque d’une image (originale.jpg) en utilisant notre librairie créée ci-avant.

metapixel --library /tmp/ --metapixel originale.jpg mosaique.png --scale=5

Vous l’option –library sert à indiquer où aller chercher la librairie de miniatures. Après l’argument –metapixel, on précise l’image à partir de laquelle créer la mosaïque, puis dans quel fichier enregistrer cette dernière. L’option –scale, comme son nom l’indique, sert de facteur d’échelle pour agrandir l’image d’origine et ainsi pouvoir placer plus de miniatures.

Options supplémentaires

metapixel dispose de pas mal d’options qui permettent des rendus assez amusants, notamment l’option collage (comme en français) qui permet de superposer les miniatures.

metapixel --library /tmp/ --metapixel originale.jpg mosaique.png --scale=5 --collage

Le temps de création de la mosaïque est plus long, mais le résultat est vraiment sympathique.

On peut aussi « tricher » en autorisant metapixel a faire légèrement varier la tonalité des miniatures, pour mieux s’ajuster aux couleurs de l’image originale :

metapixel --library /tmp/ --metapixel originale.jpg mosaique.png --scale=5 --cheat=40

Une valeur du cheat au delà de 40 devient un peu excessif… À noter que le cheat et le collage ne sont pas compatibles.

Pour vous figurer l’effet de ces deux options, les trois images suivantes sont des zooms sur le visage de l’enfant du milieu (voir image en début de billet) sans triche et sans collage, avec triche, et avec collage :

Sans triche et sans collage
Sans triche et sans collage
Avec triche
Avec triche
Avec collage
Avec collage

 

Si vous disposez d’un (très) grand nombre de photos pour votre mosaïque, vous pouvez empêcher une miniature d’apparaître deux fois :

metapixel --library /tmp/ --metapixel originale.jpg mosaique.png --scale=5 --search=global

Si vous voulez être moins catégorique, vous pouvez demander une distance minimale (en nombre d’instances) entre deux miniatures identiques :

metapixel --library /tmp/ --metapixel originale.jpg mosaique.png --scale=5 --distance=10

Dernier gadget : l’antimosaïque. Le principe est de découper une image A en miniatures, puis d’utiliser ces miniatures pour faire une mosaïque d’une image B :

metapixel --antimosaic=imageA.jpg --metapixel imageB.jpg mosaique.png

On peut même pousser cette option pour l’utiliser sur une seule et même image (une sorte d’« auto-antimosaïque »). Exemple avec mon fameux TuxDJ :

Mon Tux DJ d'origine
Mon Tux DJ d’origine
Mon Tux DJ ``auto-anti-mosaïqué''
Mon Tux DJ « auto-antimosaïqué »

 

Pour aller plus loin

Vous pouvez consulter la page officielle de metapixel pour avoir plus d’infos ou des exemples plus jolis que les miens.
Si vous voulez connaître les commandes ou options non développées ici (il y en a !) :

metapixel --help

Bonnes mosaïques !