Toutes les cartes de disparité utilisées sont calculées par l'algorithme sgbm de opencv-contrib de OpenCV-3.1.0 avec les options kernel size à 5 et CV_DENSE_CENSUS pour descripteur binaire.
Une image est calculée à partir d'une image du dataset de middlebury et les autres à partir d'une image fait par le banc stéréo de l'oculus (image disponible sur STEREO MATCHING AND DEPTH MAP).
Différentes positions de caméra virtuelle ont été testées (translation de 50, 100, 200 mm). Une image est faite sans interpolation bilinéaire sur l'image d'entrée réelle (ie. le pixel le plus proche est choisi).
Résultat du DIBR sans interpolation avec une translation de [-50, 0, 0] par rapport à la caméra d'entrée : Résultat du DIBR avec interpolation avec une translation de [-50, 0, 0] par rapport à la caméra d'entrée :
Résultat du DIBR avec interpolation avec une translation de [-100, 0, 0] par rapport à la caméra d'entrée : Résultat du DIBR avec interpolation avec une translation de [-200, 0, 0] par rapport à la caméra d'entrée :
La publication1) suivante décrit la technique de IBR que l'on utilise : http://www.sciencedirect.com/science/article/pii/S0923596506001329
Cette technique est une technique de DIBR (depth image based rendering). Il existe différente méthode : 3D image warping, triangular meshes, relief texture mapping, inverse mapping, occlusion compatible scanning. Plus de description2) sur le lien suivant : http://www.epixea.com/research/multi-view-coding-thesisse18.html
On retrouve principalement le DIBR dans des applications pour la vidéo 3D. Voici d'autres documents3)4) intéressants pour l'aspect “overview”: http://www.apsipa.org/proceedings_2010/pdf/APSIPA197.pdf http://link.springer.com/chapter/10.1007%2F978-1-4419-9964-1_5
Certain algorithme utilise un mixte entre “forward projection” (d'un pixel de l'image réelle vers l'image virtuelle à générée) pour l'image de disparité et “backward projection” (d'un pixel de l'image virtuelle à générée vers l'image réelle) pour l'image couleur ce qui permet d'éviter certain artefact visible si on utilisait simplement la “forward projection” pour l'image couleur directement : cf chap 3, “Background work on DIBR: State-of-the-art” de la thèse Layered Depth Images for Multi-View Coding5) disponible sur le lien : https://tel.archives-ouvertes.fr/tel-00758301/
Voici quelques publi, où ils ont cherché à remplir les trous dus au manque d'information dans la depthmap ou dus au occlusion en utilisant les superpixels :
OpenCV3 a des algorithmes de superpixels disponibles (LSC, SEEDS, SLIC) : http://docs.opencv.org/3.0-beta/modules/ximgproc/doc/superpixels.html# http://docs.opencv.org/master/df/d6c/group__ximgproc__superpixel.html#gsc.tab=0
On en trouve aussi sur Matlab : http://www.peterkovesi.com/projects/segmentation/ https://www.cs.sfu.ca/~mori/research/superpixels/