Vidéo Inpainting

  |   Source

Depuis un bout de temps, je voulais corriger une vidéo faite par une amie dans le cadre d'un petit film amateur réalisé avec ses enfants. L'une de ces scènes était malheureusement entachée d'un cheveu venu se coler à l'objectif pendant la prise de vue.

/inpainting/orig.png

Il existe certainement des techniques assez simples pour aténuer un tel effet en jouant sur les différents canaux de la photo. Mais je n'ai pas su trouver.

Du coup, je me suis orienté vers la technique nommée inpainting qui consiste à reconstruire une partie de l'image à partir du reste.

Pour ce faire, je me suis appuyé sur la solution proposée par G'Mic que j'ai pu expérimenter à travers Gimp. Mais G'Mic manipule des images et moi j'ai une vidéo à traiter et il n'est pas encore intégré à Blender. J'ai donc extrait chacune des images de la séquence avec Blender. Ensuite, j'ai préparé le masque avec Gimp en blanc et noir à partir de la première image, car le cheveu a eu le bon goût de ne pas se déplacer durant la prise de vue. Enfin, un bout de script shell pour faire un inpaint sur chacune des images avec le masque précalculé.

/inpainting/mask.png/inpainting/fixed.png

Pour finir, j'ai pu remonter toute la séquence avec Blender.

Sur la séquence, il y avait une partie peu heureuse où le personnage principal est affecté par l'inpainting. Sur cette partie, il était préférable de mixer les images d'origines et les images reconstruites pour garder le meilleur des deux. Une première solution aurait pu être de faire cela à la main, avec Gimp. Mais comme il y avait quand même plus d'une cinquantaine d'images à traiter, j'ai préféré une autre solution. En l'occurence, j'ai joué avec les Masques et un peu de compositing de Blender. Le résultat n'est pas extraordinaire, mais il me parait tout à fait acceptable par rapport à l'état initial de la prise de vue.