2012-06-11 12 views
6

मैं एक्स, वाई, जेड मीटर wrt कैमरा पर वर्चुअल ऑब्जेक्ट को बढ़ाना चाहता हूं। ओपनसीवी में कैमरा कैलिब्रेशन फ़ंक्शन हैं लेकिन मुझे समझ में नहीं आता कि मैं मीटरAugmented Reality के लिए कैमरा मैट्रिक्स कैसे खोजें?

में निर्देशांक कैसे दे सकता हूं, मैंने एकता में कैमरा अनुकरण करने की कोशिश की लेकिन अपेक्षित परिणाम प्राप्त नहीं किया।

मैंने प्रोजेक्शन मैट्रिक्स को निम्नानुसार सेट किया है और z = 2.415 + 0.5 पर यूनिट क्यूब बनाया है। जहां 2.415 आंख और प्रक्षेपण विमान (पिनहोल कैमरा मॉडल) के बीच की दूरी है क्योंकि घन का चेहरा फ्रंट क्लिपिंग विमान पर है और इसका आयाम इकाई को पूरे व्यूपोर्ट को कवर नहीं करना चाहिए?

Matrix4x4 m = new Matrix4x4(); 
    m[0, 0] = 1; 
    m[0, 1] = 0; 
    m[0, 2] = 0; 
    m[0, 3] = 0; 

    m[1, 0] = 0; 
    m[1, 1] = 1; 
    m[1, 2] = 0; 
    m[1, 3] = 0; 

m[2, 0] = 0; 
    m[2, 1] = 0; 
    m[2, 2] = -0.01f; 
    m[2, 3] = 0; 

    m[3, 0] = 0; 
    m[3, 1] = 0; 
    m[3, 2] = -2.415f; 
    m[3, 3] = 0; 
+0

यदि आप एम [3,2] = -1/2.415 एफ और एम [3,3] = 1 प्रक्षेपण मैट्रिक्स सही ढंग से काम करता है –

उत्तर

4

मैंने मैन्युअल रूप से दृश्य के क्षेत्र को मापने का अंत किया। एक बार जब आप एफओवी जानते हैं तो आप आसानी से प्रोजेक्शन मैट्रिक्स बना सकते हैं। इकाइयों के बारे में चिंता करने की आवश्यकता नहीं है क्योंकि अंत में प्रक्षेपण फॉर्म (एक्स * डी/जेड, वाई * डी/जेड) है। जो भी एक्स, वाई, जेड की इकाइयां एक्स/जेड का अनुपात हो सकती हैं।

5

अपने अंशांकन की वैश्विक स्तर (अर्थात 3 डी अंतरिक्ष निर्देशांक के मापक इकाई) अंशांकन ऑब्जेक्ट का उपयोग की ज्यामिति से निर्धारित होता है। उदाहरण के लिए, जब आप एक फ्लैट चेकरबोर्ड की छवियों का उपयोग करके ओपनसीवी में कैलिब्रेट करते हैं, तो अंशांकन प्रक्रिया में इनपुट 3 डी पॉइंट्स पी के संबंधित जोड़े (पी, पी) होते हैं और उनकी छवियां पी, (एक्स, वाई, जेड) 3 डी के निर्देशांक अंकों का उपयोग एमएम, सेमी, इंच, मील, जो भी हो, आपके द्वारा उपयोग किए जाने वाले लक्ष्य के आकार (और ऑप्टिक्स जो इसे चित्रित करता है) द्वारा व्यक्त किया जाता है, और छवियों के 2 डी निर्देशांक पिक्सल में होते हैं। अंशांकन दिनचर्या का आउटपुट पैरामीटर (प्रक्षेपण मैट्रिक्स पी के घटक और गैर-रैखिक विरूपण पैरामीटर के घटक) का सेट है जो उन मीट्रिक इकाइयों में पिक्सेल में व्यक्त 3 डी निर्देशांक "रूपांतरित" करता है।

यदि आप अंशांकन लक्ष्य के वास्तविक आयामों को नहीं जानते (या उपयोग नहीं करना चाहते हैं), तो आप उन्हें केवल झुका सकते हैं लेकिन अपने अनुपात को अपरिवर्तित छोड़ सकते हैं (ताकि, उदाहरण के लिए, एक वर्ग भी एक वर्ग बना रहता है हालांकि इसकी तरफ की वास्तविक लंबाई अज्ञात हो सकती है)। इस मामले में आपकी अंशांकन एक अज्ञात वैश्विक स्तर तक निर्धारित की जाएगी। यह वास्तव में आम मामला है: अधिकांश वर्चुअल रियलिटी अनुप्रयोगों में आप वास्तव में परवाह नहीं करते हैं कि वैश्विक स्तर क्या है, जब तक कि छवि छवि में सही दिखाई दे।

उदाहरण के लिए, यदि आप एंजेलीना जोली के वीडियो पर 3 डी होंठ की एक भी पफियर जोड़ी जोड़ना चाहते हैं, और उन्हें मूल वीडियो के साथ मिश्रित करना चाहते हैं ताकि ब्रांड नए नकली होंठ जुड़े रहें और उसके चेहरे पर "प्राकृतिक" देखें , आपको सिर्फ नकली होंठ के 3 डी मॉडल को पुन: सहेजने की आवश्यकता है ताकि यह होंठ की छवि को सही ढंग से ओवरलैप कर दे। चाहे मॉडल सीजी कैमरे से 1 यार्ड या एक मील दूर है जिसमें आप समग्र प्रस्तुत करते हैं, पूरी तरह से अप्रासंगिक है।

+1

मुझे उदाहरण पसंद है :) – Ani

+1

मैं उचित पैमाने के बिना मॉडल बढ़ाने में सक्षम हूं लेकिन मैं यह मीटर में सटीक होना चाहते हैं। मैं स्टीरियो प्रतिपादन कर रहा हूं और इसे सटीक गहराई की धारणा देना चाहिए। –

+0

स्टीरियो प्रतिपादन मामले में भी मेट्रिकल सटीकता अप्रासंगिक है: इस मामले में आप सभी की देखभाल दो कैमरों में बाएं-दाएं असमानता की सही मात्रा के साथ प्रस्तुत करना है। जब तक सभी आकार और दूरी अनुपात सही होते हैं, वास्तविक वैश्विक स्तर को नहीं माना जा सकता है। –

5

किसी ऑब्जेक्ट को बढ़ाने के लिए आपको कैमरा पॉज़ और अभिविन्यास खोजने की आवश्यकता है। यह कैमरा extrinsics खोजने के समान है। आपको पहले कैमरे के इंट्रिनिक्स (जिसे कैलिब्रेटन कहा जाता है) की गणना करना होगा।

ओपनसीवी आपको यह सब करने की अनुमति देता है, लेकिन यह मामूली नहीं है, इसके लिए आपको अपने काम की आवश्यकता है। मैं आपको एक सुराग देता हूं, आपको पहले उस दृश्य में कुछ पहचानने की आवश्यकता है जिसे आप जानते हैं कि यह कैसा दिखता है, ताकि आप इस ऑब्जेक्ट का विश्लेषण करके कैमरा पॉज़ की गणना कर सकें, इसे मार्कर कहें। आप टिपिकल फिडियसियल से शुरू कर सकते हैं, उन्हें पहचानना आसान है।

इस thread पर एक नज़र डालें।

संबंधित मुद्दे