La stabilisation logicielle
Catégorie(s) : Actualité , Le montage , Logiciel
Un peu de théorie sur l’image et la stabilisation
La technique de stabilisation vidéo par un logiciel peut être expliquée comme ceci:
- phase une: on extrait chaque image une par une, donc si vous filmez en 60 images / secondes vous aurez … 60 fichiers pour une seconde, incroyable non ? 🙂
- ensuite on compare chaque image deux par deux, l’actuelle et la précédente pour essayer de détecter un “bougé”
- mais il faut aussi avoir le “mouvement global” en tête pour ne pas croire que le déplacement horizontal est à corriger …
C’est assez facile à imaginer sur ce genre d’exemple: un fond noir et un seul objet dont le bougé est uniquement sur un axe vertical.
Il est donc possible d’extraire toutes les images unes par unes et de les “re-aligner” manuellement …
L’image deux est déplacée de 20 pixels vers le haut pour “coller” à l’image précédente (visible par transparence) et ainsi de suite … ne rigolez pas, c’est comme ça que les dessins animés étaient faits il n’y a pas si longtemps que ça (voir rotoscopie) c’est la technique de l’animation “image par image” (voir aussi le stop motion).
Après avoir fait ça plusieurs fois on peut se dire qu’un logiciel pourrait y arriver: c’est assez “simple” de voir que le requin “bouge” verticalement … voici ce que ça donne après stabilisation:
Nous pouvons maintenant comprendre que ça soit un peu plus compliqué lorsqu’il y a un arrière plan et qu’on ne filme pas “un plan fixe”, il faut que le logiciel arrive à différencier le mouvement normal du tremblement parasite … c’est là que certains développeurs deviennent de véritables magiciens !
En effet, les algorithmes de détection de tremblements et de stabilisation font appel à des compétences très pointues et absolument passionnantes. Le nombre d’astuces employées est étonnant (recherche d’une ligne d’horizon, détection si on est sur un plan fixe ou pas, recherche d’une déformation par des transformations géométriques etc.).
Vous pouvez regarder le code source du logiciel libre suivant si ça vous intéresse: https://github.com/georgmartius/vid.stab et lire de la documentation générique sur un sujet proche … étudiant(e)s voilà une bonne raison de s’accrocher en mathématiques !
Conséquences des techniques de stabilisations logicielles
Vous imaginez maintenant que si entre l’image 1 et l’image 2 on se déplace de 25 pixels vers le haut on aura donc un “trou” de 25 pixels en bas de l’image 2 ?
Regardons cette image pour comprendre le problème (simplifié à son maximum): la zone rouge en bas de l’image correspond au “fond perdu” lors du déplacement, et à l’autre bout les 25 pixels en haut de l’image sont “mangés” … la stabilisation va donc forcément provoquer ce genre de choses sur vos images et l’astuce pour s’en sortir sera donc que le logiciel fasse :
- soit un “petit zoom” dans l’image (conséquence: une légère dégradation de la qualité vu que certains pixels vont être “inventés”)
- soit découper l’image en respectant le ratio (conséquence: la taille de la vidéo sera un peu plus petite que l’original)
- soit duplique les pixels de l’image précédente + fondu de l’image suivante pour la zone concernée (un léger flou où zone dégradée mais en dehors du sujet principal, souvent en arrière plan, est-ce bien gênant après tout ?)
- … il y a sans aucun doute plein d’autres astuces
C’est aussi dans cette situation qu’on pourrait imaginer filmer en “un peu plus grand” que la résolution de production du film. Par exemple si vous filmez en 1920×1080 et que votre film sera produit en 1280×720 c’est tout bon ! votre rush sera en 1920×1080, le résultat de la stabilisation sera peut-être en 1840×1035 (le ratio est conservé) et donc la “réduction” finale vers le 1280 ne devrait poser aucun problème.
N’oubliez pas qu’il en sera de même à droite et à gauche de l’image si vous avez un tremblement horizontal en prime !
Revenons à la réalité
La réalité du plongeur sous-marin vidéaste est “encore pire” ! car nous bougeons selon 5 axes (horizontal, vertical, roulis, tangage et lacet) et les systèmes de stabilisation de nos appareils, caméras et autres dispositifs vidéo sont mis à rude épreuve.
C’est là qu’on peut mesurer la grande qualité du matériel qui est proposé à l’heure actuelle.
Sauf que … dans la série des équipements que nous affectionnons particulièrement en 2016, se trouve l’appareil Panasonic GX8 assemblé au redoutable objectif Olympus 12-50 qui a la capacité de basculer en mode “macro” et offre donc une plage d’utilisation très intéressante (article de présentation de ce matériel à venir).
Seulement voilà, en mode vidéo la stabilisation du boîtier Panasonic se débraye lorsque cet objectif est utilisé (alors qu’en photo elle est active) !
Outre le fait qu’il semblerait que ça soit plus un bug ou une simple limitation software nous avons creusé le problème et il semblerait que ce soit même “pire” que ça: certaines vidéos “tremblent” et d’autres non ! En attendant de trouver le fin mot de l’histoire et de faire une batterie de tests pour isoler le cas de figure où ce bug se produit nous vous proposons aujourd’hui de mettre en œuvre une solution logicielle à utiliser sur votre ordinateur pour corriger ce tremblement après coup.
Un petit logiciel pour rendre les appels à ffmpeg plus simples
Comme c’est Noël, l’équipe de videosub est contente de vous offrir gratos un logiciel libre pour stabiliser vos vidéos: vous pouvez le télécharger ici:
- pour windows choisissez le fichier setup.exe dans la liste;
- (si une version GNU/Linux vous intéresse prenez contact avec nous ou lisez l’article jusqu’au bout);
- (et pourquoi pas imaginer une version pour osx ?)
Une fois installé vous pouvez le lancer et constater que l’interface est minimaliste … il vous suffit de glisser/déposer votre fichier mp4 à stabiliser sur l’interface du logiciel, patienter le temps que le message passe au vert et récupérer votre fichier stabilisé tout simplement !
Et voici le résultat
En situation réelle
Isabelle nous ayant proposé de travailler sur un rush impacté par le “bug” du GX-8+Objectif Olympus (enfin, c’était même la principale motivation à cette recherche de solution de stabilisation) voici ce que ça donne:
À vous de voir si ça peut vous être utile !
Mais quels sont les logiciels qui se cachent “dessous” ?
Si ça vous intéresse de savoir ce qui “tourne” sous le capot, sachez que ce sont les logiciels libres ffmpeg + vid.stab qui sont appelés à la rescousse. En effet, ça fait quelques années que nous regardons de très près les différentes solutions de stabilisation d’images dans le monde du logiciel libre et il est temps de les utiliser:
Le travail se fait en deux passes:
- la première permet de calculer la matrice de déformations à appliquer à la vidéo:
ffmpeg -i video_tremblotante.mp4 -vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform_vectors.trf -f null -
- la seconde applique cette matrice de déformation et crée un nouveau fichier “stabilisé”:
ffmpeg -i video_tremblotante.mp4 -vf vidstabtransform=input=transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -preset slow -tune film -crf 18 -vb 20M -acodec copy video_stable.mp4
Conseils pour obtenir un meilleur résultat
Si vous créez un effet de bougé au début et à la fin de chacun de vos rushs (comme nous) lorsque vous appuyez sur le bouton “rec” de votre matériel vidéo nous vous conseillons de “couper” votre rush AVANT d’essayer de le stabiliser. En effet vos bougés vont perturber l’algorithme de détection de tremblements et le résultat en sera affecté.
Code source etc.
Et si vous voulez contribuer, compiler une version linux (ou mac), le code source est proposé sur la forge logicielle suivante : http://redmine.abuledu.org/projects/videosub-stabilisation/
Abonnez-vous à la newsletter
Cet article vous a plu ? vous voulez recevoir un mail lorsqu’une nouveauté arrive sur vidéosub ? alors abonnez-vous à notre newsletter.
3 Comments
annie
24 décembre 2016 à 7:59 pmLe résultat est bluffant.
Dreux
25 décembre 2016 à 6:37 pmLe resultat est à la hauteur du résultat.
Super boulot Éric
christophe B
25 décembre 2016 à 8:15 pmsuper, effectivement ça l’air de marcher au poil sur ton sujet ,à essayer . Merci eric