2012-05-11 5 views
5

मैं ओपनएनआई/नाइट के साथ किनेक्ट का उपयोग कर रहा हूं। ओपनएनआई नाइट की सहायता से मानव हाथों को ट्रैक कर सकता है। इसके अलावा, ओपनएनआई ट्रैक की गई हैंड लाइन को सुगम बना सकता है, और मैं यह पता लगाने की कोशिश कर रहा था कि यह कैसा करता है।कलमैन फ़िल्टर का उपयोग कर हैंड ट्रैकिंग डेटा के लिए ऑनलाइन स्मूथिंग

मैंने कलमैन फ़िल्टर का उपयोग करने की कोशिश की, पुराने हाथ की स्थिति को कलमैन अनुमानित हाथ की स्थिति के साथ बदल दिया, लेकिन अभी भी ओपनएनआई में चिकनी बेहतर है।

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

उत्तर

4

काल्मैन फ़िल्टर का उपयोग करना उतना आसान नहीं है जितना लगता है। आपको एक अच्छा मोशन मॉडल, एक अच्छा राज्य वेक्टर और एक अच्छा माप मॉडल चुनना होगा। आपकी समस्या के लिए, मुझे लगता है कि के रूप में आप की स्थिति के 3 डी ट्रैकिंग करते हैं, नहीं अभिविन्यास (एक्स, स्क्रीन पर हाथों की y और z स्थिति) मैं चुनते हैं निम्नलिखित:

State vector =[x, y, z, v_x, v_y, v_z] 

Update equations: (x,y,z) = (x,y,z)+ (v_x,v_y,v_z)*delta(t) 
velocity would be constant 

तुम भी सहप्रसरण निर्धारित करने की आवश्यकता त्रुटि का सही ढंग से, क्योंकि यह स्थिरता को स्थिर करने का त्रुटि मॉडल करेगा (जो सत्य नहीं है)।

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

उम्मीद है कि यह मदद करता है, शुभकामनाएँ।

+2

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

0

Here एक साधारण उदाहरण है जो दिखाता है कि कलमैन फ़िल्टर के पैरामीटर कैसे सेट करें।

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

उम्मीद है कि यह मदद करता है, यह काफी अच्छी तरह से काम करता है, और कोड समझने में आसान है।

यह ओपनसीवी कार्यान्वयन का उपयोग करता है।

उम्मीद है कि यह मदद करता है!

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