• Aucun résultat trouvé

CHAPITRE 6 UTILISATION DYNAMIQUE DU FACTEUR D’ÉCHELLE VISUELLE

6.3. Correction de l’image en temps réel

Après cette revue des méthodes psychophysiques de détermination de seuil, nous allons à présent aborder un problème de correction d’image que nous avons du résoudre pour mener à bien notre expérimentation.

6.3.1. Position du problème

Pour projeter une scène visuelle sur un écran cylindrique (ou tout autre écran non plan), il est nécessaire d’effectuer une déformation de celle-ci, comme nous l’avons vu dans la partie 5.2.3 sur la restitution visuelle du simulateur SAAM. Cette déformation correspond à un point de vue donné. Lorsqu’on utilise la technique du facteur d’échelle visuelle, ce point de vue est amené à changer : de ce fait, la déformation de l’image effectuée doit changer avec le point de vue.

Nous avons vu que sur le simulateur SAAM, la correction géométrique de l’image ne pouvait pas être effectuée en prenant en compte explicitement le point de vue. Elle est effectuée grâce à un ensemble de différents opérateurs de déformations d’image. Pour l’expérimentation précédente, plusieurs corrections d’images ont donc été calibrées pour les différents points de vue correspondant aux différents facteurs d’échelle utilisés. Dans l’étude envisagée dans ce chapitre, on désire faire varier dynamiquement le facteur d’échelle visuelle, et donc le point de vue. La déformation de l’image doit donc être modifiée en temps réel, ce qui n’est pas possible avec la configuration actuelle du simulateur. En effet, il est uniquement possible d’effectuer une déformation que l’on peut qualifier de « statique », car ne pouvant varier pendant la simulation, et correspondant à un seul point de vue.

Nous avons donc mis au point une technique permettant de rajouter une deuxième déformation que l’on qualifiera de « dynamique ». Cette déformation « dynamique » est calculée en temps réel en fonction de la position du point de vue courant par rapport au point de vue de référence de la déformation « statique » et en fonction également des géométries de l’écran et du plan de projection de la caméra. Cette déformation est faite via un pixel shader. La Figure 79 présente la géométrie du problème à résoudre.

6.3 Correction de l’image en temps réel 111 On nomme C l’écran cylindrique sur lequel est projetée l’image. L’équation de ce cylindre est supposée connue. On nomme P le plan de projection de la caméra, connu également et défini par le point Q et les vecteurs et . La caméra est asymétrique (voir 4.3.5) : lorsque le point de vue est déplacé, ce plan reste constant. La déformation « statique » calibrée pour le point de vue Eref fait que pour la position des vidéoprojecteurs

par rapport à l’écran, un pixel M du plan de projection de la caméra est projeté en N tel que Eref, M et N soient alignés.

Changeons maintenant la position du point de vue, par exemple au point E. Lorsque l’image est calculée, un objet 3D est affiché au pixel P. Pour que l’image affichée sur l’écran soit géométriquement correcte pour un observateur placé en E, il faudrait que ce pixel soit affiché en N sur l’écran cylindrique tel que E, P et N soient alignés. Or la déformation « statique » fait que ce pixel P sera affiché en N’ (non représenté sur la Figure 79) tel que Eref,

P et N’ soient alignés. Le pixel placé initialement en P doit donc être déplacé en M afin d’être projeté en N par la déformation statique.

Le pixel shader que nous avons développé effectue cette transformation. Chaque pixel P de l’image calculée est déplacé au point M correspondant en fonction de la position du point de vue courant E, du point de vue de référence Eref, de la forme de l’écran

cylindrique C et du plan de projection de la caméra P. Pour être exact, le shader effectue un calcul un peu différent : un shader reçoit en entrée une image (ici l’image à déformer) et calcule pixel par pixel l’image qu’il fournira en sortie (image déformée). Le raisonnement à effectuer est donc de partir du point M et de chercher le point P correspondant dont il faut récupérer la couleur pour l’attribuer au point M.

6.3.2. Résolution du problème Données du problème

On connaît :

 la position du point de vue de référence

;

 la position courante du point de vue ;

 le plan P, grâce au point et aux vecteurs et ;

 le cylindre C, de rayon R et d’axe de révolution ;

 les coordonnées et du point M.

Calcul du point M

Par définition, on a :

Calcul du point N

On sait que N appartient au cylindre C, on peut donc écrire ses coordonnées sous la forme :

On sait que , et sont alignés. On a donc :

avec avec Or : , d’où :

On choisit la solution telle que , en on en déduit avec

Puis , et

avec .

Calcul du point P

On cherche les coordonnées s et t du point P. Le vecteur normal au plan P, est défini par :

On sait que P appartient à la droite (EN). On peut donc définir entièrement le point P avec le réel , tel que :

6.3 Correction de l’image en temps réel 113 D’où :

On en déduit alors les coordonnées s et t du point P par : 6.3.3. Implémentation de la solution

Ce calcul a été implémenté dans un pixel shader, qui a été utilisé pour l’étude expérimentale ci-après. Le code de ce shader est donné en Annexe C .

6.4.

Mesure expérimentale du seuil de perception du