इस समस्या को हल करने के लिए नीचे तीन दृष्टिकोण हैं (और कई अन्य हैं)।
पहला कंप्यूटर विजन, कीपॉइंट मैचिंग में एक मानक दृष्टिकोण है। इसे लागू करने के लिए कुछ पृष्ठभूमि ज्ञान की आवश्यकता हो सकती है, और यह धीमा हो सकता है।
दूसरी विधि केवल प्रारंभिक छवि प्रसंस्करण का उपयोग करती है, और संभवतः पहले दृष्टिकोण की तुलना में तेज है, और लागू करने के लिए सीधा है। हालांकि, यह समझने में क्या लाभ करता है, इसमें मजबूती का अभाव है - स्केलिंग, घुमाया या फीका पड़ा हुआ चित्रों पर मिलान विफल रहता है।
तीसरी विधि तेज और मजबूत दोनों है, लेकिन लागू करने के लिए संभवतः सबसे कठिन है।
कीपिंग मैचिंग
100 रैंडम पॉइंट लेने से बेहतर है 100 महत्वपूर्ण पॉइंट्स को चुनना । एक छवि के कुछ हिस्सों में दूसरों (विशेष रूप से किनारों और कोनों) की तुलना में अधिक जानकारी होती है, और ये वे हैं जो आप स्मार्ट छवि मिलान के लिए उपयोग करना चाहते हैं। Google " कीपॉइंट निष्कर्षण " और " कीपॉइंट मैचिंग " और आपको इस विषय पर कुछ अकादमिक पेपर मिलेंगे। इन दिनों, SIFT कीपॉइंट यकीनन सबसे लोकप्रिय हैं, क्योंकि वे अलग-अलग तराजू, घुमाव और प्रकाश व्यवस्था के तहत छवियों का मिलान कर सकते हैं। कुछ SIFT कार्यान्वयन मिल सकते हैं यहां हैं ।
कीपॉइंट मैचिंग के लिए एक नकारात्मक पहलू भोली कार्यान्वयन का चल रहा समय है: O (n ^ 2m), जहाँ n प्रत्येक छवि में keypoint की संख्या है, और m डेटाबेस में छवियों की संख्या है। कुछ चतुर एल्गोरिदम निकटतम मैच को तेज़ी से देख सकते हैं, जैसे क्वाडट्रैस या बाइनरी स्पेस विभाजन।
वैकल्पिक समाधान: हिस्टोग्राम विधि
एक और कम मजबूत लेकिन संभावित रूप से तेज समाधान प्रत्येक छवि के लिए फीचर हिस्टोग्राम बनाना है, और छवि को इनपुट छवि के हिस्टोग्राम के सबसे करीब हिस्टोग्राम के साथ चुनना है। मैंने इसे एक अंडरग्रेड के रूप में लागू किया, और हमने 3 रंग हिस्टोग्राम (लाल, हरा और नीला), और दो बनावट हिस्टोग्राम, दिशा और पैमाने का उपयोग किया। मैं नीचे विवरण दूंगा, लेकिन मुझे ध्यान देना चाहिए कि यह केवल डेटाबेस छवियों के समान मिलान वाली छवियों के लिए अच्छी तरह से काम करता है। पुनः-स्केल की गई, घुमाई हुई या फीकी पड़ी हुई छवियां इस पद्धति से विफल हो सकती हैं, लेकिन क्रॉपिंग जैसे छोटे परिवर्तन एल्गोरिथ्म को नहीं तोड़ेंगे
रंग हिस्टोग्राम की गणना करना सीधा है - बस अपने हिस्टोग्राम बाल्टी के लिए सीमा चुनें, और प्रत्येक सीमा के लिए, उस सीमा में रंग के साथ पिक्सेल की संख्या टैली करें। उदाहरण के लिए, "हरे" हिस्टोग्राम पर विचार करें, और मान लें कि हम अपने हिस्टोग्राम के लिए 4 बाल्टी चुनते हैं: 0-63, 64-127, 128-191 और 192-255। फिर प्रत्येक पिक्सेल के लिए, हम हरे रंग के मूल्य को देखते हैं, और एक बाल्टी को उपयुक्त बाल्टी में जोड़ते हैं। जब हम टैलिंग कर रहे होते हैं, तो हम हरे रंग के चैनल के लिए सामान्यीकृत हिस्टोग्राम प्राप्त करने के लिए पूरी छवि में पिक्सेल की संख्या से प्रत्येक बाल्टी को विभाजित करते हैं।
बनावट दिशा हिस्टोग्राम के लिए, हमने छवि पर किनारे का पता लगाने के लिए शुरुआत की। प्रत्येक किनारे बिंदु के किनारे पर लंबवत दिशा में एक सामान्य वेक्टर इंगित होता है। हमने 0 और PI के बीच सामान्य वेक्टर के कोण को 6 बाल्टी में परिमाणित किया है (चूंकि किनारों में 180-डिग्री समरूपता है, हमने कोण को -PI और 0 के बीच 0 और PI के बीच परिवर्तित किया है)। प्रत्येक दिशा में बढ़त बिंदुओं की संख्या का मिलान करने के बाद, हमारे पास एक सामान्यीकृत हिस्टोग्राम है जो बनावट दिशा का प्रतिनिधित्व करता है, जिसे हमने प्रत्येक बाल्टी को छवि में कुल बढ़त बिंदुओं द्वारा विभाजित करके सामान्य किया है।
बनावट के पैमाने हिस्टोग्राम की गणना करने के लिए, प्रत्येक किनारे बिंदु के लिए, हमने उसी दिशा के साथ अगले-निकटतम किनारे बिंदु की दूरी को मापा। उदाहरण के लिए, यदि एज पॉइंट ए में 45 डिग्री की दिशा है, तो एल्गोरिथ्म उस दिशा में चलता है जब तक कि यह 45 डिग्री (या एक उचित विचलन के भीतर) के साथ एक और बढ़त बिंदु नहीं पाता है। प्रत्येक किनारे बिंदु के लिए इस दूरी की गणना करने के बाद, हम उन मूल्यों को एक हिस्टोग्राम में डंप करते हैं और इसे किनारे की कुल संख्या से विभाजित करके सामान्य करते हैं।
अब आपके पास प्रत्येक छवि के लिए 5 हिस्टोग्राम हैं। दो छवियों की तुलना करने के लिए, आप प्रत्येक हिस्टोग्राम बाल्टी के बीच अंतर का पूर्ण मूल्य लेते हैं, और फिर इन मूल्यों को जोड़ते हैं। उदाहरण के लिए, छवियों A और B की तुलना करने के लिए, हम गणना करेंगे
|A.green_histogram.bucket_1 - B.green_histogram.bucket_1|
हरे हिस्टोग्राम में प्रत्येक बाल्टी के लिए, और अन्य हिस्टोग्राम के लिए दोहराएं, और फिर सभी परिणामों को योग करें। परिणाम जितना छोटा होगा, मैच उतना ही बेहतर होगा। डेटाबेस में सभी छवियों के लिए दोहराएं, और सबसे छोटे परिणाम जीत के साथ मैच। आप शायद एक दहलीज चाहते हैं, जिसके ऊपर एल्गोरिथ्म यह निष्कर्ष निकालता है कि कोई मैच नहीं मिला।
तीसरी पसंद - कीपॉइंट्स + निर्णय पेड़
एक तीसरा दृष्टिकोण जो संभवतः अन्य दो की तुलना में बहुत तेज है, शब्दार्थ टेक्स्टन वनों का उपयोग कर रहा है (पीडीएफ) । इसमें सरल कुंजीप्वाइंट निकालना और छवि को वर्गीकृत करने के लिए संग्रह निर्णय पेड़ों का उपयोग करना शामिल है। यह साधारण SIFT की पॉइंट मिलान की तुलना में तेज़ है, क्योंकि यह महंगी मिलान प्रक्रिया से बचता है, और की-पॉइंट, SIFT की तुलना में बहुत सरल है, इसलिए की-पॉइंट निष्कर्षण बहुत तेज़ है। हालाँकि, यह रोटेशन, स्केल और लाइटिंग के लिए SIFT मेथड के इनविरेंस को संरक्षित करता है, एक महत्वपूर्ण विशेषता जिसे हिस्टोग्राम विधि की कमी थी।
अपडेट :
मेरी गलती - सिमेंटिक टेक्स्टन फॉरेस्ट पेपर विशेष रूप से छवि मिलान के बारे में नहीं है, बल्कि क्षेत्र लेबलिंग है। मूल पेपर जो मिलान करता है वह यह है: रैंडमाइज्ड पेड़ों का उपयोग करते हुए कीपॉइंट रिकॉग्निशन । इसके अलावा, नीचे दिए गए कागजात विचारों को विकसित करते हैं और कला की स्थिति का प्रतिनिधित्व करते हैं (सी। 2010):