छवि प्रसंस्करण में मुख्य बिंदु क्या हैं?


80

उदाहरण के लिए OpenCV का उपयोग करते समय, SIFT या SURF जैसे एल्गोरिदम का उपयोग अक्सर की-पॉइंट का पता लगाने के लिए किया जाता है। मेरा सवाल यह है कि वास्तव में ये की-पॉइंट क्या हैं?

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

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


1
की-पॉइंट बस पॉइंट्स (x, y), imo होना चाहिए। क्या एक बिंदु का वर्णन करता है और मूल रूप से इसके आसपास के क्षेत्र को एक वर्णनकर्ता कहा जाना चाहिए। कुछ कीपॉइंट्स उन शब्दों को मिलाते हैं और वे एक संलग्न विवरण वेक्टर के साथ बिंदु बन जाते हैं, जैसे @rayryeng ने समझाया।
लोवाबिल

@William - यह एक अच्छा बिंदु है जिसे बहुत से लोग भ्रमित करते हैं। मैं उसे अपनी पोस्ट में जोड़ दूंगा। धन्यवाद!
किरणेंग

जवाबों:


127

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

मेरा सवाल यह है कि वास्तव में ये की-पॉइंट क्या हैं?

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

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

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

इसलिए, इससे आपको जो लेना चाहिए वह यह है कि ये उस छवि के बिंदु हैं जो दिलचस्प हैं और यह पाया जाना चाहिए कि कोई भी बात नहीं है कि छवि कैसे विकृत है।

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

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


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

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

VLFeat उदाहरण

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

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

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

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


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


23

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


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

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

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


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

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

SURF फीचर्स की तुलना में SURF फीचर्स की गणना 3 गुना तेजी से की जा सकती है, फिर भी ज्यादातर स्थितियों में उतनी ही मजबूत हैं।


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

एक अच्छा SIFT ट्यूटोरियल

SURF से परिचय


1
बहुत अच्छा। tl;drSURF और SIFT के बीच के अंतर को पूरी तरह से प्यार करते हैं ।
रेयिरेंग

@rayryeng धन्यवाद, हालांकि यह केवल इसलिए है क्योंकि मैं वास्तव में कुछ भी कहने के लिए पर्याप्त नहीं जानता हूं। ;) मैंने वास्तव में पहले SURF का उपयोग नहीं किया है।
आइजेनक्रिस

1
मुझे कभी पता नहीं चलता! BTW, SIFT ट्यूटोरियल एक क्लासिक है। यह पहली चीज है जिसे मैंने लोव के पेपर से पहले पढ़ा था।
रेय्यरेंग

3
@rayryeng यहाँ ट्यूटोरियल के लेखक - आपको यह पसंद आया सुनकर खुशी हुई!
उत्कर्ष सिन्हा

@UtkarshSinha मुझे आपके काम और AI शेक से प्यार है। लिखते रहो!
रायरेंग जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.