2012-06-10 18 views
16

मैं अंक की सूची पर findHomography का उपयोग कर रहा हूं और परिणाम warpPerspective पर भेज रहा हूं।ओपनसीवी में होमोोग्राफी खोजने से कचरा homographies का पता लगाने?

समस्या यह है कि कभी-कभी परिणाम पूर्ण कचरा होता है और परिणामस्वरूप छवि अजीब ग्रे आयताकारों द्वारा दर्शायी जाती है।

मुझे पता कैसे लगा सकता है कि findHomography मुझे खराब परिणाम भेजता है?

उत्तर

28

आउटपुट पर आप कई सैनिटी परीक्षण कर सकते हैं। मेरे सिर के शीर्ष पर:

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

एक सामान्य गलती जो कचरा के परिणाम की ओर ले जाती है इनपुट और आउटपुट पॉइंट की सूचियों का गलत क्रम है, जो गलत पत्राचार का उपयोग करके काम करने के लिए फिटिंग दिनचर्या का नेतृत्व करती है। जांचें कि आपके सूचकांक सही हैं।

+0

एसवीडी के लिए +1 ..... – Throwback1986

+2

कोई भी 2 समझा सकता है।स्थिति आगे? मैं एसवीडी की गणना कैसे कर सकता हूं और सत्यापित कर सकता हूं कि पहले-से-आखिरी एकवचन मूल्य का अनुपात ओपनसीवी के साथ है? – Tony

+2

http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html#SVD पास NO_UV, क्योंकि आप केवल एकवचन मूल्यों में रूचि रखते हैं। फिर अंतिम एकवचन मूल्य के पहले के अनुपात (स्थिति संख्या) की गणना करें। स्थिति संख्या की व्याख्या के लिए भी देखें: http://books.google.com/books?id=1aAOdzK3FegC&pg=PA69&lpg=PA69&dq=numerical+recipes+condition+number&source=bl&ots=3iSoC8Hoqi&sig=Aq1Yc2MHTpXPI4t8wIhU7h388jg&hl=hi&em=X&ei=hUmKUaqeMemx0QXr -आईसीएएजी और वीडी = 0CDMQ6AEwAA # वी = वनपृष्ठ और क्यू = संख्यात्मक% 20recipes% 20condition% 20number और f = false –

0

लेकिन इस बिंदु पत्राचार आप homography गणना करने के लिए उपयोग करने पर निर्भर करता है ... बस लगता है कि आप एक परिवर्तन है कि (एक विमान से दूसरे) लाइनों के लिए लाइनों के नक्शे को खोजने के लिए है, इसलिए नहीं किसी भी संभव विन्यास कोशिश कर रहे हैं बिंदु-पत्राचार की आपको एक होमोग्राफी देगा जो अच्छी छवियां बनाती है। यह भी संभव है कि होमोग्राफी अनंत के लिए कुछ बिंदुओं को मानचित्र करे।

+0

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

3

अपमानजनक होमोग्राफी मामलों को समझना महत्वपूर्ण है। उदाहरण के लिए, यदि आपके अंक कॉललाइनर या कॉललाइनर के नजदीक हैं, तो आपको अच्छी होमोग्राफी नहीं मिल सकती है। इसके अलावा, विशाल ग्रे वर्ग चरम स्केलिंग का संकेत दे सकते हैं। दोनों मामले इस तथ्य से उत्पन्न हो सकते हैं कि आपकी अंतिम होमोग्राफी गणना में बहुत कम इनलाइर्स हैं या मैपिंग गलत है।

यह सुनिश्चित करने के लिए कि यह कभी नहीं होता:
1. सुनिश्चित करें कि दोनों छवियों में अंक अच्छी तरह से फैले हुए हैं।
2. सुनिश्चित करें कि कम से कम 10-30 पत्राचार हैं (4 शोर छोटा होने पर पर्याप्त है)।
3. सुनिश्चित करें कि अंक सही ढंग से मेल खाते हैं और परिवर्तन एक होमोग्राफी है।

खराब homographies को खोजने के लिए अपने मूल बिंदुओं पर एच पाया जाता है और |x2-H*x1| < Tdist पर आपके अपेक्षित बिंदुओं से अलगाव देखते हैं, जहां Tdist दूरी त्रुटि के लिए आपकी दहलीज है। यदि केवल कुछ बिंदु हैं जो इस सीमा को पूरा करते हैं तो आपकी होमोग्राफी खराब हो सकती है और आपने शायद उपर्युक्त आवश्यकताओं में से एक का उल्लंघन किया है।

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