# Match moving

Le match moving est une technique utilisée dans le domaine des effets visuels et liée à la capture de mouvement. Ce terme est employé pour faire référence aux différentes techniques permettant d'extraire les informations de mouvement depuis une séquence vidéo, et plus particulièrement les mouvements de caméra. Il est également connu sous le nom de motion tracking.
Dans cet article, match moving fait référence au fait d'extraire l'information de mouvement depuis une unique séquence vidéo. L'utilisation de caméras supplémentaires, de capteurs de mouvement, d'une caméra de type motion control, ou d'un autre dispositif sont possibles en tant que supplément, mais non nécessaires.
La technique de match moving est principalement utilisée pour tracker le mouvement d'une caméra pendant une prise, de sorte que ce mouvement puisse être reproduit à l'identique sur une caméra virtuelle dans un programme informatique. Ainsi, lorsque les scènes réelles et virtuelles seront fusionnées (opération appelée compositing), elles donneront l'impression d'avoir été filmées du même point de vue.

## Deux types de techniques

Il y a deux types de techniques de match moving :
* Les programmes de compositing tel que Adobe After Effects, Autodesk Combustion et Shake, peuvent appliquer une technique de match moving bidimensionnel. Cette fonction est capable d'effectuer des translations d'objets dans l'espace image et d'ajouter des effets tels que du blur afin de masquer les erreurs de trajectoires entre deux objets en mouvements. Cette technique est suffisante pour créer une impression de vraisemblance dans le cas où il n'y a pas de changement important des paramètres de la caméra. Par exemple, un panneau publicitaire placé en arrière-plan d'une séquence vidéo peut être facilement traqué en dimension deux, puis remplacé par une image contenue en mémoire ;
* Les outils de match moving tridimensionnel peuvent extrapoler les informations tridimensionnelles à partir de photographies bidimensionnelles. Parmi les logiciels capables d'effectuer un match moving tridimensionnel on peut citer :
** 3DEqualizer
** Adobe After Effects (depuis la version CS6),
** Blender (Depuis la version 2.61),
** Icarus (freeware, toujours utilisé malgré un arrêt du développement),
** Cinema 4D (depuis la version R16),
** Mocha Pro,
** Maya Live (Module de Maya Unlimited),
** Meshroom d'Alicevision, (application de photogrammétrie gratuite et open-source)
** NukeX (The Foundry),
** PixelFarm PFTrack (réincarnation commerciale d'Icarus),
** Realviz MatchMover,
** Ssontech SynthEyes,
** Sciene.D.Visions 3DEqualizer (qui a gagné une récompense académique pour accomplissement technique),
** Voodoo (logiciel gratuit),
** VooCAT (logiciel commercial, réincarnation commerciale de Voodoo).
Ces programmes permettent aux utilisateurs de déduire les mouvements de caméra ainsi que d'autres mouvements relatifs à partir d'un métrage quelconque. Les informations de tracking peuvent alors être transférées sur un logiciel d'infographie et d'animation 3D tel que Blender, 3D Studio Max, Lightwave ou Maya afin d'être utilisées pour animer des caméras virtuelles et des objets en images de synthèse.
Le premier, et l'un des meilleurs exemple où la technique de match moving a été utilisée est le film Jurassic Park. Les réalisateurs ont placé des balles de tennis colorées dans la scène comme marqueurs. Ils ont ensuite utilisé ces marqueurs pour traquer le mouvement de la caméra durant les différentes scènes. Ceci a permis à de nombreux objets virtuels, tels que les dinosaures en images de synthèse, d'être ajoutés à des scènes ayant des mouvements de caméra complexes voire des caméras-épaule. Les balles de tennis ont été par la suite peintes numériquement afin de les exclure du montage final.
Le match moving est un outil reconnu dans le milieu des effets spéciaux.

## Fonctionnement

Le processus de match moving peut être séparé en deux parties.

### Tracking

La première étape consiste à identifier et à tracker (c'est-à-dire « pister ») des cibles. Une cible est un point spécifique de l'image qu'un algorithme de tracking peut suivre sur plusieurs images. Le choix de ces cibles dépend de l'algorithme de tracking, mais ce sont souvent des endroits particulièrement lumineux ou sombres, des arêtes ou des coins. L'important est que chaque cible représente un point spécifique de la surface d'un objet réel. Lorsqu'elle est suivie, une cible devient une suite de coordonnées bidimensionnelles représentant la position de la cible à travers la séquence d'image. Cette suite est appelée track. Une fois que ces tracks ont été calculées, elles peuvent soit être utilisées immédiatement pour faire du match moving 2D, soit être utilisées pour calculer les informations 3D.

### Calibrage

La seconde étape consiste à réaliser un calcul pour obtenir le mouvement en 3D. Le but est de déduire le mouvement de la caméra en résolvant une projection inverse des chemins 2D pour la position de la caméra. Ce processus est appelé calibrage.
Ainsi, quand un point de la surface d'un objet tridimensionnel est photographié, sa position dans l'image 2D peut être calculée par une fonction de type projection 3D. On peut considérer qu'une caméra est une abstraction qui contient tous les paramètres nécessaire à la modélisation d'une caméra dans un univers réel ou virtuel. Ainsi, une caméra est un vecteur qui contient comme éléments : la position de la caméra, son orientation, sa focale, et d'autres paramètres possibles qui définissent comment la caméra focalise la lumière sur la pellicule. La manière dont est construit ce vecteur importe peu tant qu'il existe une fonction de projection P compatible.
La fonction de projection P prend comme entrée un vecteur de caméra (noté camera) et un autre vecteur représentant la position d'un point 3D dans l'espace (noté xyz), et retourne un point 2D qui est le projeté du point 3D sur un plan dit image et situé devant la caméra (noté XY) On a alors l'expression suivante :
    XY = P(camera, xyz)
La fonction de projection transforme un point 3D notamment en supprimant la composante de profondeur. Sans connaitre la profondeur, une projection inverse peut seulement retourner un ensemble de points 3D solutions. Cet ensemble est une droite partant du centre optique de la caméra et passant par le point 2D projeté. On peut exprimer la projection inverse par :
    xyz ∈ P'(camera, XY)
ou
    xyz :P(camera, xyz) = XY
Supposons que nous soyons dans le cas où les cibles que nous sommes en train de traquer sont sur la surface d'un objet rigide, par exemple un bâtiment. Comme nous savons que le point réel xyz restera au même endroit dans l'espace (sauf si le bâtiment se déforme) d'une image sur l'autre, on peut contraindre ce point à être constant quand bien même on ne connait pas sa position. Donc :
    xyz$_i$ = xyz$_j$
où les indices i et j sont des numéros arbitraires d'images de la scène que nous sommes en train d'analyser. Cela nous permet d'affirmer que :
    P'(camera$_i$, XY$_i$) ∩ P'(camera$_j$, XY$_j$) ≠
Du fait que la valeur XY$_i$ a été déterminée pour toutes les images où la cible a été traquée par le programme, on peut résoudre la projection inverse entre deux images tant que P'(camera$_i$, XY$_i$) ∩ P'(camera$_j$, XY$_j$) est un ensemble restreint. L'ensemble des vecteurs camera possible qui sont solutions de l'équation aux instants i et j (noté C$_{ij}$).
    C$_{ij}$ = {(camera$_i$,camera$_j$):P'(camera$_i$, XY$_i$) ∩ P'(camera$_j$, XY$_j$) ≠)
Il y a donc un ensemble de paires de vecteurs caméra C$_{ij}$ pour lesquels l'intersection de la projection inverse de deux points XY$_i$ et XY$_j$ est non vide, de préférence petit, et est centré autour du point théoriquement stationnaire xyz .
En d'autres termes, imaginez un point noir flottant dans un espace blanc et une caméra. Pour chaque position de l'espace où on place la caméra, il y a un ensemble de paramètres correspondants (orientation, focale, etc) qui vont photographier ce point exactement de la même manière. Comme C a un nombre de membres infinis, un seul point est insuffisant pour déterminer la position actuelle de la caméra.
En augmentant le nombre de points ciblés, on peut restreindre l'ensemble des positions possibles pour la caméra. Par exemple, si on dispose d'un ensemble de points xyz$_{i,0}$, …, xyz$_{i,n}$} et xyz$_{j,0}$, …, xyz$_{j,n}$} i et j étant toujours des indices d'image et n est un indice représentant chacune des cibles. On peut alors obtenir un ensemble de paires de vecteur-caméra {C$_{i,j,0}$, …, C$_{i,j,n}$}.
De cette manière, on restreint l'ensemble des paramètres possibles de caméra. L'ensemble des paramètres possibles qui conviennent à la caméra, F, est l'intersection de tous les ensembles :
    F = C$_{i,j,0}$ ∩ … ∩ C$_{i,j,n}$
Plus petit est cet ensemble, plus il est facile d'approcher le vecteur-caméra solution. Cependant en pratique, des erreurs introduites par la phase de suivi imposent une approche statistique pour déterminer la solution, des algorithmes d'optimisation sont souvent utilisés. Malheureusement, il y a tellement de paramètres dans un vecteur-caméra que lorsque chacun de ces paramètres est indépendant des autres, on peut être incapable de restreindre F à une unique possibilité peu importe le nombre de points que l'on essaie de suivre. Plus le nombre de paramètres que l'on peut restreindre lors d'une prise est grand (notamment la focale), plus il est facile de déterminer la solution.
On appelle phase de résolution 3D le traitement consistant à restreindre le nombre de solutions possibles du mouvement de la caméra afin d'atteindre une seule possibilité qui conviennent à la phase de compositing.

### Projection du nuage de points

Une fois que la position de la caméra a été déterminée pour chaque image, il devient alors possible d'estimer la position de chaque cible dans l'espace réel par projection inverse. L'ensemble de points résultant est souvent nommé nuage de points du fait de son apparence nébuleuse. Comme le nuage de points révèle souvent une partie de la forme de la scène 3D, il peut être utilisé comme référence pour placer des objets en image de synthèse ou, à l'aide d'un programme de reconstruction, créer une version virtuelle de la scène réelle.

### Détermination du plan représentant le sol

La caméra et le nuage de point nécessitent d'être orientés dans l'espace. Ainsi, une fois le calibrage terminé, il est nécessaire de définir le plan représentant le sol. Normalement, il y a un plan unitaire qui détermine l'échelle, l'orientation et l'origine de l'espace projeté. Certains programmes essaient de le faire automatiquement ; cependant, le plus souvent, c'est l'utilisateur qui définit ce plan. Comme de la modification de ce plan ne résulte qu'une simple transformation sur tous les points, la position d'un tel plan n'est vraiment qu'une question de convention.

### Reconstruction

La reconstruction est le processus interactif qui consiste à recréer un objet photographié en utilisant les données de tracking. Cette technique est liée à la photogrammétrie. Dans ce cas particulier, il s'agit d'utiliser le logiciel de match moving dans le but de reconstruire la scène depuis une prise adéquate.
Un programme de reconstruction peut créer des objets tridimensionnels représentants les vrais objets de la scène photographiée. En utilisant les données du nuage de points et l'estimation de l'utilisateur, le programme peut créer un objet virtuel et extraire une texture depuis la vidéo qui sera projetée sur l'objet virtuel comme texture surfacique.

## En pratique

Rappel : le tracking (ou traçage) est un système logiciel qui permet de suivre un déplacement. Le plus connu est le tracking vidéo (utilisé notamment dans les films ou les jeux vidéo).

### Le tracking vidéo

Le tracking vidéo permet de recréer les mouvements d'une caméra réelle sur une caméra virtuelle. Le système sert soit à intégrer une personne réelle tournée sur un fond bleu ou vert dans un décor virtuel, soit à intégrer un personnage virtuel dans un décor réel tourné avec une caméra qui bouge.
Pour arriver à un bon tracking, il faut suivre quelques étapes qui commencent sur le lieu de tournage.

### Sur le tournage

Le plus souvent, ce sont les assistants du chef des effets spéciaux qui s'occupent de cette étape. Il s'agit ici de positionner des repères sur décors, qui sont assez visibles pour la suite et pas trop pour être enlevés facilement. Ensuite, il faut mesurer précisément la distance entre chaque repère et faire un plan détaillé de l'ensemble de la scène. À chaque plan tourné dans le décor, il est nécessaire de noter la focale utilisée, et la hauteur de la caméra si le mouvement réalisé correspond à un mouvement dans un décor 3D.
Les repères peuvent aussi être des éléments durs du décor, coin de table, motif, dès lors que le contraste avec la couleur du fond est suffisamment marqué.

### Scène en 3D

Ensuite, on recrée tout le décor en 3D à l'échelle en fonction du plan créé lors du tournage dans un logiciel de 3D.

### Analyse des séquences

Lorsque débute la post-production, un technicien reçoit tous les plans, il va devoir analyser chaque plan, pour savoir quelle focale est utilisée, s’il y a un zoom, le mouvement de la caméra. Ensuite, le film va être transformé en séquence d'images.

### Importation de la séquence

Il existe de nombreux programmes de tracking (Matchmover de Realviz), dans la plupart des programmes de 3d, il y a un système de tracking (Maya Live pour Maya, Cameras match pour 3DS Max…). C'est ici que l'on dit au programme la focale utilisée, s’il y a un a eu zoom et le mouvement de la caméra.

### Tracking

Ici commence le tracking à proprement parler. On place ici des points - 'Les Tracker' - sur les repères réels. On lance le tracking et le programme va suivre le repère automatiquement jusqu'à ce qu'il le perde de vue. On fait cette étape sur tous les points présents sur la scène.

### Solving

À ce stade du processus, les tracker ne bougent que dans 2 dimensions. C'est ici que l'on va importer la reproduction de la scène en 3D dans le programme. On va faire coïncider chaque tracker avec les points qui leur correspondent sur la scène 3D. On lance le solving. Le programme va interpréter les mouvements 2D de chaque tracker en fonction de leur position dans la scène 3D pour avoir le mouvement de caméra.

### Finale

Maintenant qu'on a le mouvement fidèle de la caméra, on va pouvoir l'importer dans un logiciel de 3D s'il n'est pas déjà dedans.

## Tracking automatique vs. Tracking interactif

Il existe deux méthodes par lesquelles l'information de mouvement peut être extraite depuis une image. Le tracking interactif se repose sur les capacités de l'utilisateur à suivre les cibles durant une séquence. Les points traqués par l'utilisateur sont alors utilisés pour calculer le mouvement de la caméra. Le tracking automatique se repose sur des algorithmes pour identifier et suivre les cibles durant la séquence.
L'avantage du tracking interactif est qu'un humain peut suivre une cible durant toute une séquence sans être désorienté par les cibles qui ne seraient pas rigides. Le défaut est que l'utilisateur va inévitablement introduire des petites erreurs qui vont, en suivant les objets, inévitablement conduire vers une dérive.
L'avantage du tracking automatique est que l'ordinateur peut créer bien plus de points que ne le peut un humain. Un plus grand nombre de points peuvent être analysés pour statistiquement déterminer quelle sont les données les plus fiables. Le désavantage du tracking automatique est que, selon l'algorithme, l'ordinateur peut facilement être embrouillé et perdre les cibles.
Les logiciels de match moving professionnels utilisent généralement une combinaison tracking interactif- tracking automatique. Un artiste peut enlever les points clairement anormaux et utiliser un ou plusieurs tracking mattes afin de bloquer les informations parasites hors du processus de tracking.

### Matte tracking

Un « matte tracking » est un concept similaire au matte painting. Cependant, le but d'un matte tracking est d'empêcher l'algorithme de tracking d'utiliser des données non fiables, sans rapport ou non rigides. Par exemple, dans une scène où un acteur marche devant un arrière-plan, le match mover (celui qui s'occupe du match moving) voudra utiliser seulement cet arrière-plan pour obtenir le mouvement de sa caméra sachant que le mouvement de l'acteur va interférer dans les calculs. Dans ce cas, l'artiste va construire un matte tracking pour suivre l'acteur dans la scène et bloquer cette information dans le processus de tracking.

## Affinage

Comme il y a souvent de multiples solutions possibles au processus de calibrage et qu'une quantité significative d'erreur peut s'accumuler, l'étape finale pour obtenir le mouvement implique souvent un affinage (refining en anglais) de la solution manuelle. Cela signifie modifier soi-même le mouvement de la caméra en donnant des indices au moteur de calibrage. Ce calibrage, plus interactif est parfois appelée affinage du calibrage.

## Approche matérielle

Dans certains cas où :
* un personnage doit interagir avec un environnement créé par ordinateur ;
* la combinaison d'un changement d'angle et d'un zoom rende le chemin ambigu ;
* la résolution requise par le placement de la caméra est supérieure à celle que l'on peut obtenir par traitement d'une vidéo ;
* les positions des composants les uns par rapport aux autres ne sont pas constantes (la scène est un solide déformable),
une approche matérielle est nécessaire. Dans ces cas-là, des DELs visibles ou infrarouges peuvent être fixées sur des objets tels que des supports ou sur les caméras et un système optique de tracking peut être utilisé pour traquer les caméras, les acteurs et les supports.
Cette méthode n'est préférée que lorsque le matériel est déjà requis pour traquer les acteurs ou les supports, l'approche logicielle fonctionnant suffisamment bien et ne nécessitant aucun matériel. Un système de marqueurs actifs tel que celui de PhaseSpace permet d'intégrer ces marqueurs à l'intérieur des objets de la scène et fournis en temps réel les coordonnées relatives du système autorisant des interactions complexes. Des processeurs embarqués modulent la luminosité des DELs afin de différencier chaque marqueur et ainsi des centaines d'objets peuvent être traqués.