Nous avons tout d'abord implémenté directement le déplacement de points. Le principe est de faire évoluer les points de l'image 1 vers leur position selon le point de vue 2 et en même temps de faire évoluer les point des l'image 2 vers leur position selon le point de vue 1. Nous devons donc tout d'abord précalculer le déplacement de chaque pixel des images de références .
Soit un pixel à la position et de profondeur de l'image de départ, la matrice de transformation de la caméra du point de vue, la matrice de transformation du point de vue d'arrivée, on obtient la position d'arrivée par (reprojection). Le déplacement du point vaut donc , et est stocké dans une texture de définition égale à la résolution que l'image.
Une fois ce précalcul effectué, le rendu s'effectue en déplaçant chaque pixel de l'image de départ selon un paramètre représentant la position de la caméra virtuelle entre les deux point de vue. Etant donné que plusieurs pixels peuvent se retrouver au même endroit, nous devons utiliser un tampon de profondeur pour gérer le problème de visibilité des pixels. La figure 2.13 montre le résultat de l'interpolation pour chaque point de vue séparément.
|
Pour superposer les deux images, nous devons prendre en compte la profondeur des points déplacés. Etant donné un point (dans l'espace de la caméra) d'une image de départ, transformé selon le point de vue d'arrivée en , nous créons le vecteur de déplacement . Pour un instant de l'interpolation, le pixel est linéairement interpolé aux coordonnées . Nous ne le dessinons que si sa profondeur interpolée est inférieure à la profondeur stockée dans le tampon de profondeur.
|
La ligne supérieure de la figure 2.14 montre le résultat de cette superposition.
Avec cette méthode, les informations suivantes sont stockées par pixel (pour chaque point de vue de référence):
Porquet Damien 2005-03-02