5

utilizo dos matrices de proyección P1 y P2 (por ejemplo estoy usando dinosaur dataset) y I necesidad de calcular la matriz fundamental F. lo tanto, utilizar dos funciones Matlab:Different matriz fundamental a partir de las mismas matrices de proyección

    función
  • de Peter Kovesi: www.csse.uwa.edu.au/~pk/Research/MatlabFns/Projective/fundfromcameras.m
  • Zisserman: www.robots.ox.ac.uk/~vgg/hzbook/code/ vgg_multiview/vgg_F_from_P.m

Estas funciones deben hacer el sam e cosa, pero Tengo un valor de F diferente! ¿Como es posible? ¿Cuáles son las funciones correctas?

Si dos puntos X1 y X2 son "lo mismo" en dos imágenes diferentes, X2^T * F * X1 = 0 ... Encontré dos puntos correspondientes de dos imágenes giradas (5 grados) usando SURF , pero X2^T * F * X1 nunca es igual a cero con estas dos funtcions. Alguna idea?

lugar si uso esta función que calcula F de coincidencias puntos:

tengo que X2^T * F * X1 = 0 .... Obviamente, F es diferente de los dos FI que tenía con las otras dos funciones ...

+0

¡Estoy seguro de que la función de Peter Kovesi es correcta, funciona correctamente! –

Respuesta

2

Bueno, para empezar, es muy probable que los puntos no tengan una versión perfectamente girada entre sí. SURF usa muchas aproximaciones, interpolación bi-lineal y una gran cantidad de cosas que rompen la verdadera invarianza rotacional. Por lo tanto, es posible que no exista una matriz fundamental (si no existe una relación lineal entre los dos conjuntos de puntos). Sí, esto es cierto incluso después de hacer la coincidencia de puntos.

Dicho esto, su X2^T*F*X1 probablemente sea pequeño si la coincidencia es realmente buena, pero me sorprendería que sea exactamente igual a cero para una imagen real.

2

La matriz fundamental es única solamente hasta una escala.

Por lo tanto, incluso si tiene matrices fundamentales diferentes, ambas pueden ser correctas para sus imágenes.

Cuestiones relacionadas