97
Benoît Piranda Benoît Piranda Équipe SISAR Équipe SISAR Université de Marne La Vallée Université de Marne La Vallée Synthèse d’image Synthèse d’image Stéréoscopique Stéréoscopique Outils de réalité virtuelle Outils de réalité virtuelle

Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Benoît PirandaBenoît PirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Synthèse d’imageSynthèse d’image

StéréoscopiqueStéréoscopiqueOutils de réalité virtuelleOutils de réalité virtuelle

Page 2: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Système de réalité virtuelleSystème de réalité virtuelleEnsemble de périphériques, communication avec Ensemble de périphériques, communication avec les sens de l’utilisateur les sens de l’utilisateur –– Vision 3DVision 3D–– Interaction espace réel / espace virtuel Interaction espace réel / espace virtuel –– Immersion sonoreImmersion sonore–– Autres : odeur, toucherAutres : odeur, toucher

Page 3: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Vision binoculaireVision binoculairePériphérique de séparation des images pour Périphérique de séparation des images pour chaque œilchaque œilPrincipePrincipe–– Système de séparation des sources lumineusesSystème de séparation des sources lumineuses–– Les deux images Les deux images

•• Doivent apparaître superposéesDoivent apparaître superposées•• Doivent être associées à un seul œil Doivent être associées à un seul œil

Page 4: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesCasque immersifCasque immersif–– Deux petits écrans Deux petits écrans –– Placés devant chaque œilPlacés devant chaque œil

AvantagesAvantages–– Toujours placé face à l’utilisateurToujours placé face à l’utilisateur–– Séparation des sources simpleSéparation des sources simple

InconvénientsInconvénients–– Système lourd et encombrantSystème lourd et encombrant–– Réceptions des signaux vidéo par câble Réceptions des signaux vidéo par câble

Page 5: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesLunettes activesLunettes actives–– Lunettes équipées d’un système d’occultation des Lunettes équipées d’un système d’occultation des

yeuxyeux–– Occultation synchronisée avec l’affichage à l’écranOccultation synchronisée avec l’affichage à l’écran–– Communication nécessaire entre l’émetteur et les Communication nécessaire entre l’émetteur et les

lunettes (infrarouge)lunettes (infrarouge)AvantagesAvantages–– Un ou deux vidéo projecteursUn ou deux vidéo projecteurs–– Séparation totale des sourcesSéparation totale des sources

InconvénientsInconvénients–– Système encore lourdSystème encore lourd–– Un seul utilisateur simultané regardant Un seul utilisateur simultané regardant

l’écranl’écran

Page 6: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lunettes activesLunettes actives

Émetteur vidéo alternantimage gauche et image droite

écranlunettes

yeux

Espace de rétro projection Espace de visualisation

Vidéo G/D

Page 7: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesLunettes passives colorées (anaglyphe)Lunettes passives colorées (anaglyphe)–– Décomposition de la lumière en deux couleurs Décomposition de la lumière en deux couleurs

complémentairescomplémentaires–– Filtres colorés complémentairesFiltres colorés complémentaires

•• Rouge / cyanRouge / cyan•• Vert / violetVert / violet•• Jaune / BleuJaune / Bleu

AvantagesAvantages–– Périphérique très légerPériphérique très léger–– Fonctionne avec un simple écranFonctionne avec un simple écran–– Coût très faibleCoût très faible

InconvénientsInconvénients–– Altération des couleurs de la scèneAltération des couleurs de la scène–– Un seul utilisateur simultané regardant l’écran Un seul utilisateur simultané regardant l’écran

Page 8: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemples d’image coloréeExemples d’image colorée

Page 9: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesLunettes à filtres polarisants linéairesLunettes à filtres polarisants linéaires–– Filtrage de la lumière se propageant dans un planFiltrage de la lumière se propageant dans un plan–– Plans orientés suivant deux axes orthogonauxPlans orientés suivant deux axes orthogonaux

((--45° et +45°)45° et +45°)

AvantagesAvantages–– Périphérique très légerPériphérique très léger–– Fonctionne avec un simple écran (non dépolarisant)Fonctionne avec un simple écran (non dépolarisant)–– Coût très faibleCoût très faible

InconvénientsInconvénients–– Un seul utilisateur simultané regardant l’écran Un seul utilisateur simultané regardant l’écran –– Ne supporte pas la rotation de la tête face à l’écranNe supporte pas la rotation de la tête face à l’écran

Page 10: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de projection stéréoscopiqueModule de projection stéréoscopique

Vidéo G

Vidéo D

filtrespolarisants

écran

lunettespolarisantes

yeux

Espace de rétro projection Espace de visualisation

Page 11: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesLunettes à filtres polarisants circulairesLunettes à filtres polarisants circulaires–– Deux sens différents pour chaque oeilDeux sens différents pour chaque oeil

AvantagesAvantages–– Périphérique très légerPériphérique très léger–– Fonctionne avec un simple écranFonctionne avec un simple écran

(non dépolarisant)(non dépolarisant)–– Supporte les mouvements de la tète face à l’écran Supporte les mouvements de la tète face à l’écran

InconvénientsInconvénients–– Un seul utilisateur simultané regardant l’écran Un seul utilisateur simultané regardant l’écran

Page 12: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Méthodes utilisées par les périphériquesMéthodes utilisées par les périphériquesAlioscopieAlioscopie–– Système de lentilles placées sur un écran LCD Système de lentilles placées sur un écran LCD

permettant de construire des zones spatiales devant permettant de construire des zones spatiales devant l’écran permettant la vision stéréoscopiquel’écran permettant la vision stéréoscopique

AvantageAvantage–– Aucun périphérique sur l’utilisateurAucun périphérique sur l’utilisateur

InconvénientInconvénient–– Supporte peu de mouvement de l’utilisateurSupporte peu de mouvement de l’utilisateur

Page 13: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Principe de la synthèse stéréoscopiquePrincipe de la synthèse stéréoscopiqueProduire deux images différentesProduire deux images différentes–– Une pour l’œil gauche, une pour l’œil droitUne pour l’œil gauche, une pour l’œil droit–– Correspond à deux caméras Correspond à deux caméras OpenGLOpenGL différentesdifférentes

Impose de synthétiser Impose de synthétiser –– Deux images par 24Deux images par 24èmeème de secondede seconde–– De la résolution des vidéoDe la résolution des vidéo--projecteursprojecteurs

•• Résolution actuelle Résolution actuelle 2x1024x7682x1024x7682x1200x9002x1200x900

Page 14: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Placement et direction des camérasPlacement et direction des camérasCaméraCaméra–– projection centraleprojection centrale–– décalées de l’espace interoculairedécalées de l’espace interoculaire–– dirigées parallèlementdirigées parallèlement

Page 15: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Vision binoculaireVision binoculairePlacement des caméra virtuellesPlacement des caméra virtuelles

Plan focal

Dis

tanc

e in

ter o

cula

ire

Page 16: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Vision binoculaireVision binoculaireCas d’un objet placé devant le plan focalCas d’un objet placé devant le plan focal

Page 17: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Vision binoculaireVision binoculaireCas d’un objet placé devant le plan focalCas d’un objet placé devant le plan focal

Page 18: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Création d'une paire d'images stéréo.Création d'une paire d'images stéréo.Paramètres de la pyramide de projection Paramètres de la pyramide de projection OpenGLOpenGLSystème de 2 caméras :Système de 2 caméras :–– observateur fixe devant l'écranobservateur fixe devant l'écran–– observateur se déplace devant l'écranobservateur se déplace devant l'écran

Page 19: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Images stéréoscopiques Images stéréoscopiques OpenGLOpenGLParamètres de projection Paramètres de projection OpenGLOpenGL–– Centre optiqueCentre optique–– Pyramide de projectionPyramide de projection

•• LeftLeft, right, right•• Top, Top, bottombottom•• NearNear, far, far

Page 20: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Images stéréoscopiquesImages stéréoscopiques OpenGLOpenGLDétermination Détermination des paramètres des paramètres de projection de projection pour un système pour un système de 2 caméras de 2 caméras virtuellesvirtuelles

droitedroite

gauchegauche

nearnear

focalefocale

diodio

leftleft

rightright

farfar

WW

planplanfocalfocal

Page 21: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemple d’images stéréoscopiquesExemple d’images stéréoscopiques

caméra gauchecaméra gauche caméra droitecaméra droite

Page 22: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

ExempleExemple

plan focalplan focal

Page 23: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Paramètres verticauxParamètres verticauxDétermination des Détermination des paramètres top et paramètres top et bottombottomIl ne doit pas y avoir de Il ne doit pas y avoir de décalage verticaux entre décalage verticaux entre les imagesles images

Page 24: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Analogies : scène réelle et scène virtuelleAnalogies : scène réelle et scène virtuelleAnalogies entre la scène réelle et la scène Analogies entre la scène réelle et la scène virtuellevirtuelle–– observateur / camérasobservateur / caméras

•• Les caméras représentent les yeux de l’observateur dans la Les caméras représentent les yeux de l’observateur dans la scène virtuellescène virtuelle

•• Distance interoculaire = écartement des camérasDistance interoculaire = écartement des caméras

–– écran / plan focalécran / plan focal•• L’écran est le support de l’imageL’écran est le support de l’image•• Le plan focal représente l’écran dans la scène virtuelleLe plan focal représente l’écran dans la scène virtuelle•• Distance observateur écran = distance focaleDistance observateur écran = distance focale•• Largeur de l’écran = largeur du plan focalLargeur de l’écran = largeur du plan focal

Page 25: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Analogies : scène réelle et scène virtuelleAnalogies : scène réelle et scène virtuelleTout est défini à un facteur d'échelle près :Tout est défini à un facteur d'échelle près :

dioobs

diocaméras

focaleobs

focalecaméras

largeurécran

largeurplan focal= =facteur d'échelle =

Page 26: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Paramètres des camérasParamètres des caméras

Page 27: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Paramètres des camérasParamètres des caméras

focaledroite=obsPosz

facteur d'échelle

leftdroite= near2.focaledroite

(W + 2.obsPosx

facteur d'échelle)

rightdroite=near

2.focaledroite(W - 2.obsPosx

facteur d'échelle)

Page 28: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Paramètres des camérasParamètres des caméras

topdroite= W2.focaledroite

( 2.obsPosy

facteur d'échelle)-near

ratio

ratio = largeur / hauteur

bottomdroite=W

2.focaledroite( 2.obsPosy

facteur d'échelle)+near

ratio

Page 29: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Configuration des caméras GLConfiguration des caméras GL

Page 30: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Effets de déplacement de l’observateurEffets de déplacement de l’observateurMouvements Mouvements pseudoscopiquespseudoscopiques–– Phénomènes optiques Phénomènes optiques –– Liés aux mouvements de l’observateurLiés aux mouvements de l’observateur–– Perturbent la perception 3DPerturbent la perception 3D

•• Déplacement de l’imageDéplacement de l’image•• Changement de dimensions de l’imageChangement de dimensions de l’image

Page 31: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesRapprochement de l’imageRapprochement de l’image

écran

Page 32: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesRapprochement de l’imageRapprochement de l’image

écran

l'observateur se rapproche de l'écran l'objet virtuel se rapproche de l'écran

Page 33: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesDéplacement de l’imageDéplacement de l’image

écran

Page 34: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesDéplacement de l’imageDéplacement de l’image

écran

l'observateur se décale par rapport à l'écran

l'objet virtuel se décale par rapport à l'écran

Page 35: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesChangement d’échelleChangement d’échelle

écran

Page 36: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesChangement d’échelleChangement d’échelle

écran

l'observateur se rapproche de l'écran diminution la taille de l’objet

Page 37: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesChangement d’échelleChangement d’échelle

écran

Page 38: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvements Mouvements pseudoscopiquespseudoscopiquesChangement d’échelleChangement d’échelle

écran

l'observateur se rapproche de l'écran agrandissement de l’objet

Page 39: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mouvement Mouvement pseudoscopiquepseudoscopiqueDéplacement de l’observateur devant l’écranDéplacement de l’observateur devant l’écran–– Modifie la position et la dimension visible des objetsModifie la position et la dimension visible des objets

Besoin d’une correction de l’image en fonction Besoin d’une correction de l’image en fonction de la position de l’observateurde la position de l’observateur–– Déplacement des caméras virtuellesDéplacement des caméras virtuelles

Périphérique d’acquisition de la position de Périphérique d’acquisition de la position de l’observateur devant l’écranl’observateur devant l’écran

Ensemble de caméra permettant le placement de Ensemble de caméra permettant le placement de l’observateurl’observateur

Page 40: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

AsservissementAsservissementDéplacement des projections des objets en Déplacement des projections des objets en fonction du déplacement de l’observateurfonction du déplacement de l’observateur–– Nécessite un périphérique d’acquisition de la position Nécessite un périphérique d’acquisition de la position

de l’observateur en temps réelde l’observateur en temps réel

écran écran

Page 41: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

AsservissementAsservissement

Page 42: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

AsservissementAsservissement

Page 43: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

AsservissementAsservissementPoint de vue de l’observateurPoint de vue de l’observateur

Page 44: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Benoît PirandaBenoît PirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Outils de réalité virtuelleOutils de réalité virtuelle

Programmation de la stéréoscopie sous Programmation de la stéréoscopie sous OpenGLOpenGL

Page 45: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

PrincipePrincipeUtilisation des complémentaires de couleursUtilisation des complémentaires de couleursRéalisation de deux images superposéesRéalisation de deux images superposées

1.1. Sélection d’un filtre de couleurSélection d’un filtre de couleur2.2. Définition de la caméra pour le premier œilDéfinition de la caméra pour le premier œil3.3. Dessin de la scèneDessin de la scène4.4. Sélection du filtre de couleur complémentaireSélection du filtre de couleur complémentaire5.5. Définition de la caméra pour le deuxième œilDéfinition de la caméra pour le deuxième œil6.6. Dessin de la scèneDessin de la scène

Page 46: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Outils Outils OpenGLOpenGL–– Fonction de filtrage des couleursFonction de filtrage des couleurs

–– glColorMask(r, v, b, a);

–– Coefficients de masquage des composantes de couleur Coefficients de masquage des composantes de couleur de l’imagede l’image

–– r, v, b & a : booléenr, v, b & a : booléen–– GL_FALSE = composante non affichéeGL_FALSE = composante non affichée–– GL_TRUE = affichage de la composanteGL_TRUE = affichage de la composante

–– Attention, le fond apparaît sous les couches à Attention, le fond apparaît sous les couches à GL_FALSEGL_FALSE

Page 47: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemple de projectionExemple de projection

glColorMask(1,0,0,0) glColorMask(0,1,1,0)

Page 48: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemple de programmationExemple de programmationFaux 3D par simple décalage des deux imagesFaux 3D par simple décalage des deux images

// effacement du buffer de couleurglClear(GL_COLOR_BUFFER_BIT);// masque rouge glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_FALSE); // image à l’origineglRasterPos2d(-1,-1);glDrawPixels(lx,ly,GL_RGB,GL_UNSIGNED_BYTE,image);// masque cyanglColorMask(GL_FALSE,GL_TRUE,GL_TRUE,GL_FALSE);// image décaléeglRasterPos2d(-1+8.0/lx,-1);glDrawPixels(lx,ly,GL_RGB,GL_UNSIGNED_BYTE,image);

Page 49: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur
Page 50: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Utilisation d’image réellesUtilisation d’image réellesPrise de vue décalée de la distance interoculairePrise de vue décalée de la distance interoculaire

Page 51: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur
Page 52: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Synthèse d’images stéréoscopiquesSynthèse d’images stéréoscopiquesSynthèse d’images en deux passesSynthèse d’images en deux passes–– Initialisation des Initialisation des buffers buffers de couleur et de profondeurde couleur et de profondeur–– Activation du filtre de l’œil gaucheActivation du filtre de l’œil gauche–– Réglage de la caméra gaucheRéglage de la caméra gauche–– Dessin de l’image de gaucheDessin de l’image de gauche–– Initialisation du Initialisation du buffer buffer de profondeurde profondeur–– Activation du filtre de l’œil droitActivation du filtre de l’œil droit–– Réglage de la caméra droiteRéglage de la caméra droite–– Dessin de l’image de droiteDessin de l’image de droite

Page 53: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

// effacement des buffers de couleur et de profondeurglClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);// masque rouge glColorMask(GL_TRUE,GL_FALSE,GL_FALSE,GL_FALSE); // Caméra de gauche

Page 54: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

ExemplesExemples

Page 55: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Benoît PirandaBenoît PirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Synthèse d’imageSynthèse d’image

Outils pour la réalité virtuelleOutils pour la réalité virtuelle

Page 56: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Atelier de réalité virtuelleAtelier de réalité virtuelle

projecteursvidéo

PC1

PC2

réseau

écran

caméra

utilisateur

enceintes

lunettesstylo

Page 57: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de projection stéréoscopiqueModule de projection stéréoscopiqueSystème de projection stéréoscopiqueSystème de projection stéréoscopique

Vidéo projection de deux flux vidéo superposésVidéo projection de deux flux vidéo superposésUtilisation de filtres polarisants passifsUtilisation de filtres polarisants passifsGrand écran de projection non dépolarisantsGrand écran de projection non dépolarisantsRétro projectionRétro projection

Page 58: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de projection stéréoscopiqueModule de projection stéréoscopique

Vidéo G

Vidéo D

filtrespolarisants

écran

lunettespolarisantes

yeux

Espace de rétro projection Espace de visualisation

Page 59: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de positionnement de l’utilisateurModule de positionnement de l’utilisateurSystème de positionnementSystème de positionnement

Acquisition vidéo de la scèneAcquisition vidéo de la scènePlacement tridimensionnel de l’utilisateur et d’outilsPlacement tridimensionnel de l’utilisateur et d’outils

AutoAuto--calibrationcalibration des camérasdes caméras

Page 60: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de positionnement de l’utilisateurModule de positionnement de l’utilisateur

CaméraDV

CaméraDV

Sources lumineuses

Page 61: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de positionnement de l’utilisateurModule de positionnement de l’utilisateurTraitementTraitement–– Extraction des «Extraction des « points chaudspoints chauds »»–– Corrélation des points chauds entre les deux sourcesCorrélation des points chauds entre les deux sources–– Calcul de la position 3DCalcul de la position 3D

Page 62: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Module de spatialisation du sonModule de spatialisation du sonSynthétisation Synthétisation du son du son –– pour chaque source pour chaque source –– en fonction de la position de l’utilisateuren fonction de la position de l’utilisateur

Page 63: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Traitements en temps réelTraitements en temps réelMachine d’acquisition d’imageMachine d’acquisition d’image–– Contrainte temporelleContrainte temporelle

•• 25 images secondes 25 images secondes –– Décompression des 2 flux DVDécompression des 2 flux DV–– Recherche des points chaudsRecherche des points chauds–– Calcul de la position 3D du pointCalcul de la position 3D du point–– Transmission des résultatsTransmission des résultats

Machine de synthèse d’image et de sonMachine de synthèse d’image et de son–– Contrainte temporelleContrainte temporelle

•• Au moins 25 images secondes Au moins 25 images secondes –– Réception des informations géométriquesRéception des informations géométriques–– Génération de la scène 3DGénération de la scène 3D–– Synthèse des deux images (binoculaire)Synthèse des deux images (binoculaire)–– Synthèse des 8 sonsSynthèse des 8 sons

Page 64: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Benoît PirandaBenoît PirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Outils de réalité virtuelleOutils de réalité virtuelle

Programmation temps réelProgrammation temps réel

Page 65: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation temps réelProgrammation temps réelPrise en compte du temps d’exécution dans Prise en compte du temps d’exécution dans l’écriture du programmel’écriture du programme–– Utilisation de fonctions câbléesUtilisation de fonctions câblées–– Calculs optimisés pour la vitesse d’exécution au Calculs optimisés pour la vitesse d’exécution au

détriment de la précision ou de la mémoire utilisédétriment de la précision ou de la mémoire utilisé•• Utilisation de tablesUtilisation de tables

Page 66: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation temps réelProgrammation temps réelUn exemple : copie d’une vidéo dans une image Un exemple : copie d’une vidéo dans une image de texture en temps réelde texture en temps réel–– Acquisition d’une ‘Acquisition d’une ‘frame’frame’ vidéovidéo–– Insertion dans une image 1024x1024Insertion dans une image 1024x1024–– Plaquage de la texturePlaquage de la texture–– Affichage de l’imageAffichage de l’image

VidéoVidéo TextureTexture

Page 67: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Mémorisation de l’image en mémoireMémorisation de l’image en mémoireUtilisation d’un tableau à une seule dimensionUtilisation d’un tableau à une seule dimension–– Simplification de l’accès à une celluleSimplification de l’accès à une cellule–– Optimisation des algorithmes de traitementOptimisation des algorithmes de traitement

Page 68: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Tableau à deux dimensionsTableau à deux dimensionsEn C : gestion des tableaux à deux dimensionsEn C : gestion des tableaux à deux dimensions–– Tableau de pointeur sur des tableaux (lignes)Tableau de pointeur sur des tableaux (lignes)–– Coordonnées d’une cellule tableau[ligne][colonne]Coordonnées d’une cellule tableau[ligne][colonne]float matrice[12][8];:Matrice[10][5]=1.0;

1.01.0

00 11 22 33 44 55 66 77 88 9900112233445566778899

10101111

Page 69: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

∑ ∏= +=

⎟⎟⎠

⎞⎜⎜⎝

⎛×

m

j

m

jkkj ni

1 1

Gestions des tableaux à n dimensionsGestions des tableaux à n dimensionsUn tableaux à n dimensionsUn tableaux à n dimensions–– Peut être mémorisé comme un tableau à 1 dimensionPeut être mémorisé comme un tableau à 1 dimension

•• Succession linéaire des cellulesSuccession linéaire des cellules•• Il faut définir un ordre de parcours du tableau linéaireIl faut définir un ordre de parcours du tableau linéaire

–– PrincipePrincipeSoit un tableau Soit un tableau tabtab de tailles de tailles [n[n11][n][n22]…[n]…[nmm]]La cellule La cellule tab[itab[i11][i][i22]…[]…[iimm]] est à la position :est à la position : ∑ ∏

= +=⎟⎟⎠

⎞⎜⎜⎝

⎛×

m

j

m

jkkj ni

1 1

Par exemple pour un tableau Par exemple pour un tableau tabtab de tailles [nde tailles [n11][n][n22]]La cellule La cellule tab[itab[i11][i][i22]] est à la position : iest à la position : i11*n*n22+i+i22

Page 70: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Gestions des tableaux à n dimensionsGestions des tableaux à n dimensionsPar exemple pour un tableau Par exemple pour un tableau tabtab de tailles [6][8]de tailles [6][8]La cellule La cellule tab[itab[i11][i][i22]] est à la position : iest à la position : i11*8+i*8+i22

4747464645454444434342424141404055

3939383837373636353534343333323244

3131303029292828272726262525242433

2323222221212020191918181717161622

151514141313121211111010998811

776655443322110000

7766554433221100

00 00

00

11

11

22

22

33

33

44

44

55

55

66

66

77

77

……

……

1414

1414

1313

1313

1212

1212

1111

1111

1010

1010

99

99

88

88

Page 71: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Tableaux et pointeursTableaux et pointeursUn tableau Un tableau –– Un pointeur sur le premier élémentUn pointeur sur le premier élément–– Un ensemble d’éléments contigus Un ensemble d’éléments contigus

int *ptr,tab[20];

ptr = tab;

*ptr ⇔ tab[0]

*(ptr+i] ⇔ tab[i]

ptr pointe sur le premier élément du tableauDonc le contenu de l’élément pointé parptr est le contenu du premier élément du tableau.

Donc le contenu de l’élément pointé par l’adresse de ptr+i est le contenu de la (i+1)ème cellule du tableau.

Page 72: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Parcours d’un tableauParcours d’un tableau

#define NB_ELEMENTS 10int i,n,tab[NB_ELEMENTS];:n=0;for (i=0; i<NB_ELEMENTS; i++){ if (tab[i]==1) n++;}

Exemple : compter le nombre de valeurs 1 dans un tableau

Page 73: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Autre solution avec des pointeursAutre solution avec des pointeurs

#define NB_ELEMENTS 10int i,n,tab[NB_ELEMENTS],*ptr;:n=0;ptr = tab;for (i=0; i<NB_ELEMENTS; i++){ if (*ptr==1) n++;

ptr++;}

Exemple : compter le nombre de valeurs 1 dans un tableau

Avantage :Avantage :•• ne recalcule pas l’adresse de l’élément à chaque itérationne recalcule pas l’adresse de l’élément à chaque itération

Page 74: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation temps réelProgrammation temps réelUn exemple : copie d’une vidéo dans une image Un exemple : copie d’une vidéo dans une image de texture en temps réelde texture en temps réel–– Source vidéo 720x576 tous les 25Source vidéo 720x576 tous les 25èmesèmes de secondede seconde–– Décompression de l’image vidéoDécompression de l’image vidéo–– Insertion dans une image 1024x1024Insertion dans une image 1024x1024–– Plaquage de la texturePlaquage de la texture–– Affichage de l’imageAffichage de l’image

vidéovidéo texturetexture

SRC_W = 720

SRC_H=576

TEX_W = 1024TEX_H = 1024

Page 75: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation temps réelProgrammation temps réelTemps de traitement disponibleTemps de traitement disponible–– 1/251/25èmeème de seconde soit 40 msde seconde soit 40 ms

Décompression logiciel d’un Décompression logiciel d’un frameframe DVDV–– Entre 18 et 20 msEntre 18 et 20 ms

Plaquage de la texture et création de l’image 3DPlaquage de la texture et création de l’image 3D–– Environ 15 msEnviron 15 ms

Reste pour l’insertion de la vidéo dans l’imageReste pour l’insertion de la vidéo dans l’image–– Environ 5 msEnviron 5 ms

Page 76: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Algorithme simplisteAlgorithme simplisteUtilisation de deux boucles imbriquéesUtilisation de deux boucles imbriquéesAccès absolu aux cellules des tableauxAccès absolu aux cellules des tableaux

int i,j;for (i=0; i<SRC_H; i++){ for (j=0; j<SRC_W*3; j++)

{ texture[TEX_W*3*i+j]=image[SRC_W*3*i+j];}

}

11 à 12 ms par image

Page 77: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Utilisation des pointeursUtilisation des pointeursPointeur sur chaque imagePointeur sur chaque image–– Déplacement simultané et accès relatifDéplacement simultané et accès relatif

int i=SRC_H,j;unsigned char *ptrTex=texture,

*ptrImg=image;// pour chaque ligne de l’imagewhile (i--){ j=TEX_W*3; // nombre de colonnes

// pour chaque colonnewhile (j--) *ptrTex++ = *ptrImg++;// décalage à la ligne suivanteptrTex+=(TEX_W-SRC_W)*3;

}9 à 10 ms par image

Page 78: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Détail sur les optimisationsDétail sur les optimisationsAccès absolu / relatif à la mémoireAccès absolu / relatif à la mémoire–– Accès absolu :Accès absolu :

•• Accès à une adresse mémoire avec un décalageAccès à une adresse mémoire avec un décalagetexture[TEX_W*3*i+j]texture+TEX_W*3*i+j

•• Lecture de plusieurs adresses mémoires (origine + décalage)Lecture de plusieurs adresses mémoires (origine + décalage)

–– Accès relatif :Accès relatif :•• Incrémentation par rapport à une position courante en Incrémentation par rapport à une position courante en

mémoiremémoireptrTex+=(TEX_W-SRC_W)*3*ptrTex++

•• Lecture d’une seule adresse mémoireLecture d’une seule adresse mémoire

Page 79: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Détail sur les optimisations (suite)Détail sur les optimisations (suite)Boucles forBoucles for–– Comparaison à chaque itérationComparaison à chaque itération

•• i < SRC_W i < SRC_W ii-- SRC_WSRC_W < 0 ?< 0 ?–– IncrIncréémentation en finmentation en fin

de traitementde traitement–– Permet l’utilisation de l’indice i dans la bouclePermet l’utilisation de l’indice i dans la boucle

Boucle optimisée Boucle optimisée whilewhile–– Comparaison à chaque itérationComparaison à chaque itération

•• i = 0 ?i = 0 ?–– DDéécrcréémentation en mmentation en mêême tempsme temps–– Ne permet l’utilisation de l’indice i dans la boucle (ou Ne permet l’utilisation de l’indice i dans la boucle (ou

dans l’ordre inverse)dans l’ordre inverse)

for (i=0; i<SRC_H; i++){…}

i=SRC_H;while (i--){…}

Page 80: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Outils de manipulation de la mémoireOutils de manipulation de la mémoireOptimisé pour la machine :Optimisé pour la machine :–– memsetmemset((((voidvoid*)*)destdest,char val,,char val,int nbreOctetsint nbreOctets))–– memcpymemcpy((((voidvoid*)*)destdest,(,(voidvoid*)*)srcsrc,,int nbreOctetsint nbreOctets))

int i=SRC_H;unsigned char *ptrTex = texture,*ptrImg=image;while (i--) { memcpy(ptrTex,ptrImg,SRC_W*3);ptrTex+=TEX_W*3;ptrImg+=SRC_W*3;

}

2 à 3 ms par image

Page 81: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Résultats en temps de calculRésultats en temps de calcul2 Machines différentes2 Machines différentes

2 à 32 à 3

9 à 109 à 10

11 à 1211 à 12

Temps en msTemps en msPCPC AthlonAthlon 1.8 1.8 GHzGHz

6 à 76 à 7SimplisteSimpliste

1 à 21 à 2MémoireMémoire

5 à 65 à 6PointeurPointeur

Temps en msTemps en msPC PC PentiumPentium IV 2.1 IV 2.1 GHzGHz

AlgorithmeAlgorithme

Page 82: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Benoît PirandaBenoît PirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Outils de réalité virtuelleOutils de réalité virtuelle

Programmation de l’acquisition vidéo Programmation de l’acquisition vidéo DV sous linuxDV sous linux

Page 83: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation de l’acquisition vidéo DVProgrammation de l’acquisition vidéo DVLe format DVLe format DV–– Compression de type JPEGCompression de type JPEG–– Images (Images (framesframes) indépendantes) indépendantes–– Synchronisation image et sonSynchronisation image et son

ImageImage–– Résolution : Résolution :

•• PAL 720x576, 25 images / secondePAL 720x576, 25 images / seconde•• NTSC 720x480, 30 images /secondeNTSC 720x480, 30 images /seconde

Son qualité CDSon qualité CD–– Fréquence : 44100 échantillons / secondeFréquence : 44100 échantillons / seconde–– Précision : 2 octets / échantillonPrécision : 2 octets / échantillon–– 1 ou 2 voies stéréos1 ou 2 voies stéréos

Page 84: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation de la vidéo DVProgrammation de la vidéo DVAccès au port DV Accès au port DV FireWireFireWire IEEE1394IEEE1394–– Bibliothèque libraw1394/raw1394.hBibliothèque libraw1394/raw1394.h

Décompression image et son du flux DVDécompression image et son du flux DV–– Bibliothèques <Bibliothèques <libdvlibdv//dvdv_types.h> et <_types.h> et <libdvlibdv//dvdv.h> .h>

Lecture entête Lecture entête aviavi

Page 85: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation de la vidéo DVProgrammation de la vidéo DVPrincipe de l’émission DVPrincipe de l’émission DV–– Envoi de 300 paquets de 480 octets chacunEnvoi de 300 paquets de 480 octets chacun

•• EntêteEntête•• Données son et image qui doivent être placées en mémoire à Données son et image qui doivent être placées en mémoire à

la voléela volée

–– 144000 octets pour une trame144000 octets pour une trame•• 720x576x3 = 1244160 octets pour l’image720x576x3 = 1244160 octets pour l’image•• 2x2x44100/25 = 7056 octets pour le son2x2x44100/25 = 7056 octets pour le son•• Soit 1 251 216 octets compressés Soit 1 251 216 octets compressés

Gain : 88,5 % Gain : 88,5 %

Page 86: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture du port Lecture du port FireWireFireWireFonctions de lecture du port IEEE1394Fonctions de lecture du port IEEE1394

#define CHANEL_ALL 63raw1394handle_t handle;int g_card=1;

/* demande d’un identifiant*/if (!(handle = raw1394_new_handle())) {exit(-1);}

/* ouverture d’un port sur la carte g_card */ if (raw1394_set_port(handle, g_card) < 0) { exit( -1); }

/* association d’une fonction de réception des paquets */ raw1394_set_iso_handler(handle, channel, raw_iso_handler);

/* association d’une fonction de réinitialisation du périphérique */ raw1394_set_bus_reset_handler(handle, my_reset_handler)

/* lancement de la lecture sur le portif (raw1394_start_iso_rcv(handle, channel) < 0) { exit( -1); }

Page 87: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture du portLecture du port FireWireFireWireFonction appelée à chaque réception d’un Fonction appelée à chaque réception d’un paquet, encodage des informations d’une paquet, encodage des informations d’une frameframe..

int raw_iso_handler(raw1394handle_t handle, int channel, size_t length, quadlet_t *data){ if (length>16)

{ unsigned char *p = (unsigned char*) & data[3],*buffer;int section_type = p[0] >> 5, dif_sequence = p[1] >> 4, dif_block = p[2];

if (section_type == 0 && dif_sequence == 0) { // fin de frame…}

switch (section_type){ case 0: memcpy(buffer+dif_sequence*150*80, p, 480); break;

case 1: memcpy(buffer+dif_sequence*150*80+(1+dif_block)*80,p,480); break; case 2: memcpy(buffer+dif_sequence*150*80+(3+dif_block)*80,p,480); break; case 3: memcpy(buffer+dif_sequence*150*80+(6+dif_block*16)*80,p,480); break;case 4: memcpy(buffer+dif_sequence*150*80+(7+(dif_block/15)+dif_block)*80,p,480); break;

}}return 0;

}

Page 88: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture du portLecture du port FireWireFireWire

/* fermeture du port, /* fermeture du port, indispensable pour une réouverture ultérieure */indispensable pour une réouverture ultérieure */

close_1394_driver(CHANEL_ALL,close_1394_driver(CHANEL_ALL, handlehandle); );

Page 89: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Programmation Programmation multimulti--processusprocessusDeux processusDeux processus–– Processus de lecture du port DVProcessus de lecture du port DV–– Processus d’affichageProcessus d’affichage

SynchronisationSynchronisation–– BufferDV BufferDV plein : plein : frame frame prêt à être décompresséprêt à être décompressé

Problème : Problème : –– Ne pas perdre de trame pendant la décompressionNe pas perdre de trame pendant la décompression–– Nécessité de deux Nécessité de deux BuffersBuffers

•• Buffer Buffer de chargementde chargement•• Buffer Buffer de décompressionde décompression

Page 90: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

int pitches[3]= { 720 * 3, 0, 0 };dv_decoder_t *td;

td=dv_decoder_new(TRUE,TRUE,FALSE);td->quality=DV_QUALITY_BEST;

dv_parse_header(td,buffer);dv_decode_full_frame(td,buffer,e_dv_color_rgb,&image,pitches);

if (dv_decode_full_audio(td, buffer,(int16_t**) audioBuffers)) { n = td->audio->samples_this_frame;…

}dv_decoder_free(td);

Utilisation de la bibliothèque Utilisation de la bibliothèque libdvlibdv//dvdv.h.hInitialisation du décodeur Initialisation du décodeur Décompression du flux vidéoDécompression du flux vidéoDécompression du flux sonDécompression du flux son

Page 91: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemples d’applicationsExemples d’applicationsAffichage des flux sur un maillage de facettesAffichage des flux sur un maillage de facettes–– Image : textureImage : texture–– Son : déformation de la surfaceSon : déformation de la surface

Page 92: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture d’une vidéo au format AVILecture d’une vidéo au format AVI--DVDVSyntaxe du format AVISyntaxe du format AVI–– Spécification au format RIFFSpécification au format RIFF

•• Codage binaire Codage binaire littlelittle--EndianEndian•• Code utilisant des quadruplets d’octetsCode utilisant des quadruplets d’octets

IdentifiantsIdentifiants : 4 caractères: 4 caractèresTailles, valeurs numériques : entier longTailles, valeurs numériques : entier long

Entête : 3 quadruplets puis les donnéesEntête : 3 quadruplets puis les données–– ‘‘RIFFRIFF’’tailletaille typetype donndonnééeses

•• tailletaille (entier long) : taille des donn(entier long) : taille des donnéées dans le fichier,es dans le fichier,•• typetype (cha(chaîîne de 4 caractne de 4 caractèères) : le format des donnres) : le format des donnéées, dans es, dans

notre cas cette chanotre cas cette chaîîne contiendra ne contiendra ‘‘AVI_AVI_’’,,•• donndonnééeses contient des structures de type :contient des structures de type :

LIST et des paramLIST et des paramèètres qui suivent tres qui suivent JUNK JUNK tailletaille

Page 93: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture d’une vidéo au format AVILecture d’une vidéo au format AVI--DVDV–– Structures de donnéesStructures de données

•• LIST LIST tailletaille typetype donndonnééesesType Type hdrlhdrl : paramètres de l’entête : paramètres de l’entête aviaviType Type movimovi : liste de blocs de données: liste de blocs de données

•• JUNK JUNK tailletaillePermet de décaler des données dans les fichiers AVIPermet de décaler des données dans les fichiers AVILes données ne doivent pas être interprétéesLes données ne doivent pas être interprétées

Page 94: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture d’une vidéo au format AVILecture d’une vidéo au format AVI--DVDVDonnées de type Données de type hdrlhdrl

typedef struct{signed long dwMicroSecPerFrame; // frame display rate(or 0L)signed long dwMaxBytesPerSec; // max. transfer ratesigned long dwPaddingGranularity; // pad to multiples of this// size; normally 2K.signed long dwFlags; // the ever-present flagssigned long dwTotalFrames; // # frames in filesigned long dwInitialFrames;signed long dwStreams;signed long dwSuggestedBufferSize;signed long dwWidth;signed long dwHeight;signed long dwReserved[4];

} MainAVIHeader;

Page 95: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Frame DVFlux audioFrame DVFrame DV

Lecture d’une vidéo au format AVILecture d’une vidéo au format AVI--DVDVDonnées de type Données de type movimovi–– Type :Type :

•• 2 parties2 partiesNuméro de flux (2 octets)Numéro de flux (2 octets)Type de donnée (2octets)Type de donnée (2octets)

•• Type 00dc Type 00dc tailletaille :: frameframe DV compressé pour le flux 00DV compressé pour le flux 00•• Type 00db Type 00db tailletaille :: frameframe nonnon--compressé pour le flux 00compressé pour le flux 00•• Type 01wb Type 01wb tailletaille : données audio pour le flux 01: données audio pour le flux 01•• Type 00pc Type 00pc tailletaille : changement de palette de couleur: changement de palette de couleur

moviXXXX00dc14400000dc14400001wbXXXX00dc144000

Page 96: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Lecture d’une vidéo au format AVILecture d’une vidéo au format AVI--DVDVFormat général des données AVIFormat général des données AVI--DVDV

RIFF ('AVI 'LIST ('hdrl'

'avih'(<Main AVI Header>)LIST ('strl'

'strh'(<Stream header>)'strf'(<Stream format>)[ 'strd'(<Additional header data>) ][ 'strn'(<Stream name>) ]...

)...

)LIST ('movi'

{SubChunk | LIST ('rec 'SubChunk1SubChunk2...

)...

}...

)['idx1' (<AVI Index>) ])

Page 97: Stéréoscopique Outils de réalité virtuellepiranda/CMS/ig8_stereo_rv.pdf · Système de réalité virtuelle zEnsemble de périphériques, communication avec les sens de l’utilisateur

Exemple de programmationExemple de programmationclass AVI_LIST{ protected : AVI_LIST *suivant;

public :AVI_LIST(AVI_LIST *s) { suivant=s; };virtual ~AVI_LIST() { delete suivant; };virtual int getNbreFrames();virtual int getDataIndex();

};class AVI_LIST_STRL : public AVI_LIST{ AVIStreamHeader stream;

public :AVI_LIST_STRL(ifstream &,AVI_LIST *s);

};class AVI_LIST_HDRL : public AVI_LIST{ MainAVIHeader main;

AVI_LIST *als;public :AVI_LIST_HDRL(ifstream &,AVI_LIST *s);~AVI_LIST_HDRL() { delete als; delete suivant; };int getNbreFrames();

};

class AVI_LIST_MOVI : public AVI_LIST{ int index;

public :AVI_LIST_MOVI(ifstream &,AVI_LIST *s);int getDataIndex();

};class AVI_RIFF{ AVI_LIST *premier;

public :AVI_RIFF(ifstream &);~AVI_RIFF() { delete premier; };int getNbreFrames();int getDataIndex();

};