J'ai actuellement un modèle d'alignement de caméra défini dans l'appareil photo en tant que coordonnées d'origine:
http://i.imgur.com/UnSCAvG.png
et, comme la caméra était immobile, j'essaie de convertir le système en modèle à modèle fixe
http://i.imgur.com/OKunxwA.png
Matlab a la gentillesse de me le montrer mais hélasLà, je n'ai trouvé aucun moyen d'extraire les données à moins que ce ne soit sur un modèle à caméra fixe. Il devrait être simple d’appliquer l’inverse de la translation et de la rotation pour changer de système, mais malheureusement cela ne fonctionne pas et je ne vois pas pourquoi.
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;
J’ai essayé différentes solutions, mais jusqu’à présent, aucune n’est approximative pour les coordonnées que j’essaie d’obtenir.
Réponses:
0 pour la réponse № 1Deux choses n'allaient pas, matlab n'utilisait pas les angles euler et Z devait être inversé.
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