2011-03-04 13 views
6

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

  • सबसे पहले मैं प्रत्येक समोच्च पर
  • तो मेरी छवि पर आकृति का पता लगाने, मैं सर्फ का उपयोग पता लगाने के लिए अगर एक यातायात संकेत के अंदर है और जो यातायात संकेत
: यहाँ मैं कैसे तुलना लागू किया है

समोच्च का पता लगाने पूरी तरह से अच्छी तरह से काम करता है: एक gaussain कलंक और चालाक बढ़त मैं प्रबंधन का उपयोग कर एक समोच्च इस एक के समान लगता है:

enter image description here

तो मैं छवि इस समोच्च करने के लिए इसी निकालने और मैं इस तरह के यातायात संकेत टेम्पलेट छवि के लिए इस छवि की तुलना:

enter image description here

enter image description here

cvExtractSURF समोच्च छवि के लिए 189 वर्णनकर्ता देता है। फिर मैं अपने समोच्च छवि और प्रत्येक टेम्पलेट छवि के बीच समानताओं को खोजने के लिए naiveNearestNeighbor विधि का उपयोग करता हूं।

यहाँ मेरी परिणाम हैं:

6/189 पहले टेम्पलेट के लिए

92/189 दूसरा टेम्पलेट के लिए (जो एक मैं खोज करने की अपेक्षा कर रहा हूँ है) (जो स्पष्ट रूप से बहुत) समोच्च छवि के लिए हर तरह से

मैं वास्तव में इन परिणामों को समझने के न में विभिन्न ...

ये कदम उठाएँ मैं प्रति की सूची है प्रपत्र:

  • ग्रेस्केल
  • में समोच्च छवि मुड़ें ग्रेस्केल
  • में टेम्पलेट छवि मुड़ें समोच्च छवि के हिस्टोग्राम बराबर (cvEqualizeHist)
  • टेम्पलेट छवि का आकार बदलें यह समोच्च छवि का मिलान करने के लिए
  • धुंधला टेम्पलेट छवि (cvSmooth)
  • धुंधला समोच्च छवि (cvSmooth)
  • टेम्पलेट ima पर एक cvExtractSURF करें जीई
  • समोच्च छवि
  • पर एक cvExtractSURF करें प्रत्येक वर्णनकर्ता ओ समोच्च छवि मैं एक naiveNearestNeighbor कर
  • मैं "अच्छा" की संख्या की दुकान के लिए

अंक 2 के बीच समानता का मूल्यांकन करने के

goog अंकों की संख्या/वर्णनकर्ता की कुल संख्या

पुनश्च:: छवियों मैं अनुपात का उपयोग जानकारी के लिए मैं इस ट्यूटोरियल का पालन किया: http://www.emgu.com/wiki/index.php/Traffic_Sign_Detection_in_CSharp

और सी

में यह अनुकूल करने के लिए

उत्तर

6

सर्फ वर्णनकर्ता बड़े पैमाने पर बनावट छवियों की तुलना के लिए ठीक हैं OpenCV की find_obj उदाहरण का इस्तेमाल किया ... मुझे लगता है कि उनके लिए यातायात संकेत में पर्याप्त बनावट नहीं है।

वर्णनकर्ता निकालने के दौरान, पहले "मुख्य बिंदु" स्थित हैं, उदाहरण के लिए उदाहरण के लिए दोनों संकेतों (आयताकार और पत्र पी) पर आयताकार आकार के निशान के कोनों पर, फिर स्थानीय गुण उनके लिए एकत्र किए जाते हैं। की तरह, कैसे करता है एक कोने-के-एक-आयत ऊपर बंद, धुंधला और ग्रेस्केल से, की तरह लग रहे।

फिर, ये वर्णनकर्ता पत्र पी से कोने-ए-आयत से मेल खाते हैं। वे सभी अलग नहीं हैं ... (क्योंकि हम किसी भी आकार की जानकारी को ध्यान में नहीं ले रहे हैं)। हो सकता है कि पत्र पी के कोनों को "कोई प्रविष्टि" चिह्न के करीब थोड़ा अधिक न हो। बेतरतीब ढंग से।

बेशक

, यह सब सिर्फ एक अटकलें है ... यह पता लगाने की एक ही तरीका है इसे अच्छी तरह से डिबग करने के लिए है। छवियों छोटे हलकों जहां वर्णनकर्ता पाए गए (वृत्त आकार पैमाने बिंदु पर मिला था पर निर्भर कर सकता है) के साथ प्रदर्शित करने का प्रयास करें। या दोनों छवियों को एक IplImage में डालें और मिलान करने वाले वर्णनकर्ताओं के बीच रेखाएं खींचे।कुछ इस तरह:

http://www.flickr.com/photos/[email protected]/268039276

इसे ठीक करने के लिए के रूप में ... अंदर है कि आप यातायात संकेत के लिए बाहर आकृति का पता लगाने के लिए उपयोग के लिए एक ही आकार मिलान विधि का उपयोग कर के बारे में क्या? (उदाहरण के लिए, आप एक बार एक संकेत पाया जाता है पी आकार की वस्तुओं के लिए लग रही हो सकता है।)

+2

मुझे पता है कि यह एक पुराना जवाब है, लेकिन इससे मुझे एक छवि मिलान अनुप्रयोग के लिए एसयूआरएफ का उपयोग करने में मदद मिली जहां मेरे पास समान खराब बनावट वाली छवियां थीं। फीचर निष्कर्षण और ऐसी छवियों पर तुलना के लिए अच्छे जेनेरिक एल्गोरिदम के लिए कोई सुझाव? – rkagerer

+0

अच्छा सवाल है, मुझे भी इस तरह के एल्गोरिदम में दिलचस्पी होगी :) (मुझे लगता है कि एक अच्छा शीर्ष स्तर का सवाल होगा) – Latanius

0

2 छवियों के बीच समानता का मूल्यांकन करने के मैं अनुपात का उपयोग करें: goog अंकों की संख्या/वर्णनकर्ता की कुल संख्या

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

ऐसा इसलिए है क्योंकि एसआईएफटी जैसी विशेषताएं सिर्फ "समान बिंदु" से मेल खाते हैं लेकिन समान बिंदु नहीं हैं, शायद आप मिलान मानदंडों को बदलकर इसे बदल सकते हैं। क्योंकि ओपनसीवी मिलान मानदंडों में निकटतम बिंदु (वर्णनकर्ता द्वारा) प्राप्त होता है और जांचता है कि क्या वहां है 0.6 समानता के पास एक और वर्णनकर्ता है।

वर्णनकर्ता मिलान दो चरणों में होता है। पहला कदम डेविड लोवे के सरल लेकिन शक्तिशाली मिलान एल्गोरिदम का पालन करता है। अधिक सटीक, यह देखने के लिए कि बाएं छवि में एक वर्णक ए सही छवि में कुछ वर्णनकर्ता के साथ मेल खाता है या नहीं, हम पहले वर्णक ए के साथ बाएं छवि में वर्णनकर्ता ए के बीच यूक्लिडियन दूरी डी (ए, ए ') की गणना करते हैं। सही छवि में। यदि निकटतम दूरी, डी (ए, ए 1 ') कहें, तो दूसरी बार निकटतम दूरी के के मुकाबले छोटा है, डी (ए, ए 2'), फिर ए और ए 1 को मिलान के रूप में माना जाता है। हम के = 0.6

शायद आप के बदल सकते हैं, लेकिन मुझे लगता है कि यह अधिक झूठी सकारात्मक देता है।

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