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

Reconstitution par Stéréo

Par reconnaissance de contours

 

 


Projet réalisé par Pierre de Chastellier (promo 95)

 

Description du projet

L'impression de relief et de profondeur que nous avons est due au fait que nous avons deux yeux et un cerveau qui interprète les informations fournies par les nerfs optiques. Ces informations sont essentiellement de nature géométriques; ce sont les formes générales qui permettent de donner une idée de leur distance. C'est à partir de cette observation simple que ce projet s'articule, de façon à donner à un robot muni de deux caméras une idée de la nature tridimensionnelle de l'environnement dans lequel il évolue.

Grâce à un système de deux caméras que l'on calibre, c'est-à-dire dont on détermine les caractéristiques internes (capteur CCD) et externes (positions relatives) on peut déterminer la nature tridimensionnelle de n'importe quelle scène. Néanmoins il faut qu'elle comporte des contours nets, des arêtes vives… comme par exemple une vue de l'intérieur d'une pièce.

 

Algorithmes

 

Approximation polygonale

 

On utilise un algorithme par récurrence, l'algorithme de split. A partir du premier et du dernier point de la chaîne du contour, on calcul la distance de la droite passant par le premier et le dernier point à tous les points intermédiaires. Si cette distance est supérieure au seuil on recommence sur les chaînes (premier point - point de distance max) et (point de distance max - dernier point).

On obtient ainsi un algorithme qui est optimisé pour les contours contenant des angles vifs. L'augmentation du seuil permet d'avoir moins de segments au détriment de la fidélité du contour

 

Reconnaissance des segments

 

L’algorithme de reconnaissance des segments s’écrit schématiquement de la façon suivante :

 

Pour chaque segment de Image1

Si Angle entre segment1 et epipolaire1 > Anglelim & Norme segment1 > Normelim

Pour chaque segment de Image2

Si Angle entre segment2 et epipolaire2 > Anglelim &

Norme segment2 > Normelim &

Norme1*Coefflong < Norme2 < Norme1/Coefflong &

Angle entre segment1 et Segment2 <= AngleSeglim

Si Epipolaire du milieu segment1 coupe segment2

On retient le segment qui minimise la moyenne géométrique des

distance des épipolaires des extrémités de segment1 aux extrémités

de segment2

Sinon

Si les épipolaires des extrémités de segment1 coupent Segment2

On divise segment2 entre 3 et on retient la partie du milieu

 

 

Les différents paramètres sont:

 

 

Le choix de la norme géométrique permet de favoriser des segments dont les distances aux épipolaires extrêmes sont sensiblement égales et permet de rejeter des cas où l'une des distances est très supérieure à l'autre.

 

 

Résultats obtenus

Pour des scènes simples dont les arêtes sont vives et contrastée on obtient des résultats moyens. Plus on diminue les paramètres du programme, moins on n'a de segments reconnus mais les correspondances sont correctes et on reconnaît l'objet 3D.

 

 

Détection des segments d'une mire et d'une scène géométrique

 

 

Mise en correspondance 3D correcte de 70 segments

 

Vue de gauche

Vue de droite

Reconstruction 3D

 

 

 

Limites et Améliorations

 

Qualités

 

Les qualités de la méthode tiennent principalement de la robustesse au bruit des primitives géométriques. De plus, comparativement à une méthode de corrélation on économise des calculs en ne reliant qu'un nombre faible de segments (200) au lieu de 400x300 points. Cette méthode est adaptée aux scènes comportant des angles vifs et des arêtes contrastées comme une scène d'intérieur. On pourra doter un robot qui travaille en milieu artificiel (usine, milieu radioactif) d'yeux pilotés par cet algorithme.

Pour une scène simple, un cube par exemple, ne contenant qu'au maximum 12 segments, le programme fonctionne parfaitement.

 

Limites

 

Les premières limites sont dans la calibration des caméras. Les images délivrées par les caméras ne sont pas de grande qualité. Ainsi le repérage des points pour la calibration présente des approximations. Par la suite lorsque l'on trace des épipolaires avec Xobserve elles correspondent dans le domaine de la mire. Mais plus on s'en éloigne plus les épipolaires divergent de la position attendue.

Ensuite lorsque l'on travaille avec des images non retouchées (fig III-2.1) comportant classiquement 200 à 300 segments on arrive très vite à des mises en correspondance aberrantes. Les correspondances sont toujours fidèles à l'algorithme (heureusement) mais pas du tout fidèle à la réalité. La visualisation en trois dimensions montre encore davantage les aberrations. Si l'on diminue les paramètres de contrôle au minimum on obtient moins de mauvaises correspondances mais il en subsiste tout de même.

 

Améliorations

 

Les améliorations possibles sont de façon prioritaire pour la mise en correspondance plus intelligente des segments.

Un algorithme possible qui propage l'hypothèse de continuité est le suivant :

Pour chaque hypothèse <G,D> de mise en correspondance de segments, on regarde parmi les voisins VG et VD de G et de D ceux qui peuvent être mis en relation. Les voisins sont définis par le fait que le milieu des reconstitutions 3D est à une distance inférieure à un seuil. Si le milieu de la reconstitution 3D de <VG,VD> et <G,D> sont à une distance inférieure au seuil, alors on recommence avec les voisins trouvés <VG,VD>.

On peut aussi utilisé trois caméras au lieu de deux.

 

Retour à la liste des projets réalisés