Vidéo stéréoscopique 360° sur FPGA

Encadrants : 

Occurrences : 

2018

Nombre d'étudiants minimum: 

2

Nombre d'étudiants maximum: 

3

Nombre d'instances : 

1

La visualisation en relief repose sur la perception de l’effet de parallaxe de la vision binoculaire, en permettant à chaque œil de voir une image différente de l’autre. La majeure partie des solutions commerciales de distribution de contenu 3D (YouTube, BluRay 3D) proposent des images ou vidéos sous forme de couple stéréoscopique (vue droite + gauche), supposant un utilisateur regardant la vidéo à la même position que la caméra utilisée pour l’enregistrement (i.e., en face de l’écran, ligne des yeux horizontale). Le récent engouement de l’industrie pour la diffusion de vidéo 360 est problématique pour ces techniques : comme l’utilisateur est libre de choisir son point de vue et de tourner la tête à son gré, il faudrait prévoir autant de couples stéréoscopiques que d’orientations possibles de la ligne des yeux, ce qui n’est pas envisageable.

Nous vous proposons d’étudier une possible solution à ce problème : au lieu d’utiliser un couple stéréoscopique droite/gauche, nous utiliserons une image couleur et une carte de profondeur de cette image, donnant l’information sur la distance des pixels de l’image à la caméra. Cette technique permet de générer à moindre coup une image correspondant à un léger décalage de la caméra.

Le but de ce projet est la mise en place d’algorithme sur FPGA permettant la génération de ces « images tournées » à partir d’image couleur et de carte de profondeur. Les algorithmes seront alors utilisés pour afficher des vidéos 360 avec cartes de profondeur via un casque de réalité virtuelle.

Les travaux se composeront des étapes suivantes :

  • Définition de l’algorithme de génération de vue à partir d’un couple image/profondeur et d’une orientation donnée de caméra
  • Mise en place de l’algorithme sur FPGA
  • Construction de carte de profondeurs à partir de vidéos stéréo 360. Définition d’un format de compression simplifiant l’utilisation de ces images par le FPGA.
  • Mise en place du décodeur.
  • Mise en place du système de visualisation VR sous plateforme linux (arm et x64)

La programmation se fera sous en C/C++ pour la majeure partie sous environnement linux. Les élèves partiront de réalisation PAF des années précédentes et pourront exploiter de nombreuses bibliothèques d'outils existantes (compression, vision, synthèse 3D) afin d'arriver rapidement à un prototype fonctionnel, puis proposeront des solutions pour améliorer la chaine (qualité, latence, robustesse).

Enfin, en ce qui concerne la génération d’architectures matérielles sur FPGA nous expérimenterons une stratégie d’utilisation d’outils de synthèse d’architecture (HLS pour high level synthesis). La synthèse HLS permet en effet de coder l’architecture en C/C++ tout en guidant les outils pour générer des structures ad-hoc (parallélisme, pipeline).