Bonjour tout le monde.

j'ai un programme qui fait correspondre automatiquement en utilisant SURF des points entre deux images dont j'ai enlevé la distorsion. Ensuite je calcule la matrice fondamentale avec RANSAC et j'essaie d'en déduire R et T en utilisant la méthode décrite dans l'article de wikipedia:
http://en.wikipedia.org/wiki/Essential_matrix


Mes correspondances ne sont pas parfaites mais en utilisant ransac avec 0.99 en probabilité et en ayant plus de 250 points qui correspondent à la base il doit tout de même y avoir un moyen de trouver une matrice fondamentale correcte je pense!

Je mets un exemple de mon matching, des épipoles et de ma sortie console pour les âmes charitables qui voudraient m'aider à percer ce mystère:

http://img17.imageshack.us/img17/3275/matches.png
http://img11.imageshack.us/img11/3821/epilines.png


La sortie console est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
found 268 putative correspondences
final number of correspondences after clearing outliers
with the fundamental matrix got using RANSAC: 14
 
E=F=fundamental matrix:
[[ -1.17957825e-05 4.38445015e-04 -5.43820346e-03]
[ -3.48026661e-04 2.45962001e-04 -4.51950310e-03]
[ -6.65613916e-04 -8.16155747e-02 1.00000000e+00]]
 
reprojection error equals to:-0.056750
(this is the sum of: "transpose(pts2)*E*pts1" which should be equals to
0)
 
Now trying to get R and t from E.......
 
U, sigma, V = sdv(E):
U:
[[ 0.00543762 -0.04384693 -0.99902344]
[ 0.00450919 -0.99902701 0.04387163]
[-0.99997503 -0.00474335 -0.00523461]]
sigma:
[ 1.00335026e+00 3.72140668e-04 1.01946012e-12]
V:
[[ 6.61746832e-04 8.13445076e-02 -9.96685803e-01]
[ 9.44165766e-01 3.28327447e-01 2.74233185e-02]
[ 3.29470038e-01 -9.41054821e-01 -7.65854269e-02]]
e=t= last column vector of U:
[[-0.99902344]
[ 0.04387163]
[-0.00523461]]
Rotation is:
[[ 0.99524114 -0.07058063 0.06718149]
[-0.04475413 -0.94352449 -0.328266 ]
[ 0.0865566 0.32369719 -0.94219321]]
denormalized translation vector:
[[190.84946, -8.3810606]]
Mes deux questions sont:

- Quand je fais la svd de E, sigma devrait contenir 2 valeurs identiques et une valeur nulle, la valeur nulle c'est bon(e-12 ...) mais le reste n'est pas identique!! pourquoi? Je pense que ma matrice fondamentale n'est pas correcte mais même en sélectionnant moi même 8 points à la main et en lançant mon algo je tombe sur des chiffres incorrects...

- Si j'utilise LMEDS au lieu de RANSAC, presque tous les points de départ sont conservés, alors qu'avec RANSAC, on passe de 268 à 14 points seulement!! Comment ce fait-il qu'il y ait une si grande différence?

Merci pour vos réponse!