Simulateur d'estimation de mouvement

Simule l'estimation de mouvement inter-images, la mise en correspondance de blocs, les motifs de recherche et les résidus de compression.

Chargement de la simulation interactive...

La recherche rapide ne regarde jamais l'essentiel de la fenêtre 🖖

L'estimation de mouvement est le goulot d'étranglement de la compression vidéo. Un macrobloc de taille 16x16 est comparé à l'image de référence dans une fenêtre de recherche afin de trouver le candidat avec la plus faible somme des différences absolues (SAD). La recherche exhaustive complète évalue les (2r+1)² positions, ce qui est lent. Des algorithmes rapides comme la recherche en diamant et hexagonale n'évaluent qu'une fraction des points en déplaçant le centre de recherche de façon itérative, en s'arrêtant lorsque le minimum se trouve au centre du motif. Survole n'importe quel bloc pour voir sa fenêtre de recherche et les évaluations des candidats en temps réel.

Pourquoi transmettre le mouvement, pas les pixels 🖖

Les images vidéo successives sont presque identiques ; plutôt que de stocker chaque image en entier, un codec décrit l'image courante comme des morceaux de la précédente qui se sont déplacés. Chaque bloc de 16×16 reçoit un vecteur de mouvement pointant vers sa meilleure correspondance, plus un petit résidu contenant ce que le déplacement n'a pas su expliquer. À retenir : les panoramiques fluides se compressent à merveille, car un seul vecteur remplace des milliers de pixels.

Les vecteurs de mouvement ne sont pas le mouvement 🖖

L'encodeur ne demande jamais ce qui a réellement bougé : il ne cherche que le bloc à la SAD minimale. Sur les zones plates ou bruitées, le vecteur gagnant peut donc pointer n'importe où, très loin du déplacement réel. Montez le curseur de bruit et regardez le champ de vecteurs se disperser dans le chaos. Voilà pourquoi les vecteurs de mouvement font un piètre flux optique mais une excellente compression : ils servent le débit, pas la physique.

UNE ÉTAPE D'UNE CHAÎNE — CE QUI ENTRE, CE QUI SORT, CE QUI CASSE ENSUITE

Où cette étape se situe dans la chaîne d'encodage

Un encodeur vidéo n'est pas un algorithme mais huit étapes dans un ordre fixe, et cet ordre n'est pas arbitraire : chaque étape existe parce que la précédente a rendu son travail possible. Cet outil modélise l'une d'elles. La chaîne ci-dessous renvoie aux sept autres.

Simulateur d'estimation de mouvement — trouve où chaque bloc s'est déplacé, puis code la différence au lieu du bloc

Ce qui entre
Une image P ou B accompagnée de ses images de référence.
Ce qui sort
Un vecteur de mouvement par bloc et un résidu — exactement ce que la prédiction a raté.
Ce que suppose l'étape suivante
La quantification reçoit un résidu, pas une image. Les résidus sont proches de zéro presque partout, et c'est précisément ce qui rend leur quantification bon marché.
Ce qui se casse ici
Une mauvaise correspondance ne produit pas une image fausse mais une image chère. Le résidu porte plus d'énergie, et le même réglage de quantificateur émet alors plus de bits. Cette étape change la taille de la sortie, pas ses réglages.

Problème entièrement résolu

  1. La fenêtre de recherche déduite de 225 positions par bloc 5 étapes

    Une recherche exhaustive de mouvement teste 225 positions par bloc, soit 14 400 au total. Déduisez-en la fenêtre de recherche, ainsi que le gain apporté par une recherche rapide.

    1. 225 est un carré parfait, et là réside l'indice : la recherche s'effectue dans une fenêtre carrée de 15 par 15 déplacements candidats, ce qui signifie de −7 à +7 pixels dans chaque direction.

    2. Diviser le total par le nombre de positions par bloc donne le nombre de blocs dans lesquels l'image a été découpée.

    3. Le coût augmente comme le carré du rayon de recherche, de sorte qu'agrandir la fenêtre devient vite très coûteux : un rayon de 7 coûte 225 positions, un rayon de 15 coûte 961, et un rayon de 31 coûte 3969.

    4. Cette croissance quadratique explique l'existence des recherches rapides. Une recherche en trois étapes échantillonne neuf points, affine, puis répète — 27 positions au lieu de 225.

    5. Huit fois moins chère, et non équivalente : elle descend vers un minimum local et peut passer à côté du meilleur vecteur correspondant si la surface d'erreur présente plusieurs creux.

    Réponse

    L’outil indique 14 400 points examinés, soit 225,0 par bloc. Tout l’enjeu pratique du codage vidéo est là : la recherche exhaustive donne le meilleur résultat, mais son coût croît comme le carré du rayon. Les encodeurs recourent donc tous à une heuristique, quitte à choisir parfois un vecteur moins bon. La ligne Énergie résiduelle (EQM) montre une partie du prix de cette erreur. Un mauvais vecteur laisse un résidu plus important, qui exige davantage de données pour être codé. Une recherche rapide du mouvement repose sur un pari concret : les bits supplémentaires dus à des vecteurs imparfaits coûteront moins que ceux que les ressources économisées permettront de gagner ailleurs.

Références (2)

Exemples de problèmes

  • Panoramique lent - Panoramique horizontal lent : résidu quasi nul, les vecteurs de mouvement pointent uniformément vers la droite
  • Panoramique rapide - Panoramique rapide : SAD plus élevée en bordure de la zone de recherche, résidus de forte énergie sur les bords
  • Zoom divergent - Mouvement de zoom avant : vecteurs divergeant depuis le centre, aucun vecteur de translation unique ne convient
  • Caméra portée bruitée - Caméra bruitée : SAD élevée malgré des vecteurs corrects — l'énergie du bruit domine le résidu