TP5 Insertion d'objets virtuels
Par Pier-Luc Auger

Mise en contexte

Pour ce travail, il fallait parvenir à insérer des objets virtuels dans une image. Pour y arriver, la génération d'une carte de radiance fut utilisée. C'est ce qui est décrit dans la première section. Dans la seconde section, la transformation de la carte de radiance en carte équirectangulaire est décrite. En effet, c'est ce format d'image HDR qui est utilisé par Blender, le logiciel qui a été utilisé pour faire l'insertion d'image. La deuxième section renferme les détails liés à cette étape. Finalement, la technique utilisée pour l'assemblage final sera décrit dans la troisième section.

Génération d'image à haute plage dynamique

Pour fournir une carte de radiance riche en valeur d'éclairage, l'utilisation d'une image à haute plage dynamique était tout indiqué. En effet, avec une seule photo, il y a une limite à l'intervalle de lumière captable par l'appareil. En effet, pour une valeur d'ISO, d'ouverture de l'objectif et de temps d'exposition, il y aura souvent des pixels sous exposés et d'autres sur exposés. Cela est prévisible, puisque la mesure de la lumière dans l'image, bien que calculable de différente manière, ne pourra être optimale pour toutes les régions de l'image. C'est là que deviennent intéressantes les images à hautes plage dynamique. Ces images sont construites à partir de plusieurs images, pour lesquelles le niveau de lumière optimalement capté est différent. Pour arriver à moduler ce paramètres, c'est le temps d'exposition qu'il faut faire varier.
De mon côté, j'ai pris 3 images, la première avec un temps d'exposition N, la seconde de N/2 et la troisième de 2N. Voici ce que cela donne:

Algorithme

Une fois ces photos prises, il faut découper la sphère. Sur ces sphères, l'algorithme décrit par Debevec dans "Recovering High Dynamic Range Radiance Maps from Photographs" a été appliqué.
De manière sythétique, voici comment il opère:

1.Chargement des images et enregistrement de leur valeur de temps d'exposition
2.Redimensionnement des images en une taille plus petite. Cette étape permet de réaliser le calcul de gsolve en un temps raisonnable.
3.Calcul d'une fonction de pondération, fournit à gsolve subséquement.
4.Sur chacun des canaux de couleur, calculer le log de l'exposition et le log de la radiance avec gsolve.
5.Avec le résultat de 4, appliquer l'algorithme que suggère l'équation 6 de Debevec 1998.

Au final, voici le résultat obtenu:

Algorithme en images

Fonction de pondération
Cette fonction sert à donner une pondération maximale aux pixels les "mieux" exposés, et à l'inverse, à attribuer une valeur moins importante aux pixels susceptibles d'être sous ou sur exposés. Cette fonction est importante et assure que la composition de l'image HDR tienne compte de valeurs de pixels non erronées.
Sortie fournie par gsolve (log exposure)
Ces valeurs d'exposition sont ensuite utilisées pour assembler l'image HDR.

Carte de radiance équirectangulaire

Une fois l'image HDR générée, celle-ci a été transformée en carte de radiance équirectangulaire utilisant un système latitude longitude. C'est ce standard qui est fournit à Blender à l'étape décrite dans la section suivante.

Algorithme

Voici l'algorithme utilisé pour générer cette carte de radiance.
1.Génération d'un meshgrid des couples à couvrir en latitude et en longitude.
2.Conversion des couples en coordonnées sphériques en coordonnées cartésiennes
3.Calcul de vecteur incidant
4.Interpolation des valeurs avec les valeurs connues de la sphère unitaire

À l'étape 2, il faut être vigilant sur le système de coordonnées que l'on emploi et tenir compte de celui que Matlab utilise. De fait, certaines validations peuvent s'avérer pertinentes à faire à ce stade pour ce convaincre que l'on à bien la bonne transformation.
Ayant posé que le vecteur V=[0 0 1], on a donc un azimut s'opérant sur le plan x,y. On voit que l'on ne peut faire l'association des axes directement vue la convention de Matlab.

Blender et composition d'image

Blender a permis le génération de la scène avec insertion d'objets. L'insertion s'est faite selon ce que décrit la section 6 de l'article de Debevec 1998. La composition d'image s'effetue en utilisant l'image d'arrière plan, l'image rendue par Blender et un masque logique des objets insérés.

Première scène


Seconde scène


J'ai éprouvé certains problèmes lors du calcul du vecteur source de la lumière. En effet, je n'ai pu corriger ce problème, qui demeura apparent. En image, on voit bien que la carte de radiance equirectangulaire n'est pas valide.

Résultats

Ce premier résultat est plutôt intéressant. Loin d'être parfait, on y croit tout de même pour certains objets. Le dragon et la face de singe sont assez bien illuminés. Le lapin donne un effet intéressant. La bille montre une belle réflexitivité, mais son éclairage et son rendu restent douteux.
Pour ce second rendu, certains problèmes sont survenus. En effet, l'éclairage ou la carte de radiance ne devait pas être valide. J'ai tenté une différente carte de radiance différente dans la même image, sans résultat plus probant. Il serait intéressant de voir ce qui aurait pu causer cet effet.