我有空間6點,已知的座標在毫米和相應的二維像素座標在圖像中(圖像尺寸是640x320像素和點座標已測量圖像的左上角。我也有相機的焦距爲43.456mm。試圖找到相機的位置和方向。 我的matlab代碼在這裏會給我的相機位置爲-572.8052 -676.7060 548.7718,似乎是正確的,但我有一個艱難的實時查找方位值(攝像機的偏航俯仰角度) 我知道旋轉值應該是60.3,5.6,-45.1 我的代碼中最後4行需要更新以輸出攝像機的方向。 我會的真的很感謝你的幫助。 謝謝。Matlab解剖提取相機投影矩陣的位置和旋轉
這裏是我的MATLAB代碼:
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)
你還需要幫助嗎?或者它是你做的作業/項目? – smttsp
不,我仍在尋找解決方案,而且我已經失學多年了!你能幫我嗎? – Ali
你試圖找到的究竟是什麼?相機相對於相機中心的位置(即(0,0))的旋轉和平移? – smttsp