• Aucun résultat trouvé

Calcul de descripteurs locaux

Dans le document SLAM temporel à contraintes multiples (Page 42-45)

Notions de base

Algorithm 1: Algorithme de Levenberg-Marquardt

1.7 Calcul de descripteurs locaux

Afin d’effectuer un appariement des primitives détectées dans différentes images, un descripteur local de texture est extrait de l’image pour chaque primitive afin de caractériser celle-ci. Le descripteur SIFT [30] est connu pour sa robustesse, mais aussi pour ses nombreuses invariances. En effet, ce des-cripteur est invariant à l’échelle de la scène, à la rotation et aux transformations affines. Cependant, il nécessite une grande quantité de calculs ce qui le rend inutilisable dans des contextes d’applications temps réel. Le descripteur SURF [32] pour Speeded Up Robust Features présente les mêmes invariances et le temps de calcul plus acceptable permet son utilisation sur des plate-formes mobiles. Mais en fonction des séquences d’images, ses nombreuses invariances peuvent être un inconvénient. En envi-ronnement urbain par exemple, les coins des fenêtres sont souvent très similaires à une rotation près conduisant à l’appariement du coin bas gauche avec le coin bas droit de l’encadrure : le nombre de faux appariements peut alors dépasser celui de descripteurs plus basiques. Notre choix se porte sur une méthode plus simple basée sur des imagettes carrés. Pour cela, nous extrayons autour de chaque point une sous-image de taille n× n (en pratique n = 11) et nous utilisons le score ZNCC afin de les comparer. La ZNCC pour Zero mean Normalized Cross Correlation s’exprime comme une corrélation centrée normée dont l’expression en fonction des imagettes I1 et I2 est la suivante :

ZN CC(I1, I2) := 1 (2n+1)2 n i=−nn j=−n  I1(i, j)− I1(n)   I2(i, j)− I2(n) σ1(n)· σ2(n) (1.38)

Dans laquelle It(n) représente la moyenne du patch d’indice t∈ {1, 2} et vaut : It(n) := 1 (2n + 1)2 n i=−n n j=−n It(i, j) (1.39)

Et σt(n), l’écart type du patch d’indice t∈ {1, 2}, qui a pour valeur :

σt(n) :=      1 (2n + 1)2 n i=−n n j=−n (It(i, j)− It(n))2 (1.40)

Le descripteur ZNCC, qui ne possède que l’invariance à la luminosité, s’avère être une solution efficace dans le cadre du SLAM visuel. Dans nos travaux, nous utilisons principalement les descripteurs pour effectuer des appariements entre images consécutives sur un flux vidéo. Or, avec une fréquence d’ac-quisition suffisamment élevée (ie. supérieure à 10 images par seconde), l’apparence et la position des points d’intérêt entre deux images consécutives varient assez peu. Les descripteurs plus robustes tels que SIFT et SURF sont plus adaptés dans des contextes de reconstruction 3D à partir d’ensembles d’images désordonnés avec des points de vue très différents. De plus, la ZNCC offre des performances intéressantes en termes de temps de calcul grâce à l’utilisation d’instructions vectorielles2 présentes sur la plupart des processeurs. La figure 1.8 illustre une utilisation de la ZNCC avec une méthode d’appariements de proche en proche où les descripteurs sont mis à jour dans chaque image intermé-diaire (l’apport d’une telle méthode dans un algorithme de SLAM est présenté par Mouragnon [33]). Il est donc possible d’utiliser la ZNCC pour des applications de SLAM. C’est pourquoi, nous choisissons d’utiliser ce descripteur pour l’ensemble des travaux présentés dans le reste du manuscrit.

Récemment, des travaux se sont portés sur le développement de descripteurs binaires qui effectuent les calculs de corrélation directement sur les bits des pixels, sans utiliser d’opérations en virgule flottante. L’intérêt de ces approches réside dans l’utilisation des instructions binaires des processeurs qui sont plus performantes que les opérations en virgule flottante. Parmi les descripteurs binaires connus, on peut citer BRIEF [34], ORB [35] ou BRISK [36].

1.8 Géométrie épipolaire

La géométrie épipolaire modélise les relations liant le déplacement d’une caméra au déplacement de la projection des points de l’environnement dans l’image. Elle peut être utilisée entre deux images I1 et I2 dont les poses sont connues pour associer à un point ν1 détecté dans I1 une droite épipolaire dans I2 : la droite épipolaire est définie par la projection dans l’image I2 de la droite passant par le centre optique de l’image I1 et de vecteur unitaire égal au lancer de rayon d’une détection de cette image. Si les détections ν1 et ν2 représentent la même primitive 3D dans deux images différentes alors la distance entre ν2 et la droite épipolaire déterminée à partir de ν1 devrait être faible (voir figure1.9). Classiquement, la contrainte est appliquée à l’aide de la matrice fondamentale. La matrice fondamentale F est de taille 3× 3 et relie, grâce à une relation matricielle, des points correspondants dans une paire d’images. En utilisant les coordonnées homogènes, si ν1et ν2sont des points homologues (ils correspondent au même point 3D) respectivement de l’image I1 et I2, alors ils doivent satisfaire la relation suivante :

ν2TF ν1 = 0. (1.41)

Avec

F = (K1T)−1R [t]×K2−1 (1.42)







Figure 1.8 – Résultat d’appariements "de proche en proche" avec le descripteur ZNCC : l’apparence des descripteurs est mis à jour sur les images intermédiaires ce qui apporte une robustesse importante à la méthode.

Figure 1.9 – La droite épipolaire lν 1en rouge relative à la détection ν1présente dans l’image I1définit dans l’image I2 une zone de recherche. Seuls les points d’intérêt présents dans ce voisinage (dont ν2 fait partie) vont être sélectionnés pour la comparaison des descripteurs.

Où K1 et K2 sont les matrices d’étalonnage intrinsèque respectivement de la première et de la seconde caméra. R et t représentent respectivement la rotation et la translation entre les poses des deux images. Dans ce cadre, l’équation de la droite épipolaire dans l’image I2 pour un point d’intérêt ν1 a pour expression :

lν1 = F ν1 (1.43)

lν1 est un vecteur de taille 3 contenant les paramètres de la droite épipolaire sous la forme ax+by+c = 0. On normalise ce résultat tel que a2+ b2 = 1 afin que le calcul de la distance d’un point d’intérêt de l’image I2 avec la ligne soit le plus rapide possible. Cette distance s’écrit :

d(ν2, lν1) = |axν2 + byν2+ c|

a2+ b2 =|axν2+ byν2+ c| (1.44) Il est courant d’utiliser la contrainte épipolaire lorsque la position 3D des amers visuels est inconnue. Ceci est utilisé à la fois pour faciliter les méthodes d’appariement mais également pour la localisation : — pour faciliter les appariements : la contrainte épipolaire permet de réduire la zone de recherche dans l’image I2 (le long de la droite épipolaire) d’un point observé dans l’image I1 afin d’éviter la comparaison de tous les descripteurs des deux images qui serait trop coûteuse en temps de calcul,

— pour la localisation : les distances entre les détections et les droites épipolaires associées peuvent être formalisées comme une somme d’erreurs dans une fonction de coût à minimiser avec un processus d’optimisation.

Dans le document SLAM temporel à contraintes multiples (Page 42-45)