बाइनरी मजबूत स्वतंत्र प्राथमिक विशेषताएं ("BRIEF") समझ


14

BRIEF एल्गोरिथ्म में वर्णनकर्ता एक दूसरे से कैसे मेल खाते हैं?

दूसरी छवि में टेम्पलेट छवि कैसे पाई जाती है? हम वर्णनकर्ताओं की तुलना कैसे करते हैं? मैंने वह लेख पढ़ा है, लेकिन यह नहीं समझा कि उन्होंने यह कैसे किया है।

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

जवाबों:


15

सबसे पहले, इस पेपर में 'टेम्प्लेट' जैसी कोई चीज़ नहीं है - कंप्यूटर विज़न में 'टेम्प्लेट' शब्द का एक अलग अर्थ है।

इस पत्र में इस्तेमाल की जाने वाली विधि अपेक्षाकृत सीधे-आगे है। रुकिए, मैं इसे आपके लिए तोड़ता हूं। तीन महत्वपूर्ण काम हैं जो आपको करने की आवश्यकता है, जैसे कि ऑब्जेक्ट रिकॉग्निशन, इमेज मैचिंग, इमेज स्टिचिंग, और इसी तरह के अन्य कार्य, अन्य सुविधाओं का उपयोग करते हुए

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

पता लगाने के बाद, फ़ीचर विवरणइस प्रकार है। आप छवि में दिलचस्प बिंदुओं को जानते हैं और अब आप उनका वर्णन करना चाहते हैं (मूल रूप से आप दिलचस्प बिंदुओं के आसपास के बिंदुओं / पैच का वर्णन करना चाहते हैं)। SIFT एक लोकप्रिय फीचर डिस्क्रिप्टर है। इस पत्र में, वे एक नए के साथ आते हैं, जिसे BRIEF कहा जाता है। BRIEF तुलनाओं पर आधारित है, इसलिए मान लें कि हमारे पास एक पैच (50 पिक्सेल 50 पिक्सल) है, हम दो बिंदु चुनते हैं और दो बिंदुओं की तीव्रता की तुलना करते हैं, यदि पहला बिंदु दूसरे बिंदु से बड़ा है, तो हम मान प्रदान करते हैं ' 1 ', और' 0 ', हम कई जोड़ियों के लिए करते हैं और हम बूलियन मूल्यों की एक स्ट्रिंग के साथ समाप्त होते हैं। अब बड़ा सवाल यह है कि 'आप अंकों की जोड़ी को कैसे चुनते हैं?', कागज में उन्होंने 5 तरीके बताए, जो अपेक्षाकृत समान थे, मैं पहले एक का वर्णन करूंगा। आप जो कर रहे हैं, आप समान रूप से (समान संभावना) एक बिंदु चुनें -S / 2 से S / 2, हमारे उदाहरण में हमने कहा कि पैच का आकार 50 है, इसलिए हम -25 से 25 के बीच एक बिंदु चुनते हैं। मान लें कि 0,0 समन्वय पैच के केंद्र में स्थित है। तो यहाँ एक उदाहरण है;

हम पहली जोड़ी का चयन करना चाहते हैं, प्रत्येक बिंदु में (X, Y) निर्देशांक होते हैं, इसलिए हम समान रूप से पहले बिंदु के X-निर्देशांक का चयन करते हैं, फिर पहले बिंदु का Y- समन्वय करते हैं, मान लेते हैं कि यह (10, -1) है , अब दूसरा बिंदु; हम समान रूप से दूसरे बिंदु के लिए X- समन्वय का चयन करते हैं, और दूसरे बिंदु के लिए Y- समन्वय करते हैं, मान लेते हैं कि यह (-2,20) है, अब हम प्रत्येक बिंदु के लिए तीव्रता मान प्राप्त करते हैं और देखते हैं कि किसमें बड़ा तीव्रता मान है - यदि पहले बड़ा है तो हम पहले बूलियन मान को '1' होने के लिए असाइन करते हैं, यदि नहीं, तो हम '0' असाइन करते हैं। हम कई जोड़ों के लिए करते हैं, और हम बूलियन मूल्यों के एक वेक्टर के साथ समाप्त होते हैं।

* बहुत महत्वपूर्ण बिंदु: मैं इसे काम करने के लिए मानता हूं, आपको यादृच्छिक जनरेटर से पहले एक बीज मूल्य निर्दिष्ट करना होगा। इसका मतलब यह है कि आप प्रत्येक पैच के लिए समान मान चुनना चाहते हैं - यह सुपर महत्वपूर्ण है क्योंकि जब आप पैच की तुलना / मिलान करते हैं, तो पूरी प्रणाली टूट जाएगी यदि वे ठीक उसी तरह से नहीं चुने गए हैं। - उम्मीद है कि जब आप मैचिंग स्टेप पढ़ेंगे तो यह समझ में आएगा।

तो, हम उस प्रत्येक हित बिंदु के लिए करते हैं जो डिटेक्टर द्वारा पता लगाया गया था। प्रत्येक रुचि बिंदु के लिए, हमें बूलियन मूल्यों का एक वेक्टर मिलेगा।


अब दो छवियों ( तीसरे चरण; मिलान ) से मिलान करने के लिए, हम दूसरी छवि के लिए ठीक वही काम करते हैं, जिसका हम पता लगाते हैं, फिर BRIEF का उपयोग करके वर्णन करते हैं। उदाहरण के लिए मान लें कि हमारे पास प्रत्येक छवि में 10 रुचि बिंदु हैं (यह हमेशा काम कर सकता है यदि हमें प्रत्येक छवि में 10 सबसे दिलचस्प अंक मिलते हैं), हम उदाहरण के लिए 50 जोड़े का उपयोग करके प्रत्येक पैच का वर्णन करने के लिए BRIEF का उपयोग करते हैं, इसलिए प्रत्येक छवि का वर्णन किया जाएगा 50 बूलियन मूल्यों के 10 वैक्टर।

दो छवियों की तुलना करने के लिए, हम प्रत्येक वेक्टर के निकटतम पड़ोसी को पहली छवि से दूसरी छवि के दूसरे वेक्टर से पाते हैं। हम हैमिंग दूरी का उपयोग करते हैं, जो बहुत तेज है, दूरी के उदाहरण

हमिंगडिस्टेंस ((0, 1, 1), (0, 0, 0)) = 2

हमिंगडिस्टेंस ((0, 1, 1), (0, 1, 1)) = 0

हमिंगडिस्टेंस ((0, 1, 1), (1, 0, 0)) = 3

हमिंगडिस्टेंस (0, 1, 1), (1, 1, 1)) = 1

मूल रूप से कितने गलत पत्राचार

उम्मीद है की वो मदद करदे


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

यदि रोशनी की मात्रा-परिवर्तन सभी पिक्सेल के लिए बराबर है, हाँ यह अभी भी काम करेगा, यदि यह पिक्सेल से पिक्सेल (कुछ पिक्सेल रोशनी में वृद्धि, अन्य कमी) के लिए अलग है, तो यह एक समस्या है। आत्मीयता सिर्फ ठीक काम करने लगती है (उनके परिणामों के आधार पर), लेकिन यह निश्चित रूप से एक बिंदु तक पहुंच जाएगा जहां यह काम करना बंद कर देता है (वास्तव में उनके परिणामों में (Fig.3) वे बताते हैं कि - आप छवियों को डाउनलोड कर सकते हैं और देख सकते हैं कि दीवार 1 क्या है) 2, दीवार 1 | 3 के अनुरूप)। उनकी विधि घूर्णन अपरिवर्तनीय नहीं है (यह देखना इतना कठिन नहीं है) और वे स्पष्ट रूप से इसका उल्लेख करते हैं।
रोरोनोआ जोरो

आपके अन्वेषण के लिए धन्यवाद। मैं वास्तव में बहुत अच्छी तरह से संक्षिप्त वर्णनकर्ता को समझता हूं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.