V súčasnosti som model fotoaparátu nastavil vo fotoaparáte ako pôvodné súradnice:
http://i.imgur.com/UnSCAvG.png
a pretože fotoaparát bol stacionárny, snažím sa premeniť systém na vzorový model
http://i.imgur.com/OKunxwA.png
Matlab je dosť pekné, aby mi to ukázal, ale bohužiaľtam som nenašiel žiadny spôsob, ako extrahovať dáta, ak nie je na modeli s pevnou kamerou. Mala by byť jednoduchá záležitosť uplatnenia inverzného prekladu a rotácie na zmenu medzi systémami, ale bohužiaľ to nefunguje a neviem prečo.
oldpoint = [0 0 0 1]";
translation = ([1 0 0 18.1043121043; 0 1 0 31.092351038; 0 0 1 -80.0610295707; 0 0 0 1]);
rotation = [eul2rotm([0.0957937074 -0.0234017529 -0.037084526]) zeros(3,1); 0 0 0 1];
newpoint = translation * point;
newpoint = rotation * newpoint;
Vyskúšal som niekoľko rôznych alternatív k tomuto, ale doteraz žiadny priblížiť súradnice, ktoré sa snažím získať.
odpovede:
0 pre odpoveď č. 1Dve veci sa pokazili, matlab nepoužíval eulerské uhly a Z musel byť obrátený.
clc;
clear;
%%
oldpoint = [0 0 0 1]";
newpoints = zeros(13,4);
i = 1;
while( i<= length(translations) )
trans = translations(i,:);
rota = rotations(i,:);
display(trans);
display(rota);
translation = ([1 0 0 -trans(1); 0 1 0 -trans(2); 0 0 1 trans(3); 0 0 0 1]);
rotation = [rotationVectorToMatrix([-rota(1) -rota(2) -rota(3)]) zeros(3,1); 0 0 0 1];
newpoint = translation * oldpoint;
newpoint = rotation * newpoint;
newpoints(i,:) = newpoint;
i = i + 1;
end