méthodes de rendu utilisant les images nicolas holzschuch imagis/gravir imag...
TRANSCRIPT
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 ?
Photos
Images de Synthèse
Quicktime VR
• Photos panoramiques– Projection cylindrique– Construction semi-autom.
• Warping :– Conversion en image plane
• Interpolation entre les panoramas
Séquence de travail
Acquisition
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
Warping
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(,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'.
u
v
w
⎡
⎣
⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥
=
a11 a12 a13
a21 a22 a23
a31 a32 a33
⎡
⎣
⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥
x
y
z
⎡
⎣
⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥
′ x =uw
, ′ y =vw
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 .
– Premier objectif : déterminer les Ri.
– Ensuite, on en déduira S, puis on affinera les Ri
r u =Hi
r x
r u =Hi
r x =S−1RiS
r x
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 f2π − atan
i=1
N
∑ tif
⎛
⎝ ⎜ ⎜
⎞
⎠ ⎟ ⎟ =0
Calibration de la caméra
• S=xzP
– : distorsion. Déviation par rapport à une grille régulière
– : 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
– x, z : imperfections variées de la caméra
P=
1 σ −Cx
0 ρ −Cy
0 0 f
⎡
⎣
⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥
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
error(Cx,Cy,σ ,ρ,ωx,ωz) = 1−Correlation(Ii−1,S−1RySIi )
i=1
N
∑
Cx =largeur_image
2Cy =
hauteur_image2
σ =0 ρ =1 ωx =0 ωz =0
Vues cylindriques
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()
v() =Nxcos(φa −)+Nysin(φa −)
Nzka
+Cva
N=(Cb −Ca)×Da(a,va)
Reconstruction de la fonction plénoptique
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
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
Résultats
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,)
• Échantillonnage régulier et complet
Échantillonnage complet
Échantillonnage régulier
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
Représentation
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
Interpolation
Lumigraph
• Même paramétrisation 4D
• Même principe à l'affichage
• Échantillonnage irrégulier :– Photos de l'objet sur une mire– Reconstruction de la fonction– Boucher les trous dans l'échantillonnage :
• Algorithme hiérarchique de reconstruction
Layered Depth Images
• Une image… et quelques informations
• Pour chaque pixel :– On stocke l'objet visible– Et les objets qui sont derrière
• Affichage simple :– Se traite comme une image– Pas de trous dans l'affichage
LDI : construction
• À partir d'un lanceur de rayon : facile• À partir du monde réel :
– Caméra avec information de profondeur
– Caméra virtuelle, source de la LDI
– Plusieurs images, reprojetées sur la caméra virtuelle
– Stockage des pixels en ordre de profondeur
– Pixels différents avec même profondeur : on garde
• Conditions d'éclairage différentes
• Avec un Z-buffer : idem.
LDI : affichage incrémental
• Nouvelle caméra
• Re-projeter la LDI
• Subdivision en 4 zones (comme IBR)
• Travail pixel par pixel, en ordre (cf. IBR)
• Pour chaque pixel, de l'arrière vers l'avant
• Projection des pixels : travail incrémental– Nouvelle position calculée incrémentalement à
partir du pixel précédent. Réduit les calculs.
Splatting
• Un pixel de la LDI se projette sur la nouvelle image
• Splatting : influence du pixel de la LDI sur les pixels de l'image
• Taille idéale du noyau : dépend de la normale– Stocker un index pour calculer la taille du
noyau ?
Rendu en parallèle
• Séparer en 4 feuilles (cf. IBR)– Pas forcément équilibré– Plus de 4 processeurs ?
• Séparer en plusieurs zones– Droites passant par l'épipole– Zones non rectangulaires– Pixels-frontières partagés entre zones– Deux passes
LDI : efficacité
• Pentium Pro, image 256x256, LDI 320x320,– 5 fps
• 4 R10000, LDI 256x256, – 19 fps (1 LDI), – 3.5 fps (6 LDI)
Modèle hybride
• Partir de vues simples (caméra standard)
• Premier modèle simple donné par l'utilisateur
• Correspondance avec images :– Taille, position, paramètres– Textures à plaquer
Modèle géométrique simple
• Construction par blocs :– Cubes, prismes…– Relations entre blocs : contraintes de placement
• Bien adapté aux scènes architecturales
• Facile à manipuler
• Peu de paramètres– Pratique pour la reconstruction
Reconstruction
• L'utilisateur identifie les arêtes du modèle sur l'image• Trouver les paramètres du modèle et de la caméra• Minimiser la distance entre les arêtes du modèle,
reprojetées, et les arêtes identifiées :
• Erri erreur pour l'arête i
O = Erri∑
Erreur pour une arête
Erreur pour une arête
• Arête (v,d)
• Caméra (Rj,tj)
• Plan image : z=-f
• Droite : mxx+myy-mzf=0
m =Rj(v×(d−tj))
Erri = h2 (s)ds0
l
∫ =l3(h1
2 + h1h2 +h22 )
Erreur pour une arête
• Minimiser O
• On connaît aussi les dérivées de O– Méthode de Newton-Raphson
Erri =mT (AT BA)m
A=x1 y1 1x2 y2 1 ⎛ ⎝ ⎜ ⎞
⎠
B=1
3(mx2 +my
2 )1 0.50.5 1 ⎛ ⎝ ⎜ ⎞
⎠
Estimation de départ
• Éviter les minima locaux
• Partir d'une estimation proche de la solution
• 2 étapes :– Estimer la rotation de la caméra– Estimer la translation de la caméra et les
paramètres du modèle
Rotation de la caméra
• Si v est connu, on a une contrainte sur Rj
– Arêtes horizontales, verticales identifiables
– Minimiser O1 :
m =Rj(v×(d−tj))
donc:
mTRjv =0
mTRj(d−tj) =0
O1 = (mTRjvi)2
i∑
Paramètres et position de la caméra
• Les points de l'arête sont sur un plan de normale m, passant par la caméra
• Minimiser O2 :
O2 = mTRj(Pi(X)−tj )( )2+ mTRj(Qi(X) −tj )( )
2
i∑
Exemple
View-Dependent Texture Mapping
• Chaque caméra agit comme un projecteur de diapositive
• Certains détails du modèle ne sont pas touchés par la diapositive (auto-ombrage)
• On combine les différentes images– Plusieurs images sur le même point du modèle– Informations contradictoires– Moyenne pondérée
Moyenne pondérée par 1/
Relief et textures
• Textures stéréo
• Relief textures
Rappel : stéréo classique
• 2 images
• Trouver les correspondances entre les deux images
• En déduire la profondeur
• Problème : – Ici, les images sont prises de points éloignés– Difficile de trouver les correspondances
Model-Based Stereo
• On connaît un modèle approximatif• On n'a plus qu'à trouver la différence par
rapport au modèle• Deuxième image reprojetée en utilisant le
modèle• Disparités entre image originale et image
reprojetée• Carte de profondeur
Exemple
Relief Textures
Relief Textures
• Texture avec profondeur
• Pré-traitement avant affichage
• Trouver le pré-traitement p tel que mop=w
• m texture-mapping standard
Pré-traitement
• (us,vs) pixel source de la texture
• displ(us,vs) profondeur du pixel
• (ui,vi) coordonnées du même pixel dans la texture intermédiaire
ui =us +k1 (displus,vs )1 +k3 (displus,vs)
vi =vs +k2 (displus,vs)1 +k3 (displus,vs)
Pré-traitement
• k1, k2, k3 dépendent des caméras utilisées
• Coordonnées séparées
• Pas de travail si displ(us,vs) = 0
• Déplacement stocké dans alpha channel• Simplification des paramètres :
– Texture intermédiaire avec même origine et axes que texture originale
– Paramètres plus faciles à calculer
Visibilité : de l'arrière vers l'avant
• Comme d'habitude :– On part des bords, et on va vers l'épipole
Construction de textures pré-traitées
• Algorithme en deux passes :– une horizontale– une verticale
Modèles d'objets
• Relief-textures pour les objets
Exemple
Exemple
Bibliographie
• Quicktime VR :• View interpolation for image synthesis; Shenchang
Eric Chen and Lance Williams; proceedings of the 20th annual conference on Computer graphics, 1993, p. 279 - 288
• QuickTime VR: an image-based approach to virtual environment navigation; Shenchang Eric Chen; proceedings of the 22nd annual ACM conference on Computer graphics, 1995, p. 29 - 38
http://www.apple.com/quicktime/qtvr/
• Image-based Rendering :• Plenoptic modeling: an image-based rendering
system; Leonard McMillan and Gary Bishop; proceedings of the 22nd annual ACM conference on Computer graphics, 1995, p. 39 - 46
http://www.cs.unc.edu/~ibr/
http://www.cs.unc.edu/~mcmillan/
• Light Field :• Light field rendering; Marc Levoy and Pat
Hanrahan; proceedings of the 23rd annual conference on Computer graphics, 1996, p. 31 - 42
http://graphics.stanford.edu/projects/lightfield/
• Lumigraph :• The lumigraph; Steven J. Gortler, Radek
Grzeszczuk, Richard Szeliski and Michael F. Cohen; proceedings of the 23rd annual conference on Computer graphics, 1996, p. 43 - 54
http://www.research.microsoft.com/MSRSIGGRAPH/96/Lumigraph.htm
Bibliographie
• Layered Depth Images :• Layered depth images ; Jonathan Shade, Steven
Gortler, Li-wei He and Richard Szeliski; proceedings of the 25th annual conference on Computer Graphics, 1998, p. 231 - 242
• Rendering Layered Depth Images, Steven J. Gortler, Li-wei He, Michael F. Cohen, MSR-Tech-Report, 1997
ftp://ftp.research.microsoft.com/pub/tr/tr-97-09.ps
• Efficient warping for architectural walkthroughs using layered depth images; Voicu Popescu, Anselmo Lastra, Daniel Aliaga and Manuel de Oliveira Neto; proceedings of the conference on Visualization '98, 1998, p. 211 - 215
http://www.cs.unc.edu/~ibr/projects/ArchWalkAcc/ArchitecturalWalkthroughs.html
• Modèle hybride :• Modeling and rendering architecture from
photographs: a hybrid geometry- and image-based approach; Paul E. Debevec, Camillo J. Taylor and Jitendra Malik; proceedings of the 23rd annual conference on Computer graphics, 1996, p. 11 - 20
http://graphics3.isi.edu/~debevec/Research/
• Relief Textures :• Relief texture mapping; Manuel M. Oliveira,
Gary Bishop and David McAllister; proceedings of the conference on Computer graphics, 2000, p. 359 - 368
http://www.cs.unc.edu/~ibr/projects/RT/RT.html