2009-03-19 22 views
18

एक बहु स्पर्श वातावरण में, इशारा पहचान कैसे काम करती है? संभावित संकेतों के लिए डेटा को पहचानने या अस्वीकार करने के लिए गणितीय तरीकों या एल्गोरिदम का उपयोग किस प्रकार किया जाता है?इशारा पहचान कैसे काम करती है?

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

यह Johnny Chung Lee's Wii Research पर आधारित है। मेरा सटीक सेटअप नीदरलैंड के स्नातक छात्रों की तरह बिल्कुल here प्रदर्शित किया गया है। मैं आसानी से 2 डी स्पेस में 4 पॉइंट की स्थिति ट्रैक कर सकता हूं और मैंने इन बिंदुओं को प्राप्त करने और विज़ुअलाइज़ करने के लिए अपना मूल सॉफ्टवेयर लिखा है।

alt text http://i40.tinypic.com/x517yg.pngalt text http://i42.tinypic.com/nao9x.pngalt text http://i43.tinypic.com/65d1zp.png

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

इशारा पहचान आमतौर पर कैसे लागू की जाती है? कुछ भी तुच्छ से परे, मैं विभिन्न प्रकार के संकेतों को पहचानने और पहचानने के लिए सॉफ़्टवेयर कैसे लिख सकता हूं: विभिन्न स्वाइप, सर्कुलर मूवमेंट्स, लेटर ट्रेसिंग इत्यादि

उत्तर

11

इशारा पहचान, जैसा कि मैंने इसे देखा है, आमतौर पर मशीन लर्निंग का उपयोग करके लागू किया जाता है छवि पहचान सॉफ्टवेयर के समान तकनीकें। Here's a cool project on codeproject about doing mouse gesture recognition in c#। मुझे यकीन है कि अवधारणाएं काफी समान हैं क्योंकि आप समस्या को 2 डी स्पेस तक कम कर सकते हैं। अगर आपको इसके साथ कुछ काम मिल रहा है, तो मुझे इसे देखना अच्छा लगेगा। महान परियोजना विचार!

+0

@ascalonx, लिंक के लिए धन्यवाद! मुझे यकीन है कि यह उपयोगी होगा। – mmcdole

+0

एक्शनस्क्रिप्ट में माउस जेस्चर रिकग्निशन: http://www.bytearray.org/?p=91 –

8

इसे देखने का एक तरीका संपीड़न/पहचान समस्या के रूप में है। असल में, आप डेटा का पूरा समूह लेना चाहते हैं, इसमें से अधिकांश को फेंकना चाहते हैं, और बाकी को वर्गीकृत करना चाहते हैं। अगर मैं क्या कर रहे थे इस (खरोंच से) के रूप में मैं शायद आगे बढ़ना चाहते हैं:

  • एक रोलिंग इतिहास विंडो
  • शुरू फ्रेम में चार अंक के गुरुत्वाकर्षण के केन्द्र ले के साथ काम करते हैं, इसे सहेजें, और सभी फ्रेमों में सभी पदों से इसे घटाएं।
  • प्रत्येक फ्रेम को दो घटकों में कारक: नक्षत्र का आकार और अंतिम फ्रेम के सापेक्ष इसके सीओएफजी के आंदोलन।
  • अंतिम फ्रेम के लिए पूर्ण CofG बचाने के भी
  • CofG परिवर्तनों की श्रृंखला आप स्वाइप देता है, लहरें, आदि
  • नक्षत्र morphing की श्रृंखला आप चुटकी देता है, आदि

देखने के बाद आपकी तस्वीर (प्रत्येक अंक प्रत्येक हाथ पर, एक पर चार बिंदु नहीं, दोह!) मैं इस प्रकार ऊपर संशोधित चाहते हैं:

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

    fire when 
        in frame.final: rectangle(points) 
        and 
        over frames.final(5): points.all (p => p.jerk) 
    

    या

    fire when 
        over frames.final(3): hands.all (h => h.click) 
    
+0

@ मार्कस्क्यू, टिप्पणियों के लिए धन्यवाद।संदर्भ के लिए, नीदरलैंड के छात्र एल्गोरिदम पर क्लिक करते हुए निम्नानुसार काम करते हैं: यदि वाईमोट एक बिंदु का ट्रैक खो देता है और इसकी जोड़ी में दूसरी बिंदु निकटता सीमा के भीतर होती है, तो यह एक "क्लिक" होती है। – mmcdole

+0

जैसे उंगलियां एक साथ आती हैं, वाइमोट दोनों अंगुलियों को एक ब्लॉब के रूप में देखेगी और दो नहीं। तो यह अपने अंक में से एक खो देता है। यह तब भी हो सकता है जब आपके हाथ अब दिखाई नहीं दे रहे हैं इसलिए निकटता सीमा को रोकने के लिए निकटता दहलीज का उपयोग किया जाता है। – mmcdole

0

मैं बहुत अच्छी तरह से वाकिफ नहीं हूँ इस प्रकार के गणित में, लेकिन मैंने कहीं पढ़ा है कि लोग कभी-कभी Markov Chains या Hidden Markov Models का उपयोग जेस्चर रिकग्निशन करने के लिए करते हैं।

शायद कंप्यूटर विज्ञान के इस तरफ थोड़ा और पृष्ठभूमि वाला कोई व्यक्ति इसे आगे बढ़ा सकता है और कुछ और विवरण प्रदान कर सकता है।

0

एर .. मैं पिछले साल या अब के लिए इशारा पहचान पर काम कर रहा हूं, लेकिन मैं बहुत कुछ नहीं कहना चाहता क्योंकि मैं अपनी तकनीक पेटेंट करने की कोशिश कर रहा हूं :) लेकिन ... हम ' अनुकूली बूस्टिंग के साथ कुछ भाग्य था, हालांकि आप जो कर रहे हैं वह मूल रूप से अलग दिखता है। आपके पास प्रक्रिया के लिए केवल 4 अंक हैं, इसलिए मुझे नहीं लगता कि आपको वास्तव में कुछ भी "कम करने" की आवश्यकता है।

मैं जांच करता हूं कि फ्लैश जैसे प्रोग्राम एक वास्तविक सर्कल में एक फ्रीहैंड खींचे गए सर्कल को कैसे बदलते हैं। ऐसा लगता है कि आप लगभग एक सेकंड की अवधि के लिए अंक ट्रैक कर सकते हैं, और फिर कुछ फैशन में पथ को "चिकनी" कर सकते हैं, और फिर आप शायद अपने इशारे को कड़ी मेहनत कर सकते हैं (यदि आप उन्हें काफी सरल बनाते हैं)। अन्यथा, हाँ, आप एक सीखने एल्गोरिदम का उपयोग करना चाहते हैं। तंत्रिका जाल काम कर सकते हैं ... मुझे नहीं पता। बस विचारों को फेंकना :) शायद देखें कि कैसे OCR भी किया जाता है ... या यहां तक ​​कि Hough transforms। ऐसा लगता है कि यह इशारा पहचानने की तुलना में आकार को पहचानने की एक समस्या है।

+0

ठीक है, मूल रूप से, एक सर्कल, एक एक्स ड्राइंग, या सभी दिशाओं में सभी 4 बिंदुओं को स्वाइप करना ~ ~ इशारे हैं। मेरे 2 डी दुनिया में मेरे इशारे आकार हैं। हालांकि मुझे सीखने वाले एल्गोरिदम में आगे देखना होगा। – mmcdole

+0

खैर, हाँ, वे * जेश्चर हैं, मेरा मतलब यह है कि यदि आप यह समझ सकते हैं कि यह किस आकार को बनाता है, तो आप यह भी पता लगा सकते हैं कि यह क्या इशारा था। यानी, मुझे लगता है कि इशारा पहचान आकार पहचानने के लिए कमजोर है (जो हल करने में एक आसान समस्या हो सकती है - कम संभाव्यता)। – mpen

0

सबसे सरल इशारा मान्यता उपकरण मैं उपयोग देखा है उन्हें पहचान करने के लिए एक वेक्टर आधारित टेम्पलेट। उदाहरण के लिए, आप दाएं स्वाइप को "0" के रूप में परिभाषित कर सकते हैं, "-45, 45, 45" के रूप में एक चेकमार्क, घड़ी के चक्र को "0, -45, -90, -135, 180, 135, 90, 45, 0 ", और इसी तरह।

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