/ / कैमरा-केंद्रित निर्देशांक से पैटर्न-केंद्रित निर्देशांक पर जाना - मैटलैब, कंप्यूटर-विज़न, कैमरा-कैलिब्रेशन

कैमरे-केंद्रित निर्देशांक से पैटर्न-केंद्रित निर्देशांक तक जा रहे हैं - मैटलैब, कंप्यूटर-दृष्टि, कैमरा-अंशांकन

वर्तमान में मेरे पास एक कैमरा संरेखण मॉडल है जो मूल निर्देशांक के रूप में कैमरे में सेट है:

http://i.imgur.com/UnSCAvG.png

और, चूंकि कैमरा स्थिर था, मैं सिस्टम को एक पैटर्न-फिक्स्ड मॉडल में बदलने की कोशिश कर रहा था

http://i.imgur.com/OKunxwA.png

मतलाब मुझे यह दिखाने के लिए काफी अच्छा है लेकिन अफसोसजब तक कि यह एक निश्चित-कैमरा मॉडल पर नहीं है मुझे डेटा निकालने का कोई तरीका नहीं मिला। यह अनुवाद के व्युत्क्रम को लागू करने और सिस्टम के बीच बदलने के लिए रोटेशन का एक साधारण मामला होना चाहिए लेकिन दुर्भाग्य से यह काम नहीं कर रहा है और मैं देख सकता हूं "क्यों।

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;

मैंने इसे करने के लिए कई अलग-अलग विकल्पों की कोशिश की, लेकिन इस प्रकार से कोई भी निर्देशांक जो मुझे मिलने की कोशिश नहीं कर रहा है।

उत्तर:

जवाब के लिए 0 № 1

दो चीजें गलत हो रही थीं, मतलूब यूलर एंगल्स का इस्तेमाल नहीं कर रहा था और जेड को उल्टा होने की जरूरत थी।

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