ओपनसीवी प्रति आरएनएएनएसी-फ़ंक्शन प्रति से कम या कम से कम इस रूप में प्रदान नहीं करता है कि आप इसे केवल कॉल कर सकते हैं और इसके साथ किया जा सकता है (उदाहरण के लिए cv::ransac(...)
)। RANSAC का उपयोग करने में सक्षम सभी फ़ंक्शंस/विधियों में एक ध्वज है जो इसे सक्षम बनाता है। हालांकि, यदि आप वास्तव में होमोग्राफी/मौलिक मैट्रिक्स का अनुमान लगाने के बाद इनलाइनर्स RANSAC गणनाओं के साथ कुछ और करना चाहते हैं तो उदाहरण के लिए यह हमेशा उपयोगी नहीं होता है उदाहरण के लिए ऑक्टेव या इसी तरह के सॉफ़्टवेयर/पॉइंट्स की लाइब्रेरी में एक अच्छी साजिश बनाएं, अतिरिक्त एल्गोरिदम लागू करें फ़िल्टर किए गए मैचों आदि के शेष सेटओपनसीवी: FindHomography()/findFundamental() और RANSAC
दो छवियों से मेल खाने के बाद किसी को मैचों का वेक्टर मिलता है। इसके साथ-साथ हमारे पास मुख्य बिंदुओं के प्रत्येक सेट (प्रत्येक छवि के लिए एक) है जो मिलान प्रक्रिया में उपयोग किया गया था। मैचों और कीपॉइंट्स का उपयोग करके हम अंक के दो वैक्टर बनाते हैं (उदा। cv::Point2f points
) और इन्हें findHomography()
पर पास करें। this और this पदों से मैंने पाया कि मास्क का उपयोग करके इनलाइनों को वास्तव में कैसे चिह्नित किया जाता है, कि हम उस कार्य को पास करते हैं। मास्क के अंदर प्रत्येक पंक्ति एक आंतरिक/बाहरी से संबंधित है। हालांकि मैं अपने दो सेट अंकों से पंक्ति-अनुक्रमणिका जानकारी का उपयोग करने का तरीका समझने में असमर्थ हूं। ओपनसीवी के स्रोत कोड को देखते हुए मुझे बहुत दूर नहीं मिला। findFundamental()
(findHomography()
के समान जब यह उसके हस्ताक्षर और मास्क-पार्ट की बात आती है) तो वे compressPoints()
का उपयोग करते हैं, जो किसी भी तरह से इनपुट (स्रोत और गंतव्य बिंदु) के रूप में हमारे दो सेट को जोड़ती है। मास्क की प्रकृति को निर्धारित करने के लिए परीक्षण करते समय मैंने मिलान किए गए बिंदुओं के 2 सेट (cv::Keypoints
से cv::Point2f
- एक मानक प्रक्रिया) की कोशिश की। प्रत्येक सेट में 300 अंक होते हैं, कुल मिलाकर हमारे पास 600 अंक होते हैं। लौटा मुखौटा में 300 पंक्तियां होती हैं (इस विषय के लिए मान महत्वपूर्ण नहीं हैं)।
संपादित करें: इसे लिखते समय मैंने जवाब (नीचे देखें) की खोज की लेकिन किसी भी व्यक्ति को इस जानकारी को जल्द से जल्द और कॉम्पैक्ट फॉर्म में इस मामले को पोस्ट करने का फैसला किया। ध्यान दें कि हमें अभी भी ओपनसीवी के एक समारोह की आवश्यकता है, जो RANSAC का समर्थन करता है। तो यदि आपके पास अंक का एक सेट है लेकिन होमोग्राफी या मौलिक मैट्रिक्स की गणना करने का कोई इरादा नहीं है, तो यह स्पष्ट रूप से रास्ता नहीं है और मैं कहता हूं कि मैं ओपनसीवी के एपीआई में कुछ भी उपयोगी नहीं ढूंढ पाया जो इस बाधा से बचने में मदद कर सकता है इसलिए आपको उपयोग करने की ज़रूरत है एक बाहरी पुस्तकालय।
पहला वाक्य के लिए, वास्तव में नकाब में पंक्ति एक प्रतिनिधित्व नहीं करता है inlier। पंक्ति आंतरिक या बाहरी की स्थिति का प्रतिनिधित्व करती है। आगे की व्याख्या के लिए इस पोस्ट का संदर्भ लें [लिंक] (http://stackoverflow.com/questions/15815304/opencv-c-findhomography-mask-values-meaning)। –
हां, यह सही है और यही मेरा मतलब था लेकिन अब जब मैं इस वाक्य को दोबारा पढ़ता हूं तो मुझे लगता है कि इसका गलत अर्थ कैसे किया जा सकता है। मै इसे बदलूंगा। – rbaleksandar
लेकिन पंक्ति आंतरिक या बाहरी लोगों की स्थिति का प्रतिनिधित्व करती है लेकिन प्रत्येक आंतरिक या आउटलायर स्थिति पर कोई महत्वपूर्ण बिंदु नहीं है। वेक्टर में कीपॉइंट्स संग्रहीत हैं। तो हम मास्क में अंतर्निहित के मुख्य कुंजी बिंदु कैसे प्राप्त कर सकते हैं? – Abc