Majeure "Mathématiques et Informatique"
Enseignement d'approfondissement
"Images: Analyse et Synthèse"

RENDU À BASE D'IMAGES


Projet Réalisé par Fabien HOUETO (promo 95)


Description du projet

Ce projet s'intéresse à l'interpolation de vue entre deux ou plusieurs images. On dispose donc dans cette application de deux ou plusieurs images de synthèse avec les données de profondeur associées dans un tampon de profondeur. Pour des images réelles, cette information de profondeur n'est pas disponible. Le but du projet est d'abord d'arriver à reconstruire et à stocker l'image 3D correspondant aux images de départ. Ensuite à partir de cette image 3D, interpoler une vue sous un angle donné par reprojection des pixels. La partie interpolation devra se faire assez rapidement pour permettre, si nécessaire des rendus en temps réel.

Algorithmes utilisés

Les deux principaux algorithmes utilisés sont :
. l'algorithme de reconstruction stéréo :
Cet algorithme est la base de la partie reconstruction 3D. Il procède à partir du fichier de description de l'image, du fichier des données de profondeur et du fichier des matrices de la caméra à une reconstruction 3D de chaque point de l'image et cela par une simple inversion des matrices. L'algorithme est en temps lin&eaire. Mais vu la taille des données à traiter, il n'est pas très rapide. Ce n'est cependant pas grave car la reconstruction est préliminaire à l'interpolation qui est la partie qui doit être rapide.
. l'algorithme de projection :
Compte tenu des problèmes de stockage de l'image 3D, cet algorithme opère sur une image à plusieurs couches de pixels, les pixels étant rangés de l'arrière vers l'avant. dans un premier temps et selon les positions des caméras, l'algorithme détermine la manière dont il balayera l'image. Ensuite l'image est balayée en faisant une mise en commun maximale des opérations qui se répètent (ce qui permet de gagner du temps) et en utilisant l'algorithme de visualisation de McMillan qui garantit l'ordre d'apparution des pixels. Chaque pixel balayé est projeté par simple multiplication par une matrice.
. l'algorithme d'étalement :
Il permet dans la reprojection une estimation de la taille réelle du pixel et agrandit le pixel en conséquence.

Résultats obtenus


Les images :
dans cette partie, nous présentons les résultats obtenus à partir de 3 images.
Ici , on trouve un spécimen d'assez bonne facture. Cependant, on note aussi des phénomènes d'aliasing. Ces phénomènes sont dûs à l'agglomération des pixels lors de la reprojection selon une autre caméra. L'aliasing était prévu au départ, mais nous avons préféré nous occuper du problème (que nous avons jugé plus important et qui se trouvait dans le cadre de notre projet) de l'étalement des pixels pour combler les trous créés par des pixels écartés par la reprojection. Une autre remarque est l'atténuation causée par la superposition de pixels qui à cause de la précision ne correspondent pas toujours aux mèmes pixels, mais qui cependant sont moyennés.
Disons que pour un changement de focal, en l'occurence, un zoom avant sur une partie de l'image, on ne voit plus rien, surtout si le zoom fait est assez important alors que pour une vue extrapolée partiellement en dehors du cône de vision, le rendu demeure acceptable et reste bon dans la partie de la vue appartenant au cône. Par contre pour un zoom arrière, ça marche à peu près. Pour une vue sous un autre angle, la vue privilégiée choisie impose son cadre. De ce fait on assiste à une rognure des extrémités.
Les images prises de plus près sont plus sensibles. La tolérance de fusion de deux pixels doit être réglée plus finement, sinon on a un flou .
Le temps :
L'un des buts du projet étant un rendu rapide, le temps d'exécution est un résultat essentiel. Pour des images 640 x 640, le rendu se fait 5 &agrve; 6 fois plus rapidement que la partie reconstruction 3D. Ce sont de bons temps qui peuvent permettre un suivi en temps réel.

Problèmes rencontrés et solutions apportées

Stockage de l'image 3D :
Le stockage de l'image 3D, si on voulait la faire dans une structure à trois dimensions aurait nécessité un calcul de tous les pixels et un tri en 3D tout en gardant assez de détails, ce qui serait gigantesque. La solution adoptée consiste à reprojeter l'image 3D en choisissant une caméra privilégiée. Pour éviter la perte d'information liée à la projection, la nouvelle structure obtenue conserve au niveau de chaque pixel dans un tableau, les pixels cachés.
Contrôle de la taille de l'image 3D :
Lors de la reprojection selon la caméra privilégiée et à cause des problèmes d'arrondis, deux pixels qui se correspondent ne se projettent pas toujours exactement au même endroit. Il faut donc déterminer une marge permettant de remettre ensemble des pixels qui l'étaient tout en ne perdant pas d'informations (mettre ensemble des pixels qui ne l'étaient pas). La bonne marge a été obtenue heuristiquement.
Agrandissement des pixels :
L'agrandissement des pixels nécessite la connaissance des normales en chaque point de l'image, ce dont nous ne disposons pas. La solution adoptée est donc un agrandissement uniforme des pixels tenant compte seulement des éloignements par rapport aux caméras.


Retour à la liste des projets réalisés