54

मैं ओपनसीवी के लिए नया हूं और दो छवियों के बीच छवि मिलान को कार्यान्वित करने की कोशिश कर रहा हूं। इस उद्देश्य के लिए, मैं फीचर डिस्क्रिप्टर, डिस्क्रिप्टर एक्स्ट्रेक्टर्स और डिस्क्रिप्टर मैचर्स के बीच अंतर को समझने की कोशिश कर रहा हूं। मैं कई शर्तों में आया और ओपनसीवी दस्तावेज वेबसाइट पर उनके बारे में पढ़ने की कोशिश की लेकिन मैं बस अवधारणाओं के चारों ओर अपने सिर को लपेट नहीं सकता। मैं यहाँ बुनियादी अंतर समझ गया।डिटेक्टरों, निकालने वाले और मैचर्स का वर्गीकरण

फास्ट, GFTT, झारना, सर्फ, MSER, स्टार, ओर्ब, तेज, सनकी, संक्षिप्त

मैं: Difference between Feature Detection and Descriptor Extraction

लेकिन मैं विषय पर पढ़ाई के दौरान निम्नलिखित नियम में आए समझें कि फास्ट, एसआईएफटी, एसयूआरएफ कैसे काम करता है लेकिन यह पता लगाने में प्रतीत नहीं होता कि उपरोक्त में से कौन से डिटेक्टर हैं और जो एक्स्ट्रेक्टर हैं।

फिर मैचर्स हैं।

FlannBased, BruteForce, knnMatch और शायद कुछ अन्य।

कुछ पढ़ने के बाद, मुझे लगा कि कुछ मैट्रर्स का उपयोग केवल कुछ एक्स्ट्रेक्टर्स के साथ ही किया जा सकता है जैसा कि यहां बताया गया है। How Does OpenCV ORB Feature Detector Work? दिया गया वर्गीकरण काफी स्पष्ट है लेकिन यह केवल कुछ निकालने वालों के लिए है और मुझे फ्लोट और उचर के बीच का अंतर नहीं समझता है।

तो बुनियादी तौर पर, किसी कृपया

  1. के रूप में उल्लेख डिटेक्टरों, extractors और matchers नाव और uchar के आधार पर के प्रकार, या वर्गीकरण के कुछ अन्य प्रकार वर्गीकृत कर सकते हैं?
  2. फ्लोट और उचर वर्गीकरण या जो भी वर्गीकरण का उपयोग किया जा रहा है, के बीच के अंतर को समझाता है?
  3. उल्लेख करते हैं कि विभिन्न प्रकार के डिटेक्टरों, निकालने वाले और मैचर्स (कोड) को कैसे शुरू किया जाए?

मुझे पता है कि यह बहुत मांग रहा है लेकिन मैं बहुत आभारी रहूंगा। धन्यवाद।

+0

यह बहुत कुछ नहीं पूछ रहा है या नहीं, यहां मुद्दा यह है कि आप एपीआई के माध्यम से इस विशिष्ट विषय के बारे में जानने की कोशिश कर रहे हैं। इसके बजाय आपको क्या करना चाहिए, उन तरीकों का वर्णन करना जो विधियों का वर्णन करते हैं क्योंकि लाइब्रेरी कागजात के साथ जो चाहती है वह करने के लिए स्वतंत्र है और परिणामस्वरूप फ़ंक्शन कॉल विधि के सभी चीजों को पुन: उत्पन्न नहीं कर सकता है। आप किसी भी कारण से ओपनसीवी पर खुद को सीमित कर रहे हैं। उस सीमा को हटाने के बाद एक विशिष्ट संदेह चुनें। – mmgp

+0

मैं वास्तव में आपके द्वारा वर्णित दृष्टिकोण का पालन करना चाहता था लेकिन कुछ स्थितियों के कारण, मुझे गंभीर समय की बाधाओं के साथ छवि सिलाई पर काम करने के लिए मजबूर किया गया है। यही कारण है कि मैं कुछ अवधारणाओं को समझने में मदद लेने की कोशिश कर रहा हूं जो अब मेरे समझ से परे हैं। मैं अभी भी सक्रिय रूप से कई कागजात और एल्गोरिदम पढ़ रहा हूं लेकिन ऐसी सहायता निश्चित रूप से प्रक्रिया को तेज करेगी। – hriddle

उत्तर

74

मैं समझता हूँ कि कितनी तेजी से, झारना, सर्फ काम लेकिन जो ऊपर की लोगों केवल डिटेक्टरों हैं और जो एक्सट्रैक्टर्स हैं यह पता लगाने नहीं कर पा रहे। , उनमें से कुछ ही कर रहे हैं (डिटेक्टरों की सुविधा:

असल में, सुविधा डिटेक्टरों की उस सूची से/एक्सट्रैक्टर्स (FAST, GFTT, SIFT, SURF, MSER, STAR, ORB, BRISK, FREAK, BRIEF लेख के लिए लिंक) फास्ट, जीएफटीटी) अन्य फीचर डिटेक्टर और डिस्क्रिप्टर एक्स्ट्रेक्टर्स दोनों हैं (सिफ्ट, एसयूआरएफ, ओआरबी, फ्लेचर)।

अगर मुझे सही याद है, BRIEF केवल एक वर्णक निकालने वाला है, इसलिए इसे किसी अन्य एल्गोरिदम द्वारा फास्ट या ओआरबी जैसे लक्षणों की आवश्यकता होती है।

यकीन है कि जो है तो आप या तो एल्गोरिथ्म से संबंधित लेख ब्राउज़ करें या opencv प्रलेखन ब्राउज़ देखने के लिए जो FeatureDetector वर्ग के लिए लागू किया गया था या जो DescriptorExtractor वर्ग के लिए था करने के लिए है, जो होने के लिए।

Q1: के रूप में उल्लेख नाव और uchar के आधार पर डिटेक्टरों, extractors और matchers के प्रकार, या वर्गीकरण के कुछ अन्य प्रकार को वर्गीकृत?

प्रश्न 2: फ्लोट और उचर वर्गीकरण या जो भी वर्गीकरण का उपयोग किया जा रहा है, के बीच अंतर की व्याख्या करें?

सवालों के 1 और 2 के बारे में, उन्हें नाव और uchar के रूप में वर्गीकृत करने के लिए, link you already posted सबसे अच्छा संदर्भ मुझे पता है, हो सकता है किसी को पूरा करने के लिए सक्षम हो जाएगा।

प्रश्न 3: विभिन्न प्रकार के डिटेक्टरों को शुरू करने के लिए (कोड) कैसे शुरू करें, निकालने वाले और मैचर्स? मुख्य रूप से आप एक विशेषता डिटेक्टर चुनना है -

उत्तर देना प्रश्न 3, OpenCV विभिन्न प्रकार के काफी एक ही उपयोग करने के लिए कोड बनाया है। अधिकांश अंतर matcher के प्रकार को चुनने में है और आपने पहले ही ओपनसीवी के 3 लोगों का उल्लेख किया है। यहां आपकी सबसे अच्छी शर्त दस्तावेज, code samples, और संबंधित स्टैक ओवरफ़्लो प्रश्नों को पढ़ने के लिए है। साथ ही, कुछ ब्लॉग पोस्ट जानकारी का एक उत्कृष्ट स्रोत हैं, जैसे कि series of feature detector benchmarks by Ievgen Khvedchenia (ब्लॉग अब उपलब्ध नहीं है इसलिए मुझे अपने Google कैश से कच्ची टेक्स्ट कॉपी बनाना पड़ा)।

Matchers का उपयोग यह पता लगाने के लिए किया जाता है कि कोई वर्णनकर्ता किसी सूची से किसी अन्य वर्णनकर्ता के समान है या नहीं। आप सूची (bruteforce) से अन्य सभी वर्णनकर्ता के साथ आपकी क्वेरी वर्णनकर्ता तुलना सकते हैं या आप एक बेहतर अनुमानी (FlannBased, knnMatch) का उपयोग करें। समस्या यह है कि हेरिस्टिक्स सभी प्रकार के वर्णनकर्ताओं के लिए काम नहीं करता है। उदाहरण के लिए, uchar के साथ ही साथ float वर्णनकर्ता नहीं बल्कि काम करता था कार्यान्वयन FlannBased (लेकिन 2.4.0 के बाद से, LSH सूचकांक के साथ FlannBased वर्णनकर्ता uchar लिए लागू किया जा सकता है)।

this App-Solut blog postDescriptorMatcher प्रकार के बारे में हवाला देते हुए:

DescriptorMatcher किस्मों "FlannBased", "BruteForceMatcher", "bruteforce-एल 1" और "bruteforce-HammingLUT" में आता है। "FlannBased" मिलान हुड के नीचे फ्लान (अनुमानित निकटतम पड़ोसियों के लिए तेजी से पुस्तकालय) लाइब्रेरी का उपयोग करता तेजी से लेकिन अनुमानित मिलान करने के लिए। "BruteForce- *" संस्करणों विस्तृत रूप से शब्दकोश यह खोज शब्दकोश में एक शब्द के लिए एक छवि सुविधा के लिए निकटतम मिलान ढूंढने का।

अधिक लोकप्रिय संयोजन से कुछ हैं:

फ़ीचर डिटेक्टरों/Decriptor एक्सट्रैक्टर्स/matchers प्रकार

  • (फास्ट, सर्फ)/सर्फ/FlannBased

  • (फास्ट, एसआईएफटी)/एसआईएफटी/फ्लैनबेस

  • (फास्ट, ओर्ब)/ओर्ब/bruteforce

  • (फास्ट, ओर्ब)/संक्षिप्त/bruteforce

  • (फास्ट, सर्फ)/सनकी/bruteforce

आप हो सकता है यह भी देखा गया है कि फीचर डिटेक्टरों में कुछ एडेप्टर (गतिशील, पिरामिड, ग्रिड) हैं। The App-Solut blog post वास्तव में अच्छी तरह से उनके उपयोग सार रखते हैं:

(...) और वहाँ भी एक प्रमुख मुद्दा डिटेक्टरों का व्यवहार बदलने के लिए उपयोग कर सकते हैं एडाप्टर के एक जोड़े हैं। उदाहरण के लिए Dynamic एडाप्टर जो एक डिटेक्टर प्रकार विशिष्ट पहचान सीमा पर्याप्त कुंजी अंक तक समायोजित कर देता है या एक छवि में पाए जाते हैं Pyramid एडाप्टर जो कई पैमानों पर अंक पता लगाने के लिए एक गाऊसी पिरामिड निर्माण करती है। Pyramid एडाप्टर फीचर डिस्क्रिप्टर के लिए उपयोगी है जो स्केल इनवेरिएंट नहीं हैं।

अतिरिक्त पठन:

  • This blog post by Yu Lu झारना, फास्ट, सर्फ, संक्षिप्त, ओर्ब, तेज और सनकी पर एक बहुत अच्छा सारांश विवरण है।

  • ये series of posts by Gil Levi इनमें से कई एल्गोरिदम (BRIEF, ORB, BRISK और FREAK) के लिए विस्तृत सारांश भी करते हैं।

+4

+1 - अच्छा। यह बहुत अच्छा होगा अगर आप इन चीजों के लिए कुछ अच्छी तरह से समझने योग्य संदर्भ और सीखने की सामग्री जोड़ सकते हैं। –

+1

धन्यवाद। मुझे लगता है कि यह वही था जो मैं चाहता था।प्रश्न पूछने के बाद से मैंने कुछ पढ़ा है और इस जवाब ने मुझे समझ में कुछ अंतराल भरने में मदद की है। धन्यवाद। – hriddle

+2

FREAK सुविधा डिटेक्टर नहीं है, यह आपके पहले पैराग्राफ –

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