XMRM : Morphing sous Linux
ArticleCategory:
Graphics
AuthorImage:
TranslationInfo:
Original in fr Yves Ceccone
AboutTheAuthor:
Photographe de formation, reconverti dans l'infographie,
n'a plus lâché la souris depuis.
Abstract:
XMRM (Multi resolution Morphing pour X) est un programme de morphing permettant à partir
de 2 images de créer une vidéo au format mpeg ou l'une des images se transforme progressivement
(suivant un nombre important de paramètres et de possibilités) en la deuxième.
Cet article propose la description des principales fonctions du logiciel (grâce à la très complète
documentation en anglais disponible sur le site de XMRM) ainsi que la description de la fabrication
d'une petite animation qui montre qu'on peut obtenir un résultat intéressant très facilement.
ArticleIllustration:
ArticleBody:
Installation
La version utilisée dans cet article est au format rpm (sur une RedHat 6.0) mais
on trouve aussi sur le site : (http://www.cg.tuwien.ac.at/research/ca/mrm/xmrm.html)
les sources à compiler.
En plus du programme lui même pour pouvoir sauvegarder l'animation en mpeg il faudra installer aussi :
"tifftopnm" et "ppmtoyuvsplit", qui sont tous les deux dans le package "netpbm01mar94" que l'on
trouve ici : ftp://ftp.x.org/contrib/utilities/ ainsi que "mpeg" à cette adresse :
ftp://ftp.x.org/contrib/utilities/
Principe
Le fonctionnement de XMRM est le suivant : Il faut charger 2 images, une image appelée "source" et une
deuxième appelée "destination". Il faut ensuite faire à l'aide de vecteurs un tracé sur chaque image,
chaque point d'un tracé sur une image correspondant à un point sur l'autre image. Ce sont ces tracés qui
détermineront les contours du morphing. Après avoir choisi le type de morphing, la qualité, le nombre
d'étape (frame) ..., on "calcule" l'animation qu'il sera possible de sauvegarder en mpeg.
menu, et fonctions principales
Ce menu fait double emploi puisqu'à chaque commande correspond un bouton sur l'interface générale.
Ce menu permet de choisir le type de "petite vague" (traduction littérale),
donc de type de transformations, la variété du choix étant à but scientifique : le type "RTS-Transform"
est suffisant dans bien des cas, spécialement pour les prévisualisation, pour des résultats de haute
qualité choisissez dans la liste, de "Biorthogonal Spline" à "Battle Lemarie" (qui va du plus complexe
au plus lent).
Les 3 autres peuvent donner des résultats "marrants" (funny)...
Ce menu permet de masquer ou de montrer les différentes fenêtres de travail.
- Charger l'image source
- Charger l'image de destination
Le format utilisé par XMRM est le TIFF.
- Charger des vecteurs
- Sauvegarder des vecteurs
- Enregistrer sous des vecteurs
- Supprime les vecteurs de l'image source et de destination.
Tous vos réglages incluant les vecteurs, les nom des images les paramètres, etc ... peuvent
être sauvegardés, chargés et enregistrés sous.
Les projets sont sauvegardés avec l'extension .prj,
les vecteurs sont sauvegardés dans un fichier à part avec l'extension .prj.vec.
Inverse l'image source et de destination ainsi que les vecteurs pour changer le sens du morphing.
Charger une image en noir et blanc pour utiliser la fonction "detail map morph"
Une image couleur sera convertie en noir et blanc.
Morphing de base par le mélange, la fusion de l'image source et celle de destination.
Ce mode de fonctionnement avec une image noir et blanc en plus de l'image source et de destination
permet de contrôler la progression de la transformation. Ainsi une zone blanche sur l'image en noir et blanc
permettra une apparition rapide des détails et inversement une zone noire une progression lente.
Ici c'est uniquement l'image source qui est déformée en fonction des vecteurs.
Effets surprenant garantis !
Permet de créer une séquence commençant avec les zones les plus détaillées de l'image sources et
les moins détaillées de l'images de destination, pour continuer dans le sens inverse et revenir
au début pour terminer le cycle.
Dans le mode avancé les "wavelet-functions" peuvent être sélectionnées et réglées séparément, dans le
mode de fonctionnement simple c'est le 1 qui est toujours sélectionné :
Le temps de calcul avec cette option "haute qualité" peut être multiplié par 4 ...
Cette option positionne des vecteurs (invisibles) sur les 4 coté des 2 images (source et destination).
Cela permet d'éviter la déformation du cadre pendant le morphing.
Si ce bouton est décoché, c'est le morphing conventionnel qui sera utilisé.
Cette fonction détermine la valeur de l'image source et de destination pour chaque image composant
l'animation.
Lorsqu'il est activé, on utilise alors le "wavelet-transformations mode" plus évolué qui est
encore paramétrable avec l'option "Avanced mode".
Morphing progress
Il est possible de modifier la progression du morphing de la façon suivante:
l'axe X représente le temps ou la position de l'image dans l'animation, à gauche on a l'image source
et à droite celle de destination.
Sur l'axe Y on a en bas l'image source et en haut l'image de destination.
On pourra donc suivant les 3 exemples ci-dessus, avoir une progression régulière, une progression où
l'image de destination apparaît vers la fin, et la dernière où on a un effet de boucle.
Pour ajouter ou modifier la position d'un point on utilise le bouton gauche de la souris, et pour
en supprimer le bouton droit.
Positionnement des vecteurs
Une fois les 2 images chargées, c'est avec les outils set, Edit, delete /vector
et set /Line que l'on trace les vecteurs qui décideront des contours pris en compte
par le morphing pour chaque image. Plus le nombre de vecteurs est important meilleure
sera la qualité du morphing.
Il est possible d'avoir plusieurs tracés par image : par exemple, dans la doc officielle il y a un exemple
de morphing avec un ours et un léopard où on a le contour de la tête plus le tracé de chaque
oeil et donc 3 tracés par photo.
Calcul de l'animation
On décide ici du nombre d'images (frames) qui composera l'animation, ce qui
décidera de sa durée (ceci en rapport avec le nombre de frame par seconde) et
du rendu (fluide, saccadé ...) de l'animation.
Le nombre de frame par seconde (fps) se programme ici ainsi qu'une éventuelle
animation en boucle en activant le bouton "Cycle".
L'option "frame preview" sert à visualiser une image donnée d'une animation
qu'on sélectionne par sa position dans l'animation.
Sauvegarde de l'animation
"save Pics from animation" sauvegarde chaque frame en un fichier tif, ceci
après que l'on ait calculé l'animation. Pour cela il faut d'abord choisir
un répertoire et un nom_de_fichier.tif.(la sauvegarde se fera ainsi :
nom_de_fichier000.tif; nom_de_fichier001.tif; nom_de_fichier002.tif etc ...)
"Save pics when calculate" sauvegarde ces mêmes fichiers correspondant à chaque
frame au format tif, mais en même temps que se calcule l'animation, il faut
alors choisir le nom du fichier avant de lancer "calculate".
Cette option permet une bien meilleur qualité d'image en ce qui concerne
les couleurs.
On obtient cette boite de dialogue en cliquant sur "Execute xmrm_mpeg" où
il faudra, avec le bouton "chose start/stop frame" choisir la première et
la dernière image de l'animation, puis faire "GO" pour lancer la dernière
opération pour obtenir l'animation en mpeg.
On pourra également créer une boucle et lancer mpeg_play sitôt le mpeg créé.
Créer rapidement un morphing
Voici d'abord les 2 images que vous pouvez télécharger si vous voulez utiliser les mêmes
images que dans l'exemple :
01.tif et 02.tif (90 ko chacune)
Cliquez sur "load Source" et chargez 01.tif puis sur "load destination" et chargez 02.tif.
Avec l'outil "Set vector" faites un tracé autour du bébé.
Cet outil s'utilise en cliquant avec le bouton gauche et en tirant sur la longueur que l'on
désire donner au vecteur puis en relâchant la souris, et ainsi de suite.
On remarque que une des flèches au sommet de la tête du bébé est verte. C'est un point de
repère, qui aide à tracer et à positionner le même nombre de vecteurs sur l'image de
destination que sur l'image source : Après avoir bouclé le tracé sur la première image,
lorsqu'on commence celui de la deuxième le tracé de celle-ci est accompagné de flèche
verte le long du premier tracé et facilite ainsi le travail.
Voici les paramètres que j'ai utilisé pour obtenir un résultat intéressant :
- Simple morph
- Border vector
- use wavelets
- Le curseur "wavelet interpolation levels" monté au 3/4.
- le "Morphing-progress" rectiligne et centré
- Nombre de frames : 50
- "Animaton sequence" cochée et 25 fps
Cliquez maintenant sur "calculate" pour générer l'animation qu'il est possible de
visualiser avec le bouton "animate" pour éventuellement faire des modifications. Attention
le fait de relancer à nouveau "calculate" écrase la précédente animation.
Une fois satisfait du résultat, cochez "save pics from animation" et choisissez un nom de
fichier et un répertoire où sauvegarder les 50 fichiers .tif que va générer la commande
"ready" de la boite de dialogue ouverte par "choose filname"
Dernière opération : Cliquez sur "Execute xmrm_mpeg" choisissez comme START-frame celui
des 50 qui se nomme nom_de_fichier000.tif et comme LAST-frame le nom_de_fichier049.tif et
faite "GO" pour créer le fichier vidéo mpeg qui se nommera nom_de_fichier.mpg et se trouvera
dans le même répertoire que les 50 fichiers tif.
Facile, non ?
Cette animation est téléchargeable en fichier mpg ou en animation gif
Note de la rédaction: la compilation de xmrm avec des distributions récentes de
Linux peut poser certains problèmes. Nous vous proposons une liste de solutions
: