TP5 (7105): Insertion d'objets virtuels

Par : Bernard Lebel

Le but de ce travail a été d'appliquer les algorithmes derrières la reconstruction d'images en haute plage dynamique afin d'insérer des objets virtuels dans une scène photographiée. La méthodologie ainsi que les résultats sont présentés ci-dessous.

1- Reconstruction HDR

Cette section décrit la méthode suivi afin de reconstruire une image HDR (haute plage dynamique).

a) Capture des photos

À cette étape il est requis de prendre une même scène en photo plusieurs fois avec au moins trois niveaux d'exposition différents (une exposition sous-exposée, une exposition normale, une exposition surexposée). Cette scène doit comporter un miroir sphérique, idéalement placé au centre de la photo et aligné avec l'appareil photo. Un exemple est illustré ci-dessous de 5 photos avec 5 niveaux d'exposition différents (la focale étant la même, seul le temps d'exposition est manipulé).

La sphère est ensuite découpée dans toutes les photos puis alignées pour produire le résultat suivant. Dans le cas présent, les temps d'expositions sont, de gauche à droite, 1/400, 1/200, 1/100, 1/50 et 1/25.

Afin de calculer l'image en HDR de ces sphères et, ainsi, de reconstruire la radiance réelle de la scène afin d'y insérer des objets virtuels, on applique l'approche décrite dans l'article de Debevec et Malik 1997. Pour résumer l'approche, on postule que la valeur de chaque pixel observée est une fonction s'exprimant sous la forme \[ Z_{ij} = f(E_i*\Delta t_j) \] Dans cette équation, \(Z_{ij}\) est la valeur du pixel i d'une image j observée, \(E_i\) est la radiance de la scène au pixel i, et l'intégrale dans le temps de la radiance de la scène \(E_i * \Delta t_j\) est l'exposition a un pixel donné. En posant que \(g = ln(f^{-1})\) qui correspond à l'équation qui prend le log de la valeur de la radiance reçue et la convertie en une valeur de pixel entre 0 et 255. Cette équation nous donne donc : \[ g(Z_{ij}) = ln(E_i)+ln(t_j) \] Comme la scène est statique, on postule que la valeur de la radiance est la même pour toutes les images captées. Cela nous permet donc de résoudre \(g\) et d'obtenir l'équation de la radiance.

Afin d'alléger le calcul, \(g\) est calculé sur un échantillon de pixel des image de sphères seulement.

La valeur des pixels utilisé pour retrouvé \(g\) est pondéré afin de donner moins de poids au pixel qui ne donnent que peu ou pas d'information (par exemple, les pixels saturés ou complètement sombre). Cette pondération s'effectue avec les équations ci-dessous. Si \(Z_{ij} < 255/2\) \[ w = Z_{ij} \] Sinon \[ w = 255 - Z_{ij} \] Plus de détails ainsi que l'algorithme complète pour résoudre \(g\) sont expliqués dans Debevec et Malik 1997. Les résultats de cette reconstruction sont présentés ci-dessous.

Reproduction tonale des Rouges
Reproduction tonale des verts
Reproduction tonale des bleus
Image HDR ramenée à des valeurs affichables. L'équation utilisée est \(val = val_{HDR}^{1/ \gamma}\)\(\gamma\) est une valeur entre 0 et 1 et \(val_{HDR}\) est la valeur de chaque pixel de chaque canal de couleur. Ici elle est fixé à 0.05
Valeur Z d'un pixel (entre 0 et 255) en fonction de \(ln(Exposition)\)

b) Déroulement

Afin d'obtenir une carte en format Latitude par Longitude requise pour le rendu sur les objets virtuels, il a été nécessaire de 'dérouler' la sphère. Cette opération consiste en, d'abord, crée une image rectangulaire de dimensions \(\phi\) x \(\theta\). \(\phi\) se situe entre [\(-\pi ,\pi\)] et entre [\(-\pi /2 ,\pi /2\)] Dans un deuxième temps, il faut trouver la normale à chacun des pixels si situant sur la sphère. Finalement, on convertit les coordonnées sphériques \(\phi\) et \(\theta\) en coordonnées de pixel sur l'image de la sphère et on le place au pixel correspondant dans l'image en LatLong. Un exemple de ce résultat est présenté ci-dessous.

Carte LatLong de la sphère ci-haut

On peut voir qu'il y a une singularité qui survient au centre de l'image et qui correspond au point où la sphère se rejoint en un seul point unique.

c) Rendu d'objets synthétiques dans des photos

Pour l'ensemble des scènes ci-dessous, l'intégralité des résultats (Images de sphères, résultats du HDR, étapes des rendus lors de l'insertion et le résultat de la composition) sont tous disponibles à cet emplacement. Le temps a manqué pour tous les présenter individuellement mais le lecteur est invité à aller visiter le lien s'il en a la curiosité. La composition a été réalisée à l'aide de l'équation suggérée sur le site du cours soit \[ composite = M.*R + (1-M).*I + (1-M).*(R-E).*c \] Où R est l'image rendue avec les objets, E l'image rendue sans les objets, M le masque des objets et I l'image d'arrière-plan. Dans le cas présent, toutes les compositions ont été obtenues avec une valeur de \(C=1\). Il n'a pas été nécessaire de changer cette valeur.

Scène 1

Dans cette scène, un seul plan a été modélisé, soit celui du plancher. Le matériau utilisé est un matériau diffus dont la couleur correspond à un échantillon du plancher. Les objets utilisés sont les mêmes que ceux fournis en exemple et leurs propriétés n'ont pas été changées.

Rendu avec surface seulement
Rendu avec surface et objets
Masque
Scène vide
Composition
Discussion

Ces résultats sont jugés satisfaisants. Toutefois, avec une plus grande maîtrise de Blender, il aurait pu être possible d'améliorer l'angle du plan pour que la théière donne l'impression d'être moins dans un angle étrange. Pour le reste, les résultats sont satisfaisant et on voit bien l'intérêt de cette technique pour créer des illusions intéressantes.

Scène 2

Cette scène a été prise dans le confort de mon salon, en visant un coussin de sofa. Un seul plan a été utilisé et aligné sur le coussin du sofa avec une texture diffuse et une couleur échantillonnée sur le coussin de la photo. Les objets insérés sont tirés de Blendswap et plus particulièrement PandaPaw pour la pieuvre.

Rendu avec surface seulement
Rendu avec surface et objets
Masque
Scène vide
Composition
Discussion

À la lumière des résultats obtenus pour cette scène, on peut voir que le résultats est très satisfaisant. Par ailleurs, les réflexions sur la sphère des objets insérés rajoute une bonne dose de réalisme à la scène. Pour plus de succès, il aurait été utile de retirer les bulles de la pieuvre ou, à l'inverse, de rajouter des éléments de fonds marins pour une effet plus surréaliste.

d) Points additionnels : Scènes supplémentaires

Scène 3

Pour cette scène, des objets ont été insérés sur une surface de table. Dans cette scène, un plan unique a été généré pour représenter la table avec une texture diffuse et sa couleur obtenue en échantillonnant la couleur du bois de la table. Les objets insérés sont un robot une peluche.

Rendu avec surface seulement
Rendu avec surface et objets
Masque
Scène vide
Composition
Discussion

À la lumière des résultats obtenus, on peut constater que chacune des étapes étaient fort prometteuses. Malheureusement, la peluche contenant des particules pour gérer les poils, ceux-ci n'ont pas été correctement généré sur le masque et il n'a pas été possible d'y parvenir. Le résultat est tout de même rapporté puisqu'il présente quand même un effet fort intéressant pour le robot qui y figure.

Scène 4

Pour cette scène, le miroir sphérique a été déposé sur le plancher d'une salle de bain. Une surface a été ajouté à la scène afin de simuler le sol, avec une texture diffuse et une couleur échantillonnée sur le sol dans la photo. Les objets insérés sont des formes géométriques simples généres sur Blender ainsi qu'un damier. Pour le cône, la texture utilisé est une Transluscent bleue pour le cône, un Glossy blanc pour la sphère et un verre ternis noir pour la pyramide.

Rendu avec surface seulement
Rendu avec surface et objets
Masque
Scène vide
Composition
Discussion

Les résultats obtenus présentent un effet intéressant mais qui manque un peu de crédibilité. En effet, cela provient fort probablement du manque d'imperfection dans les formes utilisées. Toutefois, l'effet réflètant du damier produit un effet intéressant dans la scène et à l'aide de la sphère, on peut voir la réflexion de la pyramide dans la scène ambiante.

Scène 5

Cette scène final a été prise à l'extérieur sur un balcon. Le plan ajouté à la scène est placé sur le sol afin de simuler les effets de celui-ci sur les objets virtuels insérés. Sa texture diffuse la lumière et sa couleur réplique la couleur du ciment échantillonnée en un point sur le sol à l'ombre. Les formes insérés sont un anneau avec une texture de verre rosée et deux cubes superposés, un simulant une texture métallique bleue et l'autre en verre transparent.

Rendu avec surface seulement
Rendu avec surface et objets
Masque
Scène vide
Composition
Discussion

Le résultat final de cette scène est intéressant mais une fois de plus, le manque d'imperfections dans les surfaces produit un effet étrange sur la scène. De plus, les ombrages ambiants ont posé problèmes lorsque, dans la première itération de cette scène, les cubes étaient placés à l'extérieur de l'ombrage du pot de la plante. Le jeu d'ombres des barreaux trahissaient le subterfuge et la scène a été révisée pour produire le résultat final présenté.

Scène 6

Une sixième scène était prévue et a été réalisée jusqu'à la création des sphères HDRs, mais le temps a manqué pour aligner un autre plan et insérer de nouveaux objets. Le progrès de cette scène (génération des sphère HDR par exemple) peut être visionné ici.

Scène vide