TP5 - Insertion d'objets virtuels

GIF-7105 - Photographie algorithmique - Maxime Leclerc - 12 avril 2015

Le premier objectif de ce travail est de créer la carte de radiance d'une balle métallique. La radiance est la quantité d'énergie électromagnétique émise, réfléchie, transmise ou reçue sur une surface. Cette carte est crée en format haute plage dynamique. Ce format permet d'obtenir une plage de luminosité plus large que les techniques standards utilisées en photographie.


Le second objectif du travail est de convertir la carte de radiance d'un format sphérique vers un format rectangulaire. 


Le troisième objectif du travail est d'utiliser cette carte de radiance afin d' insérer des objets dans une photo.

Carte de radiance en format HDR

Carte de radiance rectangulaire

Insertion d'objets dans une photo

La démarche pour obtenir la carte de radiance est la suivante:

  1. Choisir une scène avec une surface plane sur laquelle un miroir sphérique est placé.
  2. Fixer la position de la caméra.
  3. Photographier le miroir sphérique avec au moins trois temps d'exposition.
  4. Retirer le miroir de la scène et prendre une photo.
  5. Découper les images pour ne conserver que la sphère.

Conversion de la radiance en pixels

Formules pour retrouver la fonction g(z)

  1. Retrouver g(z) pour chaque couleur avec gsolve.m et à partir de:
    • Un échantillon de pixels - Ceci permet de réduire l'utilisation de la mémoire et le temps d'exécution.
    • Z - La valeur entre 0 et 255 de chaque pixel.
    • Delta t - Le temps d'exposition.
    • Lambda - La constante qui s'assure que la courbe de g(z) soit lisse. On cherche à minimiser la variation de la pente, c'est-à-dire, la dérivée seconde de g(z). On ajuste lambda afin que g(z) soit lisse et augmente continuellement.
    • La pondération de chaque pixel - Une fonction triangulaire avec une amplitude maximale à Z=127.5 et dont la valeur est zéro à Z=0 et Z=255. On utilise donc surtout les pixels d'intensité moyenne qui ne sont pas trop bruités ni trop saturés.
  2. Calculer la radiance à partir de z, g(z) et delta t. Radiance = exp(sum(w(Z_R).*g_R(Z_R+1)-B,2)./sum(w(Z_R),2)).



Les résultats sont présentés plus bas.


On ne peut pas encore utiliser ces résultats à cette étape. En effet, nous devons premièrement les convertir sous un format rectangulaire. Ensuite, ils pourront être utilisés dans Blender pour insérer des objets synthétiques.

On voit bien cependant que l'algorithme combine correctement les différents temps d'exposition. (Résultat A: 1/25, 1/50, 1/100. Résultat B: 1/40, 1/80, 1/160).

Il faut aussi prendre note que nous n'avons pas utilisé de reproduction tonale locale ici. (C'est un crédit supplémentaire.) La reproduction tonale local permet de mieux visualiser les résultats.

La prochaine étape permettra de mieux voir les résultats pour l'ensemble de la pièce.                             

g(z)

Carte de radiance HDR sphérique des fichiers ressources

Carte de radiance HDR sphérique du résultat A

Carte de radiance HDR sphérique du résultat B

Transformation panoramique

Formules des vecteurs de réflexion

X, Y, Z, Phi et Theta

L'algorithme utilisé pour faire la transformation panoramique est le suivant:

  1. Calculer les vecteurs normaux N de la sphère. N_X et N_Y varient de -1 à 1 dans l'image sphérique. N_Z est obtenu en s'assurant que le rayon de la sphère est 1.
  2. V, les  vecteurs de la direction d'observation orthographique sont constants (0,0,1).
  3. Calculer les  vecteurs de réflexion R = V - 2 .* dot(V,N) .* N;.
  4. Calculer la longitude phi = arctan(R_Z/R_X).
  5. Calculer la latitude theta = arccos(R_Y).
  6. Utiliser scatteredInterpolant pour faire la transformation panoramique. Les lignes de la carte rectangulaires sont la latitude et les colonnes la longitude.
  7. Sauvegarder la carte rectangulaire en format HDR.

Carte de radiance rectangulaire


Les résultats sont présentés plus bas.

On ne peut pas encore utiliser ces résultats dans Blender pour insérer des objets synthétiques.

 On voit bien cependant que l'algorithme combine correctement les différents temps d'exposition. (Résultat A: 1/25, 1/50, 1/100. Résultat B: 1/40, 1/80, 1/160) puis transforme la sphère en latitude et longitude.

Encore une fois, nous n'avons pas utilisé de reproduction tonale locale ici. (C'est un crédit supplémentaire.) La reproduction tonale local permet de mieux visualiser les résultats. 

Ce format rectangulaire permet de voir la disposition de la pièce dans laquelle la photo a été prise. On voit par exemple les lumières et les chaises dans le résultat A. Dans le résultat B, on voit les divans et les fenêtres.

 

Carte de radiance HDR rectangulaire du résultat A

Carte de radiance HDR rectangulaire du résultat B

La procédure utilisée pour faire la modélisation et le rendu de la scène est la suivante:

  1. Ajouter l'image d'arrière-plan à la scène.
  2. Modéliser la scène en créant manuellement une géométrie approximative de la surface plane.
  3. Spécifier les paramètre des matériaux pour qu'ils ressemblent à la photo.
  4. Ajouter la carte de radiance HDR dans les propriétés du monde Blender.
  5. Insérer des objets synthétiques dans la scène.
  6. Faire le rendu avec Cycles Render.
  7. Faire un second rendu de la scène vide, sans les objets synthétiques.
  8. Faire un troisième rendu du masque binaire des objets synthétiques.
  9. Effectuer la composition des images.  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. c permet de contrôler les  ombres et réflexions. 
  10. composite= M.*R + (1-M).*I + (1-M).*(R-E).*c

    Les résultats sont présentés plus bas.

    La photo A contient des objets de la scène .blend ressource. Le plan correspond à la surface verte de la serviette. Le matériel de la surface est une Diffuse BSDF. Pour les objets, les matériaux suivants sont utilisés: Glossy BSDF, Diffuse BSDF, Mix Shader et Glass BSDF. Les couleurs utilisées sont: Vert, Argent, Blanc, Jaune, Mauve et Cyan. Les roughness varient entre 0.0 et 0.3.

    La photo B contient Mario et Luigi. Le plan correspond à la surface noire de la table. Le matériel de la surface est une Glossy BSDF. En effet, une Diffuse BSDF ne réfléchi pas suffisamment la lumière. On voit bien que le rendu B vide réfléchi la lumière de la même façon que la table le fait dans la photo B vide. Pour les objets, les matériaux suivants sont utilisés: Glass BSDF et Glossy BSDF. Les couleurs utilisées sont: Noir, Vert et Rouge. Les roughness varient entre 0.0 et 0.3. 

Insertion d'objets synthétiques dans une photo

 

Résultat A

 

Résultat B

Photo A vide

Rendu A

Masque A

Rendu A vide

Photo B vide

Rendu B

Masque B

Rendu B vide

Reproduction tonale locale

(30 points)

L'objectif est d'améliorer le contraste des images HDR. Voici l'algorithme de Durand et Dorsey:


  1. Calculer  l'intensité(I): carte_I = (carte_R+carte_G+carte_B)/3
  2. Calculer le log de l'intensité: L = log2(I)
  3. Filtrer avec un filtre bilatéral: B = bilateralFilter(L)
  4. Calculer les " détails" (detail layer): D = L - B.
  5. Normaliser la base: B' = (B - o) * s
    • o = max(carte_B)
    • s = 4.5/ (o - min(carte_B))
  6. Reconstruire l' intensité logarithmique: O = 2^(B' + D)
  7. Remettre les couleurs: R',G',B' = O * carte_chrom
  8. Appliquer une compression gamma. c arte_nouv = carte_nouv.^.8. (Sans la compression gamma le résultat sera trop sombre.)


On voit que le contraste est correctement amélioré pour le résultat A. 

On voit plus de détails dans le résultat que dans chacune des trois photo source.

De plus, on voit que la reproduction tonale locale donne de meilleur résultats que les opérateurs globaux. L/(1+L) est trop sombre et a peu de contraste. sqrt(L) est trop clair et a lui aussi peu de contraste.

Résultat

Source 1/3

Source 2/3

Source 3/3

Opérateur L/(1+L)

Opérateur sqrt(L)




Transformation panoramique en croix verticale

(10 points)

On désire projeter la carte dans un format: le format cubique. La stratégie est la même que l'algorithme présenté plus haut: on effectue une transformation géométrique qui converti l'espace latitude et longitude vers l'espace cube.

Les résultats sont intéressants car on peut bien voir l'intérieur de la pièce contrairement aux deux projections précédentes. Certains logiciels préfèrent utiliser certains formats de carte. Les différents formats peuvent influencer la densité de pixels pour une région donnée.


Autres formats de cartes

Latitude et longitude

Cube

Résultat A

Résultat B