2008-08-23 19 views
144

दो अलग-अलग छवि फ़ाइलों को देखते हुए (जो भी प्रारूप मैं चुनता हूं), मुझे किसी मौके की भविष्यवाणी करने के लिए एक प्रोग्राम लिखना होगा यदि कोई दूसरे की अवैध प्रतिलिपि है। प्रतिलिपि के लेखक घूर्णन, नकारात्मक बनाने, या मामूली विवरण जोड़ने (साथ ही छवि के आयाम को बदलने) जैसी चीजें कर सकते हैं।दो छवियों की तुलना करने के लिए एल्गोरिदम

क्या आप इस तरह की नौकरी करने के लिए कोई एल्गोरिदम जानते हैं?

+10

आप कैसे निर्धारित करते हैं कि मूल कौन सा है? – jfs

+0

मुझे लगता है कि उसके पास मूल है और यह सत्यापित करने की आवश्यकता है कि कोई विदेशी फ़ाइल एक प्रतिलिपि बनाई गई प्रतिलिपि है या मूल से संबंधित नहीं है। – unfa

उत्तर

32

कागज पढ़ें: Porikli, Fatih, Oncel Tuzel, and Peter Meer. “Covariance Tracking Using Model Update Based on Means on Riemannian Manifolds”. (2006) IEEE Computer Vision and Pattern Recognition.

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

+0

लिंक टूटा हुआ लगता है। – satoru

+1

@Satoru तर्क: Google खोज पेपर पर हिट दिखाता है: http://www.google.com/search?q=Porikli ,+Fatih ,+Oncel+Tuzel ,+and+Peter+Meer.+%E2%80% 9CCovariance + ट्रैकिंग + साधन + + Riemannian + कई गुना% E2% 80% 9D पर पर + आधार + + मॉडल + अद्यतन का उपयोग +। + (2006) + आईईईई + कंप्यूटर + विजन + और + पैटर्न + मान्यता। – Nick

14

यह वास्तव में ऐसा लगता है कि यह बहुत कम सरल है :-) निक का सुझाव एक अच्छा है।

प्रारंभ करने के लिए, ध्यान रखें कि किसी भी सार्थक तुलना विधि अनिवार्य रूप से छवियों को एक अलग रूप में परिवर्तित करके काम करेगी - एक ऐसा फॉर्म जो समान सुविधाओं को चुनना आसान बनाता है। आमतौर पर, यह सामान बहुत हल्का पढ़ने के लिए नहीं है ...


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

http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subsection=tutorials/colorspace


एक और उदाहरण कुछ Hough रूपांतरण कहा जाता है शामिल है। यह परिवर्तन अनिवार्य रूप से एक छवि को लाइनों के एक सेट में विघटित करता है। फिर आप प्रत्येक छवि में कुछ 'सबसे मजबूत' रेखाएं ले सकते हैं और देख सकते हैं कि वे लाइन अप करते हैं या नहीं। आप रोटेशन और स्केलिंग के लिए भी कोशिश करने और क्षतिपूर्ति करने के लिए कुछ अतिरिक्त काम कर सकते हैं - और इस मामले में, कुछ लाइनों की तुलना करने से पूरी छवियों में ऐसा करने से बहुत कम कम्प्यूटेशनल काम होता है - यह इतना बुरा नहीं होगा।

http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/Hough_transform

1

यदि आप एक अलग दृष्टिकोण अपने चित्रों के अवैध प्रतियां का पता लगाने के लिए पूरी तरह से विचार करने के लिए तैयार हैं, तो आप watermarking विचार कर सकते हैं। (1.4 से)

... गुणवत्ता के नुकसान के बिना डिजिटल ऑब्जेक्ट में कॉपीराइट जानकारी डालें। जब भी एक डिजिटल ऑब्जेक्ट का कॉपीराइट प्रश्न में है, तो यह जानकारी सही मालिक की पहचान करने के लिए निकाली जाती है। कॉपीराइट धारक की पहचान के साथ मूल खरीदार की पहचान को एन्कोड करना भी संभव है, जो किसी भी अनधिकृत प्रतियों का पता लगाने की अनुमति देता है।

हालांकि यह एक जटिल क्षेत्र भी है, ऐसी तकनीकें हैं जो वॉटरमार्क जानकारी को सकल छवि परिवर्तन के माध्यम से जारी रखने की अनुमति देती हैं: (1 से।9)

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

निश्चित रूप से

, पूछे जाने वाले प्रश्न इस दृष्टिकोण को लागू कॉल: "... बहुत ही चुनौतीपूर्ण" लेकिन यदि आप इसे के साथ सफल, आप क्या छवि एक प्रति है की एक उच्च आत्मविश्वास मिलता है या नहीं है, बजाय एक प्रतिशत संभावना ।

+0

भारी संपादन के बाद वॉटरमार्किंग कैसे बनी रहती है इस बारे में कोई और जानकारी? बहुत दिलचस्प लगता है। –

5

यह सिर्फ एक सुझाव है, यह काम नहीं कर सकता है और मैं इस पर फोन करने के लिए तैयार हूं।

इससे झूठी सकारात्मक उत्पन्न होगी, लेकिन उम्मीद है कि झूठी नकारात्मक नहीं है।

  1. छवियों के दोनों का आकार इतना है कि वे एक ही आकार के होते हैं (मुझे लगता है कि लंबाई करने के लिए चौड़ाई का अनुपात दोनों छवियों में ही कर रहे हैं)।

  2. हानि रहित संपीड़न एल्गोरिदम (उदा। Gzip) दोनों छवियों के बिटमैप को संपीड़ित करें।

  3. समान फ़ाइल आकार वाले फ़ाइलों के जोड़े खोजें। उदाहरण के लिए, तुम सिर्फ तरह कैसे समान फ़ाइल आकार रहे हैं और से फ़ाइलें आप की प्रत्येक जोड़ी के शीर्ष एक्स

जैसा कि मैंने कहा पुनः प्राप्त कर सकता है, यह निश्चित रूप से गलत परिणामों की उत्पन्न होगा, लेकिन उम्मीद है कि झूठी नहीं नकारात्मक। आप इसे पांच मिनट में कार्यान्वित कर सकते हैं, जबकि Porikil et। अल। शायद व्यापक काम की आवश्यकता होगी। http://en.wikipedia.org/wiki/Eigenface

एक और विचार करने के लिए होगा:

+0

मुझे इस समाधान को बहुत आसान, कार्यान्वित करने में आसान है और मैं इसे निष्क्रिय करता हूं, यह यादृच्छिक पहचान दर –

+0

से बेहतर होगा। यह एक प्रश्न है: क्या यह काम करता है यदि प्रतिलिपि को एक अलग रिज़ॉल्यूशन से सहेजा गया है? –

4

मेरा मानना ​​है कि अगर आप हर संभव उन्मुखीकरण के ऋणात्मक व के दृष्टिकोण को लागू करने के लिए तैयार हैं, छवि मान्यता (अच्छा विश्वसनीयता के साथ) के लिए एक अच्छी शुरुआत Eigenfaces उपयोग करने के लिए है दोनों छवियों को उनके घटकों के वैक्टर में बदल दें। ऐसा करने का एक अच्छा तरीका है एक वेक्टर बनाना जो x * y आयामों में चल रहा है (x आपकी छवि की चौड़ाई और वाई ऊंचाई है), प्रत्येक आयाम के लिए मान (x, y) पिक्सेल मान पर लागू होता है। फिर दो श्रेणियों के साथ के-नजदीकी पड़ोसियों का एक संस्करण चलाएं: मैच और कोई मिलान नहीं। यदि यह मूल छवि के करीब पर्याप्त है तो यह मैच श्रेणी में फिट होगा, अगर नहीं तो यह नहीं होगा।

कश्मीर निकटतम पड़ोसी (KNN) यहां पाया जा सकता है, वहाँ भी वेब पर इसके बारे में अन्य अच्छे कारण हो सकते हैं: http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

KNN के लाभ है कि अधिक वेरिएंट आप मूल छवि के लिए तुलना कर रहे हैं, एल्गोरिदम जितना अधिक सटीक हो जाता है। नकारात्मकता आपको पहले सिस्टम को प्रशिक्षित करने के लिए छवियों की एक सूची की आवश्यकता है।

+1

एक अच्छा विचार है, लेकिन केवल तभी जब डेटा में चेहरे मौजूद हैं। यह भी लोगों की पहचान करता है, परिस्थितियों में नहीं। एक पेशेवर अभिनेता जो कई प्रकाशनों में शामिल है, इससे बहुत सारे झूठे सकारात्मक उत्पन्न होंगे। –

+0

जब तक मैं –

+0

उपयोग के अपने इरादे को गलत नहीं समझता, असल में मेरा मानना ​​है कि एल्गोरिदम विषय के बावजूद काम करता है, इसलिए यदि आप पेड़ों की तुलना कर रहे थे तो यह भी उपयोगी होगा। यह केवल Eigenfaces कहा जाता है क्योंकि यह शास्त्रीय रूप से चेहरे की पहचान के साथ जुड़ा हुआ है। जब तक आइटम को खोजा जाए तब तक वही समग्र सुविधाएं होंगी जिनके साथ आप इसकी तुलना कर रहे हैं, अभी भी काम करना चाहिए। –

280

ये केवल विचार हैं जो मैंने समस्या के बारे में सोचते हैं, कभी कोशिश नहीं की लेकिन मुझे इस तरह की समस्याओं के बारे में सोचना पसंद है!

आरंभ करने से पहले

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

छवि के विभिन्न संभावित क्षेत्रों को स्कैन करने पर विचार करें जो छवि के ज़ूम किए गए हिस्सों और विभिन्न स्थितियों और घूर्णन का प्रतिनिधित्व कर सकते हैं। यह मुश्किल हो रहा है अगर छवियों में से एक दूसरे के एक तिरछे संस्करण हैं, तो ये ऐसी सीमाएं हैं जिन्हें आपको पहचानना चाहिए और समझौता करना चाहिए।

Matlab छवियों का परीक्षण और मूल्यांकन करने के लिए एक उत्कृष्ट उपकरण है।

एल्गोरिदम

आप (कम से कम) का परीक्षण करना चाहिए एक बड़ी मानव परीक्षण डाटा जहां मैचों पहले से जाना जाता है के सेट पर विश्लेषण परीक्षण। यदि उदाहरण के लिए आपके टेस्ट डेटा में आपके पास 1,000 छवियां हैं, जिनमें से 5% मेल खाते हैं, तो अब आपके पास एक विश्वसनीय विश्वसनीय बेंचमार्क है। एक एल्गोरिदम जो 10% सकारात्मक पाता है वह उतना अच्छा नहीं है जितना हमारे परीक्षण डेटा में 4% पॉजिटिव पाता है। हालांकि, एक एल्गोरिदम सभी मैचों को पा सकता है, लेकिन इसमें 20% झूठी सकारात्मक दर भी है, इसलिए आपके एल्गोरिदम को रेट करने के कई तरीके हैं।

परीक्षण डेटा को यथासंभव कई प्रकार की गतिशीलता को कवर करने के लिए डिज़ाइन किया जाना चाहिए ताकि आप वास्तविक दुनिया में खोज सकें।

यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक एल्गोरिदम उपयोगी होने के लिए यादृच्छिक अनुमान से बेहतर प्रदर्शन करना चाहिए, अन्यथा यह हमारे लिए बेकार है!

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

रंग बाल्टी

दो चित्रों के साथ, प्रत्येक पिक्सेल स्कैन और रंग गिनती। उदाहरण के लिए आपके पास 'बाल्टी' हो सकती है:

white 
red 
blue 
green 
black 

(जाहिर है कि आपके पास काउंटर का उच्च रिज़ॉल्यूशन होगा)। हर बार जब आप 'लाल' पिक्सेल पाते हैं, तो आप लाल काउंटर को बढ़ाते हैं। प्रत्येक बाल्टी रंगों के स्पेक्ट्रम का प्रतिनिधि हो सकती है, उच्च रिज़ॉल्यूशन अधिक सटीक होता है लेकिन आपको स्वीकार्य अंतर दर के साथ प्रयोग करना चाहिए।

एक बार आपके पास योग होने के बाद, दूसरी छवि के लिए कुल योग की तुलना करें। आप पाएंगे कि प्रत्येक छवि में एक बिल्कुल अद्वितीय पदचिह्न है, जो मैचों की पहचान करने के लिए पर्याप्त है।

एज का पता लगाने

कैसे Edge Detection उपयोग के बारे में। alt text http://upload.wikimedia.org/wikipedia/en/thumb/8/8e/EdgeDetectionMathematica.png/500px-EdgeDetectionMathematica.png

दो समान चित्रों के साथ किनारे का पता लगाने से आपको एक उपयोगी और काफी विश्वसनीय अद्वितीय पदचिह्न प्रदान करना चाहिए।

दोनों चित्र लें, और किनारे का पता लगाएं। शायद किनारों की औसत मोटाई को मापें और फिर संभावना को गणना करें कि छवि को स्केल किया जा सकता है, और यदि आवश्यक हो तो पुनर्विक्रय करें। नीचे विभिन्न घूर्णन में लागू Gabor Filter (किनारे का पता लगाने का एक प्रकार) का एक उदाहरण है।

alt text

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

ब्याज

कुछ छवियों के क्षेत्र हित के विशिष्ट क्षेत्रों/क्षेत्रों पड़ सकता है। ये क्षेत्र शायद शेष छवि के साथ अत्यधिक विपरीत हैं, और मिलान खोजने के लिए आपकी अन्य छवियों में खोजने के लिए एक अच्छी वस्तु है। उदाहरण के लिए इस छवि को लें:

alt text http://meetthegimp.org/wp-content/uploads/2009/04/97.jpg

नीले रंग में निर्माण मजदूर हित के एक क्षेत्र है और एक खोज वस्तु के रूप में इस्तेमाल किया जा सकता। संभवतः कई तरीकों से आप रुचि के इस क्षेत्र से गुण/डेटा निकाल सकते हैं और अपने डेटा सेट को खोजने के लिए उनका उपयोग कर सकते हैं।

यदि आपके पास रुचि के 2 से अधिक क्षेत्र हैं, तो आप उनके बीच की दूरी को माप सकते हैं। इस सरल उदाहरण लें:

alt text http://www.per2000.eu/assets/images/3_dots_black_03.jpg

हम ब्याज की 3 स्पष्ट क्षेत्रों की है। क्षेत्र 1 और 2 के बीच की दूरी 200 पिक्सल हो सकती है, 1 और 3 400 पिक्सल और 2 और 3 200 पिक्सेल के बीच।

ब्याज के समान क्षेत्रों के लिए अन्य छवियां खोजें, दूरी मानों को सामान्य करें और देखें कि आपके पास संभावित मिलान हैं या नहीं। यह तकनीक घूर्णन और स्केल की गई छवियों के लिए अच्छी तरह से काम कर सकती है। आपके पास रुचि के अधिक क्षेत्र हैं, प्रत्येक दूरी माप मिलान के रूप में एक मैच की संभावना बढ़ जाती है।

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

Morphing दो छवियों Morphing कदम का एक सेट के माध्यम से दूसरे में एक छवि को बदलने की प्रक्रिया है:

alt text

ध्यान दें, यह दूसरे में एक छवि fading करने के लिए अलग है !

कई सॉफ़्टवेयर पैकेज हैं जो छवियों को मोर्फ़ कर सकते हैं। यह परंपरागत रूप से एक संक्रमणकालीन प्रभाव के रूप में प्रयोग किया जाता है, दो छवियां आम तौर पर आधे रास्ते में मोर्चे नहीं होती हैं, अंतिम परिणाम के रूप में अन्य चरम पर एक चरम मोर्फ़।

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

एक व्यापक रूप से सरलीकृत उदाहरण में, कम परिवर्तन होने पर एक एल्गोरिदम तेजी से निष्पादित हो सकता है।हम तब जानते हैं कि एक उच्च संभावना है कि ये दो छवियां एक दूसरे के साथ गुण साझा करती हैं।

यह तकनीक घुमावदार, विकृत, तिरछे, ज़ूम किए गए सभी प्रकार की प्रतिलिपि बनाई गई छवियों के लिए अच्छी तरह से काम कर सकती है। फिर यह सिर्फ एक विचार है जो मैंने किया है, यह किसी भी शोध किए गए अकादमिक पर आधारित नहीं है, जहां तक ​​मुझे पता है (हालांकि मुझे कड़ी मेहनत नहीं है), इसलिए यह आपके लिए सीमित/कोई परिणाम नहीं हो सकता है।

ज़िप किया जा रहा

इस सवाल में Ow के जवाब उत्कृष्ट है, मैं अध्ययन कर ऐ तकनीक के इन प्रकार के बारे में पढ़ याद है। कॉर्पस लेक्सिकॉन की तुलना में यह काफी प्रभावी है।

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

संपीड़न अनुपात यह निर्धारित करने का एक बहुत तेज़ और उचित प्रभावी तरीका है कि डेटा के दो सेट कितने हैं। how compression works के बारे में पढ़ना आपको एक अच्छा विचार देगा कि यह इतना प्रभावी क्यों हो सकता है। एल्गोरिदम को रिलीज़ करने के लिए तेज़ी से यह शायद एक अच्छा प्रारंभिक बिंदु होगा।

पारदर्शिता

फिर मैं अनिश्चित हूं कैसे पारदर्शिता डेटा निश्चित छवि प्रकार, GIF png आदि के लिए भंडारित किया जाता है, लेकिन यह निकाला जा सकता हो जाएगा और एक प्रभावी सरलीकृत काट अपने डेटा पारदर्शिता सेट के साथ तुलना करने के लिए रूप में काम करेगा ।

Inverting सिग्नल

एक छवि सिर्फ एक संकेत है। यदि आप एक स्पीकर से शोर खेलते हैं, और आप एक ही स्पीकर में एक ही स्पीकर में एक ही स्पीकर में विपरीत शोर खेलते हैं, तो वे एक दूसरे को रद्द कर देते हैं।

alt text http://www.themotorreport.com.au/wp-content/uploads/2008/07/noise-cancellation.gif

छवियों के पर उलटा है, और अपने अन्य छवि पर जोड़ें। जब तक आप एक सकारात्मक मिलान, या आंशिक मिलान प्रदान करने के लिए एक परिणामस्वरूप छवि नहीं पाते हैं, जहां तक ​​आपको पिक्सेल पर्याप्त सफेद (या काला? मैं इसे तटस्थ कैनवास के रूप में संदर्भित करता हूं) को तब तक स्केल करें।

alt text

उनमें से एक Inverting, तो अन्य में जोड़ने से एक का कारण नहीं बनेगा:

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

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

ट्री डाटा संरचनाओं

पहले इन पर समस्या के लिए फिट करने के लिए नहीं है, लेकिन मुझे लगता है कि वे काम कर सकता था।

आप किसी छवि के कुछ गुणों (उदाहरण के लिए रंगीन डिब्बे) निकालने और huffman tree या समान डेटा संरचना उत्पन्न करने के बारे में सोच सकते हैं। आप समानता के लिए दो पेड़ों की तुलना करने में सक्षम हो सकते हैं। यह फोटोग्राफिक डेटा के लिए अच्छी तरह से काम नहीं करेगा उदाहरण के लिए रंग के बड़े स्पेक्ट्रम के साथ, लेकिन कार्टून या अन्य कम रंग सेट छवियां यह काम कर सकती हैं।

यह शायद काम नहीं करेगा, लेकिन यह एक विचार है। trie datastructure लेक्सिकॉन संग्रहित करने में बहुत अच्छा है, उदाहरण के लिए एक उपन्यास। यह एक उपसर्ग पेड़ है। शायद एक त्रिभुज के बराबर एक छवि बनाना संभव है, (फिर से मैं केवल रंगों के बारे में सोच सकता हूं) एक त्रिभुज बनाने के लिए। यदि आप 300x300 छवि को 5x5 वर्गों में कम करते हैं, तो प्रत्येक 5x5 वर्ग को रंगों के अनुक्रम में विघटित करें जिससे आप परिणामी डेटा से ट्राई बना सकते हैं। एक 2x2 वर्ग में शामिल हैं:

FFFFFF|000000|FDFD44|FFFFFF 

हम बढ़ रही है/घटते स्तर (आईई को कम करने/हमारे उप वर्ग के आकार में वृद्धि) अधिक सटीक परिणाम उपज सकता है एक काफी अद्वितीय trie कोड है कि 24 के स्तर को बढ़ाता है है,।

ट्राई पेड़ों की तुलना करना उचित रूप से आसान होना चाहिए, और संभवतः प्रभावी परिणाम प्रदान कर सकते हैं।

अधिक विचारों

मैं classification of satellite imagery के बारे में संक्षिप्त एक दिलचस्प कागज करवाते हैं ठोकर खाई है, यह रूपरेखा:

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

उन मापों की अधिक विस्तार से जांच करना उचित हो सकता है, हालांकि उनमें से कुछ आपके डेटा सेट से प्रासंगिक नहीं हो सकते हैं।

अन्य बातों पर विचार करना

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

प्रत्येक विधि को शायद जांचने की आवश्यकता होगी और पूरी तरह से tweaked की जरूरत है, अगर आपके पास तस्वीर के प्रकार के बारे में कोई जानकारी है, तो आप भी उपयोगी होंगे। उदाहरण के लिए विज्ञापन, उनमें से कई में उनके पास टेक्स्ट होगा, इसलिए पाठ पहचान करना एक आसान और संभवतः मैचों को खोजने का बहुत विश्वसनीय तरीका होगा, खासकर जब अन्य समाधानों के साथ मिल जाए। जैसा कि पहले उल्लेख किया गया है, अपने डेटा सेट के सामान्य गुणों का फायदा उठाने का प्रयास करें।

वैकल्पिक माप और तकनीकों का संयोजन जिसमें प्रत्येक भारित वोट (उनकी प्रभावशीलता पर निर्भर) हो, एक ऐसा तरीका होगा जिससे आप एक प्रणाली बना सकें जो अधिक सटीक परिणाम उत्पन्न करे।

यदि इस उत्तर की शुरुआत में उल्लिखित कई एल्गोरिदम नियोजित करते हैं, तो कोई भी सभी सकारात्मक पाया जा सकता है लेकिन 20% की झूठी सकारात्मक दर है, यह गुण/शक्तियों/अन्य एल्गोरिदम की कमजोरियों का अध्ययन करने में रूचि होगी क्योंकि एक और एल्गोरिदम किसी अन्य से लौटे झूठी सकारात्मकताओं को समाप्त करने में प्रभावी हो सकता है।

कभी खत्म होने वाली परियोजना को पूरा करने के प्रयास में न आने के लिए सावधान रहें, शुभकामनाएँ!

+19

बहुत बढ़िया प्रतिक्रिया। एक अच्छी तरह से सोचा और प्रबुद्ध जवाब के लिए Kudos। –

+0

धन्यवाद! मैं इस पर विस्तार करने की उम्मीद करता हूं, मेरे पास कुछ और विचार हैं जिन्हें मैं सोचना और देखना चाहता हूं। –

+0

हाय टॉम - क्या आप जावा में किसी भी ओपन-सोर्स एज डिटेक्शन लाइब्रेरीज़, प्रीफ के बारे में जानते हैं? –

7

आपको छवि में कोड एम्बेड करने के लिए वॉटरमार्किंग योजना का उपयोग करने की आवश्यकता होगी। कुछ लोगों द्वारा सुझाए गए निम्न स्तर के दृष्टिकोण (किनारे का पता लगाने आदि) के विपरीत, एक वॉटरमार्किंग विधि बेहतर है क्योंकि:

यह सिग्नल प्रोसेसिंग हमलों के लिए प्रतिरोधी है ► सिग्नल एन्हांसमेंट - sharpening इसके विपरीत, आदि ► छनन - मंझला, लो-पास, उच्च मार्ग, आदि ► Additive शोर - गाऊसी, वर्दी, आदि अस्पष्ट संपीड़न ► - जेपीईजी, एमपीईजी, आदि

यह ज्यामितीय के लिए प्रतिरोधी है हमले ► एफ़िन ► डेटा में कमी - क्रॉपिंग, क्लिपिंग इत्यादि ► यादृच्छिक स्थानीय विरूपण एस ► वारिंग

वॉटरमार्किंग एल्गोरिदम पर कुछ शोध करें और आप अपनी समस्या को हल करने के लिए सही रास्ते पर होंगे। ( ध्यान दें: आप कर सकते हैं बेंचमार्क आप विधि STIRMARK डेटासेट का उपयोग करके यह आवेदन के इस प्रकार के लिए एक स्वीकृत मानक है

27

एक विचार:।।

  1. उपयोग Keypoint डिटेक्टरों scale- खोजने के लिए और अपरिवर्तनीय वर्णनकर्ता transform- को छवि में कुछ बिंदुओं (उदाहरण के लिए एसआईएफटी, सुरफ, ग्लो, या एलईएसएच)।
  2. दोनों छवियों (जैसे पैनोरामा सिलाई में) के समान वर्णनकर्ताओं के साथ कीपॉइंट्स को संरेखित करने का प्रयास करें, यदि आवश्यक हो तो कुछ छवि परिवर्तनों की अनुमति दें (उदाहरण के लिए स्केल & घूमना , या लोचदार खींच)।
  3. यदि कई कीपॉइंट्स अच्छी तरह संरेखित हैं (ऐसे ट्रांसफॉर्म मौजूद हैं, तो कीपॉइंट संरेखण त्रुटि कम है; या परिवर्तन "ऊर्जा" कम है, आदि), आपके पास समान छवियां हो सकती हैं।

चरण 2 छोटा नहीं है। विशेष रूप से, आपको अन्य छवि पर सबसे समान कुंजीपटल खोजने के लिए एक स्मार्ट एल्गोरिदम का उपयोग करने की आवश्यकता हो सकती है। प्वाइंट डिस्क्रिप्टर आमतौर पर बहुत उच्च-आयामी होते हैं (सौ पैरामीटर की तरह), और देखने के लिए कई बिंदु हैं। केडी-पेड़ यहां उपयोगी हो सकते हैं, हैश लुकअप अच्छी तरह से काम नहीं करते हैं।

प्रकार:

  • किनारों या बजाय अंक की अन्य सुविधाओं का पता लगाने।
+2

मुझे लगता है कि यह सही दृष्टिकोण भी है। बस एक विवरण: सिफ्ट, सुरफ, ग्लो कीपॉइंट डिटेक्टर नहीं हैं। वे मुख्य बिंदु वर्णनकर्ता हैं। सामान्य कीपॉइंट डिटेक्टर (स्केल इनवेरिएंट) डीओजी, हैरिस या इजेनवाल डिटेक्टर हैं। – Niki

+0

धन्यवाद nikie। मैंने जवाब संपादित किया। – sastanin

+0

चरण 2 के लिए, आप निकटतम पड़ोसियों का उपयोग कर सकते हैं, जो वर्णनकर्ताओं के बीच यूक्लिडियन दूरी का उपयोग करते हैं – MobileCushion

0

आप Linux चला रहे हैं मैं दो उपकरण सुझाव है:

पैकेज Hugin उपकरण से align_image_stack - एक कमांडलाइन कार्यक्रम है कि स्वचालित रूप से सही रोटेशन, स्केलिंग, और अन्य विकृतियों (यह ज्यादातर अभिप्रेत हो सकता है एचडीआर फोटोग्राफी को कंपोजिट करने के लिए, लेकिन वीडियो फ्रेम और अन्य दस्तावेजों के लिए भी काम करता है)। अधिक जानकारी: http://hugin.sourceforge.net/docs/manual/Align_image_stack.html

पैकेज छविमेगिक से तुलना करें - एक प्रोग्राम जो दो छवियों में विभिन्न पिक्सेल की मात्रा को ढूंढ और गिन सकता है। यहां एक साफ ट्यूटोरियल है: http://www.imagemagick.org/Usage/compare/ यूजिंग -फज़ एन% आप त्रुटि सहनशीलता बढ़ा सकते हैं। जितना ऊंचा होगा उतना अधिक त्रुटि सहनशीलता जितनी अधिक होगी उतनी ही दो पिक्सेल की गणना होगी।

align_image_stack किसी ऑफ़सेट को सही करना चाहिए ताकि तुलना आदेश वास्तव में समान पिक्सल का पता लगाने का मौका मिले।

संबंधित मुद्दे