970 likes | 1.23k Views
Méthodes de rendu utilisant les images. Nicolas Holzschuch i MAGIS/GRAVIR IMAG Nicolas.Holzschuch@imag.fr. Rendu « classique ». Modèle géométrique Modeleurs, modélisation,... Affichage Z-buffer Interpolation des couleurs Illumination Plaquage de texture. Problèmes.
E N D
Méthodes de rendu utilisant les images Nicolas Holzschuch iMAGIS/GRAVIR IMAG Nicolas.Holzschuch@imag.fr
Rendu « classique » • Modèle géométrique • Modeleurs, modélisation,... • Affichage • Z-buffer • Interpolation des couleurs • Illumination • Plaquage de texture
Problèmes • Difficile de modéliser le réel • Prend du temps • Prend de la place en mémoire • N'est jamais aussi bon que le réel • Complexité variable en fonction de la position • Vitesse de rendu variable • Mauvais pour l'interactivité
Utiliser les images • Qualité visuelle parfaite • Modèle du monde réel idéal si photo • Image de synthèse poussée • Affichage indépendant de la complexité géométrique • Pourquoi on n'y a pas pensé plus tôt ? • Comment on bouge le point de vue ? • Besoin d'informations géométriques supplémentaires • Informations partielles sur le monde • Algorithmes pour boucher les trous
Informations géométriques • Fournies par l'utilisateur • Implicites : • L'appareil n'a pas bougé, seulement tourné • Correspondances entre deux vues • Explicites : • Profondeur à chaque pixel • Modèle géométrique simplifié • Modèle géométrique complexe
Difficultés • Profondeur, modèle géométrique : • Évident pour une image de synthèse • Difficile pour un objet réel • Vues multiples d'un objet : • Facile avec un objet réel • Coûteux avec des images de synthèse
Degrés de liberté • Tourner l'observateur sans déplacement • Tourner l'objet sans déplacement • Tourner et déplacer l'observateur • Déplacement libre de l'observateur • Sans sortir des limites du modèle
Matériel nécessaire • Caméra libre • Grille de calibration • Caméra tournant sur un pied • Calibrée, pied calibré, déplacement cylindrique • Caméra montée sur potence • Déplacement commandé par ordinateur • Règle intuitive : • Plus le matériel est simple, plus il faudra fournir d'informations supplémentaires
Classification • Recherches en cours • Explosion depuis 1995 • Nombreuses directions de recherche • Pas de vue d'ensemble, unifiée • Pas de classification simple • Pas de cours ?
Quicktime VR • Photos panoramiques • Projection cylindrique • Construction semi-autom. • Warping : • Conversion en image plane • Interpolation entre les panoramas
Acquisition • Construction du panorama semi-automatique • En théorie c'est automatique mais ça rate 1 ou 2 images • Recouvrement entre les images (> 50 %) • Règlage luminosité-contraste automatique
Image-Based Rendering • Fondements mathématiques • Fonction plénoptique • Échantillonnée plus ou moins régulièrement • Interpolation entre les échantillons • Processus complet : • Acquisition (images cylindriques) • Mise en correspondance des cylindres • Reconstruction de la fonction
La fonction plénoptique P(q,f,l,Vx,Vy,Vz,t)
Acquisition • Images cylindriques • Caméra en rotation sur un axe • Retrouver les paramètres de la caméra et les angles de rotation
Acquisition des cylindres • 2 images vues d'un même point de vue : • (x,y) : pixel dans image I. (x',y') position correspondante dans image I'.
Calibration • Hi : transformation (homogène) • S : part intrinsèque (liée à la caméra) • Ri : part extrinsèque (la rotation de la caméra) • Ri : rotation d'axe y, d'angle q. • Premier objectif : déterminer les Ri. • Ensuite, on en déduira S, puis on affinera les Ri
Calibration • Près du centre optique de l'image, Ri agit presque comme une translation en x. • (Cx,Cy) : intersection de l'axe de la caméra et du plan de l'image • Première approximation : milieu de l'image • Trouver la translation en x qui minimise la distortion. • Puis : • Première estimation des Ri et de f
Calibration de la caméra • S=WxWzP • s : distorsion. Déviation par rapport à une grille régulière • r : aspect ratio de la grille • f : focale (en pixels) • (Cx,Cy) : intersection de l'axe de la caméra et du plan de l'image • Wx, Wz : imperfections variées de la caméra
Calibration de la caméra • On minimise la fonction : • Avec les données de départ : • On réinjecte (Cx,Cy) dans l'étape précédente
Correspondance entre les cylindres • Deux cylindres de vues • Établir les positions relatives des cylindres • Centre du cylindre, rotation des axes, champ vertical, position de l’équateur = 6 inconnues • champ vertical, position de l’équateur : déja estimées dans l’étape précédente. • L’utilisateur désigne des points de l’espace dans les deux cylindres • Un point sur un cylindre = un rayon dans l’espace • Un point sur chaque cylindre : deux rayons • Intersection des rayons : on a la position relative
Correspondance entre les cylindres • Les rayons ne se rencontrent pas : • On prend le point le plus proche des deux rayons • On prend plusieurs points de correspondance • de 12 à 500 • Minimisation d’une fonction à 12 variables • 500 points à la main ? • géométrie épipolaire du cylindre • épipole : droite, projection d’un rayon sur une vue • pour le cylindre : ce n’est pas une droite
Géométrie épipolaire du cylindre • Rayon sur le cylindre a : (a,va) • Ligne paramétrée sur le cylindre b : v()
Reconstruction de la fonction plénoptique • Images de référence (déjà calculées, cylindriques) • Images de disparité : • Pour chaque sur cylindre a, trouver • Une image de disparité par paire de cylindres • Nouveau point V : • On a la disparité en fonction de cot() et cos(A-) • On stocke cot() dans les images de disparité • On précalcule cos(A-) pour chaque valeur de . • Nouvelle image de disparité en temps réel
Reprojection plane • Une fois qu’on a la disparité autour de V, on reprojette sur un plan • En fait, on combine les deux étapes : • On a x(,v) et y(,v) coordonnées de la projection du pixel (,v) de l’image cylindrique A • En tenant compte de la disparité avec le cylindre B • Plusieurs pixels peuvent se projeter au même endroit • problèmes de visibilité • ordre de traitement des pixels • de l’arrière vers l’avant
On y est presque • La grille produite par la reprojection de l’image A est irrégulière : • On ré-échantillonne • footprint : contribution de chaque pixel de A à l’image • taille du splatting : en fonction des disparités et des dérivées épipolaires • La méthode de visibilité traite les « plis » du maillage • Il reste les « déchirures » : • Interpolation entre les pixels voisins • Combinaison de plusieurs images de référence
Lightfield/Lumigraph • Réduction de la fonction plénoptique • 4 dimensions au lieu de 5 • Plus facile à interpoler • Pas d'occlusions • Permet de tourner autour d'un objet
4 dimensions • Chaque image est une tranche 2D d'une fonction 4D • Créer le Lightfield : insérer des images 2D dans un champ 4D • Paramétrisation ? • 2 plans donnés, chacun paramétré • Une ligne est paramétrée par ses intersections avec les deux plans : (u,v) et (s,t) • L(u,v,s,t)
Light slab • Ensemble des rayons qui traversent deux quadrilatères • Représentation efficace : • Conversions linéaires • Peu de calculs
Espace des droites • Droite définie par (r,q) • Échantillonnage régulier et complet
Lightfield : création • Par images de synthèse : • Multiples images • (x,y) devient (s,t) • Implique perspectives tordues • Pré-filtrage pour anti-aliasing • Par photos : • Caméra contrôlée par ordinateur
Caméra contrôlée par ordinateur • Mouvement plan de la caméra • Position connue • 4 vues : tourner l'objet • Tourner la lumière en même temps
Lightfield :stockage • Très gros (1.6 Go) • Très redondant • Compression : • Discrétisation vectorielle (1:24) • Suivie de compression LZW (1:5) • Décompression : • LZW au chargement • Dé-discrétisation au vol
Lightfield : affichage • Rayon partant de (x,y) coupe le light slab • Calculer les coordonnées (u,v,s,t) • Rayon intersecte les 2 quadrilatères • Coordonnées des points d'intersection • Faisable avec la texture matrix • Échantillonner la radiance en (u,v,s,t) • Interpolation des valeurs aux voisins • Bilinéaire/quadrilinéaire • Plusieurs light slabs : on les fait tous