2012-04-21 9 views
6

मैं एक एप्लिकेशन के स्क्रीनशॉट ले रहा हूं, और यह पता लगाने की कोशिश कर रहा हूं कि सटीक छवि पहले देखी गई है या नहीं। मैं छोटे बदलावों को अलग-अलग रूपों का पता लगाने के लिए देख रहा हूं - उदा। अगर छवि में टेक्स्ट है, और वर्तनी में परिवर्तन होता है, तो यह मेल नहीं खाता है।छवि बहुत ही समान छवियों के लिए हैश

ज्ञात छवियों के डेटाबेस में देखने के लिए मैं स्क्रीन-शॉट छवि की सामग्री के एमडी 5 हैश का सफलतापूर्वक उपयोग कर रहा हूं, और पता लगाता हूं कि यह पहले देखा गया है या नहीं।

अब, मैंने इसे किसी अन्य मशीन पर पोर्ट किया है, और कॉन्फ़िगरेशन से सटीक मिलान करने के मेरे प्रयासों के बावजूद, मुझे पुरानी मशीन पर कभी-कभी अलग-अलग छवियां मिल रही हैं। जब मैं अलग कहता हूं, तो बदलाव मिनट होते हैं - अगर मैं पुरानी और नई छवियों को उड़ाता हूं और उसके बीच फ्लिक करता हूं, तो मुझे एक अंतर नहीं दिखता है! फिर भी, ImageMagick का compare कमांड पिक्सल की एक चापलूसी को देख सकता है जो अलग हैं।

तो मेरे एमडी 5 हैश अब मेल नहीं खाते हैं। एक साधारण MD5 हैश की बजाय, मुझे image hash की आवश्यकता है।

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

क्या कोई छवि हैश लाइब्रेरी या एल्गोरिदम की सिफारिश कर सकता है? (कोई आवेदन नहीं, जैसे dupdetector)।

याद रखें: मेरे आवश्यकताओं कि में इसी तरह के कई सवाल से अलग मैं shrinking या pHash की तरह एक उदार एल्गोरिथ्म नहीं करना चाहते हैं, और मैं structural similarity या ImageMagick's compare की तरह एक तुलना उपकरण नहीं करना चाहती।

मुझे एक हैश चाहिए जो बहुत ही समान छवियों को एक ही हैश मान देता है। क्या यह भी संभव है?

+2

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

+0

दिलचस्प। सैकड़ों या हजारों संभावित मैचों की तुलना करना अक्षम है। यह कुछ हद तक चिंताजनक है। धन्यवाद। – Oddthinking

+0

आपको सैकड़ों या हजारों संभावित मैचों की तुलना करने की आवश्यकता नहीं है। आपको केवल उन लोगों की तुलना करना है जो आम तौर पर समान होते हैं। जो लोग पूरी तरह अलग हैं वे संभवतः मेल नहीं खा सकते हैं। –

उत्तर

1

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

लिंक: http://www.cs.huji.ac.il/~yweiss/SpectralHashing/

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