/ / Prechod z súradnicových súradníc na súradnicové súradnice - matlab, počítačové videnie, kalibrácia kamery

Prechádzajú z súradnicových súradníc na súradnicové súradnice - matlab, počítačové videnie, kalibrácia kamery

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ď č. 1

Dve 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