Projets

NB: certains articles peuvent donner lieu a des projets.
Ce fichier est aussi disponible en postscript


1  Stéréo-Vision par corrélation

Quelques données...

Il s'agit d'écrire un programme de reconstruction par stéréo-vision se basant directement sur les images d'intensité. Le principe de la méthode est simple. On suppose qu'on dispose d'un système calibré de 2 caméras qui observe une scène. Pour des raisons de simplicité, on supposera d'abord que les images de départ auront été rectifiées au préalable et donc que les droites épipolaires sont des horizontales: la droite de l'image 2 associée au point de l'image 1 (x1,y1) est la droite y2 = y1 et réciproquement la droite épipolaire de l'image 1 associée au point de l'image 2 (x2,y2) est la droite y1=y2.

Le principe de la corrélation est de considérer autour d'un point de l'image 1 (x1,y1) une fenêtre (qu'on supposera carrée) de taille w. Pour chaque point sur l'épipolaire correspondante dans l'image 2 (x2+d,y2), on va également considérer un fenêtre de taillew et calculer un critère de ressemblance de ces deux fenêtres. Trouver le meilleur appariement pour le point (x1,y1) consiste à trouver la valeur de d qui optimise ce critère.d est appelée la disparité associée au point (x1,y1). L'image qui associe au point (x1,y1) la valeur d est appelée carte de disparités entre les images 1 et 2. Noter que cette carte est relative à l'image 1 qui est utilisée comme image de référence.

Le but du projet est d'obtenir cette carte de disparité. Il est recommandé de soigner le codage afin que le programme obtenu puisse être facilement modifié (en particulier pour changer le critère de corrélation). Les temps d'éxécution d'une stéreo par corrélation peuvent être assez long, penser à travailler avec des imagettes 128x128 par exemple quand vous ferez des tests. On a souvent une idée des disparités que l'on cherche. Faire en sorte de pouvoir spécifier l'intervalle des disparités recherchées afin de réduire les temps de calcul.

Essayez votre algorithme sur les données en Data/Stereo. Il y a dans ce répertoire plusieurs images: Essayer différents critères (attention, suivant le critère, l'optimum correspond soit à une maximisation soit à une minimisation du critère) : les critères SSD, ZSSD, ZNSSD, d'une part etCC et ZNCC d'autre part ne diffèrent que par des normalisations locales sur les images. Les sommations sur les indices i et j correspondent à la sommation sur la fenêtre de taille w. Par exemple, pour des fenêtres de taille 3 centrées au point (x,y), les indicesi et j sont compris entre -1 et +1. On a alors xi = x+i et yi = y+idans l'image 1 et xi = x+d+i et yi = y+idans l'image 2. I(x,y) désigne la moyenne locale de l'image sur la fenêtre considérée centrée en (x,y).

Dans un deuxième temps, on suppose que les images ne sont plus rectifiées. Ecrire un programme de rectification (Voir les chapitres de thèse de Frédéric Devernay, par exemple). Utilisez ce programme et votre programme de stéréo par corrélation pour traiter les images non rectifiées.

Commentez les résultats que vous obtenez.

1.1  Questions subsidiaires

Ces suggestions sont vaguement dans un ordre de complexité croissant. Ces suggestions sont totalement indépendantes les unes des autres. D'autres extensions/améliorations sont possibles, si vous avez des envies n'hésitez pas à m'en parler...

2  Calcul de mosaïque

Quelques données...

On suppose que l'on a un ensemble d'images prise de telle sorte qu'il est possible de créer une mosaïque. Créer un programme qui va calculer les homographies relatives entre toutes ces images et qui créera une image mosaïque (choisir une image de référence et "replacer" toutes les autres images par rapport à cette référence). Implémenter l'algorithme aux moindres carrés avec minimisation non-linéaire des résidus. Attention, je ne m'attend pas a ce que vous programmiez une minimisation non-linéaire, il en existe plusieurs dans la nature Matlab, minpack, numerical recipies, ...

Tester les algorithmes sur les images se trouvant en Data/Mosaics. Il y a dans ce répertoire plusieurs images: Rajoutez des appariements erronés. Comment se dégradent les résultats ?

2.1  Questions subsidiaires

Ces suggestions sont totalement indépendantes les unes des autres et de complexités équivalentes (à mon avis). Dans ce cas aussi, d'autres extensions/améliorations sont possibles, si vous avez des envies n'hésitez pas à m'en parler...Je suis prêt à considérer d'autres choses si le coeur vous en dit.

3  Auto-calibration

Quelques données...

Le but de ce projet est de créer un programme permettant de faire de l'autocalibration. Les différentes étapes de ce programme sont: On suppose que les appariements de points sont donnés manuellement (je vous laisse cliquer les points). On pourra donc se contenter d'une estimation de la matrice fondamentale simple (linéaire + raffinement non-linéaire) sans avoir à utiliser les techniques robustes a la least-median squares.

Pour faciliter la résolution du système d'équations, on supposera que les axes des caméras sont orthogonaux et que le point principal est situé au centre de l'image. La résolution des équations se fera alors aux moindres carrés. Dans un deuxième temps, on pourra faire varier tous les paramètres.

3.1  Questions subsidiaires

Ces suggestions sont totalement indépendantes les unes des autres et de complexités équivalentes (à mon avis). Dans ce cas aussi, d'autres extensions/améliorations sont possibles, si vous avez des envies n'hésitez pas à m'en parler...Je suis prêt à considérer d'autres choses si le coeur vous en dit.