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