TP5: Insertion d'objets virtuels

Carte de radiance

Collecte de données

Afin de collecter des données, j'ai emprunté un appareil photo permettant d'ajuster le temps d'exposition de son capteur.
De chacune des scènes sélectionnées, j'ai pris 4 photos tout en prenant soin de ne pas faire bouger l'appareil. Le temps d'exposition des 3 premières photos fut de 1/10s, 1/40s et 1/160s.

La particularité de la quatrième photo est le retrait du mirroir sphérique.

Calcul de g

Pour cette étape, je n'apportes rien de nouveau à l'énoncé. J'ai utilisé le code fournie dans l'article, en utilisant la fonction fournie dans l'énoncé pour w. l fut trouvé à tâtons comme le disait l'énoncé, quoiqu'en général une valeur de 2 semblait faire l'affaire.

Calcul de la radiance

La radiance de chaque pixel a été calculé selon l'équation 6 de l'article de Debevec. Voici un exemple de résultat:

Transformation panoramique

Il a fallut ensuite transformer l'image du mirroir sphérique en carte équi-rectangulaire. Pour ce faire, en assumant une projection orthographique, il a fallut trouver à chaque points sur la sphère, le vecteur normal puis le vecteur de réflexion.

Toutes les équations nécessaires à la réussite de cette étape étaient fournies. Les données des vecteurs normals correspondaient aux coordonnées des pixels sur l'image, normalisés sur l'intervalle allant de -1 à 1.
La grosse difficulté fut de choisir un système de coordonnées et de le conserver du début à la fin. Personnellement, j'ai opté pour le système définie par la fonction cart2sph de MatLab.
Voici un exemple de résultat :

Rendu

Avec l'aide du logiciel blender, nous devons faire 3 rendu différent. Le premier avec toute la scène, le second sans les objets et finalement le dernier est un masque ayant un fond noir et dont l'emplacement des objets est blanc. Il était possible d'ajuster l'intensité de la lumière avant de faire le rendu. Dans toutes mes scènes, j'ai positionné ce paramètre entre 0.003 et 0.01.

Résultats

Finalement, la modélisation finale s'effectuait dans MatLab. À cette étape, l'intensité des ombres était ajustable à l'aide du paramètre c.

Scene 1 : La scène founie

Voici 3 rendu de cette scène. Les 3 furent effectués avec un niveau d'intensité d'ombres différent. Respectivement, les photos ont un niveau d'ombre(c) de 1, 5 et 10. Ici, la sphère est en mirroir et la bouilloir en acier.

Scène 2 : Pourquoi ça ne marche pas?

Il m'a fallu un bon moment avant de comprendre pourquoi j'ai eu toutes les misères du monde avec cette scène. J'obtenais une image d'intensité (avant la conversion en image équi-rectangulaire) avec une barre grise d'environ 50 pixels tout autour de mon image. Finalement j'ai constaté que c'était la faute de MatLab. Il ajoutait cette barre lors de la sauvegarde de mes photos.
Mais au lieu de recommencé, j'ai effectué le rendu avec cette image. Bien sûr, j'ai manuellement enlevé la barre grise avant. J'avais pour théorie que cela n'allait pas impacter le résultat final, car le tour de l'image ne se trouvait pas dans l'échantillon permettant de trouver g. J'ai eu raison. Ici, la sphère est en mirroir.

Scène 3 : Lévitation

Les objets insérés n'ont pas besoin de reposer sur une surface. Je peux les mettre dans les airs. Ici, la sphère est en mirroir.

Si on regarde de près, on voit très bien que le tout fonctionne. J'aimerais attirer votre attention sur la droite de la sphère de l'image en ci-dessous, où on peut observer la porte qui se trouvait à côté du photographe.