5

ich zwei Projektionsmatrizen P1 und P2 verwendet werden (zum Beispiel verwende ich dinosaur dataset) und ich brauche die Fundamental-Matrix F. So Funktionen verwende ich zwei Matlab zu berechnen:Verschiedene Fundamental-Matrix aus den gleichen Projektionsmatrizen

  • Peter Kovesi der Funktion: 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

Diese Funktionen sollten die sam tun e Sache, aber Ich habe einen anderen F-Wert! Wie ist es möglich? Welche sind die richtigen Funktionen?

Wenn zwei Punkte X1 und X2 in zwei verschiedenen Bildern "identisch" sind, X2^T * F * X1 = 0 ... So fand ich zwei Korrespondenzpunkte von zwei gedrehten Bildern (5 Grad) mit SURF , aber X2^T * F * X1 ist nie gleich Null mit diesen zwei Funktionen. Irgendwelche Ideen?

Stattdessen, wenn ich diese Funktion verwenden, die F von Spielen Punkten berechnet:

Ich habe, dass X2^T * F * X1 = 0 .... Offensichtlich ist F anders als die beiden FI mit den beiden anderen Funktionen ...

+0

Ich bin sicher, dass die Funktion von Peter Kovesi richtig ist, es funktioniert richtig! –

Antwort

2

Gut für eine Sache, es ist mit überwältigender Wahrscheinlichkeit, dass die Punkte nicht perfekt voneinander Version gedreht sind. SURF verwendet viele Approximationen, eine bilineare Interpolation und eine ganze Reihe von Dingen, die echte Rotationsinvarianz brechen. Es gibt also möglicherweise keine solche fundamentale Matrix (wenn es keine lineare Beziehung zwischen den beiden Punktmengen gibt.) Ja, dies gilt auch, nachdem Sie eine Punktabgleichung durchgeführt haben.

Das heißt, Ihre sollte wahrscheinlich klein sein, wenn das Matching wirklich gut ist, aber ich wäre überrascht, wenn es für ein echtes Bild jemals genau Null ist.

2

Die grundlegende Matrix ist nur bis zu einer Skala einzigartig.

Also, auch wenn Sie verschiedene grundlegende Matrizen haben, können beide für Ihre Bilder korrekt sein.