2011-08-26 14 views
8

मेरे पास छवियों का डेटाबेस है। जब मैं एक नई तस्वीर लेता हूं, मैं इसे इस डेटाबेस में छवियों के साथ तुलना करना चाहता हूं और समानता स्कोर प्राप्त करता हूं (ओपनसीवी का उपयोग करके)। इस तरह से मैं पहचानना चाहता हूं, अगर मेरे पास एक छवि है, जो ताजा तस्वीर के समान है।ओपनसीवी: फ़िंगरप्रिंट छवि और डेटाबेस के विरुद्ध तुलना करें

क्या मेरे डेटाबेस छवियों का एक फिंगरप्रिंट/हैश बनाना और इसके खिलाफ नए मैच बनाना संभव है?

मैं एक एल्ग्रिथम कोड स्निपेट या तकनीकी डेमो खोज रहा हूं, न कि व्यावसायिक समाधान के लिए।

बेस्ट,

स्टीफन

+2

Normally this kind of thing is done by extracting feature vectors from the images and doing some kind of template matching on the feature vectors. –

+0

There are a few similar/related/duplicate questions: [OpenCV/SURF How to generate a image hash/fingerprint/signature out of the descriptors?](http://stackoverflow.com/questions/7205489/opencv-fingerprint-image-and-compare-against-database), [Near-Duplicate Image Detection](http://stackoverflow.com/questions/1034900/near-duplicate-image-detection/), [Image fingerprint to compare similarity of many images](http://stackoverflow.com/questions/596262/image-fingerprint-to-compare-similarity-of-many-images), ... – Albert

उत्तर

10

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

ओपनसीवी आपके कार्य के लिए एकमात्र चीज है (ऑब्जेक्ट वर्गीकरण) दृश्य शब्द (बीओओ) के थैले का कार्यान्वयन है।

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

Here is शब्दों के बैग के लिए ओपनसीवी दस्तावेज। इसके अलावा ओपनसीवी का नमूना bagofwords_classification.cpp है। यह वास्तव में बड़ा है लेकिन सहायक हो सकता है।

+1

Andrey, ho do you do this : "It can compute special kind of image features and train visual words vocabulary. Next you can use this vocabulary to find similar images in your database and compute similarity score." Thank – lilouch

2

सामग्री आधारित छवि पुनर्प्राप्ति प्रणाली अभी भी सक्रिय अनुसंधान के एक क्षेत्र हैं: http://citeseerx.ist.psu.edu/search?q=content-based+image+retrieval

सबसे पहले आप स्पष्ट रहना होगा, जो आपके संदर्भ में समान गठन:

  1. इसी प्रकार के रंग वितरण: की तरह कुछ का उपयोग करें छवि के उपखंडों के लिए color descriptors, आपको कुछ काफी संतोषजनक परिणाम मिलना चाहिए।
  2. इसी तरह की वस्तुएं: चूंकि कंप्यूटर नहीं जानता है, क्या वस्तु है, आप बहुत दूर नहीं होंगे, जब तक कि आपके पास ऑब्जेक्ट (या कुछ ऑब्जेक्ट क्लास) के बारे में कुछ व्यापक डोमेन ज्ञान न हो। वर्तमान स्थिति के शोध के बारे में एक अच्छा अवलोकन here (results) और जल्द ही here देखा जा सकता है।

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

यह computer-vision.stackexchange.com के लिए एक अच्छा सवाल होगा, यदि यह पहले से मौजूद है।

0

आप pHash एल्गोरिथ्म का उपयोग करें और डाटाबेस में phash मूल्य स्टोर कर सकते हैं, तो यह कोड का उपयोग करें:

double const mismatch = algo->compare(image1Hash, image2Hash); 

यहाँ 'बेमेल' मूल्य easly आप दो छवियों के बीच समानता अनुपात बता सकते हैं।

pHash function:

  1. AverageHash
  2. PHASH
  3. MarrHildrethHash
  4. RadialVarianceHash
  5. BlockMeanHash
  6. BlockMeanHash
  7. ColorMomentHash

These function are well Enough to evaluate Image Similarities in Every Aspects.

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