TP5: Insertion d'objets virtuels

Problématique

Ce TP a pour objectif d'insérer des objets virtuels dans une scène en y ajoutant diverses caractéristiques(éclairage et orientation) pour les faire paraître réels

Algorithme et explications

Partie1 : Création de la carte de radiance

Algorithme

Pour réaliser une insertion "réussie", il faut d'abord capturer les conditions d'éclairage de la scène dans laquelle les objets virtuels seront insérés. Pour y arriver, on utilise une sphère réfléchissante qu'on photographie avec des temps d'exposition différents (minimum 3). Cela permet de reconstruire à partir de divers algorithmes les conditions d'éclairage de la scène. Les dispositions à prendre ainsi que le matériel nécessaire pour réaliser ces prises sont disponibles dans l'énoncé du tp.
En se servant de l'article de Debevec et Malik 1997, on est en mesure d'implémenter les différentes équations permettant de construire la carte de radiance. Le fichier gsolve.m fourni en annexe de l'article permet de calculer la fonction g qui à chaque valeur de pixel de 1 à 255 associe la somme des log de l'exposition et de la valeur des pixels selon l'équation :
g(Zij) = ln(Ei) + ln(tj)

Les paramètres d'entrée de gsolve sont: les valeurs de n (arbitraire) pixels (aléatoirement choisis), les temps d'exposition, lambda qui est le poids accordé à la fonction de linéarisation de g et w une fonction qui pondère un pixel compte tenu de sa valeur.
J'ai dû modifier le fichier gsolve.m pour qu'il fonctionne selon mes entrées (B(j) au lieu de B(i,j), ligne 35).
g doit être calculé pour chaque canal de couleur de l'image. Les courbes de g obtenues en fonction de X = 0:255 sont les suivantes:

Pour à partir de ces valeurs construire la carte de radiance, on se réfère à l'équation 6 de l' article. Après l'avoir calculée pour chaque canal, j'ai obtenu l'image suivante:
La trouvant un peu floue, j'ai modifié certains paramètres(en l'occurence le nombre n de points dans le calcul de g). Le réslutat n'est pas très différent en ce qui concerne le bruit, même si la scène semble légèrement plus éclairée

Explications

Le bruit dans g comme dans l'image viennent probablement du fait que, vu que les images n'avaient pas la même taille, j'ai fait un "resize". Ça a certainement amélioré mes résultats mais comme il s'agit d'une compression, ce n'est pas optimal. Le mieux aurait été d'aligner les images (comme dans le tp1 par exemple). Il est nécessaire de faire cet alignement sinon les pixels appareillés seront trop différents d'une image à l'autre

Partie 2: Projection équirectangulaire

Dans cette partie il est question de projeter la scène réflétée sur la sphère sur un plan rectangulaire contenant tout les informations en latitude (0 - 360 degrés) et en longitude(-90 - 90 degrés). Le principe selon lequel je le calcule est le suivant: trouver la valeur des normales à la sphère en utilisant une équation de cercle (x^2+y^2 = r^2) pour me focaliser sur les les points contenus dans lsphère (devenue un cercle dans l'image). Les coordonnées x et y sont obtenues directement et il ne reste plus qu'à calculer z avec l'équation de la sphère. Ensuite j'utilise cart2sph.m pour obtenir les coordonnées sphériques, puis j'interpole. Mais ça ne fonctionne pas. La méthode est à la base un peu bancale dans la mesure où interpoler de cette manière donnera des valeurs biaisées pour de très petites valeurs d'angles (sin(x) = x quand x->0), ce qui n'est pas correct. Il faut probablement passer par une transformée inverse.

Partie 3: Blender

Modelisation

Le rendu dans Blender se fait essentiellement en suivant les étapes prescrites dans l'énoncé à quelques détails près, l'interface étant relativement différente. Pour cette étape,

L'insertion du plan donne

Pour la suite, il est question d'insérer les objets dans une scène et d'en faire le rendu avec l'image équi-rectangulaire calculée dans la partie 2. Comme ce calcul n'a pas fonctionné, je continue avec celle fournie dans le tp.

Rendu

À cette étape, il est question d'obtenir le rendu des éléments essentiels qui nous permettront de faire la composition à l'étape suivante:

Composition

La composition se fait avec l'équation de l'énoncé:
composite = M.*R + (1-M).*I + (1-M).*(R-E).*c
où, je cite "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". On obtient donc:

Quelques précisions sur la composition:
J'ai redimensionné l'image vide avec Paint
Les images doivent être en double.

Conclusion

Grâce aux notions acquises dans ce tp, on peut aller beaucoup plus loin; chacune des étapes a un champ d'applications vaste.