Rapport Stage 2A .pdf



Nom original: Rapport_Stage_2A.pdf

Ce document au format PDF 1.5 a été généré par LaTeX with hyperref package / pdfTeX-1.40.16, et a été envoyé sur fichier-pdf.fr le 05/03/2017 à 21:45, depuis l'adresse IP 74.12.x.x. La présente page de téléchargement du fichier a été vue 346 fois.
Taille du document: 2.6 Mo (16 pages).
Confidentialité: fichier public


Aperçu du document


Rapport Stage 2A
Olivier Bonnemains
Juin - Juillet 2016

Contents
1 Pr´
esentation de l’entreprise

2

2 Introduction

2

3 Calcul des projections sur les plans
3.1 D´efinition des plans image . . . . .
3.2 calcul des projections . . . . . . . .
3.3 affichage des images sur les plans .

image
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .

3
3
4
5

4 Estimation des transformations
4.1 Estimation de la matrice fondamentale . . . . . . . . . . . . . . .
4.2 Estimation de la matrice essentielle . . . . . . . . . . . . . . . . .
4.3 Estimation des transformations . . . . . . . . . . . . . . . . . . .

8
8
8
9

5 calcul de coordonn´
ees 3D
11
5.1 estimation de la profondeur . . . . . . . . . . . . . . . . . . . . . 11
5.2 R´esultat final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6 Difficult´
es rencontr´
ees

14

7 Conclusion

16

1

1

Pr´
esentation de l’entreprise

Ce stage a ´et´e effectu´e `
a l’Universit´e Polytechnique de Catalogne `a Barcelone,
aupr`es de M. Ruiz Hidalgo, professeur de vision par ordinateur, dans le d´epartement
des t´el´ecommunications et de la th´eorie du signal, parmi l’´equipe de recherche en
traitement d’image. Ce laboratoire est connu principalement pour ses publications sur les syst`emes de d´etection d’´emotions, sur la segmentation s´emantique
(servant `
a identifier des classes d’objets) ind´ependamment du cadre de l’image,
et en vision par ordinateur.

2

Introduction

Le but de ce stage ´etait de cr´eer un outil Matlab destin´e au cours de vision par
ordinateur de l’universit´e.
Cet outil permettra aux ´etudiants d’´etudier une sc`ene `a partir de deux images
prises , de deux points de vue diff´erents, avec un appareil photo. Le principe
´etait de s’inspirer du r´esultat suivant effectu´e en java:
http://www.ai.sri.com/~luong/research/Meta3DViewer/EpipolarGeo.html
Ce travail s’effectuait `
a partir des donn´ees de l’appareil (param`etres de calibration et positions des deux cam´eras). Ensuite, je devais dessiner via Matlab,
une figure affichant les deux appareils, les deux plans image, un point 3D et ses
projections sur les plans. Les deux projections devaient donc correspondre au
mˆeme motif sur chacune des images.
Les avantages de Matlab par rapport `a Java aideront beaucoup aux estimations
n´ecessaires `
a l’´etude de la sc`ene. Seul le cas avec deux vues a ´et´e trait´e, ajouter
des cam´eras suppl´ementaires revient juste `a calculer un nouveau rep`ere.
Le stage s’est effectu´e en trois ´etapes:
- Partir d’un couple rotation-translation arbitraire et d’un point du monde pour
calculer ses projections sur les deux plans image.
- Calculer le bon couple rotation-translation par le biais des matrices fondamentale et essentielle.
- Estimer la profondeur des ´el´ements de l’image afin de pouvoir obtenir leurs
coordonn´ees r´eelles.

2

3

Calcul des projections sur les plans image

Cette partie a ´et´e effectu´e dans un premier temps, car plus facile `a aborder et
constitue une bonne introduction pour comprendre le cadre du probl`eme.
On dispose donc :
- d’un point du monde M et de matrices de changement de base arbitraires,
not´ees Rot et T~ra, car `
a ce stade on n’a pas les moyens d’en choisir de corrects,
- des param`etres de calibration,
- de la position de l’appareil photo au moment de la prise (not´ees c1 et c2 ).
On choisit d’attribuer la base canonique au premier appareil. La deuxi`eme
base est obtenue grˆ
ace aux transformations choisies.

3.1


efinition des plans image

Il faut ensuite d´efinir les deux plans image. Les param`etres de calibration nous
permettent d’obtenir la distance focale de l’appareil, not´ee f dans la suite de
ce document. Le centre optique est le point situ´e `a la distance f de l’appareil
dans la direction de l’axe z1 (dans la base de l’appareil). Pour l’appareil 1, c’est
facile, puisqu’on a choisi la base canonique. On a donc:
F1 = c1 + f.~z1
Connaissant les dimensions de l’image et les coordonn´ees de son centre F1 ,
on peut construire le rectangle correspondant au plan image, perpendiculaire `a
~x1 ± hauteur
y~1 .
~z1 . En effet, ses quatre points sont d´efinis par P = F1 ± largeur
2
2
Ensuite on proc`ede de la mˆeme mani`ere pour l’appareil 2. Cependant, la base
de celui-ci
 n’est
 pas la
 base
 canonique, il faut donc la calculer pr´ealablement.
~x2
~x1
On pose  ~y2  = Rot  ~y1 
~z2
~z1
Le centre optique est ensuite calcul´e comme pr´ec´edemment:
F2 = c2 + f.~z2
Quant aux sommets du plan image, ils sont obtenus en appliquant la transformation P 7→ Rot.P + T~ ra aux sommets de l’image 1.
A ce stade, on obtient la figure suivante:

3

Figure 1: calculs des deux projections

3.2

calcul des projections

Maintenant que les rayons sont trac´es, on va s’int´eresser aux projections du
point M sur les deux plans image. Ces projections seront not´ees m1 et m2 .
La projection m1 n’est autre que l’intersection de la droite (c1 M ) avec le plan
z1 = f . Le point c1 ´etant plac´e `a l’origine, il est assez facile de calculer m1 .
f
il suffit de multiplier M par M.~
z1 . Le point m2 est l’intersection de la droite
(c2M ) avec le plan z2 = f . Le point c2 n’´etant pas `a l’origine, le calcul pr´ec´edent
−−→
f
ne fonctionne plus. On a toujours m2 = c2 M ∗ M.~
z2 mais pour l’effectuer en
Matlab (qui effectue le calcul dans la base 1), il faut le transposer dans la base
de et l’´ecrire ainsi:
m2 = T~ra +
On arrive au r´esultat suivant:

4

−−→
c2 M ∗f
M.z~2 .

Figure 2: position des plans image

3.3

affichage des images sur les plans

A partir des bords des plans image, on peut d´efinir un objet surface sur Matlab,
en y ajoutant une texture repr´esentant les images. Pour la suite de cette ´etude,
on utilisera les deux images suivantes:

5

Figure 3: images st´er´eo utilis´ees pour l’´etude

6

On choisit donc d’afficher ces images sur les plans, ce qui donne le r´esultat
suivant:

Figure 4: Ajout des images
On constate que les points m1 et m2 ne sont pas situ´es au mˆeme endroit
sur les deux images (m1 est plac´e sur la porte et m2 dans le ciel). En effet, le
vecteur T~ ra et la matrice Rot ont ´et´e choisis arbitrairement, il est donc normal
qu’ils ne soient pas corrects. L’´etape suivante de ce stage consistait `a en obtenir
une estimation.

7

4

Estimation des transformations

Cette ´etude a ´et´e effectu´ee grˆace `a la lecture des livres de Hartley et Zisserman
[1], et Szeliski [2].

4.1

Estimation de la matrice fondamentale

La matrice fondamentale, not´ee F dans la suite, permet d’exprimer les coordonn´ees, not´ees P1 d’un point P dans une base `a partir de celles de ce point
dans l’autre base, not´ees P2 . Cette matrice doit v´erifier l’´egalit´e suivante:
P2T F P1 = 0.
Cette matrice est donc d´efinie `a un facteur pr`es. Ce facteur n’a pas d’importance
pour l’estimation, puisqu’un calcul de normalisation aura lieu dans la suite. On
peut constater que Det F = 0. Pour calculer cette matrice, il faut pouvoir
associer `
a plusieurs points de la premi`ere image leurs correspondants sur la
deuxi`eme. Le nombre de points `a choisir d´epend de la m´ethode de calcul utilis´ee,
et doit ici ˆetre sup´erieur `
a 8. La fonction de Matlab estimateFundamentalMatrix permet l’estimation de cette matrice, si les points fournissent suffisamment
de correspondances pr´ecises. Pour les images ´etudi´ees, on obtient la matrice
fondamentale suivante:


0
−0.0017 0.7596
0
−2.3492
F1 =  0.0008
−0.4009 2.3084
99.9421
Ce r´esultat a ´et´e obtenu en s´electionnant manuellement les points correspondants. Un deuxi`eme version de cette fonction a ´et´e ´ecrite, qui d´etecte automatiquement les points correspondants. On obtient alors un r´esultat presque
identique:


0
−0.0012 0.5651
0
−1.2934
F2 =  0.0008
−0.4113 1.1895
99.9821
On a environ F2 = 1.3∗F1 , donc F1 et F2 ne diff`erent que du facteur multiplicatif
et des impr´ecisions de mesure.

4.2

Estimation de la matrice essentielle

A partir de l’estimation de F1 , on peut en d´eduire la matrice essentielle, `a partir de laquelle on obtiendra la matrice Rot et le vecteur T~ ra. Cette matrice
est un cas particulier de matrice fondamentale, utilisant des coordonn´ees orthonorm´ees. Pour cela, on a besoin de la matrice de calibration interne des
appareils, not´es K1 et K2 . Pour notre exemple, les deux photos ont ´et´e prises
avec le mˆeme appareil, de matrice de calibration:
8


2759.48
K= 0
0

0
2764.16
0


1520.69
1006.81.
1

Les deux premiers coefficients diagonaux sont le produit de la distance focale
de l’appareil avec les facteurs d’agrandissement de l’image (dans les deux dimensions). Les deux premiers coefficients de la troisi`eme colonne repr´esentent les
coordonn´ees de la projection du centre optique de l’appareil sur le plan image.
La matrice essentielle s’obtient alors ainsi:
E = K T F K (Dans le cas g´en´eral E = K2T F K1 ).
On a alors:


1.1237
E = 64.6575
12.0308

4.3

−110.3981
−4.7936
−17.2392


−21.1015
−12.8618
−5.4871

Estimation des transformations

Cette matrice essentielle va nous permettre d’obtenir une estimation des transformations recherch´ees. Pour cela il faut effectuer la d´ecomposition

 SVD de
s 0 0
la matrice essentielle, on a: E = U ΣV T . En th´eorie, on a Σ = 0 s 0.
0 0 0
Cependant, `
a cause des les impr´ecisions
des
estimations
pr´
e

e
dentes,
ce n’est


10.5525
0
0
10.0144 0, on choisit donc
pas tout `
a fait le cas, on a Σ =  0
0
0
0


s 0 0
s = 21 (10.5525 + 10.144) = 10.2834 puis on recalcule E = U 0 s 0 V T
0 0 0
puis on recalculeles matrices
U
et
V
de
la

e
composition
SVD
de
E.
On d´efinit

0 −1 0
la matrice W = 1 0 0, alors on a Rot = U W V T ou Rot = U W T V T Par
0 0 1
ailleurs, si on note T 1 = U W SU T et T2 = U W SU T , on a:
 1 
 2 
T3 ,2
T3 ,2
T~ ra = T11 ,3  ou T~ ra = T12 ,3 
T21 ,1
T22 ,1
On a deux rotations et deux translations possibles, soit quatre couples de solutions. Il faut les tester manuellement pour d´eterminer le bon. On obtient donc

9



0.9303
−0.0493
Rot
=
−0.3636
T~ ra
−0.2255





0.0442
0.9988
−0.0225
−0.2959


0.3642
0.0048 

0.9313 
−1.3571

On peut ´egalement obtenir ce r´esultat en d´ecomposant la matrice de projection
de chaque appareil, fournies avec les param`etres de calibration, en passant par
le rep`ere monde. On calcule le d´ecalage de chaque appareil par rapport `a ce
rep`ere monde. En compostant les deux couples rotation-translation, on a obtenu
a peu pr`es le mˆeme r´esultat qu’avec le passage par les matrices fondamentale et
`
essentielle.
Avec ces transformations, on arrive au r´esultat suivant:

Figure 5: Estimation des transformations
Le r´esultat est encore une fois non satisfaisant: le point m1 est situ´e sur la
porte alors que le point m2 est situ´e sur la fa¸cade de face. Pourtant, on voit

10

bien que l’orientation des plans image est coh´erente. En effet, le plan 1 pr´esente
bien une plus grande vue sur la gauche de l’image que le plan 2. Ce probl`eme
est du au fait que le point M a ´et´e choisi arbitrairement, sans information sur
la profondeur de champ des images. Il ne correspond donc pas n´ecessairement
a un d´etail pr´ecis du chˆ
ateau, mais peut ˆetre `a une mol´ecule d’air situ´ee devant
ou derri`ere celui-ci. Il va donc falloir trouver une information sur la profondeur
des points des images.

5
5.1

calcul de coordonn´
ees 3D
estimation de la profondeur

Maintenant que nous connaissons le d´ecalage entre les deux images, on peut
inverser le raisonnement du calcul des projections, c’est `a dire s´electionner un
mˆeme point sur chaque image et trianguler leur projection dans le monde 3D.
Cela revient donc `
a trouver le point M `a partir des points c1 , c2 , m1 et m2 .
On peut calculer les droites (c1 m1 ) et (c2 m2 ) et calculer leur intersection. En
pratique, les droites ne se coupent pas (`a cause notamment des approximations
faites lors du calcul de la matrice fondamentale), on calcule donc les deux points
les plus proches de chaque droite. On choisit comme point M le milieu de ces
deux points. En choisissant le sommet de la tour, on obtient le r´esultat suivant:

11

Figure 6: Calcul de la profondeur

0.1963
On trouve M = −1.4354
16.5312


12

5.2


esultat final

On peut utiliser ces coordonn´ees pour recalculer les projections, on obtient alors:

Figure 7: R´esultat final
Les projections sur les plans image sont bien situ´ees au sommet de la tour,
le r´esultat est correct. On peut le tester sur d’autres points des images (ici avec
la boite verte derri`ere le tracteur), avec le mˆeme succ`es:

13

Figure 8: R´esultat final

6

Difficult´
es rencontr´
ees

Le projet ´etait tr`es int´eressant, mais n’a pas ´et´e compl`etement men´e `a bout:
En effet, il aurait du ˆetre possible de d´eplacer manuellement le point M pour
suivre le d´eplacement des points m1 et m2 . Pour ce faire, deux m´ethodes ont ´et´e
essay´ees. La premi`ere ´etait de faire glisser le point avec la souris en d´efinissant
le point M comme un objet ”draggable” au moyen de la fonction impoint.
Malheureusement cette fonction n’est utilisable que dans un contexte en deux
dimensions, puisque la souris ne se d´eplace pas dans l’espace en trois dimensions.
La deuxi`eme solution ´etait d’utiliser la commande ginput. Cette commande
ne peut prendre de coordonn´ees en trois dimensions, mais peut ˆetre utilis´ee
dans un tel contexte, `
a l’inverse de la pr´ec´edente. Il faut pour cela orienter la
vue sur le plan XY, et choisir l’abscisse et l’ordonn´ee du nouveau point. Pour
14

la troisi`eme coordonn´ees, il faut donc la choisir arbitrairement. Cependant,
l’´etude pr´ec´edente a montr´e que celle ci ne pouvait pas ˆetre choisie ainsi. On
peut choisir de garder la profondeur du point initial, pour garder un r´esultat
a peu pr`es correct si on reste sur la fa¸cade centrale, mais qui devient trop
`
approximatif sur les zones o`
u la profondeur change de mani`ere importante. De
plus, cette m´ethode ne marche que sur le plan XY, qui n’est pas toujours le plus
appropri´e pour repr´esenter le mouvement. Cette m´ethode a ´et´e impl´ement´ee,
mais le r´esultat n’est pas satisfaisant
Une troisi`eme m´ethode possible serait de rentrer chaque nouvelles coordonn´ees
au clavier, mais cela n’a pas ´et´e fait, car ´equivalent `a stopper le programme pour
modifier le point M dans le code. De plus, cela ne r´esout pas le probl`eme de
trouver les coordonn´ees coh´erentes.
Cependant le mouvement du point a ´et´e impl´ement´e: Pour plusieurs point
entre le point initial et le point d’arriv´ee (r´epartis le long de la droite), les
´el´ements de la figure (les projections image et les rayons) sont recalcul´es pour
donner l’impression d’un mouvement continu. On suppose qu’on a le point sur
le sommet de la tour et qu’on le d´eplace dans le monde. Cela donne le r´esultat
suivant:

Figure 9: mouvement de l’image

15

On voit que le point m2 est situ´e sur le balcon alors que le point m1 est
sur la fenˆetre d’`
a cot´e. Comme expliqu´e pr´ec´edemment, le point M a la mˆeme
profondeur que le sommet de la tour, donc au niveau du balcon, cette profondeur
n’est plus la mˆeme, ce qui explique le d´ecalage. Sur la figure java, on pouvait
d´eplacer le point selon le plan correspondant `a l’angle de vue. R´eussir `a faire cela
sur Matlab aurait am´elior´e l’ergonomie du code, mais le probl`eme de profondeur
aurait persist´e. C’est pourquoi la figure java ne prenait pas en compte d’images
r´eelles. Ainsi, le travail effectu´e durant ce stage sur Matlab a n´eanmoins permis
d’am´eliorer l’outil java dont disposait l’universit´e auparavant.

7

Conclusion

Tout le travail pr´esent´e ici a ´et´e effectu´e seul, avec le guidage de M. Hidalgo.
Il permettra aux ´el`eves de son cours de mieux visualiser l’utilit´e de la calibration d’appareils photo pour l’´etude d’images, ainsi que de mieux comprendre
comment appliquer les concepts abstraits que sont les matrices fondamentales
et essentielles pour trouver le d´ecalage entre deux images.
D’un point de vue personnel, je suis tr`es satisfait de ce stage, car la vision
par ordinateur doit ˆetre trait´ee en troisi`eme ann´ee `a l’ENSEEIHT, cependant,
partant `
a l’´etranger `
a la rentr´ee, je suis heureux d’avoir pu aborder ce sujet en
stage.
De plus, ce stage m’a permis de d´ecouvrir le travail en laboratoire, ce qui pourra
m’aider l’ann´ee prochaine au moment de choisir mon orientation professionnelle.
Le seul point n´egatif est de ne pas pu avoir travaill´e en ´equipe, et donc de ne pas
avoir pu r´eellement communiquer professionnellement en anglais avec d’autres
personnes, en dehors des r´eunions avec M. Hidalgo.

References
[1] R. I. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, ISBN: 0521540518, second edition, 2004.
[2] Richard Szeliski. Computer Vision: Algorithms and Applications. Springer,
2010.

16


Aperçu du document Rapport_Stage_2A.pdf - page 1/16

 
Rapport_Stage_2A.pdf - page 3/16
Rapport_Stage_2A.pdf - page 4/16
Rapport_Stage_2A.pdf - page 5/16
Rapport_Stage_2A.pdf - page 6/16
 




Télécharger le fichier (PDF)


Rapport_Stage_2A.pdf (PDF, 2.6 Mo)

Télécharger
Formats alternatifs: ZIP Texte



Documents similaires


rapport stage 2a
sec ccp 2011 phys2 mp
paulbriard 2010 holophi rouen
projet de 3e annee giraud remi 1
corrige2
corrige4

Sur le même sujet..




🚀  Page générée en 0.012s