Mthodes de rendu utilisant les images Nicolas Holzschuch

  • Slides: 97
Download presentation
Méthodes de rendu utilisant les images Nicolas Holzschuch i. MAGIS/�GRAVIR IMAG Nicolas. Holzschuch@imag. fr

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, . . . •

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

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

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é,

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 –

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

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

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

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

Photos

Images de Synthèse

Images de Synthèse

Quicktime VR • Photos panoramiques – Projection cylindrique – Construction semi-autom. • Warping :

Quicktime VR • Photos panoramiques – Projection cylindrique – Construction semi-autom. • Warping : – Conversion en image plane • Interpolation entre les panoramas

Séquence de travail

Séquence de travail

Acquisition

Acquisition

Acquisition • Construction du panorama semi-automatique – En théorie c'est automatique mais ça rate

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

Warping

Image-Based Rendering • Fondements mathématiques – Fonction plénoptique • Échantillonnée plus ou moins régulièrement

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( , , l, Vx, Vy, Vz, t)

La fonction plénoptique P( , , l, Vx, Vy, Vz, t)

Acquisition • Images cylindriques • Caméra en rotation sur un axe • Retrouver les

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 : •

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

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

Calibration • Près du centre optique de l'image, Ri agit presque comme une translation

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=Wx. Wz. P – s : distorsion. Déviation par

Calibration de la caméra • S=Wx. Wz. P – 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

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

Vues cylindriques

Vues cylindriques

Correspondance entre les cylindres • Deux cylindres de vues – Établir les positions relatives

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

Correspondance entre les cylindres • Les rayons ne se rencontrent pas : – On

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

Géométrie épipolaire du cylindre • Rayon sur le cylindre a : ( a, va)

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

Reconstruction de la fonction plénoptique

Reconstruction de la fonction plénoptique • Images de référence (déjà calculées, cylindriques) • Images

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é

Reprojection plane • Une fois qu’on a la disparité autour de V, on reprojette

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

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

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 » :

Résultats

Résultats

Lightfield/Lumigraph • • Réduction de la fonction plénoptique 4 dimensions au lieu de 5

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 2 D d'une fonction 4 D

4 dimensions • Chaque image est une tranche 2 D d'une fonction 4 D • Créer le Lightfield : insérer des images 2 D dans un champ 4 D • 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 :

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

Espace des droites • Droite définie par (r, ) • Échantillonnage régulier et complet

Échantillonnage complet

Échantillonnage complet

Échantillonnage régulier

Échantillonnage régulier

Lightfield : création • Par images de synthèse : – Multiples images – (x,

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 •

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

Représentation

Lightfield : stockage • Très gros (1. 6 Go) • Très redondant • Compression

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 •

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

Interpolation

Lumigraph • Même paramétrisation 4 D • Même principe à l'affichage • Échantillonnage irrégulier

Lumigraph • Même paramétrisation 4 D • 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 :

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 • À

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

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 • 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é

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 256 x 256, LDI 320 x 320,

LDI : efficacité • Pentium Pro, image 256 x 256, LDI 320 x 320, – 5 fps • 4 R 10000, LDI 256 x 256, – 19 fps (1 LDI), – 3. 5 fps (6 LDI)

Modèle hybride • Partir de vues simples (caméra standard) • Premier modèle simple donné

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

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

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

Erreur pour une arête

Erreur pour une arête

Erreur pour une arête • Arête (v, d) • Caméra (Rj, tj) • Plan

Erreur pour une arête • Arête (v, d) • Caméra (Rj, tj) • Plan image : z=-f • Droite : mxx+myy-mzf=0

Erreur pour une arête • Minimiser O • On connaît aussi les dérivées de

Erreur pour une arête • Minimiser O • On connaît aussi les dérivées de O – Méthode de Newton-Raphson

Estimation de départ • Éviter les minima locaux • Partir d'une estimation proche de

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

Rotation de la caméra • Si v est connu, on a une contrainte sur Rj – Arêtes horizontales, verticales identifiables – Minimiser O 1 :

Paramètres et position de la caméra • Les points de l'arête sont sur un

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 O 2 :

Exemple

Exemple

View-Dependent Texture Mapping • Chaque caméra agit comme un projecteur de diapositive • Certains

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/

Moyenne pondérée par 1/

Relief et textures • Textures stéréo • Relief textures

Relief et textures • Textures stéréo • Relief textures

Rappel : stéréo classique • 2 images • Trouver les correspondances entre les deux

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

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

Exemple

Relief Textures

Relief Textures

Relief Textures • • Texture avec profondeur Pré-traitement avant affichage Trouver le pré-traitement p

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

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

Pré-traitement • • • k 1, k 2, k 3 dépendent des caméras utilisées

Pré-traitement • • • k 1, k 2, k 3 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

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 –

Construction de textures pré-traitées • Algorithme en deux passes : – une horizontale – une verticale

Modèles d'objets • Relief-textures pour les objets

Modèles d'objets • Relief-textures pour les objets

Exemple

Exemple

Exemple

Exemple

Bibliographie • Quicktime VR : • Light Field : • View interpolation for image

Bibliographie • Quicktime VR : • Light Field : • View interpolation for image synthesis; Shenchang Eric Chen and Lance Williams; proceedings of the 20 th annual conference on Computer graphics, 1993, p. 279 - 288 • Quick. Time VR: an image-based approach to virtual environment navigation; Shenchang Eric Chen; proceedings of the 22 nd annual ACM conference on Computer graphics, 1995, p. 29 - 38 • Light field rendering; Marc Levoy and Pat Hanrahan; proceedings of the 23 rd annual conference on Computer graphics, 1996, p. 31 - 42 http: //www. apple. com/quicktime/qtvr/ • Image-based Rendering : • Plenoptic modeling: an image-based rendering system; Leonard Mc. Millan and Gary Bishop; proceedings of the 22 nd annual ACM conference on Computer graphics, 1995, p. 39 - 46 http: //www. cs. unc. edu/~ibr/ http: //www. cs. unc. edu/~mcmillan/ http: //graphics. stanford. edu/projects/lightfield/ • Lumigraph : • The lumigraph; Steven J. Gortler, Radek Grzeszczuk, Richard Szeliski and Michael F. Cohen; proceedings of the 23 rd annual conference on Computer graphics, 1996, p. 43 - 54 http: //www. research. microsoft. com/MSRSIGGRAPH/96/Lu migraph. htm

Bibliographie • Layered Depth Images : • Modèle hybride : • Layered depth images

Bibliographie • Layered Depth Images : • Modèle hybride : • Layered depth images ; Jonathan Shade, Steven Gortler, Li-wei He and Richard Szeliski; proceedings of the 25 th annual conference on Computer Graphics, 1998, p. 231 - 242 • Rendering Layered Depth Images, Steven J. Gortler, Li-wei He, Michael F. Cohen, MSRTech-Report, 1997 • Modeling and rendering architecture from photographs: a hybrid geometry- and imagebased approach; Paul E. Debevec, Camillo J. Taylor and Jitendra Malik; proceedings of the 23 rd annual conference on Computer graphics, 1996, p. 11 - 20 ftp: //ftp. research. microsoft. com/pub/tr/tr-97 -09. ps • Relief Textures : • 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/Arch. Walk. Acc/Arc hitectural. Walkthroughs. html http: //graphics 3. isi. edu/~debevec/Research/ • Relief texture mapping; Manuel M. Oliveira, Gary Bishop and David Mc. Allister; proceedings of the conference on Computer graphics, 2000, p. 359 - 368 http: //www. cs. unc. edu/~ibr/projects/RT/RT. html