2013-04-11 6 views
7

के माध्यम से आवश्यक मैट्रिक्स से अनुवाद निकालने का सही तरीका मैंने अपने कैमरे को कैलिब्रेट किया और आंतरिक पैरामीटर (के) पाया। इसके अलावा मैंने मौलिक मैट्रिक्स (एफ) की गणना की है।एसवीडी

अब ई = के_T * एफ * के। अब तक सब ठीक है।

essentialMatrix = K.Transpose().Mul(fund).Mul(K); 
CvInvoke.cvSVD(essentialMatrix, wMatrix, uMatrix, vMatrix, Emgu.CV.CvEnum.SVD_TYPE.CV_SVD_DEFAULT); 

** प्रश्न) इस बिंदु पर,:

अब हम अपघटन मानों का उपयोग करने के लिए आवश्यक SVD मैट्रिक्स (ई) पारित (यू, डब्ल्यू, वी) रोटेशन और अनुवाद निकालने के लिए दो तरीकों का प्रस्ताव किया गया है, और यह मेरे उलझन में है जो एक वास्तव में सही बाहर देने में जवाब- विशेष रूप से अनुवाद के लिए:

पहली विधि पर enter link description here लेखक निम्नलिखित के रूप में आर, टी गणना करने के लिए पता चलता है:

enter image description here

लेकिन दूसरी विधि [http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf] लेखक टी जो यू, यू + है जिन्हें आप नीचे के लिए एक और सूत्र प्रदान करता है में:

enter image description here

मैं OpenCV लाइब्रेरी का उपयोग करके सी # नेट पर इस को लागू कर रहा हूँ। कोई भी जानता है कि कौन सा अनुवाद फ़ॉर्मूला सही है?

+1

दूसरी विधि के लिए लिंक मर चुका है। दस्तावेज़ इस पर ले जाया गया: http://igt.ip.uca.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf –

उत्तर

4

पहला समाधान वेक्टर टी (इसलिए पहला समाधान = [टी] एक्स) के साथ क्रॉस उत्पाद का मैट्रिक्स प्रतिनिधित्व दिखाता है, जबकि दूसरा समाधान केवल अनुवाद वेक्टर टी (https://en.wikipedia.org/wiki/Essential_matrix) दिखाता है।

की [टी] एक्स परिभाषा है:

enter image description here

(http://gandalf-library.sourceforge.net/tutorial/report/img148.png से)

+0

पहले समाधान में, टी 1, टी 2 nonZero 3X3 matrices हैं लेकिन वास्तव में एक अनुवाद टी के रूप में , मुझे 3 एक्स 1 मैट्रिक्स चाहिए। जानकारी खोने के बिना मैं एक गैर-शून्य 3X3 मैट्रिक्स से 3X1 कैसे निकालना चाहिए? –

+0

यदि आप एसवीडी के साथ अनुवाद निकालते हैं, तो अनुवाद वेक्टर 'एसवीडी (ई) .u.col (2) 'है, क्योंकि यह आपकी पोस्ट की दूसरी विधि में वर्णित है। आप अपने 3x3 अनुवाद मैट्रिक्स को कैसे निकालते हैं? आप http://stackoverflow.com/questions/16639106/camera-motion-from-corresponding-images को और जानकारी के लिए देख सकते हैं – 3x14159265

+0

मैंने उपरोक्त वर्णित पहली विधि का उपयोग टी 1, टी 2 निकालने के लिए किया है जो या तो 3X3 है। क्या मुझसे कुछ गलत हो रही है? प्रदान किए गए लिंक में, फिर से टी 1, टी 2 से टी के बीच रूपांतरण/संबंध का उल्लेख किए बिना टी 1, टी 2 से टी की गणना से कूद गया क्योंकि मैं इसे नीचे पुन: स्थापित करता हूं: t1 = decomp.u.col (2); // u3 t2 = -decomp.u.col (2); // u3 new_pos = old_pos + -R.t() * टी; –

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