Ich habe 6 Punkte im Raum mit bekannten Koordinaten in mm und entsprechenden 2D-Pixel-Koordinaten im Bild (Bildgröße ist 640x320 Pixel und Punkte Koordinaten wurden von oben links im Bild gemessen Ich habe auch die Brennweite der Kamera als 43.456 mm versuchen, die Kameraposition und Orientierung zu finden .. Mein Matlab-Code hier wird mir die Kamera-Position als -572.8052 -676.7060 548.7718 und scheint richtig, aber ich habe eine harte Zeit, die Orientierungswerte zu finden (Gierteilung der Kamera in Grad) Ich weiß, dass die Rotationswerte 60,3,5,6, -45,1 sein sollten die letzten 4 Zeilen in meinem Code müssen aktualisiert werden, um die Ausrichtung der Kamera auszugeben. würde ich Ich schätze deine Hilfe wirklich sehr. Danke.Matlab Zerlegen Extrahieren Kamera Projektion Matrix zu Position und Rotation
Hier ist mein Matlab-Code:
Points_2D= [135 183 ; 188 129 ; 298 256 ; 301 43 ; 497 245; 464 110];
Points_3D= [-22.987 417.601 -126.543 ; -132.474 37.67 140.702 ; ...
388.445 518.635 -574.784 ; 250.015 259.803 67.137 ; ...
405.915 -25.566 -311.834 ; 568.859 164.809 -162.604 ];
M = [0;0;0;0;0;0;0;0;0;0;0];
A = [];
for i = 1:size(Points_2D,1)
u_i = Points_2D(i,1);
v_i = Points_2D(i,2);
x_i = Points_3D(i,1);
y_i = Points_3D(i,2);
z_i = Points_3D(i,3);
A_vec_1 = [x_i y_i z_i 1 0 0 0 0 -u_i*x_i -u_i*y_i -u_i*z_i -u_i]; %
A_vec_2 = [ 0 0 0 0 x_i y_i z_i 1 -v_i*x_i -v_i*y_i -v_i*z_i -v_i]; %
A(end+1,:) = A_vec_1;
A(end+1,:) = A_vec_2;
end
[U,S,V] = svd(A);
M = V(:,end);
M = transpose(reshape(M,[],3));
Q = M(:,1:3);
m_4 = M(:,4);
Center = (-Q^-1)*m_4
k=[43.456/640 0 320 ;0 43.456/320 160;0 0 1 ];
Rotation= (Q^-1)*k;
CC=Rotation'
eul=rotm2eul(CC)
Brauchen Sie noch Hilfe? Oder war es eine Hausaufgabe/ein Projekt, dass du fertig bist? – smttsp
Nein Ich suche immer noch nach einer Lösung und es ist Jahre her, seit ich die Schule verlassen habe! kannst du helfen? – Ali
Was genau suchen Sie? Rotation und Translation der Kamera in Bezug auf eine Position, d. h. (0,0) Kamerakonzentration? – smttsp