|
Majeure "Mathématiques et Informatique"
Enseignement d'approfondissement
"Images: Analyse et Synthèse" |
Rendu a base d'images
Projet Réalisé par Radu
Stefanescu (Programme Europeen, attache a la promo 97)
Description du projet
Ce projet s'appuie sur une technique qui permet de synthetiser
des prises de vue d'une scene 3D a partir non d'une description geometrique
de la scene mais d'une ou plusieurs prises de vue de la meme scene. Le
plus important avantage de cette technique est la vitesse. Il n'y a pas
de z-buffer et pas de calculs d'eclairage. En plus, le temps necessaire
pour synthetiser une image est proportionnel a la dimension de l'image
et non a la complexite de la scene. Ainsi, cette technique fonctionne particulierement
bien pour des scenes de tres grande complexite comme les paysages qu'on
a utilise ici. Si on maintient la dimension des images constante, alors
on va avoir une frequence d'apparition des images constante, ce qui est
tres bien quand il s'agit des animations ou de simulateurs. En plus, pour
les scenes reeles, il y a le gros avantage de ne pas avoir besoin d'une
reconstruction 3D complete de la scene, mais juste de l'information de
profondeur de chaque pixel.
L'algorithme utilise
Le principe est tres simple. Si on a un point X dans l'espace
reel et deux cameras avec les matrices de projection P1 et P2,
alors X va correspondre a un point Y1=P1*X
dans l'image obtenue par la premiere camera et a un point Y2=P2*X
dans l'image obtenue par la deuxieme camera. La liaison entre les deux
points Y1 et Y2 est Y2=P2*P1-1*Y1.
La probleme est le fait que Y2 peut ne pas se trouver entre
les limites de la deuxieme image. Alors, on va avoir des "trous" dans l'image
de sortie.
Pour surmonter cette derniere probleme on utilise plusieurs images qu'on
combine dans une structure de donnees nommee Layered Depth Image
(LDI). La LDI est une matrice, pas de pixels (comme une simple image),
mais de listes de pixels. Chaque liste contient les pixels qui se trouvent
sur une certaine rayon de vue a des differentes profondeurs. Cette matrice
est parcourue dans l'ordre donnee par l'algorithme de McMillan. Vous pouvez
apprendre plus sur les LDI et l'algorithme de McMillan a http://www.research.microsoft.com/siggraph96/1998/ldi.htm.
Résultats obtenus
On a cree un programme qui prend comme donnees d'entree plusieurs images,
leurs informations de profondeurs et les matrices de projections des cameras
qui les ont pris. Il construit la LDI. En lui donnant deux matrices de
projections il realise une interpolation en plusieurs pas entre les deux
positions.
Voici un example:
Comme on peut voir, il y a encore quelques trous, surtout dans le cas des
images dont la position de la camera est tres differente de la position
de la camera de la LDI. La derniere image a ete prise par la camera de
la LDI meme et donc elle est la meilleure.
Retour
à la liste des projets réalisés