Retrouvez cet article dans : Linux Pratique 32
Le rôle de Metapixel 1 est simple : donnez-lui d'abord une grande quantité d'images à analyser ; donnez-lui ensuite une autre image ; il essayera de reconstituer cette dernière en réalisant un collage d'images choisies parmi celles analysées à la première étape. En confiant vos photos à Metapixel, vous pourrez obtenir des résultats étonnants.
Installation
Metapixel n'est pas fourni sous forme de paquets pré-compilés, il vous faudra donc passer par l'étape de la compilation. Perl, libpng et libjpeg sont nécessaires, ils sont sans doute déjà installés sur votre machine. Si ce n'est pas le cas, vous pouvez utiliser le gestionnaire de paquets de votre distribution pour les installer.
1 Metapixel est un Logiciel libre écrit par Mark Probst et distribué sous licence GPL.
Téléchargez l'archive sur le site web de Metapixel, décompressez-la, rendez-vous dans le répertoire obtenu, puis compilez.
$ wget http://www.complang.tuwien.ac.at/~schani/metapixel/metapixel-1.0.0.tar.gz $ tar zxvf metapixel-1.0.0.tar.gz $ cd metapixel-1.0.0 $ make
Notez qu'ici, l'étape " traditionnelle " ./configure n'est pas nécessaire.
Enfin, passez root et installez le logiciel.
# make install
Préparez vos images
La commande metapixel-prepare permet de réaliser un " pré-traitement " nécessaire pour créer ensuite des mosaïques avec Metapixel.
Cet outil a deux rôles :
- D'une part, il calcule pour chaque image des coefficients que Metapixel utilisera pour estimer si elle peut correspondre à une partie de l'image à reconstituer ;
- D'autre part, il redimensionne les images. La taille des images redimensionnées (par défaut 128x128 pixels) est normalement la taille des images que vous voulez utiliser dans le résultat final.
Le résultat de ces deux opérations (qui occuperont votre machine pendant quelques minutes pour plusieurs milliers de photos) est stocké dans un répertoire qui constitue une bibliothèque à utiliser par Metapixel.
Les arguments à passer à metapixel-prepare sont le répertoire où vos photos sont stockées et le répertoire dans lequel vous souhaitez que la bibliothèque soit créée. Ce répertoire doit exister au moment où vous tapez cette commande.
Utilisez l'option --recurse si le répertoire qui contient les photos à utiliser est constitué de sous-répertoires.
Les formats supportés par Metapixel sont jpeg et png. Le résultat est au format png.
$ metapixel-prepare --recurse mes_photos ma_bibliotheque
Créez des mosaïques
Mosaïques classiques
Pour utiliser Metapixel, indiquez simplement l'emplacement de la (des) bibliothèque(s) à utiliser, de l'image à reconstituer et du nom du fichier résultat. L'opération ne prend que quelques secondes.
$ metapixel --library=ma_bibliotheque --metapixel mon_image.jpg resultat.png
Dans ce cas, la bibliothèque ma_bibliotheque sera utilisée pour faire une mosaïque de l'image mon_image.jpg. Le résultat de l'opération sera le fichier resultat.png.
Note : Utilisez plusieurs fois l'option --library si vous avez plusieurs bibliothèques à indiquer.
Pour obtenir de bons résultats mieux vaut utiliser une photo dont le sujet se détache bien du fond. Les photos qui comportent beaucoup de détails comme les photos de groupes sont mal restituées. Choisissez de préférence des images dont on peut identifier le sujet au premier coup d’œil.
Il est aussi nécessaire que les couleurs dominantes de l'image à reconstituer soient présentes dans votre bibliothèque : inutile d'essayer de reproduire une image sombre uniquement avec des photos prises sur les pistes de ski ! De manière générale, plus le nombre de photos présentes dans votre bibliothèque est important, plus vous aurez de chances d'obtenir de bons résultats. Les exemples fournis dans cet article ont été réalisés avec une bibliothèque de près de 2000 photos.
D'autres options intéressantes
L'option --search peut prendre les valeurs : local et global, la première solution est plus rapide alors que la deuxième garantit qu'aucune image de la bibliothèque n'est utilisée deux fois.
L'option --distance permet de définir la distance minimale entre deux insertions de la même image. Cette distance est exprimée en nombre d'images.
Les couleurs peuvent être décomposées en trois valeurs : une (Y) pour la luminance qui porte l'information en noir et blanc et deux (I et Q) pour la chrominance qui portent l'information de la couleur.
Les options --y-weight, --i-weight et --q-weight permettent de donner moins d'importance à une de ces valeurs. L’œil humain étant plus sensible à la luminance qu'à la chrominance, vous pouvez essayer de donner moins de poids à ces deux derniers paramètres. Les valeurs à indiquer doivent être comprises entre 0 et 1, la valeur par défaut est 1.
Les autres options disponibles vous seront données par la commande metapixel --help
Un peu de triche ?
En passant à Metapixel l'option --cheat, l'image originale apparaît en transparence au-dessus du résultat. Le nombre qui doit suivre l'option --cheat est un pourcentage, plus ce nombre est grand, plus l'image originale est visible.
Cette option permet, avec des pourcentages proches de 30, d'améliorer significativement le résultat sans que la " triche " puisse être détectée dans la plupart des cas (Fig.1 et 2).

Fig. 1 : Cette image a été obtenue à partir d'une photo de 1300x2100 pixels à l'aide la commande : metapixel --library=ma_bibliotheque --search=local --cheat=30 --metapixel Elise.jpg resultat.png. L'option --cheat permet ici de distinguer un peu mieux le sourire malicieux du modèle.

Fig. 2 : Détail de la mosaïque précédente à la limite entre les cheveux et l'arrière-plan. À ce niveau de détail, on distingue juste une masse plus sombre (partie inférieure droite) qui compose une partie de la chevelure et une masse plus claire qui reproduit une partie du ciel.
Collages
L'image obtenue précédemment est une juxtaposition d'images disposées régulièrement. En utilisant l'option --collage, Metapixel produira des images composées d'un collage irrégulier comprenant des superpositions (Fig.3 et 4).
Note : Si vous utilisez l'option --distance avec un collage, la distance doit alors être exprimée en nombre de pixels.
Les options --cheat et --search n'ont pas d'effet sur les collages.

 Fig. 3 : En tendant les bras pour éloigner au maximum le magazine de vos yeux, vous découvrirez une jolie jeune fille avec une bouteille entre les mains qui vous fait un grand sourire digne de ce qui aurait pu être une publicité pour une boisson alcoolisée avant la loi Évin. Cette image a été créée à partir d'une photo de 1700x2300 pixels grâce à la commande : metapixel --library=ma_bibliotheque --collage --metapixel Cecile.jpg
resultat.png.

 Fig. 4 : Détail du collage précédent au pli
du coude droit du modèle.
 " Anti-mosaïques "
L'option --antimosaic permet aussi d'obtenir des résultats amusants. Dans ce cas, inutile d'indiquer à Metapixel une " bibliothèque d'images ". Donnez seulement deux photos en argument, il découpera la première en petits morceaux et il essayera de reproduire la deuxième avec les petits bouts de la première. Évidemment, mieux vaut utiliser deux images contenant principalement les mêmes couleurs.
$ metapixel --antimosaic=mon_image1.jpg --metapixel mon_image2.jpg resultat.png
 Fig. 5 : En utilisant la photo d'un geek qui ferait mieux de faire plus attention à ce qu'il mange (1200x1600 pixels) et la photo d'une pizza (1400*1400 pixels), on obtient cette image peu appétissante d'un geek qui a tellement mangé de pizzas qu'il est en train de se transformer... en pizza. Cette image qui pourrait être utilisée pour une campagne contre la " junk food " à été obtenue à l'aide de la commande : metapixel --antimosaic=pizza.jpg --search=local --metapixel geek.jpg resultat.png.
En passant en paramètre deux fois la même image, on peut obtenir des images assez étranges : une sorte de puzzle mal assemblé. Dans ce cas, vous pouvez utiliser l'option --forbid-reconstruction pour indiquer la distance minimale entre la position d'origine d'une partie de l'image et sa position dans l'image générée.

Fig. 6

 Fig. 7 : Cette image troublante a été obtenue à partir d'une photo de 1600x1200 pixels (figure 6) à l'aide de la commande : metapixel --antimosaic coucher_soleil.jpg --forbid-reconstruct=2 --metapixel coucher_soleil.jpg resultat.png.
Conclusion
Comme vous avez pu le constater en lisant cet article, Metapixel est un instrument de mosaïque puissant et facile à utiliser. Méfiez-vous de lui : quand on a commencé à l'utiliser, on est parti pour rester plusieurs heures scotché devant son écran. " Qu'est-ce que ça donne avec cette option ? ", " Et si j'essayais avec cette photo ? ", " Ce ne serait pas mieux en faisant varier ce paramètre ? "... Et on prend peur quand on regarde l'heure !
Liens
- Le site de Metapixel : www.complang.tuwien.ac.at/~schani/metapixel/
- La page Flickr de mosaïques de l'auteur du logiciel : http://www.flickr.com/photos/schani/sets/2366
Retrouvez cet article dans : Linux Pratique 32


