2011-05-06 12 views
7

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

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

मैं ++ OpenCV और सी में यह सब कोडिंग कर रहा हूँ। लेकिन मेरे बाढ़ भरने हमेशा ब्लब्स भरने लगते हैं, इसलिए ज्यादातर मामलों में मुझे सिर्फ एक बदलाव मिलता है। मैंने cv::inpaint का उपयोग करने का भी प्रयास किया है, लेकिन इससे कोई मदद नहीं मिली है। तो मेरा सवाल है; क्या मैं सिर्फ गलत दृष्टिकोण का उपयोग कर रहा हूं या किसी भी तरह ट्यूरिंग परिवर्तन पहचान को अधिक विश्वसनीय बना सकता हूं। पूर्व के मामले में, लोगों को वैकल्पिक मार्गों, सी ++/अजगर और/या OpenCV में बेहतर codable एक उचित समय में सुझाव है कि सकता है?

धन्यवाद

उत्तर

3

बोर्ड पर एक ठीक हो रही है और पता लगाने के टुकड़े की आवाजाही संभालने एक बोर्ड नहीं ले करते हुए भी चारों ओर टुकड़े चलती स्वतंत्र रूप से हल किया जा सकता, की समस्या ..

पर कैसे कुछ विचार मैं यह दृष्टिकोण होगा:

बिसात बिछाने का पता लगा रहा

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

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

टुकड़े

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

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

+0

एक आखिरी नोट: यदि मैं कर सकता तो मैं इसके लिए सी ++ साफ़ कर दूंगा। शायद यह पाइथन के साथ बहुत तेज हो गया।बेशक आप सी ++ में कुछ वास्तव में मूल्यवान लाइब्रेरी पाते हैं जिसे आपको अभी उपयोग करना है। उस मामले में मैं इसे लपेटूंगा और इसे अजगर से उपयोग करूंगा। –

+0

सुझावों के लिए धन्यवाद, मैं पूरी तरह से C++ को त्यागने से डरता नहीं हूं, मैं सब पाइथन के साथ कर सकता हूं, मैं पहले विचार की तलाश में था। मेरे पहले चरण के लिए बाधाओं में से एक यह है कि बोर्ड को किसी भी तरह से संशोधित करने की आवश्यकता नहीं है (इसलिए कोई मार्कर या ऐसा कुछ नहीं), इसलिए मैं – makokal

+0

खाते में किसी भी टिप्पणी की वास्तव में सराहना करता हूं क्या आप रंगों पर भरोसा कर सकते हैं टुकड़े काले/सफेद हो रहे हैं? यदि ऐसा है, तो आप शुरुआत में बोर्ड पर पीसीए कर सकते हैं और दोनों रंगों को उनके रंग से पहचान सकते हैं। लेकिन तब से आपको अभिविन्यास खोने के लिए बोर्ड का ट्रैक रखना होगा। –

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