• Aucun résultat trouvé

Application aux appariements de panoramas

5.2 Appariement par programmation dynamique

5.2.4 Application aux appariements de panoramas

Il s’agit dans notre cas :

– d’un problème d’appariement entre deux séquences d’éléments angle/couleur représentant des mesures du panorama entourant le robot, afin de déterminer quels objets sont communs entre les deux panoramas ;

– un sous-problème élémentaire est d’apparier un élément de chaque séquence, un sous-problème partiel est un appariement couvrant une partie de chaque panorama ;

– la fonction score mesure la ressemblance entre deux éléments. Elle vaut 1 pour deux éléments identiques en tout point, et s’approche de 0 pour des éléments différents ;

– on définit le score d’appariement d’une sous-séquence comme la somme des scores élémen-taires ;

– parce que la fonction score est additive, la connaissance des solutions optimales à trois sous-problèmes (i−1 et j −1 éléments, i et j −1 éléments, i−1 et j éléments) permet de simplement déterminer la solution optimale à i et j éléments, comme nous le verrons ci-dessous.

La programmation dynamique a déjà été utilisée pour apparier des panoramas par Einsele [EIN 97,

EIN 01]. Les panoramas en question consistaient en des segments de droites localisés autour d’un robot, reconstitués à partir de mesures de distances. Il n’y avait pas d’information de couleur.

Nous nous sommes inspiré, pour l’implémentation de l’algorithme, d’un exemple appliqué à la

recherche de sous-séquences de symboles communs donné dans [COR 98].

5.2.4.1 Matrice de ressemblances

On note respectivement m et n le nombre d’amers des deux panoramas à apparier. On indice les amers par i et j avec 0 ≤ i < m et 0 ≤ j < n.

Au cours de l’application de la programmation dynamique, chaque élément d’une des deux sé-quences sera comparé une fois et une seule à chaque élément de l’autre séquence. Pour des raisons pratiques, l’implémentation utilisée commence par remplir un tableau M qu’on appelle matrice des

ressemblances.

Nous avons choisi de noter la ressemblance entre un amer et un autre sous la forme d’un réel com-pris entre 0 et 1, en tenant compte des écarts entre différents paramètres mesurés (teinte, saturation, luminance, ou bien distance dans l’espace CrCb). Nous détaillerons les fonctions de ressemblances

utilisées dans nos expériences dans le chapitre qui leur est dédié, en sections9.1.5et9.4.4.

cor-rectement orientés et si on a des raisons de penser que les bonnes paires ont des parallaxes faibles.

Ainsi, si deux secteurs vus j1 et j2 ont tous deux des caractéristiques proches du secteur mémorisé

i, la fonction de ressemblance favorisera l’appariement de celui qui est le plus proche de i

angulai-rement. Toutefois il est important, dans le cas où on apparie des vues dont l’orientation n’est pas ou mal connue, de ne pas tenir compte des écarts d’angles. Ceci est nécessaire pour l’adaptation au cas

circulaire que nous présenterons en section5.2.7.

5.2.4.2 Remplissage de la matrice des appariements potentiels

On remplit un tableau Di,j, 0 ≤ i ≤ m et 0 ≤ j ≤ n (inégalités larges des deux côtés). Di,j

est le score de l’appariement optimal pour le sous-problème dans lequel on se propose de n’apparier respectivement que les i premiers éléments du panorama mémorise et les j premiers éléments du panorama vu.

C’est ici que le principe d’optimalité de Bellman est utilisé : le score de la solution optimale à i et j éléments est le meilleur de trois possibilités : soit reprendre l’appariement optimal à i et j − 1 éléments inchangé, soit reprendre l’appariement optimal à i − 1 et j éléments inchangé, soit reprendre l’appariement optimal à i − 1 et j − 1 éléments en créant une lien entre les amers i, j.

Le remplissage du tableau D traduit ce raisonnement. Il se remplit de proche en proche comme suit :

D0,0 = 0 ∀i, Di,0 = 0 ∀j, D0,j = 0

∀i > 0, ∀j > 0, Di,j = max(Di,j−1, Di−1,j, Di−1,j−1+ Mi,j)

Pour chaque case d’indices i et j strictement positifs, l’opérateur max intervient, choisissant une valeur entre trois. On note à chaque application de l’opérateur max lequel des trois choix est

sélec-tionné. Cela définit un tableau Ci,j défini pour des indices i et j strictement positifs 0 < i ≤ m et

0 < j ≤ n :

Ci,j = 0 si c’est Di,j−1qui est retenu

Ci,j = 1 si c’est Di−1,j qui est retenu

Ci,j = 2 si c’est Di−1,j−1+ Mj−1,0qui est retenu

Notons qu’en théorie, un cas d’égalité pourrait se produire lors de l’application de l’opérateur max. Cela est possible si plusieurs appariements différents ont exactement le même score optimal. Il serait possible de les énumérer lors de l’extraction de l’appariement mais cela n’est pas important dans notre application. Le cas est en outre tout à fait improbable dans une application réelle, les mesures étant bruitée de façon aléatoire. Nous ne nous y attardons donc pas.

5.2. APPARIEMENT PAR PROGRAMMATION DYNAMIQUE 119

5.2.4.3 Extraction de l’appariement

Nous avons vu que la valeur Di,jreprésente le score de l’appariement optimal du sous-problème

ne faisant intervenir que les i premiers amers du premier panorama et les j premiers amers du second.

Une fois les deux tableaux remplis, on connaît le score de l’appariement optimal complet Dm,n

mais pas encore l’appariement lui-même. Pour cela, on parcourt en marche arrière le tableau C, en

partant de Cm,nsoit Ci,javec i = m et j = n. Alors :

Si Ci,j = 0 on décrémente i

Si Ci,j = 1 on décrémente j

Si Ci,j = 2 on décrémente i et j et on apparie les amers correspondants

Quand i ou j atteint zéro, on a décrit l’appariement complet.

5.2.4.4 Petit exemple concret

Nous prenons pour exemple la matrice des ressemblances suivante, qui signifie essentiellement que l’amer d’indice 1 du premier panorama ressemble à l’amer 1 du second, que l’amer 2 du premier ressemble assez à l’amer 3 du second, et que l’amer 3 du premier ressemble à l’amer 2 du second.

i ↓ j → 0 1 2 3 4 0 0.00 0.00 0.00 0.00 0.00 1 0.00 0.70 0.00 0.00 0.00 2 0.00 0.00 0.00 0.55 0.00 3 0.00 0.00 0.79 0.00 0.00 4 0.00 0.00 0.00 0.00 0.00

L’appariement par programmation dynamique respecte l’ordre. Il ne pourra donc retenir les trois paires 1-1 2-3 3-2 qui correspondent à une inversion des amers 2 et 3. Il va choisir en fonction des scores de ressemblances.

L’algorithme remplit de proche en proche les tableaux C et D. Nous représentons le tableau D, augmenté d’un symbole indiquant le cas de la case C concerné de façon plus claire qu’un chiffre. ↑ correspond au cas 0, ← au cas 1, et -./au cas 2. Le cas 2 dans une case (i, j) correspond à retenir la paire (i − 1, j − 1) i ↓ j → 0 1 2 3 4 5 0 0.00 0.00 0.00 0.00 0.00 0.00 1 0.00 ↑ 0.00 ↑ 0.00 ↑ 0.00 ↑ 0.00 ↑ 0.00 2 0.00 ↑ 0.00 -./0.70 ← 0.70 ← 0.70 ← 0.70 3 0.00 ↑ 0.00 ↑ 0.70 ↑ 0.70 -./1.25 ← 1.25 4 0.00 ↑ 0.00 ↑ 0.70 -./1.49 ← 1.49 ← 1.49 5 0.00 ↑ 0.00 ↑ 0.70 ↑ 1.49 ↑ 1.49 ↑ 1.49

Partant du coin en bas à droite, en suivant les flèches on trouve l’appariement suivant : i = 1 apparié à j = 1, et i = 3 apparié à j = 2.

L’algorithme a bien « envisagé » d’apparier i = 2 avec j = 3 mais cela n’a pas été retenu car le score partiel (1.25) est moins bon que celui de la solution finalement retenue (1.49). On peut

considérer que cette décision a été prise dans la case D4,4.