मैं अपने वेबकैम का उपयोग करके ज्ञात वैश्विक स्थितियों के साथ चार फिडियसियल की एक छवि से वैश्विक अनुमान अनुमान प्राप्त करने की कोशिश कर रहा हूं।कैमरा पॉज़ अनुमान (ओपनसीवी पीएनपी)
मैंने कई स्टैकएक्सचेंज प्रश्न और कुछ कागजात देखे हैं और मुझे सही समाधान नहीं मिल रहा है। मैं जो पद संख्या प्राप्त करता हूं वह दोहराया जा सकता है लेकिन कैमरे के आंदोलन के लिए रैखिक रूप से आनुपातिक नहीं है। एफवाईआई मैं सी ++ ओपनसीवी 2.1 का उपयोग कर रहा हूं।
At this link is pictured मेरे समन्वय सिस्टम और नीचे उपयोग किए गए परीक्षण डेटा।
% Input to solvePnP():
imagePoints = [ 481, 831; % [x, y] format
520, 504;
1114, 828;
1106, 507]
objectPoints = [0.11, 1.15, 0; % [x, y, z] format
0.11, 1.37, 0;
0.40, 1.15, 0;
0.40, 1.37, 0]
% camera intrinsics for Logitech C910
cameraMat = [1913.71011, 0.00000, 1311.03556;
0.00000, 1909.60756, 953.81594;
0.00000, 0.00000, 1.00000]
distCoeffs = [0, 0, 0, 0, 0]
% output of solvePnP():
tVec = [-0.3515;
0.8928;
0.1997]
rVec = [2.5279;
-0.09793;
0.2050]
% using Rodrigues to convert back to rotation matrix:
rMat = [0.9853, -0.1159, 0.1248;
-0.0242, -0.8206, -0.5708;
0.1686, 0.5594, -0.8114]
अब तक, किसी को भी कुछ भी इन नंबरों के साथ कुछ गलत देख सकते हैं? मैं इसकी सराहना करता हूं अगर कोई उन्हें उदाहरण के लिए MatLAB (ऊपर कोड एम-फाइल अनुकूल है) में जांच करेगा।
इस बिंदु से, मुझे यकीन है कि आरएमएटी और टीवीईसी से वैश्विक मुद्रा कैसे प्राप्त करें। मैं क्या this question में पढ़ा है, rMat और tVec से मुद्रा प्राप्त करने के लिए से बस है:
position = transpose(rMat) * tVec % matrix multiplication
हालांकि मैं अन्य स्रोतों मैं इसे इतना आसान नहीं है पढ़ा है कि से संदेह है।
असली दुनिया निर्देशांक में कैमरे की स्थिति प्राप्त करने के लिए, मुझे क्या करने की ज़रूरत है? जैसा कि मुझे अनिश्चितता है कि यह एक कार्यान्वयन समस्या है (हालांकि संभवतः एक सिद्धांत समस्या है) मैं किसी ऐसे व्यक्ति के लिए चाहूंगा जिसने इस प्रश्न का उत्तर देने के लिए ओपनसीवी में सफलतापूर्वक पीएनपी फ़ंक्शन का उपयोग किया हो, हालांकि किसी भी विचार का स्वागत है!
आपके समय के लिए बहुत बहुत धन्यवाद।
आप tVec उलटा भूल गया। तो ऐसा करने का सही तरीका है -ट्रांस (आरएमएटी) * टीवीईसी – Vlad