• Aucun résultat trouvé

Chapitre 3 Reconstruction 3D statique

3.3. Reconstruction 3D de droites

3.3.1. Détection de droites dans les images omnidirectionnelles

La détection de droites dans les images omnidirectionnelles est beaucoup moins aisée que dans les images perspectives car la projection des droites sur le plan image ne donne plus des droites mais des coniques. Le problème classique de détection de lignes dans les images perspectives devient donc un problème complexe de détection de coniques dans les images omnidirectionnelles.

Il existe quelques cas particuliers qui permettent de simplifier la détection des lignes dans les images omnidirectionnelles. [Yagi91a] et [Delahoche97a] se sont intéressés à la détection de droites projetées radialement sur un miroir conique. Cela impose que le capteur soit en position verticale et qu'il y ait suffisamment de lignes verticales dans l'environnement. [Fiala02a] a proposé une méthode pour extraire des segments horizontaux et verticaux, mais pas des droites quelconques. Cette limitation est due à l'utilisation de capteurs non-centraux qui rend la détection de lignes quelconques extrêmement complexe.

Comme nous disposons d'un capteur central, nous exploitons cette propriété pour faciliter la détection de lignes. Pour cette famille de capteurs, les méthodes d'estimation de lignes peuvent être classées en deux principales catégories. La première catégorie cherche à détecter des coniques dans l'image et à en estimer les cinq paramètres de sorte que la conique s'ajuste aux données extraites [Zhang97a]. Le temps de calcul est généralement important et ces algorithmes ne sont pas efficaces quand seules de petites portions de coniques sont visibles. De plus, ces méthodes ne sont souvent applicables qu'au cas particulier du capteur paracatadioptrique,

association d'un miroir paraboloïde et d'une caméra orthographique car les projections des lignes deviennent alors des arcs de cercles [Barreto03b] [Barreto06b] [Vandeportaele06a].

La seconde catégorie consiste en une détection des grands cercles sur la sphère d'équivalence. Il a en effet été démontré dans [Geyer01a] que la projection d'une ligne 3D sur la sphère est un grand cercle C comme l'illustre la figure 98. Ces méthodes ne sont applicables qu'aux capteurs calibrés car il faut pouvoir calculer la projection des pixels sur la sphère d'équivalence.

Figure 98: Projection d'une droite sur la sphère d'équivalence.

Le principal avantage de la détection des grands cercles sur la sphère d'équivalence est que l'algorithme sera utilisable pour tous les capteurs centraux puisqu'il s'agit d'un modèle unifié.

La détection des grand cercles est en général réalisée par une transformée de Hough [Hough62a], la différence entre les différents algorithmes est l'espace dans lequel les traitements sont effectués. Dans [Vasseur04a], les grands cercles sur la sphère sont définis par leur normale caractérisée par les angles d'élévation et d'azimut. Un espace de Hough fondé sur ces angles est alors créé et la détection des maxima dans l'espace de Hough permet d'obtenir les paramètres des droites. Il existe d'autres espaces de Hough pour caractériser les droites, il est par exemple possible d'utiliser la normale directement [Mei07b] ou les coordonnées cubiques [Yamazawa00a].

La transformée de Hough introduit cependant quelques problèmes comme le choix du meilleur pas d'échantillonnage de l'espace de Hough qui devrait de plus tenir compte de la résolution non uniforme des capteurs, et la détection des maxima de l'espace de Hough qui est une étape délicate.

Nous proposons donc une nouvelle méthode de détection et d'estimation de droites dans les images omnidirectionnelles, valide pour tous les capteurs centraux, et fondée sur l'algorithme

d'estimation robuste RANSAC.

La première phase de notre méthode consiste à extraire les contours présents dans l'image omnidirectionnelle (figure 99 a) en appliquant l'algorithme de Canny. De très nombreux contours sont détectés parmi lesquels certains n'appartiennent pas réellement à des contours physiques comme le montre la figure 99 b.

Des chaînes de pixels connexes sont ensuite créées avec les contours extraits précédemment. Pour éviter la détection d'une multitude de petites lignes, les chaînes trop courtes sont rejetées. Le résultat de cette étape est présenté sur la figure 99 c. Sur cette figure, les chaînes de pixels connexes sont représentées par différentes couleurs et les chaînes inférieures à 50 pixels ont été rejetées.

(a) (b) (c)

Figure 99: (a) Image omnidirectionnelle - (b) Contours détectés - (c) Chaînes de pixels connexes. Chaque chaîne ainsi créée est une droite omnidirectionnelle potentielle. Il faut donc statuer pour déterminer s'il s'agit bien d'une droite et, dans ce cas, estimer ses paramètres. Les droites omnidirectionnelles seront caractérisées par la normale du plan qui contient la droite et qui passe par le centre de la sphère d'équivalence (cf figure 100).

Nous proposons de travailler directement sur la sphère unitaire S2

∈ℝ3. Nous caractériserons une droite par la normale n∈S2 du plan formé par la droite et le centre de projection.

Tous les pixels des chaînes sont projetés sur la sphère d'équivalence. Cette étape, appelée

lifting, nécessite la connaissance des paramètres intrinsèques du capteur et suppose donc que le

capteur est calibré. Tous les traitements suivants sont réalisés avec les points de la sphère.

Pour estimer les paramètres de la droite qui correspond le mieux aux points de la chaîne, une méthode d'estimation robuste, appelée RANSAC (RANdom SAmple Consensus [Fischler81a]), est utilisée. Son pseudo-code est donné sur la figure 101.

Pour chaque chaîne, deux points XS1 et XS2 sont tirés aléatoirement et la normale du plan passant par ces deux points et par le centre de la sphère est calculée :

n= XS 1

×XS2

XS1×XS2 où ∈{−1,1} permet de s'assurer que n∈S2 . (44) Les autres points de la chaîne sont ensuite testés pour statuer sur leur appartenance au grand cercle C donné par :

C={XSnTXS=0, ∥XS∥=1} (45)

Dans la pratique, des petites erreurs dues au bruit, à la discrétisation de l'image ou à des erreurs de calibrage conduisent à fixer un seuil d'erreur pour statuer sur l'appartenance ou non du point XS au grand cercle C . Tous les points appartenant au grand cercle C défini par n sont alors stockés en mémoire.

Si le nombre de points appartenant au cercle C est supérieur à la longueur minimale autorisée pour définir une droite, alors la chaîne de pixels correspond bien à une droite dont la normale est ré-estimée grâce à tous les points appartenant au grand cercle.

Il est alors possible de définir des segments plutôt que des droites en prenant le premier et le dernier pixel de la chaîne appartenant au grand cercle.

k = 0

Tant que k < MAX_ITERATIONS

maybe_inliers = 2 points sélectionnés aléatoirement maybe_droite = n estimée avec ces 2 points

consensus_set = maybe_inliers

Pour chaque point pas dans maybe_inliers

Si le point respecte le modèle avec une erreur plus petite que MAX_ERROR alors ajouter le point à consensus_set

Si le nombre de points dans consensus_set > seuil alors il s'agit bien d'une droite.

Ré-estimation de n avec tous les points dans consensus_set Figure 101: Pseudo-code pour l'estimation des droites omnidirectionnelles par la méthode du

RANSAC.

Toutes ces étapes permettent de détecter les segments de droites omnidirectionnelles comme l'illustre la figure suivante :

Figure 102: Segments de droites omnidirectionnelles détectés.

Documents relatifs