TP5: Insertion d'objets virtuels

Introduction et méthodologie

Ce travail consiste à insérer des objets virtuels dans une scène réelle que l'on a photographiée. Une grande partie de ce travail est basée sur l'article Debevec et Malik 1997 . Pour procéder à la mise en place des modèles 3D virtuels et du rendu des intéractions de la lumière entre le modèle et son environnement, on utilise le logiciel Blender. Afin d'illuminer de manière réaliste les modèles 3D, on va avoir besoin d'une image à haute plage dynamique (High Dynamic Range ou HDR) que l'on peut obtenir grâce à une série d'images à faible plage dynamique (Low Dynamic Range ou LDR). Les photographies que l'on prend avec des appareils photographiques enregistrent des valeurs de pixels entre 0 et 255. Cette plage de valeurs étant trop restreintes pour représenter la plage dynamique du monde réel, nous aurons besoin de procéder à une technique d'éclairage à base d'images. En prenant plusieurs photographies à différents temps d'exposition, on va pouvoir générer une carte de radiance à haute plage dynamique grâce aux équations et du script Matlab disponible dans l'article mentionné précédemment. Finalement, afin d'enregistrer l'information lumineuse venant de toutes les directions dans la scène, nous allons avoir besoin d'un miroir sphérique. Les rayons provenant de la scène et reflétés sur le miroir sphérique permet à la caméra d'enregistrer facilement les conditions d'éclairage sur 360°.

Ce travail est donc séparé en 3 étapes distinctes. La première est de générer une carte de radiance HDR à partir d'images d'une même scène à différent temps d'exposition contenant le miroir sphérique. La deuxième est de transformer la carte de radiance du miroir sphérique en une projection panoramique longitude-latitude puisque Blender fonctionne dans un format cartésien et pas sphérique. Finalement, à partir des photographies (plusieurs photographies à différents temps d'exposition et un photographie de la scène sans miroir sphérique) et de modèles 3D disponibles sur le web, on va générer une scène qui mélange harmonieusement le modèle 3D à la scène sans miroir sphérique.

Les images suivantes représentent un exemple typique d'images capturées par l'appareil photographique. Le chiffre au-dessus des images est le temps d'exposition en seconde.

1 s

1/5 s

1/15 s

1/50 s

1/160 s

1/320 s

Carte de radiance

Cette partie du travail consiste principalement à la résolution d'un système d'équation surdimmensionné avec Matlab. Dans l'article de Debevec et Malik, on nous stipule qu'il faut résoudre l'équation suivante Zij = f(Ei x delta(tj)) où Z est la valeur du pixel i dans l'image j à un certain temps d'exposition est une fonction de Ei (radiance à un pixel i) et delta(tj) (la durée d'exposition de l'image j). Après avoir linéarisé l'équation avec l'opérateur ln et en posant l'hypothèse que la scène est complètement statique (la radiance est donc constante entre les images Ei(j)=Ei(j+1)), on trouve la solution pour ln(Zij) avec l'aide du script fourni dans l'article. Ce script fait la résolution du système d'équation mais tient également compte d'un facteur de lissage. Dans notre cas, ce facteur est posé à 200. On utilise la fonction de poids w(z) = 128-abs(z-128) où w est la fonction de poids et z est la valeur du pixel. Finalement, pour obtenir la radiance on utilise l'équation 6 de l'article où w est la fonction de poids mentionnée plus haut, Zij est la valeur du pixel i dans l'image j, g correspond à ln(Zij) et a été obtenu grâce au script fourni et delta tj est le temps d'exposition de l'image j.

Finalement, on isole Ei est appliquant l'opérateur e des deux cotés de l'équation. Le graphique suivant présente l'évolution de ln(Zij) en fonction des valeurs de pixel pour les trois canaux de couleur pour les 6 images présentées plus haut.


Transformation panoramique

À cette étape, on a une carte de radiance en coordonnée sphérique. Afin d'être compatible avec le logiciel Blender, il va falloir transformer les coordonnées sphériques azimuth-élévation en coordonnées panoramiques longitudes-latitudes. Pour ce faire, il faut trouver les composantes des vecteurs normaux de la sphère, calculer les composantes des vecteurs réfléchis puis de faire l'extrapolation sur une image de 0 à 360° à l'horizontale et de 0 à 180° à la verticale. Le résultat final est donc une projection panoramique de l'image d'une sphère à haute plage dynamique. Les panoramas suivants ont été construits à partir de la sphère d'une des images de chaque scène.

Scène 1

Scène 2

Scène 3

Scène 4

Scène 5

Scène 6


On observe qu'une ligne verticale apparait lorsque l'on effectue la transformation panoramique. Sa cause reste un mystère mais on peut poser l'hypothèse qu'elle est due à l'algorithme de la fonction Matlab "scatteredInterpolant". Cependant, sa présence ne semble pas affecter visuelement les rendus obtenus plus bas.

Rendu d'objets synthétiques dans des photos

Cette étape est faite avec le logiciel Blender. Ce logiciel va me permettre de faire une modélisation locale de l'environnement, d'insérer des modèles 3D, d'appliquer une texture et de gérer l'éclairage sur ceux-ci. On a d'abord besoin de placer l'image sans sphère comme arrière-plan. Par la suite, on vient placer un (ou plusieurs) plan afin d'afficher les effets d'ombre et de reflet des objets. On charge ensuite la carte de radiance HDR dans le logiciel. Puis, on importe les objets virtuels que l'on déplace à la position désirée. Les modèles 3D qui ont été utilisés dans ce travail proviennent d' ici . Après avoir choisit et appliquer une texture pour le plan et les objets, on fait trois rendus différents. Le premier est un rendu de la scène que l'on vient de modéliser. La deuxième est un rendu de la même scène mais sans les objets (on fait le rendu uniquement sur le plan). Puis, le troisième est un rendu sur lequel on fixe la couleur des objets en blanc et sans ombre. Le reste de la scène est coloré en noir. GRâce à ces trois images de rendus, on applique une fonction de composition: Résultat=M.*R+(1-M).*I+(1-M).*(R-E).*c où M est le masque binaire, R est le rendu des objets et du plan, I est l'image de destination, E est le rendu du plan et c est un paramètre défini arbitrairement. En augmentant le paramètre c, on donne une plus grande importance aux ombres et reflets générés par les plans.

Scène 1: Entre deux voitures

Cette scène a été prise entre deux voitures. Étant à l'extérieur, les temps d'exposition était plus courts car il y avait plus de photons qui frappaient la cellule de l'appareil photo. Ces temps sont compris entre 1/10 à 1/500 de seconde. Les paramètres du rendu sont les suivants:
- Un plan sur le dessus de la boîte en carton avec une texture diffuse beige
- Une statuette bleu avec texture "Anisotropic BSDF"
- Un dragon rougâtre avec une texture "Hair BSDF"
- Une sphère jaunâtre avec une texture "Glossy BSDF"
- Une tellière grise avec une texture "Glossy BSDF"

Rendu d'objets

Rendu des plans

Rendu binaire


On peut voir le reflet de la voiture rose à la droite de l'image sur la tellière et sur la sphère. Puisque la lumière provennant du coté droit est rosâtre, l'ombre des objets sera plutôt verdâtre comme le témoigne la figure suivante. Pour en savoir plus sur le sujet, cliquez ici .

Avant

Après



Scène 2: Caverne des araignées

Cette scène a été prise sur une table où la sphère a été placée sous un cahier. Les temps d'exposition sont compris entre 1/3 à 1/100 de seconde. Les paramètres du rendu sont les suivants:
- Un plan sur la table avec une une texture diffuse beige
- Un plan sur le cahier avec une texture diffuse rouge
- Une petite araignée noire avec une texture "Glossy BSDF"
- Une grande araignée grise avec une texture "Diffuse BSDF"

Rendu d'objets

Rendu des plans

Rendu binaire


Ici, on est témoin de l'incidence de choisir une mauvaise texture pour un objet. La scène et la texture de l'objet ne s'accorde pas harmonieusement. De plus, étant donné que la sphère était placée complètement sous le cahier,lorsque l'on place un objet sur une transition, celle-ci ne se répercute pas sur l'objet.

Avant

Après



Scène 3: Éclairage ponctuelle

Cette scène a été prise sur une table où la sphère est éclairée par une source ponctuelle à la droite. Les temps d'exposition sont compris entre 1 à 1/160 de seconde. Les paramètres du rendu sont les suivants:
- Un plan sur la table avec une texture diffuse beige
- Un soulier gris-blanc avec une texture "Ambient occlusion"
- Une sphère grise avec une texture "Glossy BSDF"
- Trois dophins turquoise avec une texture "Translucent BSDF"
- Une tasse orange avec une texture "Glass BSDF"

Rendu d'objets

Rendu des plans

Rendu binaire


Avant

Après

N'étant pas satisfait de l'ombrage des objets, j'ai fait varier le paramètre c de l'équation de la composition pour rendre l'ombre et les intéractions entre les objets plus importants. Le résultat précédent a été calculé avec c=1. Puisque le plan de la table n'est pas fini sur le coté de la table, on voit des réflexion dans le vide pour c=50. Cependant, si le paramètre c est trop élevé, on voit apparaitre des effets de grains dans l'ombre et sur les objets. Pour générer une scène la plus réaliste possible, il faut trouver le bon équilibre entre peu d'ombrage et beaucoup d'ombrage.

c=4

c=6

c=10

c=50



Scène 4: Après-midi décontracté

Cette scène a été prise sur un classeur où certain réflexion sont présentes comme on le voit en dessous de la casquette. Les temps d'exposition sont compris entre 1/30 à 1/200 de seconde. Les paramètres du rendu sont les suivants:
- Un plan sur le classeur avec une texture "Glossy BSDF" et un paramètre de "Roughness à 0.075" (où 0 est une réflexion parfaite comme un miroir)
- Un ressort argent avec une texture "Glossy BSDF"
- Trois sphères turquoises avec une texture "Glossy BSDF"
- Une tasse rouge avec une texture "Toon BSDF - diffuse"

Avant

Après



Scène 5: Passage

La sphère a été déposée sur une bibliothèque vide. Les temps d'exposition sont compris entre 1/30 à 1/200 de seconde. Les paramètres du rendu sont les suivants:
- Un plan beige sur la surface de la bibliothèque avec une texture "Diffuse"
- Un Armadillo bleu avec une texture "Anisotropic BSDF"
- Un visage turquoise avec une texture "Anisotropic BSDF"
- Une balance rose avec une texture "Anisotropic BSDF"

Avant

Après



Scène 6: Stade du miroir

La sphère a été déposée sur une bibliothèque vide. Les temps d'exposition sont compris entre 1/30 à 1/200 de seconde. Les paramètres du rendu sont les suivants:
- Un plan beige sur la surface du bureau avec une texture "Diffuse"
- Deux plans sur la surface des miroirs avec une texture "Glossy BSDF" et un paramètre de "Roughness à 0"
- Un ressort bleu avec une texture "Anisotropic BSDF"

Avant

Après


Comme l'image des miroirs est considérée comme étant une intéraction entre les objets, en variant le paramètre c on varie l'intensité de la réflexion. Si l'on regarde bien, sur le miroir de droite on voit que le plan a mal été positionné. Il y a une démarquation visible dans l'ombrage.

c=2

c=3

Simon Fréchet
Université Laval, 2015