2012-12-17 17 views
7

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

मैंने आवश्यक छवि परिवर्तन एल्गोरिदम या विधि की तलाश करने की कोशिश की है, लेकिन हम इस क्षेत्र में काफी नए हैं। मैं आपको इस समस्या का समाधान कैसे कर सकता हूं और आवश्यक कोड जो हमारी मदद कर सकता है (हमें स्टार्टर्स होने का मानना ​​है) में मदद कर सकता हूं।

मैं निम्नलिखित धागे में देखा है, लेकिन मैं उलझन में हूँ: - OpenCV Object Detection - Center Point - How to recognize rectangles in this image? - http://www.chrisevansdev.com/computer-vision-opensurf.html

के लिए घटना है कि हम था दिया संकेत में से एक (मैं इसे उपयोग करने में सक्षम नहीं कर रहा हूँ) एक आयताकार और त्रिभुज के रूप में तीरों को एक साथ रखा जा सकता है, यह पता लगाने के लिए कि त्रिभुज का केंद्र उस आयत के दाईं ओर है (जिसका मतलब है सही है) या अन्यथा। इसी प्रकार टी के लिए।

धन्यवाद! :)

+0

यदि आप गारंटी दे सकते हैं कि लाल और हरे रंग के रंग आपके पर्यावरण में अपेक्षाकृत अद्वितीय हैं, तो समस्या बहुत आसान हो जाती है, आप केवल उन रंगों को ढूंढकर संकेत पा सकते हैं ... – Hammer

+1

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

+0

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

उत्तर

8

संकेत पहले से ज्ञात रहे हैं, तो आप विधि का उपयोग कर सकते हैं "सुविधा का पता लगाने से चीज़ों को पहचानने में"।

विचार है कि आप चिह्न (तीर या टी) की एक तस्वीर है और आपको निम्न प्रशिक्षण कदम, ऑफ़लाइन करते हैं:

1 - फ़ीचर पहचान (का उपयोग करते हुए, सर्फ, तेज,। ..)

2 - डिस्क्रिप्टर निष्कर्षण (सुविधाओं से) झारना, सनकी, आदि ...

का उपयोग कर तो यह वास्तविक समय हिस्सा आता है। प्रत्येक फ्रेम के लिए आपको फीचर डिटेक्शन और डिस्क्रिप्टर निष्कर्षण निष्पादित करना होगा, लेकिन फिर आपको यह देखने के लिए प्रशिक्षण छवियों से मिलान करने की आवश्यकता है कि आपको कौन सी वस्तु मिली है।एक उदाहरण है कि वास्तविक समय काम करेगा:

cv::FAST detector; 
cv::FREAK descriptor; 
BFMatcher matcher = BFMatcher(NORM_HAMMING,false); 

detector.detect(frame,keypoints_frame); 
descriptor.compute(frame, keypoints_frame,descriptors_frame); 
matcher.match(descriptors_trainning, descriptors_frame); 

कि मिलान के लिए पहली बार एक दृष्टिकोण होगा, तो आप को बेहतर बनाने और बाहरी कारकों के कारण को दूर करने की जरूरत है। कुछ तकनीकों

  • अनुपात टेस्ट कर रहे हैं

  • क्रॉस चेक

  • RANSAC + homography

यहाँ आप एक पूरा example मिला है।

3

मुझे लगता है कि आप घटना से पहले संकेत प्राप्त कर सकते हैं: तीर चिह्न लें, और उससे "लिफ्ट डिस्क्रिप्टर" प्राप्त करें और उन्हें अपने रोबोट में स्टोर करें।

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

पढ़ने के लिए के बारे में छान-बीन करना, मैं इस साइट पर की सिफारिश करेंगे: http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/ के बाद आप झारना की मूल बातें समझ जाएगा, मैं यह अपने आप को लागू करने के बजाय कुछ कार्यान्वयन डाउनलोड करने के लिए सलाह देते हैं, यह बहुत कठिन काम है और कई नुकसान है

बीटीडब्ल्यू हालांकि शिफ्ट "स्केल इनवेरिएंट फ़ीचर ट्रांसफॉर्म" है, लेकिन मुझे पूरा यकीन है कि यह आपके मामले में भी काम करेगा, भले ही आपके पास "परिप्रेक्ष्य परिवर्तन" हो।

आशा है कि यह मदद की

+3

विचार अच्छा है क्योंकि एसआईएफटी डिस्क्रिप्टर बहुत मजबूत हैं, समस्या उन्हें वास्तविक समय लागू करना है। यदि रोबोट के पास एक अच्छा प्रोसेसर है तो कोई समस्या नहीं है, लेकिन कॉलेज की घटना के लिए शायद वे एक टैबलेट का उपयोग कर रहे हैं, उदाहरण के लिए, इसके एकीकृत कैमरे के साथ। फिर एसआईएफटी वास्तविक समय के लिए ऐसा नहीं करेगा। –

+0

और अगर एसआईएफटी बहुत धीमी है, तो एसयूआरएफ, ओआरबी, ब्रीफ इत्यादि है। –

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