ये केवल ऐसे विचार हैं जिन्हें मैंने समस्या के बारे में सोचा है, कभी भी इसे आज़माया नहीं है, लेकिन मुझे इस तरह की समस्याओं के बारे में सोचना पसंद है!
शुरू करने से पहले
चित्रों को सामान्य करने पर विचार करें, यदि एक दूसरे से अधिक रिज़ॉल्यूशन है, तो उस विकल्प पर विचार करें कि उनमें से एक दूसरे का एक संपीड़ित संस्करण है, इसलिए रिज़ॉल्यूशन को कम करने से अधिक सटीक परिणाम मिल सकते हैं।
छवि के विभिन्न संभावित क्षेत्रों को स्कैन करने पर विचार करें जो छवि के ज़ूम किए गए भागों और विभिन्न पदों और घुमावों का प्रतिनिधित्व कर सकता है। यह मुश्किल होने लगता है अगर कोई एक चित्र दूसरे का तिरछा संस्करण है, तो ये उस तरह की सीमाएँ हैं जिनकी आपको पहचान करनी चाहिए और उन पर समझौता करना चाहिए।
Matlab छवियों के परीक्षण और मूल्यांकन के लिए एक उत्कृष्ट उपकरण है।
एल्गोरिदम का परीक्षण
आपको परीक्षण डेटा का एक बड़ा मानव विश्लेषण किया गया सेट (कम से कम) परीक्षण करना चाहिए जहां मैच पहले से ही ज्ञात हैं। यदि आपके परीक्षण डेटा में उदाहरण के लिए आपके पास 1,000 छवियां हैं जहां उनमें से 5% मेल खाते हैं, तो अब आपके पास एक बहुत विश्वसनीय बेंचमार्क है। एक एल्गोरिथ्म जो 10% सकारात्मकता पाता है वह उतना अच्छा नहीं है जितना कि हमारे परीक्षण डेटा में 4% सकारात्मकता पाता है। हालाँकि, एक एल्गोरिथ्म में सभी मैच मिल सकते हैं, लेकिन एक बड़ी 20% झूठी सकारात्मक दर भी है, इसलिए आपके एल्गोरिदम को रेट करने के कई तरीके हैं।
परीक्षण डेटा को यथासंभव कई प्रकार के गतिकी को कवर करने के लिए डिज़ाइन करने का प्रयास करना चाहिए जो आपको वास्तविक दुनिया में खोजने की उम्मीद करेंगे।
यह नोट करना महत्वपूर्ण है कि प्रत्येक एल्गोरिदम उपयोगी होने के लिए यादृच्छिक अनुमान लगाने से बेहतर प्रदर्शन करना चाहिए, अन्यथा यह हमारे लिए बेकार है!
फिर आप अपने सॉफ़्टवेयर को एक नियंत्रित तरीके से वास्तविक दुनिया में लागू कर सकते हैं और इसके परिणामों का विश्लेषण करना शुरू कर सकते हैं। यह एक तरह का सॉफ्टवेयर प्रोजेक्ट है, जो कि इनफिनिटम के लिए चल सकता है, हमेशा ऐसे ट्विक्स और सुधार होते हैं जिन्हें आप कर सकते हैं, यह ध्यान रखना जरूरी है कि इसे डिजाइन करते समय इसे कभी न खत्म होने वाले प्रोजेक्ट के जाल में गिराना आसान हो।
रंग की बाल्टी
दो चित्रों के साथ, प्रत्येक पिक्सेल को स्कैन करें और रंगों को गिनें। उदाहरण के लिए आपके पास 'बाल्टी' हो सकती है:
white
red
blue
green
black
(जाहिर है आप काउंटरों का एक उच्च संकल्प होगा)। हर बार जब आप 'लाल' पिक्सेल पाते हैं, तो आप लाल काउंटर को बढ़ाते हैं। प्रत्येक बाल्टी रंगों के स्पेक्ट्रम का प्रतिनिधि हो सकता है, उच्च रिज़ॉल्यूशन अधिक सटीक होगा लेकिन आपको स्वीकार्य अंतर दर के साथ प्रयोग करना चाहिए।
एक बार आपके योग होने के बाद, इसकी तुलना दूसरी छवि के योग से करें। आपको पता चल सकता है कि प्रत्येक छवि में एक बहुत ही विशिष्ट पदचिह्न है, जो मैचों की पहचान करने के लिए पर्याप्त है।
किनारे का पता लगाना
एज डिटेक्शन का उपयोग कैसे करें ।
(स्रोत: wikimedia.org )
दो समान चित्रों के साथ किनारे का पता लगाने से आपको एक उपयोगी और काफी विश्वसनीय अद्वितीय पदचिह्न मिल सकते हैं।
दोनों चित्र लें, और एज डिटेक्शन लागू करें। हो सकता है कि किनारों की औसत मोटाई को मापें और फिर उस संभावना की गणना करें कि छवि को बढ़ाया जा सकता है, और यदि आवश्यक हो तो पुनर्विक्रय करें। नीचे विभिन्न घुमावों में एक लागू गैबर फ़िल्टर (किनारे का पता लगाने का एक प्रकार) का एक उदाहरण है ।
पिक्सेल के लिए चित्र पिक्सेल की तुलना करें, मैच और गैर मैचों की गणना करें। यदि वे त्रुटि की एक निश्चित सीमा के भीतर हैं, तो आपके पास एक मैच है। अन्यथा, आप एक निश्चित बिंदु तक रिज़ॉल्यूशन को कम करने की कोशिश कर सकते हैं और देख सकते हैं कि मैच की संभावना में सुधार होता है या नहीं।
रुचि के क्षेत्र
कुछ छवियों में रुचि के विशिष्ट क्षेत्र / क्षेत्र हो सकते हैं। ये क्षेत्र संभवतः बाकी छवि के साथ बहुत विपरीत हैं, और मैच खोजने के लिए आपकी अन्य छवियों को खोजने के लिए एक अच्छी वस्तु हैं। इस चित्र को उदाहरण के लिए लें:
(स्रोत: meetthegimp.org )
नीले रंग में निर्माण कार्यकर्ता रुचि का क्षेत्र है और इसे खोज वस्तु के रूप में इस्तेमाल किया जा सकता है। संभवत: इस क्षेत्र से कई तरीके हैं जिनसे आप संपत्ति / डेटा निकाल सकते हैं और अपने डेटा सेट को खोजने के लिए उनका उपयोग कर सकते हैं।
यदि आपकी रुचि के 2 से अधिक क्षेत्र हैं, तो आप उनके बीच की दूरियों को माप सकते हैं। इसका सरलीकृत उदाहरण लें:
(स्रोत: per2000.eu )
हमारे पास 3 स्पष्ट क्षेत्र हैं। क्षेत्र 1 और 2 के बीच की दूरी 200 पिक्सेल, 1 और 3 400 पिक्सेल और 2 और 3 200 पिक्सेल के बीच हो सकती है।
ब्याज के समान क्षेत्रों के लिए अन्य छवियां खोजें, दूरी के मूल्यों को सामान्य करें और देखें कि क्या आपके पास संभावित मिलान हैं। यह तकनीक घुमाए गए और स्केल किए गए चित्रों के लिए अच्छी तरह से काम कर सकती है। आपकी रुचि के जितने अधिक क्षेत्र हैं, प्रत्येक दूरी माप के मिलान के रूप में एक मैच की संभावना बढ़ जाती है।
अपने डेटा सेट के संदर्भ के बारे में सोचना महत्वपूर्ण है। यदि उदाहरण के लिए आपका डेटा सेट आधुनिक कला है, तो ब्याज के क्षेत्र काफी अच्छी तरह से काम करेंगे, क्योंकि ब्याज के क्षेत्रों को संभवतः अंतिम छवि का एक मौलिक हिस्सा बनाया गया था। यदि आप निर्माण स्थलों की छवियों के साथ काम कर रहे हैं, तो ब्याज के क्षेत्रों को गैरकानूनी रूप से अवैध कापियर द्वारा व्याख्या किया जा सकता है और उदारतापूर्वक काट-छाँट / संपादित किया जा सकता है। अपने डेटासेट की सामान्य विशेषताओं को ध्यान में रखें, और उस ज्ञान का फायदा उठाने का प्रयास करें।
morphing
दो छवियों को मोड़ना एक छवि को चरणों के सेट के माध्यम से दूसरे में बदलने की प्रक्रिया है:
ध्यान दें, यह एक छवि को दूसरे में लुप्त करने के लिए अलग है!
कई सॉफ्टवेयर पैकेज हैं जो छवियों को आकार दे सकते हैं। यह पारंपरिक रूप से एक संक्रमणकालीन प्रभाव के रूप में उपयोग किया जाता है, दो छवियां आमतौर पर आधे रास्ते में नहीं होती हैं, अंतिम परिणाम के रूप में दूसरे चरम में एक चरम रूप।
यह उपयोगी क्यों हो सकता है? आपके द्वारा उपयोग किए जाने वाले मॉर्फिंग एल्गोरिथ्म पर निर्भर, छवियों की समानता और मॉर्फिंग एल्गोरिदम के कुछ मापदंडों के बीच एक संबंध हो सकता है।
एक सरलीकृत उदाहरण में, एक एल्गोरिथ्म तेजी से निष्पादित हो सकता है जब कम बदलाव किए जा सकते हैं। फिर हम जानते हैं कि इस बात की अधिक संभावना है कि ये दोनों चित्र एक दूसरे के साथ गुण साझा करते हैं।
यह तकनीक घुमाई हुई, विकृत, तिरछी, ज़ूम वाली, सभी प्रकार की कॉपी की गई छवियों के लिए अच्छी तरह से काम कर सकती है । फिर से यह सिर्फ एक विचार है जो मेरे पास है, यह किसी भी शोधित शिक्षा पर आधारित नहीं है, जहां तक मुझे पता है (हालांकि मैं मुश्किल नहीं दिख रहा हूं), इसलिए यह आपके लिए सीमित / कोई परिणाम नहीं है।
ज़िप करना
इस सवाल में ओउ का जवाब उत्कृष्ट है, मुझे याद है कि एआई का अध्ययन करने वाली इन तकनीकों के बारे में पढ़ना पसंद है। यह कॉर्पस लेक्सिकॉन की तुलना में काफी प्रभावी है।
कॉर्पस की तुलना करते समय एक दिलचस्प अनुकूलन यह है कि आप बहुत सामान्य माने जाने वाले शब्दों को हटा सकते हैं, उदाहरण के लिए 'द', 'ए', 'एंड' आदि। ये शब्द हमारे परिणाम को पतला करते हैं, हम यह जानना चाहते हैं कि दोनों कॉर्पस कितने अलग हैं इसलिए इन्हें प्रसंस्करण से पहले हटाया जा सकता है। शायद छवियों में समान सामान्य संकेत हैं जो संपीड़न से पहले छीन लिए जा सकते हैं? यह देखने लायक हो सकता है।
संपीड़न अनुपात यह निर्धारित करने का एक बहुत ही त्वरित और यथोचित प्रभावी तरीका है कि डेटा के दो सेट समान कैसे हैं। संपीड़न कार्यों के बारे में पढ़ना आपको एक अच्छा विचार देगा कि यह इतना प्रभावी क्यों हो सकता है। एल्गोरिथ्म जारी करने के लिए एक तेज़ के लिए यह शायद एक अच्छा प्रारंभिक बिंदु होगा।
पारदर्शिता
फिर से मैं अनिश्चित हूं कि कुछ छवि प्रकार, gif png आदि के लिए पारदर्शिता डेटा कैसे संग्रहीत किया जाता है, लेकिन यह निष्कर्षण योग्य होगा और आपके डेटा सेट पारदर्शिता के साथ तुलना करने के लिए प्रभावी सरलीकृत कट आउट के रूप में काम करेगा।
संकेत दे रहा है
एक छवि सिर्फ एक संकेत है। यदि आप एक स्पीकर से एक शोर खेलते हैं, और आप दूसरे स्पीकर में ठीक उसी वॉल्यूम पर सही सिंक में विपरीत शोर खेलते हैं, तो वे एक दूसरे को रद्द कर देते हैं।
(स्रोत: themotorreport.com.au )
छवियों पर पलटना, और इसे अपनी अन्य छवि पर जोड़ें। स्केल / लूप को दोहराए जाने तक, जब तक कि आप एक परिणामी छवि नहीं पाते हैं, जहां पिक्सल्स का पर्याप्त हिस्सा सफेद (या काला है। मैं इसे एक तटस्थ कैनवास के रूप में संदर्भित करूंगा) आपको एक सकारात्मक मैच या आंशिक मैच प्रदान करने के लिए।
हालांकि, दो छवियों पर विचार करें जो समान हैं, उनमें से एक को छोड़कर उस पर लागू उज्ज्वल प्रभाव है:
(स्रोत: mcburrz.com )
उनमें से एक को निकालना, फिर इसे दूसरे में जोड़ना एक तटस्थ कैनवास के परिणामस्वरूप नहीं होगा, जिसे हम लक्ष्य कर रहे हैं। हालाँकि, दोनों मूल चित्रों से पिक्सेल की तुलना करते समय, हम निश्चित रूप से दोनों के बीच स्पष्ट संबंध देख सकते हैं।
मैंने अभी कुछ वर्षों तक रंग का अध्ययन नहीं किया है, और अगर रंग स्पेक्ट्रम रैखिक स्तर पर है, तो मैं अनिश्चित हूं, लेकिन यदि आपने दोनों चित्रों के बीच रंग अंतर का औसत कारक निर्धारित किया है, तो आप इस मान का उपयोग प्रसंस्करण से पहले डेटा को सामान्य करने के लिए कर सकते हैं यह तकनीक।
ट्री डेटा संरचनाएँ
पहले तो ये समस्या के लिए उपयुक्त नहीं लगते, लेकिन मुझे लगता है कि वे काम कर सकते थे।
आप एक छवि के कुछ गुणों को निकालने के बारे में सोच सकते हैं (उदाहरण के लिए रंग डिब्बे) और एक हफमैन पेड़ या इसी तरह की डेटा संरचना उत्पन्न करते हैं । आप समानता के लिए दो पेड़ों की तुलना करने में सक्षम हो सकते हैं। यह उदाहरण के लिए फोटोग्राफिक डेटा के लिए अच्छी तरह से काम नहीं करेगा रंग के एक बड़े स्पेक्ट्रम के साथ, लेकिन कार्टून या अन्य कम रंग सेट छवियां यह काम कर सकती हैं।
यह शायद काम नहीं करेगा, लेकिन यह एक विचार है। Trie आंकड़ा संरचना उदाहरण एक dictionarty के लिए, भंडारण शब्दकोशों में महान है। यह एक उपसर्ग वृक्ष है। शायद एक त्रिभुज के निर्माण के लिए एक लेक्सिकॉन के बराबर छवि बनाना, (फिर से मैं केवल रंगों के बारे में सोच सकता हूं)। यदि आपने 300x300 की छवि को 5x5 वर्ग में घटा दिया है, तो प्रत्येक 5x5 वर्ग को रंगों के अनुक्रम में विघटित करें, जिसके परिणामस्वरूप आप डेटा से एक ट्राइ का निर्माण कर सकते हैं। यदि 2x2 वर्ग में है:
FFFFFF|000000|FDFD44|FFFFFF
हमारे पास एक बहुत ही अनोखा ट्राई कोड है जो 24 स्तरों को बढ़ाता है, स्तरों को बढ़ाता / घटाता है (IE हमारे उप वर्ग के आकार को कम / बढ़ाता है) अधिक सटीक परिणाम प्राप्त कर सकता है।
त्रिकोणीय पेड़ों की तुलना करना काफी आसान होना चाहिए, और संभव प्रभावी परिणाम प्रदान कर सकता है।
अधिक विचार
मैंने उपग्रह इमेजरी के वर्गीकरण के बारे में एक दिलचस्प पेपर ब्रिफ के साथ ठोकर खाई , यह रेखांकित करता है:
माना जाता है कि बनावट के उपाय हैं: कॉक्रोचुरेंस मैट्रीस, ग्रे-लेवल अंतर, बनावट-टोन विश्लेषण, फूरियर स्पेक्ट्रम से प्राप्त विशेषताएं, और गैबर फिल्टर। कुछ फ़ॉयर फ़ीचर और कुछ गैबोर फिल्टर अच्छे विकल्प पाए गए, विशेष रूप से जब वर्गीकरण के लिए एकल आवृत्ति बैंड का उपयोग किया गया था।
यह उन मापों की अधिक विस्तार से जांच करने के लायक हो सकता है, हालांकि उनमें से कुछ आपके डेटा सेट के लिए प्रासंगिक नहीं हो सकते हैं।
अन्य बातों पर विचार करें
इस तरह की चीज़ों पर शायद बहुत सारे कागज़ात हैं, इसलिए उनमें से कुछ को पढ़ने में मदद करनी चाहिए, हालांकि वे बहुत तकनीकी हो सकते हैं। यह कंप्यूटिंग में एक अत्यंत कठिन क्षेत्र है, जिसमें कई लोगों द्वारा इसी तरह के काम करने का प्रयास करते हुए कई घंटे व्यर्थ किए जाते हैं। इसे सरल रखना और उन विचारों पर निर्माण करना सबसे अच्छा तरीका होगा। यादृच्छिक मैच दर की तुलना में बेहतर एल्गोरिथ्म बनाने के लिए यह एक कठिन कठिन चुनौती होनी चाहिए, और उस पर सुधार करना शुरू करने के लिए वास्तव में बहुत मुश्किल से प्राप्त करना शुरू होता है।
प्रत्येक विधि को संभवतः परीक्षण और पूरी तरह से ट्विक करने की आवश्यकता होगी, यदि आपके पास तस्वीर के प्रकार के बारे में कोई जानकारी है जिसे आप भी देख रहे होंगे, तो यह उपयोगी होगा। उदाहरण के विज्ञापनों में, उनमें से कई में पाठ होगा, इसलिए पाठ पहचान करना एक आसान और शायद बहुत ही विश्वसनीय तरीका होगा जब विशेष रूप से अन्य समाधानों के साथ मिलकर मैच खोजने का। जैसा कि पहले उल्लेख किया गया है, आपके डेटा सेट के सामान्य गुणों का फायदा उठाने का प्रयास।
वैकल्पिक माप और तकनीकों को मिलाकर प्रत्येक में एक भारित वोट (उनकी प्रभावशीलता पर निर्भर) हो सकता है एक तरीका होगा जिससे आप एक प्रणाली बना सकते हैं जो अधिक सटीक परिणाम उत्पन्न करता है।
यदि इस उत्तर की शुरुआत के अनुसार, कई एल्गोरिदम को नियोजित किया जाता है, तो सभी पॉज़िटिव मिल सकते हैं, लेकिन 20% की झूठी सकारात्मक दर है, यह अन्य एल्गोरिदम के रूप में अन्य एल्गोरिदम के गुणों / शक्तियों / कमजोरियों का अध्ययन करने के लिए ब्याज की होगी। दूसरे से लौटे झूठे सकारात्मक को समाप्त करने में प्रभावी हो।
कभी न खत्म होने वाली परियोजना को पूरा करने के प्रयास में न पड़ने के लिए सावधान रहें, शुभकामनाएँ!