Recalage de vidéo et de modèle 3D SIG

Transcription

Recalage de vidéo et de modèle 3D SIG
Recalage de vidéo et
de modèle 3D SIG
Utilisation d’informations géométriques
Rapport de Master
Vincent Jantet
Juin 2008
Encadrants :
Luce Morin
MCF à l’IFSIC - IRISA : Temics
Gaël Sourimant Ingénieur de recherche - IRISA : Temics
Résumé
Ce document est un rapport de stage de fin d’étude, réalisé à Rennes, dans l’équipe
TEMICS de l’IRISA. Le problème global s’inscrit dans le domaine de la génération automatique de modèles 3D d’environnement urbain texturé, en utilisant une caméra mobile.
Ce rapport traite la partie du recalage initial entre les données vidéo et un modèle 3D
incomplet préexistant, en utilisant des méthodes proches de celles utilisées en reconstruction. Plusieurs solutions sont disponibles dans l’état de l’art pour résoudre ce problème
ouvert de recalage, mais la plupart sont mal adaptées aux informations disponibles, ou ne
sont pas totalement automatisables. Elles n’utilisent généralement le contenu que d’une
seule image, et n’exploitent pas complètement les données 3D issues d’un modèle SIG.
La démarche développée ici, consiste à extraire de la vidéo, des informations géométriques concernant le relief perceptible, pour faciliter le recalage. La première étape
consiste à délimiter approximativement la zone visible du modèle SIG, elle ne se base
que sur des informations de position GPS et de déplacement caméra. La seconde étape
utilise deux images de la vidéo judicieusement choisies, pour mettre en correspondance les
contours et en déduire leurs coordonnées 3D. Cette mise en correspondance de contour se
base sur une méthode de suivi de points dans la vidéo, et sur une estimation robuste (basé
RANSAC) d’homographie. La dernière étape effectue le recalage final en comparant le
modèle calculé au modèle SIG. Elle se concentre sur la position du plan vertical principal
visible dans la vidéo, estimée encore une fois de façon robuste (basé RANSAC), puis en
détermine les contours et les utilise pour effectuer le recalage final.
Cette solution a été appliquée sur des séquences réelles, et fonctionne déjà correctement
sur des cas simples.
3
Table des matières
1 Introduction
1.1 Présentation du contexte . . . . . . . . . . . . .
1.2 Fondements théoriques . . . . . . . . . . . . . .
1.2.1 Équations de projection . . . . . . . . .
1.2.2 Géométrie épipolaire . . . . . . . . . . .
1.2.3 Reconstruction 3D . . . . . . . . . . . .
1.2.4 Recalage . . . . . . . . . . . . . . . . . .
1.3 Etat de l’art . . . . . . . . . . . . . . . . . . . .
1.3.1 Image seule . . . . . . . . . . . . . . . .
1.3.2 Images multiples . . . . . . . . . . . . .
1.3.3 Estimation robuste . . . . . . . . . . . .
1.3.4 Solution précédente de l’équipe TEMICS
1.4 Nouvelle solution proposée . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Estimation du mouvement de la caméra
2.1 Suivi de points d’intérêt . . . . . . . . . . . . . . .
2.2 Estimation robuste de F, puis de E . . . . . . . . .
2.3 Calcule de la pose relative [R|t] . . . . . . . . . . .
2.4 Estimation d’une pose approximative de la caméra
2.4.1 Principe . . . . . . . . . . . . . . . . . . . .
2.4.2 Alignement de tGP S et tCamera . . . . . . . .
3 Extraction de la structure géométrique
3.1 Géométrie Épipolaire . . . . . . . . . . . . . .
3.1.1 Projection sur les droites épipolaires .
3.1.2 Calcul de F à partir de la pose relative
3.2 Reconstruction 3D des points d’intérêt . . . .
3.2.1 Calcul de la profondeur . . . . . . . . .
3.2.2 Résultats . . . . . . . . . . . . . . . .
3.3 Reconstruction d’une ligne en 3D . . . . . . .
3.3.1 Détection des contours rectilignes . . .
3.3.2 Mise en correspondance de segments .
3.3.3 Positionnement du segment en 3D . . .
3.4 Conclusion . . . . . . . . . . . . . . . . . . . .
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
8
8
9
10
11
12
12
13
15
16
19
.
.
.
.
.
.
21
21
22
23
23
23
23
.
.
.
.
.
.
.
.
.
.
.
27
27
27
28
29
30
30
31
31
32
35
35
4 Recalage final
4.1 Recherche du plan principal . . . . . . . . . . .
4.2 Sélection des primitives contenues dans ce plan .
4.3 Détection des limites de la façade . . . . . . . .
4.4 Mise en correspondance 2D-3D et calcul de pose
4.5 Résultats et conclusion . . . . . . . . . . . . . .
5 Conclusion
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
38
39
39
39
41
6
Chapitre 1
Introduction
Générer un modèle 3D photo-réaliste d’une zone urbaine est un travail fastidieux s’il
est fait à la main. Cependant, de nombreuses applications comme les visites virtuelles ou
la cartographie, en sont friandes. En effet, le modèle 3D offre à l’utilisateur un confort
supplémentaire et une immersion plus importante. On peut citer par exemple l’application
Google Earth avec son complément Sketchup, ainsi que leur équivalent Microsoft Virtual
Earth 3D, qui permettent de construire et d’explorer en 3D un environnement urbain.
Il serait intéressant de pouvoir générer ces modèles, rapidement et à moindre coût, en
automatisant au maximum toutes les étapes.
Ce chapitre sert d’introduction au problème, avant les explications détaillées de la
solution adoptée.
– Il expose pour commencer le contexte dans lequel se situe l’équipe TEMICS, en
introduisant le problème qu’elle se pose.
– Il détaille ensuite les notations et quelques fondements mathématiques qui seront
utilisés par la suite.
– Il résume enfin un vaste état de l’art des méthodes automatiques de recalage, en attachant une attention particulière à la solution précédemment utilisée dans l’équipe
TEMICS.
– Il annonce pour finir les différentes étapes d’une nouvelle méthode, détaillée dans
toute la suite du document.
1.1
Présentation du contexte
Les données SIG (Acronyme pour "Système d’Information Géographique") sont des
données géographiques géo-référencées, qui contiennent entre autre les contours au sol, et
la hauteur de chaque bâtiment. Cette base de données permet de représenter les bâtiments
sous forme de polyèdres simples comme on peut le voir sur la figure 1.1, mais ne contient
ni les textures des façades, ni leur géométrie précise (portes, fenêtres, ...).
L’idée suivie par l’équipe TEMICS à l’IRISA est de se baser sur les données SIG, puis
de raffiner le modèle en lui appliquant des textures issues d’une vidéo faite autour des
bâtiments. Ce problème a fait l’objet de la thèse de Gaël Sourimant [1], mais nécessite
au préalable un recalage entre la vidéo et le modèle 3D, c’est à dire qu’il faut connaître
pour chaque image de la séquence, la position de la caméra exprimée dans le repère
des données SIG. Ainsi, la projection perspective du modèle SIG dans les images doit
7
(a) Représentation 2D
(b) Représentation 3D
Figure 1.1 – Représentation planaire et 3D des données SIG.
correspondre aux contours réels des bâtiments. L’acquisition des coordonnées GPS de la
caméra permet un premier recalage peu précis, mais qui limite l’espace de recherche lors
du calcul de pose plus précis.
Le calcul de la pose pour la première image de la séquence est particulièrement critique pour la suite des traitements. Pour les images suivantes, la pose calculée à l’instant
précédent fournit une initialisation confortable alors que la phase d’initialisation n’a aucune connaissance a priori sur la pose. La première solution de l’équipe TEMICS est un
recalage semi-interactif mis en oeuvre par G. Sourimant [1], où une intervention humaine
est nécessaire. Elle a été automatisée par T. Colleu [2] mais présente des résultats pas
toujours satisfaisants lorsque les arêtes des bâtiments sont peu contrastées. L’objectif du
stage est donc de poursuivre les travaux de l’équipe sur le recalage initial, en proposant
une initialisation qui tire parti d’informations 3D extraites de la vidéo afin de combler les
lacunes de l’approche précédente. Les méthodes qui pourraient être utilisées par la suite
pour calculer la pose de chaque image et pour raffiner le modèle ne sont pas abordées ici,
mais peuvent être trouvées dans d’autres publications telle que celle de G. Sourimant [1].
1.2
Fondements théoriques
Cette section présente les bases théoriques nécessaires à la compréhension de la méthode de recalage que nous proposons dans ce document. Elle présente trois points importants, que sont :
– Les équations de projection, qui sont à la base de la vision par ordinateur.
– La géométrie épipolaire, qui apparaît lorsque l’on a plusieurs images d’une même
scène.
– La reconstruction d’un point 3D à partir de deux images le représentant.
1.2.1
Équations de projection
Dans une image, les coordonnées de chaque pixel sont liées à celles du point physique
qu’il représente par les équations de projections. Avec M un point physique de coordonnées homogènes (X, Y, Z, 1), le pixel m qui le représente a pour coordonnées dans
8
l’image :
X
x
Y 
 
 
y  ≡ P ×  
Z 
1
1

 

La matrice de projection P peut se décomposer en séparant d’une part les paramètres
intrinsèques de la caméra, notés K, et d’autre part les paramètres extrinsèques de pose,
notés [R|t].
P = K[R|t]
Ces différents paramètres sont expliqués dans les sections suivantes.
Paramètres intrinsèques
Les différents paramètres liés à l’objectif de la caméra et aux déformations qu’il engendre sur les images sont regroupés dans une matrice K de taille 3 × 3. On y trouve :
– Le couple (u0 , v0 ) qui représente les coordonnées de la projection dans l’image du
centre optique de la caméra.
– La distance focale f de la caméra, c’est à dire la distance entre le centre optique et
le plan image.
– Le couple (ku , kv ) qui sont des paramètres dépendants de la taille des pixels.
– Un paramètre de déformation α 
qui sera supposé
 nul par la suite.
f kx α u0


K =  0 f ky v0 
0
0
1
On suppose ici que la caméra est déjà calibrée, c’est à dire que la matrice K est déjà
connue. Si ce n’est pas le cas, il est possible d’effectuer le calibrage à partir de la vidéo,
en utilisant les travaux présentés dans [4, 5].
Paramètres extrinsèques
Les paramètres extrinsèques de la caméra sont les six degrés de liberté qui définissent
sa position dans le référentiel absolu. Ils sont représentés sous la forme d’une matrice
[R | t] contenant une matrice de rotation R, et un vecteur de translation t.


[R | t] =  R

tx
ty 

tz
La matrice R représente la rotation entre le repère RC de la caméra et le repère absolu
R0 , qui pour nous correspond au repère des données SIG. La translation t représente le
déplacement entre les origines de ces deux repères, exprimé dans le repère caméra RC .
1.2.2
Géométrie épipolaire
Lorsque une scène est photographiée de deux points de vue différents, alors les primitives des deux images I et I 0 vérifient automatiquement la géométrie épipolaire, quelle
9
que soit la géométrie de la scène. En plus d’être très utile dans l’estimation de mouvement de la caméra, la géométrie épipolaire possède d’autres propriétés, qui permettent
d’augmenter la précision de la reconstruction.
Figure 1.2 – Représentation de la géométrie épipolaire
Pour chaque point physique M , la géométrie épipolaire découle de l’existence d’un
unique plan épipolaire passant par ce point M et par les centres optiques des deux
images C et C 0 . A partir d’un pixel m de l’image I, il n’est pas possible de connaître
les coordonnées exactes du point 3D qu’il représente, mais on sait que ce point 3D est
positionné sur la demi-droite [C; m) appelé ligne de vue. Le pixel m0 est donc positionné
sur la droite épipolaire, définie comme l’intersection du plan image I 0 et du plan épipolaire.
1.2.3
Reconstruction 3D
Les projections ne sont pas des fonctions injectives, et projeter un point 3D dans
une image a pour effet de “perdre” la profondeur du point. Il est cependant possible de
retrouver les coordonnées 3D d’un point M si l’on connaît les coordonnées des pixels m
et m0 qui le représentent dans deux images I et I 0 . Bien sûr, il faut pour cela que les
poses P et P 0 des deux images ne soient pas dans une configuration dégénérée. Il faut en
pratique que les deux centres optiques des caméras soient distincts.
R. Hartley et A. Zisserman proposent une méthode générique pour calculer les coordonnées 3D du point M à partir de deux vues, qui s’applique quelles que soient les matrices
de projections P et P 0 . En utilisant les équations de projections, qui sont m ≡ P M pour
l’image I et m0 ≡ P 0 M pour l’image I 0 , leur solution consiste à calculer les coordonnées
3D du point M qui vérifient au mieux les équations de projections. En développant ces
équations, on trouve un système de six équations à résoudre, qui sont fortement liées
entre elles.



λx = p11 X +p12 Y
λy = p21 X +p22 Y


( λ = p31 X +p32 Y
+p13 Z +p14
+p23 Z +p24
et de même pour m0 ≡ P 0 M
+p33 Z +p34 ) × x
Une écriture matricielle de ces mêmes équations permet d’appliquer des méthodes géné10
riques pour les résoudre.
X
p11 − p31 x p12 − p32 x p13 − p33 x p14 − p34 x
 p − p y p − p y p − p y p − p y  Y 
 
 21
31
22
32
23
33
24
34 
× =0
 0
0
0
0
0
0
0
0
0
0
0
0
p11 − p31 x p12 − p32 x p13 − p33 x p14 − p34 x   Z 
1
p021 − p031 y 0 p022 − p032 y 0 p023 − p033 y 0 p024 − p034 y 0




⇐⇒
A×M =0
Pour trouver les coordonnées de M , il suffit de faire une décomposition de A en valeurs
singulières par une méthode classique, pour ensuite récupérer le vecteur propre associé à
la valeur propre nulle. En pratique, il n’y a jamais de valeur propre nulle, mais on utilise
comme point M le vecteur associé à la valeur propre la plus petite.
1.2.4
Recalage
Le problème du recalage consiste à trouver la transformation géométrique qui permet
de faire se superposer deux ensembles de données. Dans le cadre de la vision par ordinateur, le recalage consiste à trouver la pose de la caméra, qui permet de projeter chaque
point 3D d’un modèle sur le pixel de l’image qui lui correspond. Ainsi, le modèle 3D
projeté sur une caméra virtuelle ayant cette pose se superpose correctement au contenu
de l’image.
Image
|
+
Modèle 3D
{z
}
Recalage
Incorrect
Correct
A partir d’une image ou d’une vidéo, connaître avec précision les paramètres extrinsèques de la caméra est très intéressant pour la suite. Cela permet par exemple d’asservir
le mouvement de la caméra réelle afin d’accomplir un certain objectif comme la saisie
d’un objet. Il est également possible de l’utiliser pour raffiner le modèle 3D par des informations géométriques supplémentaires, ou par des informations de texture, comme c’est
le cas dans les travaux de G. Sourimant [1]
11
1.3
Etat de l’art
Le problème du recalage initial entre un modèle 3D et une photo ou une vidéo, est
très étudié depuis les années 1980. De nombreuses solutions ont été proposées, utilisant
des procédés variés. Historiquement, les premières méthodes ont été manuelles ou semimanuelles, et une intervention humaine était nécessaire au long du processus [6]. Notre
approche se veut complètement automatisable, et dans cette optique, nous avons détaillé
ici les méthodes les plus adaptées aux données dont nous disposons.
La première classe de méthodes présentée, se base uniquement sur une image pour
estimer la pose de celle ci. La seconde classe de méthodes utilise plusieurs images pour
parvenir au même objectif, avec une légère distinction entre les méthodes travaillant
directement avec les images, et celles qui calculent d’abord une reconstruction de la scène.
Nous verrons ensuite un algorithme fondamental d’estimation robuste, appelé Ransac,
puis une description précise de l’algorithme utilisé précédemment par l’équipe TEMICS.
1.3.1
Image seule
Toutes les méthodes permettant de faire du recalage à partir d’une seule image ont
des organisations similaires. Elles commencent par extraire de l’image certaines primitives
intéressantes qui peuvent être des points, des lignes ou d’autres structures remarquables.
Ces primitives sont ensuite mises en correspondance avec des éléments du modèle 3D.
Enfin, le calcul de pose peut être effectué, pour aligner ces correspondances 2D-3D.
Extraction de primitive
Les primitives peuvent être de plusieurs types. Ce sont parfois des points de l’image
qui sont des points précis du modèle 3D, ou bien des lignes de l’image, représentant des
arêtes du modèle 3D à recaler [7, 8, 9].
Une méthode intéressante utilise les points particuliers que sont les points de fuites
pour aider au recalage. Ces points de fuite peuvent être extraits d’une image par des
méthodes comme celles de C. Rother [10]. Parmi leurs multiples utilisations envisagées [11,
12], il est possible de les utiliser pour faire un recalage, si on les met en correspondance
avec les points de fuite récupérés dans le modèle 3D. Cependant, il y a en général un
nombre très restreint de points de fuite pouvant être extraits d’une image, et bien souvent,
seulement deux sont vraiment marqués.
Ces primitives sont ensuite mises en correspondance avec les éléments du modèle 3D
qu’elles représentent. L’étape suivante est de calculer la pose qui aligne au mieux ces
correspondances. Le but final étant que les éléments 3D soient bien projetés dans l’image
aux emplacements des primitives qui leur sont associées.
Calcul de pose
Le calcul de pose est un problème non linéaire, très étudié dans le domaine de la
vision par ordinateur. En partant d’une pose initiale approximative, et d’un ensemble
de primitives en correspondance, le problème revient à calculer une nouvelle pose qui
réduit l’écart au modèle. Les algorithmes POSIT [13] et SOFTPOSIT [14] sont parmi les
plus répandus. La solution proposée par E. Marchand [15] est similaire, et cherche à faire
12
Figure 1.3 – Points de fuite extraits d’une photo en zone urbaine.
converger la pose par un asservissement sur sa vélocité, c’est à dire son déplacement. Le
déplacement v de la pose est représenté par trois valeurs de translation, et trois valeurs
de rotation.
h
i
v = tx ty tz rx ry rz
Ce déplacement est estimé par la loi de commande :
v = −λ(Ls )+ (s(C) − s∗ )
La matrice d’interaction Ls est la matrice jacobienne qui s’écrit :
"
#
λ cos θ λθ sin θ −λθ ρ
−ρ cos θ
−ρ sin θ
−1
Ls = θ
λρ cos θ λρ cos θ −λρ ρ (1 + ρ)2 sin θ −(1 + ρ)2 cos θ 0
La pose est mise à jour itérativement, en lui appliquant le déplacement v calculé à
l’étape précédente, jusqu’à ce que ce déplacement devienne négligeable. En théorie, il y a
six paramètres à estimer, ce qui implique que seuls trois couples de points ou de droites
en correspondance sont nécessaires au calcul de la pose. En pratique, pour éliminer les
configurations dégénérées et améliorer le résultat, c’est un ensemble de primitives un peu
plus gros qui est utilisé.
Conclusion
Ces algorithme se basant sur une seule image, ils évitent une reconstruction 3D difficile. Il existe cependant une autre classe d’algorithmes utilisant pour leur part plusieurs
images et s’aidant d’informations géométriques pour effectuer le recalage. Certains de ces
algorithmes sont présentés dans la section suivante.
1.3.2
Images multiples
L’utilisation de plusieurs images permet de récupérer un certain nombre d’informations géométriques sur la scène à recaler. Certaine méthodes favorisent des traitements
13
rapides, en ne récupérant que le minimum d’informations géométriques, alors que d’autres
font à partir des images une reconstruction 3D complète de la scène, et utilisent ce modèle
reconstruit pour le recaler avec le modèle 3D.
Méthodes basées images
Les équations de projections montrent que des points coplanaires en 3D, sont projetés
de façon cohérente dans les images. Ils respectent des homographies entre les images. Une
méthode de recalage se base sur cette idée, et cherche les plans visibles dans les images en
repérant des ensembles de points dont le déplacement apparent est une homographie [16].
Elle utilise ensuite ces plans visibles pour les mettre en correspondance avec des plans
3D connus et calculer la pose. C’est une méthode qui marche bien à condition qu’au
moins trois plans soient visibles dans les images. Avec moins de plans, le recalage est plus
approximatif.
Méthodes basées pseudo-modèle 3D
Certaines méthodes effectuent le recalage plutôt dans des repères 3D, en effectuant une
reconstruction de la scène à partir des images. Les méthodes les plus simples n’utilisent
l’ensemble des images que pour calculer une carte de profondeur plus ou moins fine [17].
Les méthodes les plus évoluées font une complète reconstruction de la scène en calculant
les coordonnées 3D d’un ensemble de points [3, 11] ou d’un ensemble de lignes [18].
Ce pseudo-modèle de la scène, peu précis à cause du bruit dans les images, est ensuite
utilisé pour être recalé directement avec le modèle 3D. Une méthode traditionnelle de
recalage entre deux modèles 3D, est l’utilisation d’un algorithme ICP, détaillé dans la
section suivante. Il est également possible d’utiliser ce modèle 3D reconstruit pour extraire
des primitives d’un niveau supérieur, comme les plans, qui sont invisibles dans les images
de base. Les méthodes par balayage de plan peuvent être utilisées à cette fin, et sont
détaillées dans la section d’après.
Algorithme ICP
L’algorithme “Iterative Closest Point” ou “ICP” est très utilisé pour effectuer un recalage entre deux modèles 3D. En connaissant N correspondances (~
ai ; b~i ) entre les primitives
des deux modèles A et B, il est possible de calculer la transformation optimale qui superpose au mieux ces correspondances. Cette transformation T doit minimiser l’erreur
quadratique M (T ) définie par :
M (T ) =
1 X ~
d(bi , T (~
ai ))2
N
La principale difficulté est donc de trouver les bons appariements entre les différentes
primitives des modèles à recaler. On peut résoudre ce problème en choisissant de mettre en
correspondance les primitives du modèle A avec les primitives les plus proches du modèle
B. Après le calcul de T , la pose n’est pas parfaite à cause des mauvais appariements qui
ont été considérés. Le principe de l’algorithme est donc d’itérer un recalage en utilisant
les primitives les plus proches comme association, jusqu’à obtenir une stabilisation. Cela
14
permet de remettre en cause les correspondances faites à une étape, pour les refaire de
façon plus précise à l’étape suivante une fois la pose un peu mieux définie.
Cette méthode s’adapte bien à des types de primitives autres que les points, du moment que l’on peut calculer une distance entre elles. P. J. Besl et N. D. McKay [19]
donnent par exemple une formule de calcul pour la distance entre un point p~ et un triangle T (s~1 , s~2 , s~3 ), qui est :
d(p, T ) = min(u,v,w)∈E (kus~1 + v s~2 + ws~3 − p~k)
avec
E = {(u, v, w) ∈ [0; 1]3 , u + v + w = 1}
P. J. Besl et N. D. McKay [19] démontrent que cet algorithme converge vers un
minimum local, et proposent d’augmenter la probabilité de converger vers le minimum
global en utilisant plusieurs fois l’algorithme, à partir d’états initiaux différents.
Balayage de plan (Plane Sweeping)
La méthode par balayage de plan (Plane Sweeping) consiste à estimer un des paramètres
d’un plan (la profondeur) dont les deux autres paramètres (l’orientation) sont déjà connus.
En connaissant les trois paramètres du plan, il est possible de connaître les homographies
que doivent vérifier les points du plan entre les différentes images. Il est difficile d’estimer
l’homographie que vérifie chaque pixel de l’image, mais il est plus simple de connaître
quels pixels de l’image vérifient une certaine homographie. Sur ce constat, l’algorithme
de Plane Sweeping va tester plusieurs paramètres de profondeur, jusqu’à trouver celui
qui aboutit à une homographie effectivement présente dans l’image. Cela permet donc
de connaître les pixels représentant un point sur le plan supposé. En faisant varier la
profondeur du plan, il est possible de détecter de petits reliefs, comme des fenêtres ou des
portes. Un inconvénient cependant à cette méthode est de ne pas fonctionner sur des zones
uniformes de l’image, où les pixels peuvent vérifier un grand nombre d’homographies.
1.3.3
Estimation robuste
La plupart des méthodes précédentes font des mises en correspondance de primitives,
mais pour être assurées que les vrais couples en correspondance ont bien été considérés,
elles génèrent bien souvent de faux couples, qui ne sont en réalité pas en correspondance.
Ces associations aberrantes perturbent les algorithmes d’estimation de paramètres si ces
derniers ne sont pas robustes.
L’algorithme RANSAC, abréviation de “RANdom SAmple Consensus” [20], est un
algorithme robuste d’estimation de paramètres. Son principe de base est générique et
s’adapte bien à l’estimation de la matrice fondamentale F vue précédemment, à l’élimination des fausses associations ou encore à l’estimation de l’équation du plan passant par
un nuage de points 3D dont la plupart sont coplanaires.
L’implémentation de l’algorithme RANSAC est le suivant :
– La première étape est de sélectionner aléatoirement parmi toutes les données disponibles, un ensemble plus petit, et souvent minimal, permettant d’estimer le modèle.
– Ce petit échantillon est supposé ne contenant pas de données aberrantes, et est donc
utilisé pour estimer les paramètres par une méthode d’estimation non robuste.
15
– Le modèle obtenu est testé sur le jeu de données complet. Les données ne suivant
pas le modèle, c’est à dire dont la distance au modèle est supérieure à un seuil S,
sont appelées des outliers. A l’inverse, les données proches du modèle sont appelées
des inliers et font partie de l’ensemble de consensus. Leur nombre est représentatif
de la qualité du modèle estimé.
– Les étapes précédentes sont réitérées tant que le nombre d’inliers n’est pas suffisant,
c’est à dire que l’hypothèse que l’échantillon ne contenait pas de données aberrantes
n’est pas vérifiée. Si le taux de données aberrantes n’est pas trop important dans
l’ensemble de départ, alors la probabilité est forte que l’hypothèse soit vérifiée après
un nombre fini N d’itérations.
– Le plus grand ensemble de consensus sélectionné aux étapes précédentes est donc un
sous ensemble du jeu de données initial, qui ne contient pas de données aberrantes.
Il est utilisé pour estimer les paramètres finaux du modèle.
Les constantes S et N de l’algorithme doivent être connues avant l’utilisation de l’algorithme ou peuvent être estimées au cours de l’algorithme pour le rendre plus général.
1.3.4
Solution précédente de l’équipe TEMICS
La solution précédente utilisée dans notre l’équipe a été proposée par T. Colleu [2].
Elle effectue le recalage initial entre une vidéo issue d’une caméra mobile, et un modèle
3D issu de données SIG. Elle se scinde en deux grandes étapes :
– La première étape associe des données GPS et issues de la vidéo pour effectuer une
estimation approximative de la pose. L’estimation de la position et de l’orientation
de la caméra permet d’identifier la zone du modèle SIG présente dans la vidéo.
– La seconde étape utilise une estimation du contexte géométrique [21] pour associer
les lignes de contour visibles dans la première image aux arêtes du modèle. Le calcul
de la pose précise est ensuite effectué par la méthode d’asservissement visuel d’E.
Marchand [15] décrite précédemment.
Recalage approximatif
Le recalage approximatif est une étape importante puisqu’elle permet de réduire le
modèle SIG et de ne se focaliser que sur les primitives visibles dans la vidéo. Son principe
est de faire coïncider les informations de translation contenues dans la séquence vidéo
avec celles issues de données GPS.
– Le vecteur déplacement de la caméra dans le repère absolu est immédiatement
déduit des informations GPS prélevées en même temps que la vidéo.
– Le vecteur déplacement de la caméra dans le repère de la caméra est calculé à
partir de deux images de la vidéo dont un certain nombre de points sont mis en
correspondance. C’est une méthode classique en vision par ordinateur [3], qui est
mieux détaillée dans le chapitre 2.
Aligner ces deux déplacements permet d’obtenir la relation liant le repère caméra au
repère global, c’est à dire la pose. Ce calcul approximatif sert deux objectifs. Il permet
d’une part de réduire le modèle SIG aux seules primitives visibles dans la séquence vidéo,
et sert d’autre part d’initialisation au recalage précis, qui fait l’objet de la section suivante.
16
Recalage précis
Le recalage précis utilise les travaux de D. Hoiem, A. A. Efros et M. Hebert sur
l’extraction de contexte géométrique [21] pour effectuer la mise en correspondance des
lignes de contour visibles dans la première image, avec les arêtes du modèle 3D.
Le recalage précis s’effectue en deux étapes :
– La première étape consiste à extraire de l’image les contours rectilignes, puis à filtrer
ces lignes en utilisant une estimation du contexte géométrique [21]. Seules les lignes
représentant le plus probablement des arêtes de bâtiment sont conservées.
– La seconde étape recherche des correspondances parmi ces lignes et le modèle SIG
par une approche basée RANSAC, et calcule la pose précise par une méthode de
convergence décrite par E. Marchand [15].
Extraction et labellisation des primitives
Les lignes de contour présentes dans la première image de la vidéo sont extraites par
une méthode traditionnelle. L’algorithme de Canny [7, 8] appliqué sur l’image permet
de détecter les pixels de contour, et une transformée de Hough probabiliste [9] sur ces
contours permet de récupérer les alignements de contours visibles.
Parmi toutes les primitives de l’image, seul un petit nombre correspond effectivement
aux arêtes des bâtiments. Il est donc important de filtrer ces lignes et ainsi limiter les
correspondances possibles. La phase de mise en correspondance, expliquée par la suite, en
sera largement facilitée en raison de l’élimination de certaines correspondances aberrantes.
Une méthode ingénieuse est proposée pour effectuer ce tri, et se base sur l’estimation
de contexte proposée dans [21], dont l’implémentation est disponible sur Internet. Cet
algorithme s’applique à une image, et classifie chaque pixel selon qu’il appartient au ciel,
au sol ou à une paroi verticale. Cet algorithme permet également de détecter les zones
poreuses, qui représentent généralement la végétation. Le résultat de cette classification
est représenté sur la figure 1.4.
(a) Image originale
(b) Classification par contexte
Figure 1.4 – Résultat d’une classification par contexte : en bleu le ciel, en vert le sol et
en rouge fléché les façades des bâtiments.
17
En utilisant cette classification, il devient possible de labelliser les lignes détectées
par l’algorithme de Hough en fonction des zones qu’elles délimitent le mieux. Pour cela,
on réutilise les algorithmes de détection de contours expliqués précédemment (Canny
+ Hough) mais cette fois sur la carte représentant chaque classe. Le résultat est une
linéarisation des frontières des classes. Pour déterminer ce que représentent probablement
les lignes de l’image, il suffit de calculer leurs distances aux frontières de classes. Cela
permet de les labelliser suivant qu’elles représentent plutôt une arête de ciel (frontière
entre une façade et le ciel), une arête de sol (frontière entre une façade et le sol) ou bien
une arête verticale (frontière entre deux façades). Les lignes ne se rapprochant d’aucune
frontière de classes sont directement supprimées car elles ne représentent probablement
rien de géométrique. La figure 1.5 représente les lignes du contour qui ont été conservées
après comparaison à la carte des classes, et après labellisation en fonction de ce qu’elles
délimitent le plus probablement.
Figure 1.5 – Lignes conservées et labellisées, en bleu les arêtes de ciel, en vert les arêtes
de sol, et en rouge les arêtes verticales.
Mise en correspondance
Cette même opération de labellisation des lignes peut être faite sur les arêtes du modèle
SIG. A l’aide de la pose approximative, les arêtes du modèle 3D probablement visibles
dans la première image sont extraites, et labellisées en fonction de ce qu’elles délimitent.
Le recalage précis consiste ensuite à mettre en correspondance des lignes de contour et
des arêtes, et à calculer la pose permettant une bonne superposition des deux ensembles.
La mise en correspondance s’effectue entre les lignes de contour et les arêtes du modèle
qui ont le même label. Même après la phase d’élimination des lignes éloignées d’un contour
de classe, il reste encore un grand nombre de lignes issues de l’image. Elles sont donc
mises en correspondance avec les arêtes du modèle par un algorithme basé RANSAC.
Les différentes poses calculées par la méthode d’asservissement visuel [15], sont testées
18
en fonction du nombre de correspondances entre lignes qu’elles vérifient. La pose faisant
correspondre le plus de lignes est conservée comme résultat de recalage final.
Limites et discussions
Les résultats obtenus par l’association d’un classificateur par contextes géométriques,
et d’un algorithme de recherche de correspondances (comme RANDSAC), sont satisfaisants, mais ne sont pas toujours parfaits. On remarque par exemple que le recalage
représenté par la figure 1.6 est incorrect, puisque l’arête au pied du bâtiment s’est recalée
avec la frontière de l’ombre. La véritable ligne délimitant le pied du bâtiment n’avait
pas été considérée comme importante lors de la détection de contour (Canny et Hough),
erreur due à des seuils de détection trop élevés.
Figure 1.6 – Résultat final du recalage.
Pour effectuer le recalage précis, utiliser les contextes géométriques pour limiter les
couples de droites potentiellement en correspondance est une idée innovante, peu souvent
exploitée. Cependant, la classification est une des étapes longues de l’exécution du programme, alors que seule une infime partie des résultats qu’elle fournit est utilisée par la
suite. En effet, sur les sept classes détectées par l’algorithme, seuls les contours linéaires
de cinq d’entre elles sont utilisés pour labelliser les lignes.
1.4
Nouvelle solution proposée
La solution que nous détaillons dans ce document est inspirée de la méthode précédente utilisée dans l’équipe TEMICS. Elle se décompose également en un recalage
approximatif, suivi d’un recalage précis, mais leurs approches du recalage précis diffèrent
largement. Dans ce document, le recalage précis utilisé fait intervenir un modèle 3D reconstruit à partir de la vidéo. Il se place donc dans la catégorie des méthodes basées
pseudo-modèle, vue à la section 1.3.2.
19
Le chapitre 2 présente les méthodes traditionnelles d’estimation de mouvement, à
partir d’une vidéo. Il détaille également une méthode de calcul d’une pose approximative
qui découle de ce mouvement estimé. Cette méthode est une amélioration de celle proposée
par T. Colleu [2].
Le chapitre 3 utilise l’estimation de mouvement effectuée au chapitre précédent, pour
reconstruire la scène visible dans la vidéo. Il détaille deux méthodes de reconstruction
qui n’utilisent pas les mêmes primitives des images. La première utilise des points, alors
que la seconde utilise des segments.
Le chapitre 4 décrit une méthode pour effectuer le recalage final, en utilisant les
modèles reconstruits au chapitre précédent.
Le chapitre 5 conclut sur les points forts de notre approche, et propose quelques
améliorations qui doivent être apportées pour pallier aux points faibles de la méthode.
20
Chapitre 2
Estimation du mouvement de la
caméra
Les méthodes de reconstructions géométriques les plus répandues se basent sur un petit
nombre de prises de vue différentes d’une même scène. Dans le cadre qui nous occupe,
les objets à reconstruire sont figés puisque ce sont des bâtiments. Il est donc possible
d’utiliser différentes images d’une vidéo prises par une caméra mobile. Les clichés ne sont
pas pris au même instant, mais cela n’a pas d’influence puisque la scène n’est pas modifiée
entre les différents instants.
La première phase consiste donc à sélectionner dans la séquence vidéo, les images-clés
qui seront utilisées pour la reconstruction, et à calculer la pose relative de la caméra,
c’est à dire son déplacement, entre les différentes prises de vue. Ce chapitre détaille les
trois étapes qui décomposent cette estimation de mouvement, et consacre une quatrième
partie à la description d’une méthode de calcul très approximative de la pose qui utilise
cette estimation.
– La première partie définit un certain nombre de points d’intérêt et les suit dans la
vidéo. Cela permet de définir des pixels dans les images-clés qui représentent les
mêmes points physiques.
– La seconde partie utilise ces pixels mis en correspondance pour estimer les relations
épipolaires qui lient les images-clés. Ces relations épipolaires dépendent directement
des poses relatives des prises de vue.
– La troisième partie utilise cette géométrie épipolaire pour calculer les poses relatives
des images-clés.
– La dernière partie utilise cette pose relative pour calculer une pose approximative
permettant de restreindre le modèle à la zone visible dans la vidéo.
2.1
Suivi de points d’intérêt
Dans la vidéo d’une caméra en mouvement, des objets statiques semblent pourtant
se déplacer. Pour réussir à suivre des points dans la vidéo, il faut que ceux-ci soient
judicieusement choisis. Il est par exemple impossible de suivre un élément dans une zone
uniforme de l’image, si celui ci n’est pas contrasté avec le fond. L’algorithme de suivi de
21
Kanade, Lucas et Tomasi (KLT) [22] permet de suivre des points d’intérêt, définis comme
des pixels dont le gradient est élevé dans les deux directions de l’image.
Cet algorithme de suivi se base sur la texture de l’image dans un petit voisinage autour
des points d’intérêt. Malheureusement, de nombreuses zones de l’image sont similaires.
C’est le cas des secteurs presque uniformes, ce qui ne pose pas trop de problèmes puisque
ceux-ci ne contiennent pas de points d’intérêt. Par contre, c’est également le cas des zones
situées à la frontière de deux secteurs presque uniformes, qui elles peuvent comporter
des points d’intérêt selon la définition de l’algorithme. Les points d’intérêt positionnés
sur ces frontières sont instables, et sont mal suivis d’une image à l’autre. Ils “glissent”
progressivement le long de la frontière, et finalement, ne représentent plus du tout le
même point physique.
Grâce à cet algorithme de suivi, les points d’intérêt définis dans la première image
I de la vidéo sont mis en correspondance avec leurs homologues dans l’image I 0 , plus
loin dans la séquence. Pour éviter d’exécuter l’algorithme de suivi jusqu’à la fin de la
séquence vidéo, celui-ci est interrompu à une image-clé définie manuellement, à condition
que le mouvement apparent des points d’intérêt soit suffisant pour estimer correctement
la matrice fondamentale F , ce qui fait l’objet de la partie suivante.
2.2
Estimation robuste de F, puis de E
A partir des correspondances entre les points mi de l’image I et m0i de l’image I 0 , il
est possible de retrouver la géométrie épipolaire, c’est à dire la matrice fondamentale F
qui vérifie les équations :
T
∀i : m0i ∗ F ∗ mi = 0
L’estimation de cette matrice F nécessite au moins sept couples de points en corrélation. A cause des erreurs de suivi et du bruit dans l’image, une estimation robuste est
nécessaire, et est faite par une méthode basée RANSAC (RANdom SAmple Consensus)
comme expliqué dans [3]. L’idée est de prendre sept couples de points aléatoirement dans
l’ensemble des couples mis en corrélation, et de s’en servir pour calculer la matrice F . Si
un des couples utilisés est aberrant, la matrice F ainsi calculée ne correspondra pas à la
réalité, et elle ne sera pas adaptée pour décrire la plupart des autres couples de points
de l’échantillon. On attribue donc une note à la matrice F , en fonction du nombre de
couples de l’échantillon qui font partie de l’ensemble de consensus, c’est à dire qui sont
proches du modèle estimé par F (avec une marge d’erreur ). Si la note est trop basse
(il faut définir un seuil), alors la matrice F calculée est considérée comme fausse, et on
recommence avec un nouvel ensemble de couples aléatoires. Statistiquement, on finira
par tirer un ensemble de couples ne contenant pas d’élément aberrant, et on finira par
trouver une matrice F proche de la réalité. On pourra alors utiliser cette matrice F qui
maximise l’ensemble de consensus pour supprimer les points aberrants (les outliers) qui
ne suivent pas le modèle.
Puisque l’on a supposé que la matrice des paramètres intrinsèques K de la caméra était
connue, il est possible de calculer la matrice essentielle E qui représente le mouvement
relatif de la caméra entre les deux images.
E = KT ∗ F ∗ K
22
Il ne reste plus qu’a décomposer cette matrice E en valeurs singulières pour retrouver les paramètres extrinsèques RCamera et tCamera de la caméra, ce qui fait l’objet de
paragraphe suivant.
2.3
Calcule de la pose relative [R|t]
R. Hartley et A. Zisserman [3] détaillent une méthode pour récupérer la pose relative
de la caméra à partir de la matrice essentielle E. Constatant que la translation est, au
signe et à la norme près, le vecteur propre de E associé à la valeur propre nulle, ils
utilisent une décomposition en valeurs singulières (SVD : Singular Value Decomposition)
pour exprimer simplement RCamera et tCamera .
Cette méthode ne permet pas de connaître l’amplitude du déplacement. En effet, il
n’est pas possible de savoir, uniquement à partir de la vidéo, si la caméra effectue un petit
mouvement autour d’une maquette, ou un grand déplacement autour d’un vrai bâtiment.
Pour résoudre ce problème, nous avons mis à l’échelle l’amplitude du mouvement, en
utilisant la norme du vecteur déplacement fourni par le GPS. La rotation RCamera reste
inchangée, alors que la translation tCamera est multipliée par une constante pour devenir
de norme égale à la translation tGP S
2.4
Estimation d’une pose approximative de la caméra
L’estimation approximative de la pose de la caméra est une étape importante pour
réduire la taille du modèle SIG à étudier. En connaissant à peu près la pose de la caméra,
il est possible de ne conserver du modèle que les primitives qui sont effectivement visibles
dans la vidéo.
2.4.1
Principe
Les données GPS à l’instant initial de la vidéo sont converties dans le repère global
R0 pour donner une approximation à 5m près de la position de la caméra C. Pour estimer
l’orientation de la caméra, c’est à dire la matrice de rotation RC , l’idée est de faire coïncider le vecteur de déplacement extrait des données GPS, avec le vecteur de déplacement
extrait de deux images de la séquence.
Entre l’instant initial et un autre instant plus loin dans la séquence, les données GPS
fournissent directement le déplacement tGP S de la caméra dans le repère R0 . De ces mêmes
instants-clés, on peut extraire le déplacement tCamera de la caméra dans le repère RC par
une approche de type SFM (Structure from Motion) [3] comme on l’a vu précédemment.
L’alignement du vecteur tGP S avec le vecteur tCamera permet de trouver l’orientation de
la caméra dans le repère R0 .
2.4.2
Alignement de tGP S et tCamera
Les vecteurs de déplacement tGP S et tCamera sont dus au même déplacement physique
de la caméra, mais ils ne sont pas exprimés dans le même repère. Avec la notation R2 RR1
23
pour la rotation entre le repère R1 et R2 , on peut définir le point C 0 dans le repère R0 de
deux façons différentes :
C 0 R0 =
=
R0
CR0 + tGP S
RRC ∗ tCamera + CR0
On a donc :
tCamera = R0 RRC
−1
∗ tGP S
En utilisant cette équation, il n’est possible de calculer que deux des trois degrés de
liberté de la rotation RC RR0 . La solution proposée par T. Colleu [2] fait l’hypothèse que la
caméra est portée “normalement”, c’est à dire qu’elle est orientée dans le plan du sol (ni
pointée vers le ciel, ni pointée vers le sol) et qu’elle est tenue droite (pas inclinée). Cela
permet de fixer deux des paramètres de la rotation, et n’en laisse qu’un seul à estimer.
L’apport que nous proposons ici est de libérer un des degrés de liberté sur l’inclinaison
de la caméra. L’angle que forme son axe de vue et le plan horizontal peut être estimé, à
condition que le mouvement ne soit pas dégénéré.
Figure 2.1 – Orientation de la caméra dans le repère R0 .
Les hypothèses nous amènent à prendre l’angle ψ = 0 pour l’angle de rotation de la
caméra autour de l’axe optique. Les informations GPS étant peu précises sur les données
d’altitude, on considérera toujours que le déplacement de la caméra s’effectue dans le plan
~ Y~ ) du repère R0 . Le plan du sol, dans le repère caméra RC , contient donc
horizontal (0, X,
les vecteurs tCamera et xC . Il a pour vecteur normal ~n ≡ tCamera ∧ x~C , avec ~n unitaire.
L’angle φ de la caméra correspond à l’angle entre l’axe optique et l’axe vertical Z du
repère R0 . Il peut être calculé dans le repère caméra comme l’angle entre l’axe optique
zC et le vecteur normal au sol ~n. Pour finir, l’angle θ représente (à π2 près) l’angle entre
les vecteurs X et xC , qui ne sont pas exprimés dans le même repère. Il peut être calculé
en s’aidant du vecteur déplacement, qui d’une part est lui aussi situé dans le plan du sol,
et d’autre part est exprimé dans les deux repères.
π
\
\
θ − = (X,
xC ) = (X,
tGP S ) − (xC \
, tCamera ) = θGP S − θCamera
2
24
(a) Translation tCamera dans le repère RC .
(b) Translation tGP S dans le repère R0 .
Figure 2.2 – Représentation des vecteurs tCamera et tGP S
Le résultat de ce recalage approximatif est représenté sur la figure 2.3. On remarque
que les arêtes du modèle SIG projetées sont bien présentes dans l’image, mais ne se superposent pas parfaitement aux contours présents dans celle-ci. Dans la pratique, l’erreur
d’alignement réalisée par cette méthode est suffisamment faible pour que des primitives
du modèle SIG projetées puissent être retrouvées dans l’image. Le calcul de pose plus
précis, permettant de superposer les contours de l’image et les arêtes du modèle SIG, fait
l’objet des chapitres suivants.
Figure 2.3 – Recalage approximatif effectué par identifications du déplacement dans
l’image, et du déplacement GPS.
25
Chapitre 3
Extraction de la structure
géométrique
L’utilisation d’une seule image présente des risques de confusion entre une arête de
bâtiment et le contour d’une ombre, ce qui était un point limitant de la méthode de T.
Colleu [2]. Pour éviter de mettre en correspondance des primitives 3D avec des détails de
l’image qui ne sont pas représentatifs de la structure géométrique, l’idée qui a été retenue
est d’extraire la géométrie de la scène à partir de la vidéo, et de s’en servir pour faire des
mises en correspondance entre la vidéo et le modèle SIG.
Ce chapitre présente les solutions employées pour effectuer l’extraction de la structure
géométrique, qui sont des méthodes de reconstruction très étudiées dans le domaine de
la reconstruction 3D. Après une première partie consacrée aux gains de précision qu’apporte la géométrie épipolaire dans la reconstruction, nous étudierons deux méthodes de
reconstruction. Le première, basée sur des points, est plus simple à mettre en oeuvre, mais
possède un taux élevé de points aberrants. Le seconde, basée sur des contours rectilignes
visibles dans la vidéo, a l’avantage d’éliminer naturellement les objets qui ne sont pas des
constructions humaines.
3.1
Géométrie Épipolaire
La géométrie épipolaire, présentée dans la section 1.2.2, est une aide précieuse pour
comprendre la structure géométrique de la scène observée. Nous verrons dans un premier temps comment elle peut être utilisée pour améliorer la mise en correspondance de
points, effectuée par la méthode de suivi. Puis nous verrons dans un second temps, une
méthode pour calculer la matrice F , représentative de cette géométrie épipolaire, à partir
du mouvement de la caméra.
3.1.1
Projection sur les droites épipolaires
Les différents pixels m et m0 en correspondance entre deux images, devraient vérifier
la géométrie épipolaire m0t F m = 0. En pratique, les pixels en correspondance issus de
l’algorithme de suivi ne respectent pas tout à fait cette géométrie, ce qui pose un problème
lors de l’estimation des coordonnées 3D du point physique qu’ils représentent. En effet,
27
on calcule les coordonnées du point 3D comme étant l’intersection des deux lignes de vue,
mais si le couple de pixels ne vérifie pas la géométrie épipolaire, cela signifie que les lignes
de vue ne se coupent pas. Pour forcer l’intersection des lignes de vue, et ainsi améliorer la
précision des algorithmes de reconstruction, le principe est de ne pas directement utiliser
les couples en correspondance issus de l’algorithme de suivi, mais de ré-effectuer cette
mise en correspondance de points. C’est le point m00 , calculé comme étant le projeté
orthogonal du point m0 sur la droite épipolaire associée à m, qui est considéré comme
en correspondance avec ce dernier. Pour calculer les coordonnées de ce point m00 , il est
important de constater qu’elles doivent vérifier un certain nombre d’équations.
Premièrement, ce point m00 est sur la droite épipolaire associée à m, il vérifie donc
l’équation m00t F m = 0. Une façon plus simple de voir les choses est de considérer le
vecteur n~1 = F m comme le vecteur normal au plan épipolaire dans le repère R2 . M étant
dans le plan épipolaire, on a m00 n~1 = 0.
Ensuite, le point m00 est le projeté orthogonal du point m0 sur la droite épipolaire, il est
donc sur la droite passant par m0 , et orthogonal à la droite épipolaire. Cette droite peut
être représentée par le plan la contenant, et passant par le centre optique de la caméra,
qui est facilement caractérisable puisqu’il contient le point C 0 , le point m0 et le projeté
du vecteur F m dans le plan image. Un de ses vecteurs normaux est n~2 = proj(F m) ⊗ m0 ,
avec proj(x, y, z) = (x, y, 0)
Étant à l’intersection de ces deux plans, le point m00 est sur la droite passant par C 0
et de vecteur directeur n~1 ⊗ n~2
Enfin, le point m00 doit être en coordonnées homogènes, c’est à dire que sa troisième
et dernière coordonnée vaut 1. D’un point de vue géométrique, cela signifie simplement
que le point m00 est dans le plan image. Les coordonnées de m00 sont donc exprimables
directement à partir des coordonnées de m, m0 et de la matrice F par :
m00 = homog(F m ⊗ (proj(F m) ⊗ m0 ))
avec homog(x, y, z) = ( xz , yz , 1)
La distance entre le point m0 et son projeté m00 est représentative de l’erreur de suivi
du point m. Une distance de quelques pixels est fréquente et vient le plus souvent d’un
glissement du point sur un contour, et dans ce cas, la méthode expliquée ici permet
d’améliorer légèrement les résultats de reconstruction. Cependant, si cette distance est
grande comparée à un seuil de tolérance, cela signifie probablement que l’algorithme de
suivi a commis une erreur, et le couple de points soi-disant en correspondance est ignoré,
éliminant ainsi un certain nombres d’outliers.
Dans la suite des explications, nous considérerons que les points en correspondance
vérifient la géométrie épipolaire, et pour simplifier les notations, nous confondrons les
points m0 et m00 .
3.1.2
Calcul de F à partir de la pose relative
A partir des couples de points mis en correspondance par l’algorithme de suivi, il est
possible d’estimer la matrice fondamentale F comme on l’a vu précédemment. Cependant,
28
Figure 3.1 – Calcul du point m00 , projeté du point m0 sur la droite épipolaire
à cause des nombreuses erreurs de suivi, cette matrice F n’est qu’une approximation de la
véritable géométrie épipolaire. De plus, lors de l’estimation du mouvement de la caméra,
un certain nombre de nouvelles approximations sont faites. Utiliser directement cette
matrice F pour la suite n’est pas conseillé. Il est préférable de recalculer la géométrie
épipolaire à partir de la pose relative des caméras, pour que la matrice F soit cohérente
avec la matrice de passage d’un repère image à l’autre.
Le calcul de F à partir de la rotation R et de la translation t de la caméra entre les deux
prises de vue est grandement détaillé dans le livre de R. Hartley et A. Zisserman [3]. En
travaillant dans le repère image RI de la première image, on a P = K[I|0] et P 0 = K[R|t]
les deux matrices de projections pour les images I et I 0 . L’équation de F qui a été utilisée
s’écrit alors :
F = K −T [t]× RK −1
avec la notation :


0 −t3 t2

0 −t1 
[t]× =  t3

−t2 t1
0
3.2
Reconstruction 3D des points d’intérêt
Puisqu’un certain nombre de points d’intérêt des images I et I 0 ont été mis en correspondance par la méthode de suivi, il est possible d’utiliser ces correspondances pour
reconstruire en 3D chaque point d’intérêt. La méthode de reconstruction d’un point,
présentée dans la section 1.2.3 peut être utilisée sur chaque couple en correspondance.
Cette section consacre cependant une première partie à expliquer une autre méthode de
reconstruction, plus adaptée à notre problème. La seconde partie présente les résultats
de reconstruction obtenus sur une séquence réelle.
29
3.2.1
Calcul de la profondeur
La seconde méthode s’intéresse uniquement à la profondeur des points, qui est l’information manquante lorsque l’on n’a qu’une seule image. Nous ne l’expliquons que dans
le cas simplifié, mais très courant, où la pose P est la matrice identité 3 × 4. Elle peut
cependant tout à fait se généraliser à des poses P et P 0 quelconques.
Si la projection P est supposée être l’identité, les coordonnées de M peuvent s’écrire
directement à partir du pixel m, à un coefficient de profondeur λ près, ce qui simplifie
également la seconde équation de projection.
!
λm
M=
1
µm0 = [R|t] M
= λRm + t
et
Afin de résoudre ce système simplement, il suffit de l’écrire sous la forme AX = B et
d’appliquer une méthode classique de résolution, basée elle aussi sur une décomposition
en valeurs propres de A.
"
#
−λ
[Rm|m0 ] ×
=t
µ
3.2.2
Résultats
L’implémentation de la reconstruction présentée ci-dessus fournit des résultats semblables à celle présentée à la section 1.2.3, à condition que la géométrie épipolaire soit
bien respectée. Si ce n’est pas le cas, cela signifie que les lignes de vue ne s’intersectent
pas, et les deux approches ont alors des comportements différents.
La méthode de l’état de l’art renvoie les coordonnées du point qui minimise l’erreur,
c’est à dire du point le plus proche des deux lignes de vue. La projection de ce point 3D
dans les images ne donne pas exactement les pixels m et m0 .
A l’inverse, la solution qui vient d’être présentée fournit la profondeur du point dans
les deux images. Cela a comme avantage de fournir deux points 3D, l’un se projetant
exactement en m dans l’image I et l’autre en m0 dans I 0 . Cette seconde solution a également l’avantage d’être plus simple à calculer puisque la matrice à décomposer en valeurs
propres est de taille 3 × 2, soit beaucoup plus petite que celle de la solution initiale, qui
est de taille 4 × 4.
Le résultat de cette reconstruction des points d’intérêt est un nuage de points présenté dans la figure 3.2. Principalement à cause des algorithmes de suivi, qui commettent
quelques erreurs dans l’appariement des pixels, ce nuage n’est pas parfaitement représentatif de la scène, mais permet déjà un certain nombre de traitements. La vue de profil
permet de constater l’existence de deux plans principaux, que sont le sol et une façade du
bâtiment. L’arête au sol du bâtiment, même si elle n’était pas facilement détectable dans
les images, à cause d’une ombre ou d’une occlusion, devient décelable dans ce modèle 3D,
comme l’intersection des deux plans.
30
(a) Vu de face
(b) Vu de profil
Figure 3.2 – Nuage de points 3D.
3.3
Reconstruction d’une ligne en 3D
Le nuage de points 3D reconstruit précédemment représente en général bien la structure géométrique de la scène, mais contient également un grand nombre de points aberrants. Pour éviter de reconstruire des points d’intérêt disposés dans la végétation, nous
avons décidé de focaliser notre attention sur les contours rectilignes présents dans la vidéo. Ces contours rectilignes étant bien souvent causés par des constructions humaines,
cette méthode met naturellement les façades en évidence.
Cette partie est consacrée à la reconstruction en 3D des lignes présentes dans les
images.
– Le premier point explique la méthode employée pour détecter ces lignes.
– Le second point détaille la mise en correspondance de ces segments entre les images
I et I 0 .
– Le troisième point se consacre à la méthode de reconstruction appliquée cette fois
à des correspondances entre segments.
3.3.1
Détection des contours rectilignes
Le principe est d’extraire de l’image les contours, et de chercher ensuite des alignements dans ces contours.
Détecter les contours dans une image revient à chercher les pixels dont le gradient est
élevé. Il existe plusieurs algorithmes de détection de contours, et celui qui a été retenu
est l’algorithme de Canny [7] qui est un des plus classiques. Son exécution se fait en trois
temps.
– Dans un premier temps, l’image est lissée par une convolution avec un filtre gaussien.
L’image ainsi floutée contient moins de contours provenant simplement du bruit.
– Dans un second temps, le gradient est calculé en chaque pixel, en appliquant à
l’image les filtres de Sobel. Seuls les maxima locaux du gradient peuvent représenter
des contours, les non-maxima sont donc directement éliminés.
– Finalement, la différenciation des contours se fait par un seuillage à hysteresis de
l’intensité du gradient. C’est à dire que les gradients de valeurs supérieures à un
seuil haut sont considérés comme des contours, ceux de valeurs inférieures à un
31
seuil bas sont éliminés, et ceux entre les deux seuils ne sont conservés que s’ils sont
connectés à un point de contour.
Le résultat de l’algorithme est donc une image binaire, représentée sur la figure 3.3(a),
dont les pixels notés Vrai sont les points de contour.
(a) Contours de Canny
(b) Alignement de Hough
Figure 3.3 – Détection de contours linéaires
Une fois les contours détectés, l’utilisation de la transformée de Hough permet de repérer des alignements dans ces contours. Cette transformée consiste à représenter l’ensemble
des droites passant par un point comme une sinusoïde dans le repère des coordonnées polaires (θ, ρ) et à chercher des intersections entre ces courbes. Sans rentrer plus dans le
détail, le résultat de l’algorithme est un ensemble de segments de droite, visibles sur la
figure 3.3(b), positionnés sur des contours présents dans l’image.
Les déformations dues à la caméra ont été modélisées par la matrice K des paramètres
intrinsèques, mais celle-ci ne tient pas compte des légers rayons de courbures qui incurvent
les lignes droites. Cette déformation nuit à la bonne détection des contours rectilignes, et
devrait être compensée par un pré-traitement sur la séquence vidéo.
3.3.2
Mise en correspondance de segments
Après avoir extrait les contours linéaires des images I et I 0 , il faut mettre en correspondance les paires qui représentent les mêmes arêtes physiques. Une méthode de suivi de
contours dans la vidéo [23], analogue à la méthode de suivi de points d’intérêt, pourrait
fonctionner. Cependant, un algorithme de suivi prend du temps à s’exécuter, et le suivi
des points d’intérêt est important pour l’estimation de mouvement. Il nous a donc paru
inutile d’exécuter juste après un algorithme de suivi de contours. La solution adoptée est
donc de faire la mise en correspondance des segments entre les deux images, en se basant
uniquement sur les points qui sont déjà en correspondance.
Le principe général, synthétisé sur la figure 3.4, est le suivant :
– Pour chaque segment de contour détecté dans l’image I, la première étape consiste
à sélectionner parmi les points d’intérêt suivis, ceux qui le représentent le mieux, et
qui ont donc un déplacement dans la vidéo semblable au déplacement de ce segment.
– Une fois cette sélection effectuée, il est possible d’estimer le déplacement global de
ces points, et donc d’inférer le déplacement du contour qu’ils représentent. Cela
nous donne une position approximative dans l’image I 0 où chercher le contour en
correspondance.
– La dernière étape est donc de sélectionner parmi les contours détectés dans l’image
I 0 , celui qui est le plus proche de ce contour estimé.
Chacune de ces étapes est détaillée ci-dessous.
32
(b) Image I 0 avec le contour estimé et le vrai
contour mis en correspondance.
(a) Image I avec un contour mis en avant,
et les points d’intérêt qui le décrivent.
Figure 3.4 – Mise en correspondance de deux segments de I et I 0 qui représentent le
même élément 3D.
Recherche des points d’intérêt décrivant un segment
Les points constitutifs du segment de contour ne sont en général pas considérés comme
des points d’intérêt par l’algorithme de suivi. Cependant, les points d’intérêt étant répartis
uniformément dans l’image I, il y en a un certain nombre qui sont “proches” de ce
segment. Les pixels proches du segment dans l’image ont plus de chance de représenter des
points proches du segment dans le monde 3D, et donc d’avoir des mouvements apparents
semblables.
Le choix qui nous a semblé le plus judicieux pour sélectionner les points d’intérêt
proches du segment, est de prendre tous les points d’intérêt de l’image qui sont dans une
ellipse de foyers les deux extrémités du segment, et de petit diamètre fixé. Connaissant
les deux extrémités du segment, qui est l’information fournie par l’algorithme de Hough,
il suffit de tester tous les points d’intérêt définis à l’étape de suivi, pour sélectionner ceux
qui se situent dans l’ellipse.
Un point m est situé à l’intérieur de l’ellipse de foyers s1 et s2 et de petit diamètre r
s’il vérifie les équations :
d(m, s1 ) + d(m, s2 ) ≤
q
d(s1 , s2 )2 + 4 ∗ r2 = 2R
où R est le grand rayon.
Estimation robuste de l’homographie
Il est connu que les points 3D coplanaires ont un déplacement apparent entre l’image
I et l’image I 0 qui suit une homographie. Même si les points sélectionnés à l’étape précédente ne sont pas réellement coplanaires dans le repère 3D, nous allons tenter de définir
le mouvement homographique qu’ils décrivent d’une image à l’autre. Cette estimation
d’homographie est faite de façon robuste, en utilisant un algorithme RANSAC.
Parmi les points d’intérêt appartenant à l’ellipse précédemment définie, plusieurs ensembles de 4 points sont sélectionnés aléatoirement, et utilisés pour définir l’unique homographie qu’ils vérifient. Ces différentes homographies sont testées sur l’ensemble de
l’échantillon, et seule l’homographie faisant correspondre le plus de points d’intérêt est
33
conservée. Cette méthode permet de détecter les outliers, c’est à dire les couples de points
ne vérifiant pas les hypothèses de coplanarité, et les empêcher de nuire à la bonne estimation de cette homographie.
Connaissant l’homographie suivie par les points d’intérêt, il suffit de l’appliquer aux
extrémités du segment de I pour obtenir la position approximative du segment associé
dans l’image I 0 . Ce segment estimé n’est pas exactement situé sur un contour dans l’image
I 0 , l’étape suivante est donc de trouver parmi les segments de contour de I 0 celui qui s’en
rapproche le plus.
Recherche du contour le plus proche
Pour sélectionner parmi les segments de contour de l’image I 0 , celui qui est le plus
proche du segment estimé, il suffit de définir une notion de distance, et de sélectionner
le plus proche. Cette notion de distance doit faire intervenir un certain nombre de paramètres. Lors de la détection de segments de contour par les algorithmes de Canny et
Hough, on remarque que la plupart des arêtes de bâtiments ne sont pas détectées dans
toute leur longueur, mais seulement sur une partie où elles sont plus marquées. Le problème est que cette partie plus marquée peut varier entre l’image I et l’image I 0 , ce qui
à pour conséquence que les extrémités du segments ne sont pas du tout les mêmes. Deux
segments alignés doivent donc être proches, même s’ils ne se superposent pas. La figure
3.5 montre différents cas de figure et le comportement que doit avoir notre distance pour
que des contours en correspondance soient proches.
Figure 3.5 – Le segment S est très proche du segment 1, moyennement proche des
segments 2 et 20 , et très éloigné du segment 3
La solution employée consiste à sommer les distances entre les extrémités d’un segment
et la droite porteuse de l’autre. L’idée est similaire à celle proposée par M. Bleyer et M.
Gelautz [17], sans pour autant négliger le cas où les segments s’intersectent en leur milieu.
La figure 3.6 montre les quatre longueurs à sommer pour calculer la distance entre deux
segments. La notion de distance définie par ce calcul ne vérifie pas l’inégalité triangulaire.
Ce n’est donc pas une distance au sens mathématiques du terme, mais elle convient tout
à fait à la recherche de couples de segments en correspondance.
Après que chaque contour de l’image I ait été mis en correspondance avec un contour
de l’image I 0 la reconstruction des segments en 3D est possible, et fait l’objet de la section
d’après.
34
Figure 3.6 – Calcul de la distance entre deux segments
3.3.3
Positionnement du segment en 3D
Après que les segments de contour aient été mis en correspondance, il ne reste plus
qu’à les reconstruire en 3D pour obtenir un modèle approximatif de la scène visible dans
la vidéo. Ne reconstruire que les extrémités des segments, en utilisant une méthode de
reconstruction de points vue précédemment, n’est possible que si les extrémités des deux
segments en correspondance représentent bien le même point physique. En général, ce
n’est pas le cas puisque les segments de contour issus des images ne sont pas détectés dans
toute leur longueur. Il faut donc redéfinir les extrémités des segments pour qu’ils forment
eux-mêmes des points en correspondance. En utilisant conjointement les contraintes de
la géométrie épipolaire, et le fait que les extrémités des segments ne peuvent se déplacer
que selon la ligne porteuse du segment, il est possible de redéfinir de façon unique les
extrémités des segments de l’image I 0 pour qu’ils soient en correspondance avec ceux
des segments de l’image I. La méthode de reconstruction basée sur les points peut donc
s’appliquer, donnant les résultats présentés dans la figure 3.7.
(a) Vue de face
(b) Vue de trois quarts
(c) Vue de profil
Figure 3.7 – modèle 3D généré par mise en correspondance des segments de contour.
3.4
Conclusion
L’utilisation de plus de deux images-clés aurait permis de détecter certaines erreurs
de reconstruction et ainsi d’améliorer grandement le modèle géométrique extrait. Cependant, le choix a été fait de n’utiliser que deux images-clés. Cette limitation rend la
reconstruction plus approximative, mais l’objectif final étant plutôt de faire un recalage,
il nous a semblé peu judicieux de complexifier encore la méthode de reconstruction pour
gagner en réalisme sur le modèle calculé. L’utilisation de seulement deux images permet
35
l’extraction d’une structure géométrique de la scène convenable et exploitable pour effectuer le recalage. Le chapitre suivant est consacré à une méthode de recalage utilisant un
de ces modèles reconstruits.
36
Chapitre 4
Recalage final
Le modèle 3D reconstruit, issu de la vidéo, est une aide précieuse pour effectuer le
recalage. Il est utilisé dans ce chapitre pour aider la mise en correspondance 2D-3D. En
effet, la connaissance des paramètres du plan principal, visible dans la vidéo, permet d’en
détecter plus facilement les contours, qui peuvent ensuite être mis en correspondance avec
les arêtes 3D du modèle SIG. De cette façon, des détails de texture ne perturbent pas le
bon recalage, qui s’effectue par des informations géométriques.
La solution proposée dans ce chapitre se focalise sur la façade principale présente dans
le modèle 3D reconstruit. Elle se décompose en quatre étapes, qui sont détaillées dans les
sections suivantes :
– La détection du plan du modèle reconstruit contenant le plus de primitives. Elle
est faite par une approche RANSAC pour être robuste, à la fois aux erreurs de
reconstruction, et aux primitives ne faisant pas partie de ce plan. Ce plan principal
contient la façade du bâtiment la plus visible dans la vidéo.
– La sélection de l’ensemble des primitives représentant un élément 3D de ce plan.
Les primitives choisies sont encore une fois les segments, pour leur résistance au
bruit.
– La détection des limites de la façade principale qui contient toutes ces primitives.
Ces limites sont des éléments des images qui ont un correspondant dans le modèle
SIG.
– La mise en correspondance des limites de cette façade principale et des arêtes du
modèle qui leur sont associées, ce qui permet un calcul de pose plus précis. Cette
dernière étape réutilise l’implémentation précédemment utilisée dans l’équipe TEMICS, présentée dans l’état de l’art.
4.1
Recherche du plan principal
Le modèle 3D construit au chapitre précédent contient un grand nombre de primitives,
réparties sur plusieurs plans, que sont le sol et les façades. Effectuer une régression linéaire
en utilisant toutes les primitives fournirait l’équation d’un plan aberrant, ne représentant
rien de réel. La solution adoptée est d’utiliser une approche RANSAC pour estimer les
paramètres du plan contenant le plus de primitives.
Un ensemble de quelques primitives du modèle est choisi aléatoirement et utilisé dans
une régression linéaire, pour estimer l’équation d’un plan πC dans le repère caméra RC .
37
La connaissance de la matrice de passage T du repère global au repère caméra, qui est
une réécriture de la pose P = [R|t], permet de calculer les paramètres de ce plan π dans
le repère global RO .
πC T M = 0
⇐⇒
T t πC M = 0
⇐⇒
π = T t πC
~
Dans le repère global R0 , le produit scalaire entre le vecteur π et le vecteur vertical Z
fournit une indication sur l’inclinaison de ce plan. Si le plan est trop horizontal, c’est
qu’il représente probablement le sol, ou un plan aberrant. Puisque c’est le plan contenant
la façade principale qui nous intéresse, nous ignorons ce plan, et réitérons l’algorithme
de RANSAC, comme si le plan générait un Ensemble de Consensus vide. A la fin de
l’algorithme RANSAC, le plus grand Ensemble de Consensus obtenu ne contient que des
primitives sur la façade principale, et une régression linéaire permet d’estimer l’équation
de la façade principale.
Le modèle reconstruit que nous avons utilisé pour cette étape est celui généré au
chapitre précédent par la mise en correspondance de segments de contour. Il présente
l’avantage d’avoir peu d’outliers, car la plupart des segments de l’image sont situés sur
la façade. Il est également possible d’utiliser le modèle généré par la reconstruction des
points d’intérêt. Même s’il présente un plus grand nombre d’outliers, il suffit d’augmenter
le nombre d’itérations de l’algorithme RANSAC pour que l’estimation du plan principal
soit tout aussi bonne.
4.2
Sélection des primitives contenues dans ce plan
Le modèle reconstruit au chapitre précédent est trop bruité pour qu’il puisse être
exploité directement pour récupérer les primitives contenues dans la façade principale. Il
nous a semblé plus judicieux de revenir aux images, maintenant que l’équation du plan
est connue.
Lorsqu’elles sont appliquées à une scène plane, les équations de projection se transforment en une transformation homographique. Cela implique que les points en correspondance m et m0 dans deux images d’une scène plane suivent également une homographie.
Celle-ci peut être calculée si les paramètres du plan π = (a, b, c, 1) et la pose relative
des caméras Pr = [R|t] sont connus. Les équations sont données par R. Hartley et A.
Zisserman [3] et sont rappelées ici :
m0 = [R|t]M
a
= R − t cb m
En testant cette homographie sur les primitives des images, il est possible de savoir si
celles-ci sont dans le plan ou pas. Les primitives dans le plan vérifient cette homographie,
alors que les autres ne la vérifient pas.
Nous avons refait une détection de segments de contour par les algorithmes de Canny
et Hough, mais en baissant les seuils, pour obtenir beaucoup plus de détails. Les primitives
de l’image I qui après transformation par l’homographie se trouvent superposées à une
primitive de l’image I 0 , sont considérées comme faisant partie du plan π.
Un grand nombre de primitives sont ainsi détectées, restreintes à la petite zone de
l’image où la façade est visible. Il est probable que les contours de la façade eux-mêmes
38
fassent partie de ces primitives sélectionnées. Il reste donc à les trouver, et à les mettre
en correspondance avec les arêtes du modèle SIG.
4.3
Détection des limites de la façade
Parmi tous les segments de contour présents sur la façade du bâtiment, nous sélectionnons ceux qui délimitent les limites de cette façade par une solution naïve. Nous
parcourons la liste de ces segments pour récupérer ceux pratiquement horizontaux, qui
sont situés le plus en haut dans l’image, et le plus en bas. De même nous récupérons ceux
pratiquement verticaux situés le plus à gauche et le plus à droite.
Cette solution commet souvent des erreurs, dues à la détection de segments de contour
qui ne sont pas sur la façade, mais qui sont dans des plans proches, et donc suivent des
homographies semblables. Il n’est donc pas possible de mettre en correspondance ces
quatre frontières directement avec le modèle SIG.
4.4
Mise en correspondance 2D-3D et calcul de pose
Puisque les segments de frontière sélectionnés à l’étape précédente ne sont pas les
frontières réelles, mais en sont très proches, nous avons terminé le recalage par la méthode
robuste utilisée précédemment dans l’équipe TEMICS. Les frontières détectées par notre
algorithme sont légèrement décalées, mais fournissent tout de même une information de
position approximative. La solution précédente implémentée dans l’équipe utilisait, pour
obtenir des résultats similaires, une extraction de contexte géométrique, ce qui constituait
une opération longue et coûteuse au vu du peu de résultats réellement exploités.
Le principe est donc de récupérer toutes les frontières proches des limites détectées
précédemment, et de les mettre en correspondance de façon robuste avec les arêtes du
modèle 3D.
4.5
Résultats et conclusion
La figure 4.1 montre les quatre frontières de façade extraites par cette méthode. On
remarque dans cet exemple que les limites droite et gauche sont très bonnes, mais que
les limites haute et basse sont mauvaises. Il n’est pas possible pour cette raison, de
mettre directement ces frontières en correspondance avec les arêtes du modèle SIG. Il est
nécessaire de faire une mise en correspondance robuste, en récupérant plus de primitives
de l’image.
Le principe du recalage final qui vient d’être proposé focalise son attention sur le
seul plan principal. Cela ne lui permet pas de détecter correctement certaines limites de
façade qui sont pourtant calculables à partir du modèle reconstruit, comme l’intersection
de plusieurs plans. Une amélioration majeure de cette étape consistera donc à mieux
tirer parti du modèle 3D reconstruit, pour réduire le nombre d’associations à tester dans
l’algorithme RANSAC final. Elle pourrait être implémentée d’ici la fin du stage.
Dans l’état actuel, la phase finale du recalage précis concernant la mise en correspondance robuste, est la même que celle implémentée par T. Colleu [2]. Il est donc normal
39
Figure 4.1 – limites de la façade principale détectées.
que les résultats finaux soient comparables. Il arrive dans les deux implémentations que
des arêtes du modèle soient misent en correspondance avec des ombres, ce qui nuit au
calcul de pose, et conduit à un recalage imparfait.
40
Chapitre 5
Conclusion
L’objectif du stage était d’effectuer le recalage initial entre une vidéo et un modèle
3D SIG, en exploitant les informations géométriques qui peuvent être récupérées d’une
reconstruction.
La phase de reconstruction est une étape difficile dont les résultats sont parfois déroutants. Certaines vidéos s’y prêtent par exemple très mal et aucun plan ne peut être détecté
au milieu du nuage de points 3D reconstruit. Effectuer la reconstruction en utilisant les
segments n’améliore alors pas assez le modèle pour pouvoir y détecter un plan cohérent
et permettre la poursuite de l’algorithme. Heureusement, d’autres vidéos se prêtent bien
mieux à une reconstruction, en partie parce que le mouvement de la caméra y est fluide.
Cela rend le suivi des points d’intérêt plus facile, limitant de ce fait les erreurs lors de
cette étape préliminaire.
La méthode proposée présente plusieurs limitations et hypothèses restrictives, qui devront être corrigées dans le futur :
Lors du recalage final, le modèle reconstruit n’est pas complètement exploité puisque
seul un plan est extrait. Bien que cette solution soit fonctionnelle pour les vidéos utilisées
en test, il parait indispensable de poursuivre les recherches, et de mieux tirer partie des
multiples informations présentes dans le modèle reconstruit. Si l’objectif de départ avait
été de ne récupérer que le plan principal, des méthodes plus simples, inspirées des travaux
de G. Simon, M.-O. Berger [16], auraient pu être utilisées.
Parmi les solutions qui paraissent intéressantes à exploiter, on peut citer :
– Un recalage entre le modèle 3D et le modèle reconstruit sans passer par des mises en
correspondance avec des primitives 2D issues des images. L’algorithme ICP présenté
à la section 1.3.2 de l’état de l’art pourrait répondre à cette attente, et mériterait
d’être implémenté dans ce contexte.
– Une approche par balayage de plan (Plane Sweeping) pourrait également être envisagée. Elle ferait l’hypothèse des paramètres du plan principal, en se basant par
exemple sur la pose approximative, et ajusterait petit à petit ces paramètres par
des vérifications de cohérence avec les images.
Toutes les étapes de la méthode utilisent des paramètres de seuils dont les valeurs
doivent être choisies avec soins. On peut citer par exemple la distance maximum entre
41
un inlier et son modèle, ou encore le petit rayon de l’ellipse utilisée pour sélectionner
les points d’intérêt représentant au mieux un segment. Le jeu de paramètres utilisé a été
choisi en fonction des quelques vidéos de test, mais il ne correspondra peut-être pas à des
vidéos différentes, qui n’ont par exemple pas les mêmes résolutions.
Il serait donc également nécessaire de proposer des paramètres, soit indépendants de la
séquence (fixes pour toute séquence), soit d’estimer leurs valeurs en fonction des données
à traiter.
42
Bibliographie
[1] Gael Sourimant. Reconstruction de scènes urbaines à l’aide de fusions de données de
type GPS, SIG et Vidéo. PhD Thesis, université de Rennes, 2007
[2] Thomas Colleu, Gael Sourimant et Luce Morin. Une méthode d’initialisation automatique pour le recalage de données SIG et vidéo. COmpression et REpresentation des
Signaux Audiovisuels (CORESA 2007)
[3] R. I. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Press,
ISBN : 0521540518, seconde édition, Cambridge University, 2004
[4] Martin Armstrong and Andrew Zisserman and Richard I. Hartley. Self-Calibration
from Image Triplets. ECCV (1), p. 3–16, 1996
[5] Q. Luong and O. Faugeras. Self-calibration of a moving camera from point correspondances and fundamental matrices. IJCV, 22(3), p. 261–89, 1997
[6] Paul E. Debevec and Camillo J. Taylor and Jitendra Malik. Modeling and Rendering
Architecture from Photographs : A Hybrid Geometry- and Image-Based Approach.
Computer Graphics 30, Annual Conference Series, p. 11–20, 1996
[7] Canny, J. A computational approach to edge detection. IEEE Computer Society, 1986
[8] L. Ding and A. Goshtasby. The Canny edge detector. Pattern Recognition, 34(3), p.
721–725, 2001
[9] Analysis Josep Llados. The Hough Transform As A Tool For Image.
[10] C. Rother. A new approach for vanishing point detection in architectural environments. In BMVC2000, p. 382–391, 2000
[11] Thomas Werner and Andrew Zisserman. New Techniques for Automated Architectural Reconstruction from Photographs. Robotics Research Group, Department on Engineering Science, University of Oxford, 2002
[12] Konrad Schindler and Joachim Bauer. A Model-based Methode For Building Reconstruction. Inffeldgasse 16, 8010 Graz, Austria, 2003
[13] D. DeMenthon and L. S. Davis. Model-Based Object Pose in 25 Lines of Code.
European Conference on Computer Vision, p. 335–343, 1992
[14] P. David, D. DeMenthon, R. Ruraiswami and H. Samet. Softposit : Simultaneous
pose and correspondance determination. In ECCV (3), p. 698–714, 2002
[15] E. Marchand and F. Chaumette. Virtual visual servoing : a framework for real-time
augmented reality. In EUROGRAPHICS’02 Conference Proceeding, volume 21(3) of
Computer Graphics Forum, p. 289–298, Saarebrcken, Germany, 2002
[16] G. Simon, M.-O. Berger. Pose estimation for planar structures. IEEE CG-A, 22(6),
p. 46–53, 2002
43
[17] M. Bleyer and M. Gelautz. A Layered Stereo Matching Algorithm using Image Segmentation and Global Visibility Constraints ISPRS Journal of Photogrammetry & Remote Sensing 59, p. 128-150, 2005
[18] C. Baillard and C. Schmid and A. Zisserman and A. Fitzgibbon. Automatic line
matching and 3D reconstruction of buildings from multiple views. In Proc. ISPRS
Conference on Automatic Extraction of GIS Objects from Digital Imagery, IAPRS
Vol.32, Part 3-2W5, 1999
[19] B. Le Callennec. Mise en cohérence de modèles 3D pour la navigation interactive.
Rapport de stage de DEA, 2001
[20] Martin A. Fischler and Robert C. Bolles. Random sample consensus : a paradigm for
model fitting with applications to image analysis and automated cartography. Commun.ACM, 24(6), p. 381–395, 1981
[21] Derek Hoiem, Alexei A. Efros, and Martial Hebert. Geometric context from a single
image. InICCV, volume1, p. 654–661.IEEE, 2005
[22] Carlo Tomasi and Takeo Kanade. Detection and Tracking of Point Features. CMUCS-91-132, Carnegie Mellon University, 1991
[23] R. Deriche and O. Faugeras. Tracking line segments. In Image Vision Comput. 02628856, p. 261–270, 1990
44