Triangulation und direkte lineare Transformation

8

Nach Hartley / Zisserman's Multiview Geometry, Algorithmus 12: Die optimale Triangulationsmethode (p318), habe ich die entsprechenden Bildpunkte xhat1 und xhat2 (Schritt 10). In Schritt 11 muss der 3D-Punkt Xhat berechnet werden. Eine solche Methode ist die direkte lineare Transformation (DLT), die in 12.2 (p312) und 4.1 (p88) erwähnt wird.

Die homogene Methode (DLT), p312-313, gibt an, dass sie eine Lösung als Einheitsvektor findet, der dem kleinsten singulären Wert von A entspricht, also

%Vor%

Allerdings ist A eine 16x1-Matrix, was zu einem Va von 1x1 führt.

Was mache ich falsch (und eine Lösung), um den 3D-Punkt zu bekommen?

Für was es wert ist, Beispieldaten:

%Vor%

Update Arbeitscode für Abschnitt xi im Algorithmus

%Vor%     
yxk 16.02.2010, 21:21
quelle

1 Antwort

10

Wie im Buch (Abschnitt 12.2) erwähnt, sind p i T die Zeilen von < stark> P . Daher müssen Sie P1(k,:) nicht transponieren (d. H. Die richtige Formel ist A = [xhat1(1) * P1(3,:) - P1(1,:) ; ... ).

Ich hoffe, das war nur ein Tippfehler.

Zusätzlich wird empfohlen, jede Zeile von A mit ihrer L2-Norm zu normalisieren, d. h. für alle i

A(i,:) = A(i,:)/norm(A(i,:));

Und wenn Sie die triangulierten 3D-Punkte plotten möchten, müssen Sie Xhat vor dem Plotten normalisieren (ansonsten bedeutungslos), d. h.

Xhat = Xhat/Xhat(4);

    
Jacob 17.02.2010, 04:28
quelle