opencv छवि प्रसंस्करण में कीपॉइंट्स क्या हैं?



image-processing sift (2)

वे कुछ बहुत अच्छे प्रश्न हैं। आइए प्रत्येक बिंदु को एक-एक करके निपटें:

मेरा सवाल यह है कि वास्तव में ये महत्वपूर्ण बिंदु क्या हैं?

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

स्रोत: मॉड्यूल 'ऑब्जेक्ट में कोई विशेषता नहीं है' drawMatches 'opencv पायथन

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

इसलिए, आपको इससे क्या लेना चाहिए यह है कि ये छवि में अंक हैं जो दिलचस्प हैं और उन्हें कोई फर्क नहीं पड़ता कि छवि विकृत कैसे होती है।

मैं समझता हूं कि वे किसी छवि के "रुचि के बिंदु" हैं। मुझे यह भी पता है कि वे पैमाने पर परिवर्तनीय हैं और मुझे पता है कि वे परिपत्र हैं।

तुम सही हो। स्केल इनवेरिएंट का मतलब है कि इससे कोई फर्क नहीं पड़ता कि आप छवि को कैसे स्केल करते हैं, आपको अभी भी उन बिंदुओं को ढूंढने में सक्षम होना चाहिए।

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

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

आप देखते हैं कि पीले रंग के किसी भी बिंदु ब्याज बिंदु हैं, लेकिन इनमें से कुछ बिंदुओं में एक अलग सर्कल त्रिज्या है। पैमाने के साथ ये सौदा। सामान्य ज्ञान में ब्याज बिंदु कैसे काम करते हैं यह है कि हम छवि को कई पैमाने पर विघटित करते हैं। हम प्रत्येक पैमाने पर ब्याज बिंदुओं की जांच करते हैं, और हम अंतिम आउटपुट बनाने के लिए इन सभी ब्याज बिंदुओं को एक साथ जोड़ते हैं। "सर्कल" जितना बड़ा होगा, उतना ही बड़ा पैमाने था कि बिंदु का पता चला था। इसके अलावा, एक रेखा है जो सर्कल के केंद्र से किनारे तक फैलती है। यह कुंजीपटल का अभिविन्यास है, जिसे हम अगले कवर करेंगे।

इसके अलावा मुझे पता चला कि उनके पास अभिविन्यास है लेकिन मुझे समझ में नहीं आया कि वास्तव में यह क्या है। यह एक कोण है लेकिन त्रिज्या और कुछ के बीच?

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

आम तौर पर जब हम कीपॉइंट्स का पता लगाना चाहते हैं, तो हम केवल स्थानों पर एक नज़र डालें। हालांकि, यदि आप छवियों के बीच कीपॉइंट्स से मेल खाना चाहते हैं, तो आपको इसकी सुविधा के लिए निश्चित रूप से स्केल और अभिविन्यास की आवश्यकता है।

उम्मीद है की यह मदद करेगा!

ओपनसीवी का उपयोग करते समय, उदाहरण के लिए, एसयूआरएफ जैसे एल्गोरिदम अक्सर मुख्य बिंदुओं का पता लगाने के लिए उपयोग किए जाते हैं। मेरा सवाल यह है कि वास्तव में ये महत्वपूर्ण बिंदु क्या हैं?

मैं समझता हूं कि वे किसी छवि में "रुचि के बिंदु" हैं। मुझे यह भी पता है कि वे पैमाने पर परिवर्तनीय हैं और परिपत्र हैं।

साथ ही, मुझे पता चला कि उनके पास अभिविन्यास है लेकिन मैं समझ नहीं पाया कि यह वास्तव में क्या है। यह एक कोण है लेकिन त्रिज्या और कुछ के बीच? क्या आप कुछ स्पष्टीकरण दे सकते हैं? मुझे लगता है कि मुझे पहले जो चाहिए वह चाहिए जो कुछ आसान है और उसके बाद कागजात को समझना आसान होगा।


मैं एसयूआरएफ से परिचित नहीं हूं, लेकिन मैं आपको एसआईएफटी के बारे में बता सकता हूं, जो एसयूआरएफ पर आधारित है। मैंने अंत में एसयूआरएफ के बारे में कुछ नोट्स दिए, लेकिन मुझे सभी विवरण नहीं पता।

SIFT लक्ष्य किसी छवि में अत्यधिक विशिष्ट स्थानों (या कीपॉइंट्स ) को ढूंढना है। स्थान छवि पर केवल 2 डी स्थान नहीं हैं, लेकिन छवि के स्केल स्पेस में स्थान हैं , जिसका अर्थ है कि उनके पास तीन निर्देशांक हैं: x , y , और scale । एसआईएफटी कीपॉइंट्स खोजने की प्रक्रिया है:

  1. स्केल स्पेस बनाने के लिए अलग धुंध चौड़ाई और नमूना दरों के साथ छवि को धुंधला और दोहराएं
  2. विभिन्न तराजू पर ब्लब्स का पता लगाने के लिए गॉसियन विधि के अंतर का उपयोग करें; ब्लॉब केंद्र किसी दिए गए एक्स , वाई , और स्केल पर हमारे कीपॉइंट्स बन जाते हैं
  3. प्रत्येक कुंजीपटल को अपने पड़ोस में प्रत्येक पिक्सेल के लिए ढाल उन्मुखता के हिस्टोग्राम की गणना करके अभिविन्यास बिन चुनना और उच्चतम संख्या के साथ अभिविन्यास बिन चुनना
  4. 16 स्थानीय पड़ोस में पिक्सेल के ढाल उन्मुखता के आधार पर प्रत्येक कीपॉइंट को 128-आयामी फीचर वेक्टर असाइन करें

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

SURF का लक्ष्य एसआईएफटी के समान लक्ष्यों को पूरा करना है, लेकिन गति बढ़ाने के लिए कुछ चालाक चाल का उपयोग करता है।

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

एसआईआरएफ सुविधाओं की तुलना एसआईएफटी सुविधाओं की तुलना में 3 गुना तेजी से की जा सकती है, फिर भी ज्यादातर स्थितियों में उतनी ही मजबूत है।

सन्दर्भ के लिए:

एक अच्छा एसआईएफटी ट्यूटोरियल

एसयूआरएफ के लिए एक परिचय





keypoint