Étude de la perception de la profondeur par parallaxe de mouvement

Réalisé par Cécile Fonnard, Marcel Lancelle, Guillaume Tetu
Projet du cours "Systèmes de Réalité Virtuelle et de Réalité Augmentée" de l'ENSIMAG.
 

L'objectif de ce projet était d'étudier la perception de la profondeur en fonction de différents indices visuels, dans le cadre d'applications de réalité virtuelle immersives. OpenGL permet de générer l'indice de perspective, grâce à notre système de suivi nous avons pu générer l'indice de parallaxe de mouvement, enfin, grâce à l'usage de lunettes à obturateurs nous avons pu aussi tester l'indice de disparité binoculaire (stéréo). Malheureusement, le temps nous a manqué pour réaliser une étude comparative formelle.

La vidéo (Quicktime 5, 15.1 Mo ou MPEG, 21.7 Mo) montre l'utilisation de la parallaxe avec un jeu de puissance 4 en 3D, puis avec un autre jeu pour lequel la parallaxe a été exagérée par rapport à la perception naturelle. Ce dernier jeu fait intervenir plusieurs grilles parallèles et un petit carré rouge. Le jeu consiste à déterminer à quel plan appartient le carré rouge. On suppose que l'utilisateur se déplace dans un plan parallèle à l'écran.

Le développement du projet s'est décomposé en quatre parties: suivi du visage en vision par ordinateur, suivi du visage grâce à un capteur de position magnétique (Ascension Flock of Birds), pilotage de lunettes à obturateurs (Stereographics StereoEyes), et applications ("puissance 4", "grilles") avec rendu de scènes 3D sous OpenGL.

Suivi du visage en vision par ordinateur

Le suivi du visage se fait par corrélation. On recherche dans l'image filmée par la caméra une zone caractéristique du visage, initialisée dans un pattern rectangulaire. Cette zone caractéristique est située entre les deux yeux. La recherche est limitée à une zone de recherche. On fait parcourir au pattern cette zone de recherche, et pour chaque position du pattern dans la zone de recherche, on calcule une fonction de corrélation. Le maximum de la fonction de corrélation sur la zone de recherche donne la position du pattern, et la zone de recherche est recentrée sur la nouvelle position du pattern pour l'itération suivante. On peut voir sur la vidéo la phase d'initialisation : on demande à l'utilisateur de se placer face à la caméra de façon à avoir la fameuse zone caractéristique dans le carré noir qui apparaît à l'image.
Les coordonnées ainsi trouvées (du pattern dans l'image) sont communiquées à l'application OpenGL ; la caméra OpenGL est déplacée pour orienter l'image.
La communication entre l'application de suivi et l'application OpenGL se fait par sockets.

Capteur de position magnétique, lunettes à obturateur

La mise en oeuvre du localisateur magnétique s'est révélée plus complexe que prévu du fait de problèmes d'interfaçage système avec le système Linux. Des problème du même niveau se sont présentés avec les lunettes, mais finalement nous avons réussi à tester la stéréo.

Application avec rendu 3D sous OpenGL

L'application Puissance 4 a été développée comme exemple de tâche réelle (le jeu) nécessitant la perception de la profondeur. L'application Grille était destinée à mener une étude utilisateur formelle permettant de comparer l'efficacité des différents indices de perception de la profondeur. Malheureusement, nous n'avons pas eu le temps de mener une telle étude.

Les deux applications sont programmées de telle sorte que la position de la caméra peut être contrôlée par un autre programme grâce aux données reçues sur une connexion socket. De plus, les deux applications peuvent être configurées pour générer deux images "décalées" afin de créer l'effet stéréoscopique.

Conclusion

Le fait de faire intervenir la parallaxe dans des conditions d'immersion trouve son application en médecine. La parallaxe de mouvement peut permettre de placer le médecin dans des conditions plus naturelles et intuitives, de respecter la synchronisation action/perception, et de faciliter ainsi ses manipulations.