[?]
[Docs] [Photo]
[3D] [Graphisme]
[Edition]
[Impression]
[Web] [Galerie]

XMRM : Morphing sous
Linux
par Yves
Ceccone
Résumé:
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 où 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.
Sommaire :
Installation
La version utilisée dans cet article
est installée à partir d'un 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" téléchargeable à 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 est plutôt à 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
- "Animation 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 filename"
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 ici
(159 Ko)
Vous pouvez m'écrire ici
Copyright : Yves
Ceccone
Haut de page